
    %Vji?	                         d dl mZ d dlmZ d dlmZmZmZ d dlm	Z	 dede
ee	e         f         dee         fdZdede
ee	e         f         de	e         fd	Zd
ede
ee	e         f         defdZdS )    )deque)Any)Graphmap_argNode)
OrderedSetnodenode_to_additional_depsreturnc                     t          t                               }t          | j        | j        f|j                   | |v r|                    ||                     |S N)listr   r   argskwargsappendextendr	   r
   r   s      S/root/voice-cloning/.venv/lib/python3.11/site-packages/torch/_dynamo/graph_utils.py_get_flat_argsr      sU     9;;DTY$dk222&&&+D1222K    c                     t          t                               }t          | j        | j        f|j                   | |v r|                    ||                     |S r   )r   r   r   r   r   addupdater   s      r   _get_flat_args_uniquer      sX     dDTY$dh///&&&+D1222Kr   graphc                   
 t                      
t                      t                      }dt          dd f
fd}d

fd}dt          f
fd}|                     d          D ]}
                                                                   ||           t          ||          D ]}|                    ||f           |r|                                \  }}	
r( |            |	k    r |             
r |            |	k    t          |t                    sY|v r
                    |           d
 c S  ||           t          ||          D ]}|                    ||f           |d	S )Nr	   r   c                 \                         |                                |            d S r   )r   r   r	   current_pathcurrent_path_sets    r   add_to_current_pathz+_detect_cycles.<locals>.add_to_current_path(   s1    D!!!T"""""r   c                  Z                                     }                     |            d S r   )popremover   s    r   pop_current_pathz(_detect_cycles.<locals>.pop_current_path,   s.    !!%%%%%r   c                       d         S )N )r   s   r   current_path_headz)_detect_cycles.<locals>.current_path_head0   s    Br   output)opzcycle detected in path: zno cycle detected)r   N)	r   setr   
find_nodesclearr   r   r#   
isinstance)r   r
   pendingr!   r%   r)   originchildcur_nodeparentr   r    s             @@r   _detect_cyclesr5   !   s-    !&L"%%%(-G#$ #4 # # # # # # #& & & & & & & t             ""h"// 2 2   F###*63JKK 	, 	,ENNE6?++++ 	2&{{}}Hf  ##4#4#6#6&#@#@  """  ##4#4#6#6&#@#@ h-- +++##H---@,@@@@@))).x9PQQ 2 2x01111#  	2& r   N)collectionsr   typingr   torch.fxr   r   r   torch.utils._ordered_setr   dictr   r   r   strr5   r(   r   r   <module>r<      s               ) ) ) ) ) ) ) ) ) ) / / / / / /
)-dJt4D.D)E	$Z   
)-dJt4D.D)E   ,,+/j6F0F+G,, , , , , ,r   