
    sg                     n    d dl Z d dlmZmZmZ ddlmZ  G d de j                        Zej                  Z
y)    N)ListOptionalTuple   )_resolve_namec                        e Zd ZdZedededeeeee   f      fd       Z	 fdZ
dededefd	Zd
 Zd Zd Zd Zd Z xZS )_ExtractModuleReferenceszR
    Extract the list of global variables a block of code will read and write
    srcpackagereturnc                      | |      }t        j                  |      }|j                  |       t        |j                  j                               S N)astparsevisitlist
referenceskeys)clsr
   r   visitortrees        W/var/www/html/venv/lib/python3.12/site-packages/torch/package/find_file_dependencies.pyrunz_ExtractModuleReferences.run   s>    g,yy~dG&&++-..    c                 >    t         |           || _        i | _        y r   )super__init__r   r   )selfr   	__class__s     r   r   z!_ExtractModuleReferences.__init__   s    r   module_namelevelc                 >    |dkD  rt        || j                  |      S |S )Nr   )r   r   )r   r    r!   s      r   
_absmodulez#_ExtractModuleReferences._absmodule   s"    19 dllEBBr   c                 \    |j                   D ]  }d| j                  |j                  d f<    y )NT)namesr   name)r   nodealiass      r   visit_Importz%_ExtractModuleReferences.visit_Import   s,    ZZ 	7E26DOOUZZ./	7r   c                    | j                  |j                  |j                  dn|j                        }|j                  D ]>  }|j                  dk7  rd| j
                  ||j                  f<   .d| j
                  |d f<   @ y )Nr   *T)r#   moduler!   r%   r&   r   )r   r'   r&   r(   s       r   visit_ImportFromz)_ExtractModuleReferences.visit_ImportFrom"   so    t{{1CATZZ 	5E zzS 6:uzz 2304t-	5r   c                     |j                   S r   valuer   r'   s     r   _grab_node_intz'_ExtractModuleReferences._grab_node_int-       zzr   c                     |j                   S r   r/   r1   s     r   _grab_node_strz'_ExtractModuleReferences._grab_node_str0   r3   r   c                    t        |j                  d      r|j                  j                  dk(  r	 | j                  |j                  d         }g }d}t        |j                        dkD  r?|j                  d   j                  D ]"  }|j                  | j                  |             $ nht        |d      r\|j                  D ]M  }|j                  dk(  s|j                  j                  D ]"  }|j                  | j                  |             $ O t        |j                        dkD  r| j                  |j                  d         }nHt        |d      r<|j                  D ]-  }|j                  dk(  s| j                  |j                        }/ |g k(  rPd	| j                  |d f<   |j                  d
d      d   }||k7  rf| j                  ||      }d	| j                  |d f<   y | j                  ||      }|D ]*  }|dk7  rd	| j                  ||f<   d	| j                  |d f<   , y y y y # t        $ r
}	Y d }	~	y d }	~	ww xY w)Nid
__import__r      keywordsfromlist   r!   T.r   )maxsplitr+   )hasattrfuncr7   r5   argsleneltsappendr:   argr0   r2   r   rsplitr#   	Exception)
r   r'   r&   r;   r!   vkeywordtop_namer(   es
             r   
visit_Callz#_ExtractModuleReferences.visit_Call3   s#   499d#		(D'**499Q<8tyy>A%!YYq\.. @ (;(;A(>?@T:.#'== H";;*4%,]]%7%7 H (0C0CA0F GHH tyy>A% //		!=ET:.#'== G";;'1$($7$7$FEG r>
 59DOOT4L1#{{3{;A>H4'#'??8U#C<@4(89??47D!) A !C<=ADOOT5M:<@DOOT4L9A (5 )E#N  s'   B#H- BH- 6A1H- (AH- -	I ;I )__name__
__module____qualname____doc__classmethodstrr   r   r   r   r   intr#   r)   r-   r2   r5   rL   __classcell__)r   s   @r   r	   r	      s|     /c /C /DsHSM7I1J,K / /
c # # 
7	5*r   r	   )r   typingr   r   r   
_importlibr   NodeVisitorr	   r   find_files_source_depends_on r   r   <module>rZ      s2    
 ( ( %Us Up  8;; r   