????
Your IP : 3.142.201.19
a
�DOg��@sZdZddlmZddlmZmZmZmZddlm Z m
Z
mZdd�ZGdd �d ej
�Zd
S)z�Fixer for import statements.
If spam is being imported from the local directory, this import:
from spam import eggs
Becomes:
from .spam import eggs
And this import:
import spam
Becomes:
from . import spam
�)�
fixer_base�)�dirname�join�exists�sep)�
FromImport�syms�tokenccs�|g}|r�|��}|jtjkr(|jVq|jtjkrNd�dd�|jD��Vq|jtj krl|�
|jd�q|jtjkr�|�|jddd��qt
d��qdS)zF
Walks over all the names imported in a dotted_as_names node.
�cSsg|]
}|j�qS�)�value)�.0Zchrr�0/usr/lib64/python3.9/lib2to3/fixes/fix_import.py�
<listcomp>�z$traverse_imports.<locals>.<listcomp>rN���zunknown node type)�pop�typer
�NAMEr
r Zdotted_namer�childrenZdotted_as_name�appendZdotted_as_names�extend�AssertionError)�names�pending�noderrr�traverse_importss
rcs4eZdZdZdZ�fdd�Zdd�Zdd�Z�ZS) � FixImportTzj
import_from< 'from' imp=any 'import' ['('] any [')'] >
|
import_name< 'import' imp=any >
cs"tt|��||�d|jv|_dS)NZabsolute_import)�superr�
start_treeZfuture_features�skip)�selfZtree�name�� __class__rrr /szFixImport.start_treecCs�|jr
dS|d}|jtjkrVt|d�s4|jd}q|�|j�r�d|j|_|��nZd}d}t |�D]}|�|�rzd}qfd}qf|r�|r�|�
|d�dStd|g�}|j|_|SdS)N�impr
r�.FTz#absolute and local imports together)
r!rr Zimport_from�hasattrr�probably_a_local_importr
�changedr�warningr�prefix)r"r�resultsr&Z
have_localZ
have_absolute�mod_name�newrrr� transform3s,
zFixImport.transformcCst|�d�rdS|�dd�d}t|j�}t||�}ttt|�d��sHdSdtddd d
fD]}t||�rXdSqXdS)Nr'F�rz__init__.pyz.pyz.pycz.soz.slz.pydT)�
startswith�splitr�filenamerrr)r"Zimp_name� base_path�extrrrr)Us
z!FixImport.probably_a_local_import) �__name__�
__module__�__qualname__Z
BM_compatibleZPATTERNr r0r)�
__classcell__rrr$rr&s
"rN)�__doc__rrZos.pathrrrrZ
fixer_utilrr r
rZBaseFixrrrrr�<module>s