�
,�]c @ s� d Z d d l m Z d d l m Z d d l m Z d d l m Z m
Z
m Z d Z d e j
f d � � YZ d � Z d
� Z d � Z d S(
s
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.
i����( t token( t python_symbols( t
fixer_base( t Namet Callt find_bindings; Calls to builtin next() possibly shadowed by global bindingt FixNextCallc B s, e Z e Z d Z d Z d � Z d � Z RS( s�
power< base=any+ trailer< '.' attr='next' > trailer< '(' ')' > >
|
power< head=any+ trailer< '.' attr='next' > not trailer< '(' ')' > >
|
global=global_stmt< 'global' any* 'next' any* >
t prec C sW t t | � j | | � t d | � } | rJ | j | t � t | _ n t | _ d S( Nt next( t superR t
start_treeR t warningt bind_warningt Truet
shadowed_nextt False( t selft treet filenamet n( ( sC /usr/lib/python2.7/site-packages/libfuturize/fixes/fix_next_call.pyR
s c C s2 | j d � } | j d � } | j d � } | r� | j r? q.g | D] } | j � ^ qF } d | d _ | j t t d d | j �| � � n� | r� n� | rt | � r.| d } d j g | D] } t | � ^ q� � j
� d k r� | j | t � n d Sn( d
| k r.| j | t � t
| _ n d S( Nt baset attrt namet i R t prefixt headt __builtin__t global( t getR t cloneR t replaceR R t is_assign_targett joint strt stripR R R
( R t nodet resultsR R R R R ( ( sC /usr/lib/python2.7/site-packages/libfuturize/fixes/fix_next_call.pyt transform* s(
(
4( t __name__t
__module__R
t
BM_compatiblet PATTERNt orderR
R% ( ( ( sC /usr/lib/python2.7/site-packages/libfuturize/fixes/fix_next_call.pyR s
c C s] t | � } | d k r t Sx: | j D]/ } | j t j k rB t St | | � r&