� {fc@szdZddlmZddlmZmZmZmZddlm Z m Z m Z d�Z dej 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 |jtj kr�|j |jddd��q t d��q WdS(sF Walks over all the names imported in a dotted_as_names node. tiNi����sunknown node type(tpopttypeRtNAMEtvalueRt dotted_nameRtchildrentdotted_as_nametappendtdotted_as_namestextendtAssertionError(tnamestpendingtnodetch((s0/usr/lib64/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((s0/usr/lib64/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(NtimpR iu.s#absolute and local imports together(RR Rt import_fromthasattrRtprobably_a_local_importR tchangedtFalseRtTruetwarningRtprefix(RRtresultsR"t have_localt have_absolutetmod_nametnew((s0/usr/lib64/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((s0/usr/lib64/python2.7/lib2to3/fixes/fix_import.pyR%Us(t__name__t __module__R(t BM_compatibletPATTERNRR0R%(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_import.pyR&s   "N(t__doc__RRtos.pathRRRRt fixer_utilRRRRtBaseFixR(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_import.pyt s "