3
Õì2a¸ ã @ sV d dl mZ ddlmZmZmZmZ d dlmZm Z m
Z
dd„ ZG dd„ dejƒZ
d S )
é )Ú
fixer_baseé )ÚdirnameÚjoinÚexistsÚsep)Ú
FromImportÚsymsÚtokenc c s¢ | g}x–|rœ|j ƒ }|jtjkr*|jV q|jtjkrPdjdd„ |jD ƒƒV q|jtj krn|j
|jd ƒ q|jtjkr’|j|jd d d… ƒ qt
dƒ‚qW d S )NÚ c S s g | ]
}|j ‘qS © )Úvalue)Ú.0Zchr r ú//opt/alt/python36/lib64/python3.6/fix_import.pyú
s z$traverse_imports..r r zunknown node typeéþÿÿÿ)ÚpopÚtyper
ÚNAMEr
r Zdotted_namer ÚchildrenZdotted_as_nameÚappendZdotted_as_namesÚextendÚAssertionError)ÚnamesÚpendingÚnoder r r Útraverse_imports s
r c s4 e Zd ZdZdZ‡ fdd„Zdd„ Zdd„ Z‡ ZS ) Ú FixImportTzj
import_from< 'from' imp=any 'import' ['('] any [')'] >
|
import_name< 'import' imp=any >
c s" t t| ƒj||ƒ d|jk| _d S )NZabsolute_import)Úsuperr Ú
start_treeZfuture_featuresÚskip)ÚselfZtreeÚname)Ú __class__r r r / s zFixImport.start_treec C s¼ | j r
d S |d }|jtjkrZxt|dƒs6|jd }q W | j|jƒr¸d|j |_|jƒ n^d}d}x$t |ƒD ]}| j|ƒr€d}qld}qlW |r |rœ| j
|dƒ d S td|gƒ}|j|_|S d S )NÚimpr
r Ú.FTz#absolute and local imports together)
r r r Zimport_fromÚhasattrr Úprobably_a_local_importr
Zchangedr Zwarningr Úprefix)r! r Úresultsr$ Z
have_localZ
have_absoluteZmod_nameÚnewr r r Ú transform3 s,
zFixImport.transformc C sv |j dƒrdS |jddƒd }t| jƒ}t||ƒ}ttt|ƒdƒƒsHdS x(dtddd d
gD ]}t|| ƒrZdS qZW dS )Nr% Fé r z__init__.pyz.pyz.pycz.soz.slz.pydT)Ú
startswithÚsplitr Úfilenamer r r )r! Zimp_nameÚ base_pathZextr r r r' U s
z!FixImport.probably_a_local_import) Ú__name__Ú
__module__Ú__qualname__Z
BM_compatibleZPATTERNr r+ r' Ú
__classcell__r r )r# r r &