
    9iV                         S r SSKJr  SSKJr  SSKJr  SSKJ	r	J
r
Jr  Sr " S S\R                  5      rS	 rS
 rS rg)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)NameCallfind_bindingz;Calls to builtin next() possibly shadowed by global bindingc                   :   ^  \ rS rSrSrSrSrU 4S jrS rSr	U =r
$ )FixNextCall   Tz
    power< base=any+ trailer< '.' attr='next' > trailer< '(' ')' > >
    |
    power< head=any+ trailer< '.' attr='next' > not trailer< '(' ')' > >
    |
    global=global_stmt< 'global' any* 'next' any* >
    prec                    > [         [        U ]  X5        [        SU5      nU(       a  U R	                  U[
        5        SU l        g SU l        g )NnextTF)superr
   
start_treer   warningbind_warningshadowed_next)selftreefilenamen	__class__s       _/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/libfuturize/fixes/fix_next_call.pyr   FixNextCall.start_tree    s?    k4+D;&LLL)!%D!&D    c           	         U(       d   eUR                  S5      nUR                  S5      nUR                  S5      nU(       ai  U R                  (       a  g U Vs/ s H  ofR                  5       PM     nnSUS   l        UR	                  [        [        SUR                  S9U5      5        g U(       a  g U(       aj  [        U5      (       aY  US   nSR                  U Vs/ s H  n[        U5      PM     sn5      R                  5       S	:X  a  U R                  U[        5        g g S
U;   a  U R                  U[        5        SU l        g g s  snf s  snf )Nbaseattrname r   r   )prefixhead__builtin__globalT)getr   cloner!   replacer   r   is_assign_targetjoinstrstripr   r   )r   noderesultsr   r   r   r   r"   s           r   	transformFixNextCall.transform*   s   w{{6"{{6"{{6"!! +/04a	40!#QT$vdkk"BDIJ   %%v77D1DqCFD1288:mKLL|4	 &  LL|,!%D !' 1 2s   E E)r   )__name__
__module____qualname____firstlineno__BM_compatiblePATTERNorderr   r.   __static_attributes____classcell__)r   s   @r   r
   r
      s%    MG E'"& "&r   r
   c                     [        U 5      nUc  gUR                   H5  nUR                  [        R                  :X  a    g[        X 5      (       d  M5    g   g)NFT)find_assignchildrentyper   EQUAL
is_subtree)r,   assignchilds      r   r(   r(   R   sH    F~::$$$	 !
 r   c                     U R                   [        R                  :X  a  U $ U R                   [        R                  :X  d  U R                  c  g [        U R                  5      $ N)r<   syms	expr_stmtsimple_stmtparentr:   )r,   s    r   r:   r:   ^   sD    yyDNN"yyD$$$(;t{{##r   c                 P   ^ U T:X  a  g[        U4S jU R                   5       5      $ )NTc              3   <   >#    U  H  n[        UT5      v   M     g 7frB   )r>   ).0cr,   s     r   	<genexpr>is_subtree.<locals>.<genexpr>h   s     :Mqz!T""Ms   )anyr;   )rootr,   s    `r   r>   r>   e   s"    t|:DMM:::r   N)__doc__lib2to3.pgen2r   lib2to3.pygramr   rC   lib2to3r   lib2to3.fixer_utilr   r   r   r   BaseFixr
   r(   r:   r>    r   r   <module>rV      sB      1  7 7L8&*$$ 8&|
$;r   