o !Qd @sX ddlmZddlmZmZmZmZddlmZm Z m Z ddZ Gdddej Z d S) ) fixer_base)dirnamejoinexistssep) FromImportsymstokenccs |g}|rR|}|jtjkr|jVn8|jtjkr)ddd|jDVn%|jtj kr8| |jdn|jtj krJ| |jdddnt d|sdSdS)NcSsg|]}|jqS)value).0Zchr r ?/opt/alt/python310/lib64/python3.10/lib2to3/fixes/fix_import.py sz$traverse_imports..rzunknown node type)poptyper NAMEr r Z dotted_namerchildrenZdotted_as_nameappendZdotted_as_namesextendAssertionError)namesZpendingnoder r rtraverse_importss      rcs4eZdZdZdZfddZddZddZZS) FixImportTzj import_from< 'from' imp=any 'import' ['('] any [')'] > | import_name< 'import' imp=any > cs"tt|||d|jv|_dS)NZabsolute_import)superr start_treeZfuture_featuresskip)selfZtreename __class__r rr/szFixImport.start_treecCs|jrdS|d}|jtjkr2t|ds|jd}t|dr||jr0d|j|_|dSdSd}d}t |D] }||rDd}q:d}q:|rS|rQ| |ddSt d|g}|j |_ |S)Nimpr r.FTz#absolute and local imports together) rrr Z import_fromhasattrrprobably_a_local_importr ZchangedrZwarningrprefix)r rZresultsr$Z have_localZ have_absoluteZmod_namenewr r r transform3s0          zFixImport.transformcCst|drdS|ddd}t|j}t||}ttt|ds$dSdtddd d fD] }t||r7d Sq,dS) Nr%Frz __init__.pyz.pyz.pycz.soz.slz.pydT) startswithsplitrfilenamerrr)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 rs