B A[V @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* > Zprecs>tt|||td|}|r4||td|_nd|_dS)NnextTF)superr start_treerwarning bind_warning shadowed_next)selfZtreefilenamen) __class__P/opt/alt/python37/lib/python3.7/site-packages/libfuturize/fixes/fix_next_call.pyr s   zFixNextCall.start_treecCs|st|d}|d}|d}|rf|jr2qdd|D}d|d_|ttd|jd |nb|rln\|rt|r|d }dd d|D d kr| |t dSnd |kr| |t d|_dS)NbaseattrnamecSsg|] }|qSr)Zclone).0rrrr 7sz)FixNextCall.transform..rr )prefixheadcSsg|] }t|qSr)str)rrrrrrEsZ __builtin__globalT) AssertionErrorgetrrreplacerris_assign_targetjoinstripr r )rnodeZresultsrrrrrrr transform*s*      zFixNextCall.transform) __name__ __module__ __qualname__Z BM_compatibleZPATTERNorderr r& __classcell__rr)rrrs  rcCsFt|}|dkrdSx,|jD]"}|jtjkr0dSt||rdSqWdS)NFT) find_assignchildrentyperEQUAL is_subtree)r%ZassignZchildrrrr"Rs   r"cCs4|jtjkr|S|jtjks&|jdkr*dSt|jS)N)r.symsZ expr_stmtZ simple_stmtparentr,)r%rrrr,^s  r,cs$|kr dStfdd|jDS)NTc3s|]}t|VqdS)N)r0)rc)r%rr hszis_subtree..)anyr-)rootr%r)r%rr0esr0N)__doc__Z lib2to3.pgen2rZlib2to3.pygramrr1Zlib2to3rZlib2to3.fixer_utilrrrr ZBaseFixrr"r,r0rrrr s   >