
    9i?	                         S SK Jr  S SKJr  S SKJrJrJr  S SKJ	r	  S\S\
\\	\   4   S\\   4S jrS\S\
\\	\   4   S\	\   4S	 jrS
\S\
\\	\   4   S\4S jrg)    )deque)Any)Graphmap_argNode)
OrderedSetnodenode_to_additional_depsreturnc                     [         [           " 5       n[        U R                  U R                  4UR
                  5        X;   a  UR                  X   5        U$ N)listr   r   argskwargsappendextendr	   r
   r   s      Y/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/torch/_dynamo/graph_utils.py_get_flat_argsr      sE     9;DTYY$dkk2&+12K    c                     [         [           " 5       n[        U R                  U R                  4UR
                  5        X;   a  UR                  X   5        U$ r   )r   r   r   r   r   addupdater   s      r   _get_flat_args_uniquer      sG     dDTYY$dhh/&+12Kr   graphc                   ^
^ [        5       m
[        5       m[        5       nS[        SS 4U
U4S jjnS
U
U4S jjnS[        4U
4S jjnU R                  SS9 GH  nT
R	                  5         TR	                  5         U" U5        [        Xa5       H  nUR                  Xv45        M     U(       d  MY  UR                  5       u  pT
(       a&  U" 5       U	:w  a  U" 5         T
(       a  U" 5       U	:w  a  M  [        U[        5      (       d  M_  UT;   a  T
R                  U5        ST
 3s  $ U" U5        [        X5       H  nUR                  Xx45        M     U(       a  M  GM     g	)Nr	   r   c                 J   > TR                  U 5        TR                  U 5        g r   )r   r   r	   current_pathcurrent_path_sets    r   add_to_current_path+_detect_cycles.<locals>.add_to_current_path(   s    D!T"r   c                  H   > TR                  5       n TR                  U 5        g r   )popremover   s    r   pop_current_path(_detect_cycles.<locals>.pop_current_path,   s    !%r   c                     > T S   $ )N )r   s   r   current_path_head)_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_cyclesr8   !   sE    !&L"%%(-G#$ #4 # #& & t   ""h"/ F#*6KENNE?+ L g&{{}H #4#6&#@ " #4#6&#@ h--++##H-1,@@).xQ01 R! g 04 r   N)collectionsr   typingr   torch.fxr   r   r   torch.utils._ordered_setr   dictr   r   r   strr8   r*   r   r   <module>r?      s      ) ) /
)-dJt4D.D)E	$Z
)-dJt4D.D)E,,+/j6F0F+G,,r   