JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr ] @swddlmZddlmZmZmZmZddlmZm Z m Z ddZ Gdddej Z d S) ) fixer_base)dirnamejoinexistssep) FromImportsymstokenccs|g}x|r|j}|jtjkr;|jVq |jtjkrndjdd|jDVq |jtj kr|j |jdq |jtj kr|j |jdddq t dq WdS)NcSsg|]}|jqS)value).0Zchr r //opt/alt/python35/lib64/python3.5/fix_import.py s z$traverse_imports..rrzunknown node type)poptyper NAMEr r Z dotted_namerchildrenZdotted_as_nameappendZdotted_as_namesextendAssertionError)namespendingnoder r rtraverse_importss    ! rcsFeZdZdZdZfddZddZddZS) FixImportTzj import_from< 'from' imp=any 'import' ['('] any [')'] > | import_name< 'import' imp=any > cs/tt|j||d|jk|_dS)NZabsolute_import)superr start_treeZfuture_featuresskip)selfZtreename) __class__r rr/szFixImport.start_treecCs|jr dS|d}|jtjkr{x t|dsK|jd}q,W|j|jrd|j|_|jnd}d}x2t |D]$}|j|rd}qd}qW|r|r|j |ddSt d|g}|j |_ |SdS)Nimpr r.FTz#absolute and local imports together) r rr Z import_fromhasattrrprobably_a_local_importr Zchangedrwarningrprefix)r!rresultsr$Z have_localZ have_absoluteZmod_namenewr r r transform3s,      zFixImport.transformcCs|jdrdS|jddd}t|j}t||}ttt|dsfdSx4dtddd d gD]}t||rd SqWdS) Nr%Frz __init__.pyz.pyz.pycz.soz.slz.pydT) startswithsplitrfilenamerrr)r!Zimp_name base_pathextr r rr'Usz!FixImport.probably_a_local_import)__name__ __module__ __qualname__Z BM_compatibleZPATTERNrr,r'r r )r#rr&s  "rN)r rZos.pathrrrrZ fixer_utilrr r rZBaseFixrr r r rs"