U :eg; @sddlmZddlmZmZddlmZddlm Z ddZ ddZ d d Z d d Z dVddZddZddZddZe e fddZdWddZddZddZdXddZd d!ZdYd"d#ZdZd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1d2d3d4d5d6d7d8d9h Zd:d;Z da#d?a$d@dAZ%dBdCZ&dDdEZ'dFdGZ(dHdIZ)dJdKZ*dLdMZ+dNdOZ,ej-ej.hZ/d[dPdQZ0ej.ej-ej1hZ2dRdSZ3d\dTdUZ4d S)])token)LeafNode)python_symbols)patcompcCsttj|ttjd|gS)N=)rsymsargumentrrEQUAL)keywordvaluer 7/usr/local/python38/lib/python3.8/lib2to3/fixer_util.py KeywordArgsrcCs ttjdS)N()rrLPARr r r rLParensrcCs ttjdS)N))rrRPARr r r rRParensrcCsHt|ts|g}t|ts&d|_|g}ttj|ttjdddg|S)N rprefix) isinstancelistrrratomrrr )targetsourcer r rAssigns  rNcCsttj||dSNr)rrNAME)namerr r rName$sr"cCs|ttjt|ggSN)rrtrailerDot)objattrr r rAttr(sr(cCs ttjdS)N,)rrCOMMAr r r rComma,sr+cCs ttjdS)N.)rrDOTr r r rr%0sr%cCs4ttj||g}|r0|dttj||S)Nr)rrr$clone insert_childarglist)argsZlparenZrparennoder r rArgList4sr3cCs&ttj|t|g}|dk r"||_|Sr#)rrpowerr3r) func_namer1rr2r r rCall;sr6cCs ttjdS)N rrNEWLINEr r r rNewlineBsr:cCs ttjdS)Nr8r r r r BlankLineFsr<cCsttj||dSr)rrNUMBER)nrr r rNumberJsr?cCs"ttjttjd|ttjdgS)N[])rrr$rrLBRACERBRACE)Z index_noder r r SubscriptMs rDcCsttj||dSr)rrSTRING)stringrr r rStringSsrGc Csd|_d|_d|_ttjd}d|_ttjd}d|_||||g}|rtd|_ttjd}d|_|ttj||gttj|ttj |g}ttj ttj d|ttj dgS)Nr;rforinifr@rA) rrrr appendrrZcomp_ifZ listmakerZcomp_forrrBrC) ZxpfpittestZfor_leafZin_leafZ inner_argsZif_leafinnerr r rListCompWs(      rPcCsV|D] }|qttjdttj|ddttjdddttj|g}ttj|}|S)Nfromrrimport)removerrr rrimport_as_names import_from)Z package_nameZ name_leafsZleafchildrenimpr r r FromImportos    rXc Cs|d}|jtjkr"|}nttj|g}|d}|rNdd|D}ttjtt|dt|dttj|d||dgg|}|j |_ |S) Nr&aftercSsg|] }|qSr )r.).0r>r r r sz!ImportAndCall..rZlparZrpar) r.typerr0rr4r(r"r$r)r2resultsnamesr&Z newarglistrYnewr r r ImportAndCalls*     racCst|tr |jttgkr dSt|tot|jdkot|jdtot|jdtot|jdto|jdjdko|jdjdkS)NTr\rrr)rrrVrrlenrr r2r r ris_tuples  rfcCsXt|toVt|jdkoVt|jdtoVt|jdtoV|jdjdkoV|jdjdkS)Nrr\r@rA)rrrdrVrr rer r ris_lists  rhcCsttjt|tgSr#)rrrrrrer r r parenthesizesrisortedrsetanyalltuplesumminmax enumerateccs$t||}|r |Vt||}q dSr#)getattr)r&r'nextr r r attr_chains ruzefor_stmt< 'for' any 'in' node=any ':' any* > | comp_for< 'for' any 'in' node=any any* > z power< ( 'iter' | 'list' | 'tuple' | 'sorted' | 'set' | 'sum' | 'any' | 'all' | 'enumerate' | (any* trailer< '.' 'join' >) ) trailer< '(' node=any ')' > any* > z` power< ( 'sorted' | 'enumerate' ) trailer< '(' arglist ')' > any* > FcCspts&ttattattadatttg}t|t|dD]*\}}i}|||r@|d|kr@dSq@dS)NTparentr2F) pats_builtrZcompile_patternp0p1p2ziprumatch)r2patternspatternrvr^r r rin_special_contexts    rcCs|j}|dk r|jtjkrdS|j}|jtjtjfkr:dS|jtjkrX|j d|krXdS|jtj ks|jtj kr|dk r|jtj ks|j d|krdSdS)NFr\T) Z prev_siblingr]rr-rvrfuncdefclassdef expr_stmtrVZ parametersZ typedargslistr*)r2prevrvr r ris_probably_builtins&    rcCsJ|dk rF|jtjkr>t|jdkr>|jd}|jtjkr>|jS|j}qdS)Nrcrr;) r]rsuiterdrVrINDENTr rv)r2indentr r rfind_indentations  rcCs>|jtjkr|S|}|jd}|_ttj|g}||_|Sr#)r]rrr.rvr)r2rvrr r r make_suites rcCs$|jtjkr |j}|stdq|S)Nz,root found before file_input node was found.)r]rZ file_inputrv ValueErrorrer r r find_root&s   rcCst|t||}t|Sr#) find_bindingrbool)packager!r2Zbindingr r rdoes_tree_import/srcCs|jtjtjfkSr#)r]r import_namerUrer r r is_import7src Cs.dd}t|}t|||r dSd}}t|jD]F\}}||sDq2t|j|dD]\}}||sVqlqV||}qzq2|dkrt|jD]8\}}|jtjkr|jr|jdjtjkr|d}qq|dkrt tj t tj dt tj |ddg} nt |t tj |ddg} | tg} ||t tj| dS)NcSs |jtjko|jot|jdS)Nr\)r]r simple_stmtrVrrer r ris_import_stmt>s z$touch_import..is_import_stmtr\rrRrr)rrrrrVr]rrrrErrrr rXr:r/) rr!r2rrootZ insert_posoffsetidxZnode2import_rVr r r touch_import;s8   rcCs|jD]}d}|jtjkrVt||jdr4|St|t|jd|}|rR|}n0|jtjtjfkrt|t|jd|}|r|}n|jtj krt|t|jd|}|r|}nTt |jddD]@\}}|jt j kr|j dkrt|t|j|d|}|r|}qnx|jtkr2|jdj |kr2|}nTt|||rF|}n@|jtjkrbt|||}n$|jtjkrt||jdr|}|r|s|St|r|SqdS)Nrrgrcrb:r\)rVr]rZfor_stmt_findrrZif_stmtZ while_stmtZtry_stmtrrrCOLONr _def_syms_is_import_bindingrrr)r!r2rchildretr>iZkidr r rrisH   rcCsT|g}|rP|}|jdkr4|jtkr4||jq|jtjkr|j|kr|SqdS)N)popr] _block_symsextendrVrr r )r!r2Znodesr r rrsrcCs|jtjkr|s|jd}|jtjkrx|jD]H}|jtjkrV|jdj|krt|Sq,|jtjkr,|j|kr,|Sq,nL|jtjkr|jd}|jtjkr|j|kr|Sn|jtjkr|j|kr|Sn|jtj kr|rt |jd |krdS|jd}|rt d|rdS|jtj kr0t ||r0|S|jtjkrh|jd}|jtjkr|j|kr|Sn6|jtjkr|j|kr|S|r|jtjkr|SdS)Nrrcrgrbas)r]rrrVZdotted_as_namesZdotted_as_namer rr rUstrstriprrTZimport_as_nameSTAR)r2r!rrWrZlastr>r r rrs@          r)N)NN)N)N)N)N)N)5Zpgen2rZpytreerrZpygramrrr;rrrrrr"r(r+r%r3r6r:r<r?rDrGrPrXrarfrhriZconsuming_callsrurxryrzrwrrrrrrrrrrrrr$rrrr r r rs^           -  *