
    Vh                     f    d dl Z d dlmZ ddlmZ  G d de j
                        Zej                  Zy)    N)Optional   )_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        T/home/dcms/DCMS/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-   r/   s     r   _grab_node_strz'_ExtractModuleReferences._grab_node_str0   r1   r   c                 F    t        |j                  d      r|j                  j                  dk(  r	  j                  |j                  d         }g }d}t        |j                        dkD  r2|j                   fd|j                  d   j                  D               n[t        |d      rO|j                  D ]@  }|j                  dk(  s|j                   fd|j                  j                  D               B 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 y w xY w)Nid
__import__r      c              3   @   K   | ]  }j                  |        y wr   r3   .0vr   s     r   	<genexpr>z6_ExtractModuleReferences.visit_Call.<locals>.<genexpr>;   s     #VqD$7$7$:#V   keywordsfromlistc              3   @   K   | ]  }j                  |        y wr   r9   r:   s     r   r=   z6_ExtractModuleReferences.visit_Call.<locals>.<genexpr>?   s!      ,;< 3 3A 6,r>      r   T.r   )maxsplitr)   )hasattrfuncr5   r3   argslenextendeltsr?   argr.   r0   r   rsplitr!   	Exception)r   r%   r$   r@   r   keywordtop_namer&   s   `       r   
visit_Callz#_ExtractModuleReferences.visit_Call3   s   499d#		(D'**499Q<8&(tyy>A%OO#VDIIaLDUDU#VVT:.#'== ";;*4$OO ,@G@R@R, 
 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 A1H AH 	H H )__name__
__module____qualname____doc__classmethodstrr   tupler   r   r   intr!   r'   r+   r0   r3   rP   __classcell__)r   s   @r   r   r      s|     /c /C /DsHSM7I1J,K / /
c # # 
7	5*r   r   )	r   typingr   
_importlibr   NodeVisitorr   r   find_files_source_depends_on r   r   <module>r_      s/    
  %Us Up  8;; r   