3 Õì2a¸ ã@sVddlmZddlmZmZmZmZddlmZm Z m Z dd„Z Gdd„dej ƒZ d S) é)Ú fixer_baseé)ÚdirnameÚjoinÚexistsÚsep)Ú FromImportÚsymsÚtokenccs¢|g}x–|rœ|jƒ}|jtjkr*|jVq|jtjkrPdjdd„|jDƒƒVq|jtj krn|j |jdƒq|jtj kr’|j |jddd…ƒqt dƒ‚qWdS)NÚcSsg|] }|j‘qS©)Úvalue)Ú.0Zchr r ú//opt/alt/python36/lib64/python3.6/fix_import.pyú sz$traverse_imports..rrzunknown node typeéþÿÿÿ)ÚpopÚtyper ÚNAMEr r Z dotted_namerÚchildrenZdotted_as_nameÚappendZdotted_as_namesÚextendÚAssertionError)ÚnamesÚpendingÚnoder r rÚtraverse_importss     rcs4eZdZdZdZ‡fdd„Zdd„Zdd„Z‡ZS) Ú FixImportTzj import_from< 'from' imp=any 'import' ['('] any [')'] > | import_name< 'import' imp=any > cs"tt|ƒj||ƒd|jk|_dS)NZabsolute_import)ÚsuperrÚ start_treeZfuture_featuresÚskip)ÚselfZtreeÚname)Ú __class__r rr/szFixImport.start_treecCs¼|jr dS|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ƒdSt d|gƒ}|j |_ |SdS)NÚimpr rÚ.FTz#absolute and local imports together) r rr Z import_fromÚhasattrrÚprobably_a_local_importr ZchangedrZwarningrÚprefix)r!rÚresultsr$Z have_localZ have_absoluteZmod_nameÚnewr r rÚ transform3s,        zFixImport.transformcCsv|jdƒrdS|jddƒd}t|jƒ}t||ƒ}ttt|ƒdƒƒsHdSx(dtddd d gD]}t||ƒrZd SqZWdS) Nr%Férz __init__.pyz.pyz.pycz.soz.slz.pydT)Ú startswithÚsplitrÚfilenamerrr)r!Zimp_nameÚ base_pathZextr r rr'Us    z!FixImport.probably_a_local_import) Ú__name__Ú __module__Ú __qualname__Z BM_compatibleZPATTERNrr+r'Ú __classcell__r r )r#rr&s  "rN)r rZos.pathrrrrZ fixer_utilrr r rZBaseFixrr r r rÚs