�`^c@szdZddlmZddlmZmZmZmZddlm Z m
Z
mZd�Zdej
fd��YZd S(
s�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
i(t
fixer_basei�(tdirnametjointexiststsep(t
FromImporttsymsttokenccs�|g}x�|r�j�}|jtjkr;|jVq|jtjkrwdjg|jD]}|j^q]�Vq|jtj kr�|j
|jd�q|jtjkr�|j|jddd��qt
d��qWdS(sF
Walks over all the names imported in a dotted_as_names node.
tiNi�sunknown node type(tpopttypeRtNAMEtvalueRtdotted_nameRtchildrentdotted_as_nametappendtdotted_as_namestextendtAssertionError(tnamestpendingtnodetch((s./sys/lib/python2.7/lib2to3/fixes/fix_import.pyttraverse_importss * t FixImportcBs/eZeZdZd�Zd�Zd�ZRS(sj
import_from< 'from' imp=any 'import' ['('] any [')'] >
|
import_name< 'import' imp=any >
cCs/tt|�j||�d|jk|_dS(Ntabsolute_import(tsuperRt
start_treetfuture_featurestskip(tselfttreetname((s./sys/lib/python2.7/lib2to3/fixes/fix_import.pyR/scCs|jr
dS|d}|jtjkr~x t|d�sK|jd}q,W|j|j�rd|j|_|j�qn�t }t }x2t
|�D]$}|j|�r�t}q�t}q�W|r�r�|j|d�ndSt
d|g�}|j|_|SdS(NtimpRiu.s#absolute and local imports together(RR
Rtimport_fromthasattrRtprobably_a_local_importRtchangedtFalseRtTruetwarningRtprefix(RRtresultsR"t
have_localt
have_absolutetmod_nametnew((s./sys/lib/python2.7/lib2to3/fixes/fix_import.pyt transform3s,
cCs�|jd�rtS|jdd�d}t|j�}t||�}ttt|�d��sftSx4dtdddd gD]}t||�rtSqWtS(
Nu.iis__init__.pys.pys.pycs.sos.sls.pyd( t
startswithR'tsplitRtfilenameRRRR((Rtimp_namet base_pathtext((s./sys/lib/python2.7/lib2to3/fixes/fix_import.pyR%Us(t__name__t
__module__R(t
BM_compatibletPATTERNRR0R%(((s./sys/lib/python2.7/lib2to3/fixes/fix_import.pyR&s
"N(t__doc__RRtos.pathRRRRt
fixer_utilRRRRtBaseFixR(((s./sys/lib/python2.7/lib2to3/fixes/fix_import.pyt<module>s
"
|