a 97aV @sndZddlmZddlmZddlmZddlm Z m Z m Z dZ Gdddej Zd d Zd d Zd dZdS)a Based on fix_next.py by Collin Winter. Replaces it.next() -> next(it), per PEP 3114. Unlike fix_next.py, this fixer doesn't replace the name of a next method with __next__, which would break Python 2 compatibility without further help from fixers in stage 2. )token)python_symbols) fixer_base)NameCall find_bindingz;Calls to builtin next() possibly shadowed by global bindingcs0eZdZdZdZdZfddZddZZS) FixNextCallTz power< base=any+ trailer< '.' attr='next' > trailer< '(' ')' > > | power< head=any+ trailer< '.' attr='next' > not trailer< '(' ')' > > | global=global_stmt< 'global' any* 'next' any* > precs>tt|||td|}|r4||td|_nd|_dS)NnextTF)superr start_treerwarning bind_warning shadowed_next)selftreefilenamen __class__z/private/var/folders/s6/9n5zrl012gv99k63s4q6ccsd4s6mqz/T/pip-target-f5cq3f2q/lib/python/libfuturize/fixes/fix_next_call.pyr s   zFixNextCall.start_treecCs|sJ|d}|d}|d}|rf|jr2qdd|D}d|d_|ttd|jd |nb|rln\|rt|r|d }dd d|Dd kr| |t dSnd |vr| |t d|_dS)NbaseattrnamecSsg|] }|qSr)clone.0rrrr 7z)FixNextCall.transform..rr )prefixheadcSsg|] }t|qSr)strrrrrrEr __builtin__globalT) getrr!replacerris_assign_targetjoinstripr r)rnoderesultsrrrr"rrr transform*s*      zFixNextCall.transform) __name__ __module__ __qualname__Z BM_compatibleZPATTERNorderr r- __classcell__rrrrrs  rcCsFt|}|durdS|jD]&}|jtjkr0dSt||rdSqdS)NFT) find_assignchildrentyperEQUAL is_subtree)r+Zassignchildrrrr(Rs   r(cCs4|jtjkr|S|jtjks&|jdur*dSt|jSN)r5symsZ expr_stmtZ simple_stmtparentr3r+rrrr3^s  r3cs$|kr dStfdd|jDS)NTc3s|]}t|VqdSr9)r7)rcr<rr hrzis_subtree..)anyr4)rootr+rr<rr7esr7N)__doc__Z lib2to3.pgen2rZlib2to3.pygramrr:Zlib2to3rZlib2to3.fixer_utilrrrrZBaseFixrr(r3r7rrrrs   >