o
    <Æ&iÒ  ã                   @   sD   d dl Z d dlmZmZmZ ddlmZ G dd„ de jƒZej	Z
dS )é    N)ÚListÚOptionalÚTupleé   )Ú_resolve_namec                       sˆ   e Zd ZdZedededeeeee f  fdd„ƒZ	‡ fdd„Z
d	ed
edefdd„Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Z‡  ZS )Ú_ExtractModuleReferenceszR
    Extract the list of global variables a block of code will read and write
    ÚsrcÚpackageÚreturnc                 C   s*   | |ƒ}t  |¡}| |¡ t|j ¡ ƒS ©N)ÚastÚparseÚvisitÚlistÚ
referencesÚkeys)Úclsr   r	   ÚvisitorÚtree© r   úOC:\wamp64\www\opt\env\Lib\site-packages\torch/package/find_file_dependencies.pyÚrun   s   

z_ExtractModuleReferences.runc                    s   t ƒ  ¡  || _i | _d S r   )ÚsuperÚ__init__r	   r   )Úselfr	   ©Ú	__class__r   r   r      s   

z!_ExtractModuleReferences.__init__Úmodule_nameÚlevelc                 C   s   |dkrt || j|ƒS |S )Nr   )r   r	   )r   r   r   r   r   r   Ú
_absmodule   s   z#_ExtractModuleReferences._absmodulec                 C   s    |j D ]
}d| j|jd f< qd S )NT)Únamesr   Úname)r   ÚnodeÚaliasr   r   r   Úvisit_Import   s   
ÿz%_ExtractModuleReferences.visit_Importc                 C   sX   |   |j|jd u rdn|j¡}|jD ]}|jdkr"d| j||jf< qd| j|d f< qd S )Nr   Ú*T)r   Úmoduler   r    r!   r   )r   r"   r!   r#   r   r   r   Úvisit_ImportFrom!   s   

ùz)_ExtractModuleReferences.visit_ImportFromc                 C   ó   |j S r   ©Úvalue©r   r"   r   r   r   Ú_grab_node_int,   ó   z'_ExtractModuleReferences._grab_node_intc                 C   r(   r   r)   r+   r   r   r   Ú_grab_node_str/   r-   z'_ExtractModuleReferences._grab_node_strc           
   
   C   s´  t |jdƒrÖ|jjdkrØz¶|  |jd ¡}g }d}t|jƒdkr2|jd jD ]
}| |  |¡¡ q&nt |dƒrQ|jD ]}|j	dkrP|j
jD ]
}| |  |¡¡ qEq:t|jƒdkra|  |jd ¡}nt |dƒrw|jD ]}|j	dkrv|  |j
¡}qi|g kr¢d	| j|d f< |jd
ddd }||krŸ|  ||¡}d	| j|d f< W d S W d S |  ||¡}|D ]}|dkr¸d	| j||f< qªd	| j|d f< qªW d S  tyÕ }	 zW Y d }	~	d S d }	~	ww d S d S )NÚidÚ
__import__r   é   ÚkeywordsÚfromlisté   r   TÚ.r   )Úmaxsplitr%   )ÚhasattrÚfuncr/   r.   ÚargsÚlenÚeltsÚappendr2   Úargr*   r,   r   Úrsplitr   Ú	Exception)
r   r"   r!   r3   r   ÚvÚkeywordZtop_namer#   Úer   r   r   Ú
visit_Call2   sP   ÿ


€


€þù€ÿÙz#_ExtractModuleReferences.visit_Call)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚclassmethodÚstrr   r   r   r   r   Úintr   r$   r'   r,   r.   rC   Ú__classcell__r   r   r   r   r      s    (r   )r   Útypingr   r   r   Z
_importlibr   ÚNodeVisitorr   r   Zfind_files_source_depends_onr   r   r   r   Ú<module>   s
    
X