o
    0h                     @   s<   d dl Z d dlmZ ddlmZ G dd de jZejZdS )    N)Optional   )_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   X/var/www/vscode/kcb/lib/python3.10/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_str0   r+   z'_ExtractModuleReferences._grab_node_strc                    s  t |jdr|jjdkrz |jd }g }d}t|jdkr1| fdd|jd jD  nt |drO|jD ]}|j	dkrN| fd	d|j
jD  q9t|jd
kr_ |jd
 }nt |dru|jD ]}|j	dkrt |j
}qg|g krd j|d f< |jdddd }||kr ||}d j|d f< W d S W d S  ||}|D ]}|dkrd j||f< qd j|d f< qW d S  ty   Y d S w d S d S )Nid
__import__r      c                 3       | ]}  |V  qd S r	   r,   .0vr   r   r   	<genexpr>;   s    z6_ExtractModuleReferences.visit_Call.<locals>.<genexpr>keywordsfromlistc                 3   r0   r	   r1   r2   r5   r   r   r6   ?   s    

   r   T.r   )maxsplitr#   )hasattrfuncr-   r,   argslenextendeltsr7   argr(   r*   r   rsplitr   	Exception)r   r    r   r8   r   keywordtop_namer!   r   r5   r   
visit_Call3   sL   "





z#_ExtractModuleReferences.visit_Call)__name__
__module____qualname____doc__classmethodstrr   tupler   r   r   intr   r"   r%   r*   r,   rG   __classcell__r   r   r   r   r      s    (r   )	r
   typingr   
_importlibr   NodeVisitorr   r   find_files_source_depends_onr   r   r   r   <module>   s
   
X