
    FwgV                         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 G d dej                        Zd	 Zd
 Zd Zy)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                   0     e Zd ZdZdZdZ fdZd Z xZS )FixNextCallTz
    power< base=any+ trailer< '.' attr='next' > trailer< '(' ')' > >
    |
    power< head=any+ trailer< '.' attr='next' > not trailer< '(' ')' > >
    |
    global=global_stmt< 'global' any* 'next' any* >
    prec                     t         t        |   ||       t        d|      }|r| j	                  |t
               d| _        y d| _        y )NnextTF)superr
   
start_treer   warningbind_warningshadowed_next)selftreefilenamen	__class__s       V/var/www/horilla/myenv/lib/python3.12/site-packages/libfuturize/fixes/fix_next_call.pyr   zFixNextCall.start_tree    sA    k4+D(;&LLL)!%D!&D    c                 d   |sJ |j                  d      }|j                  d      }|j                  d      }|re| j                  ry |D cg c]  }|j                          }}d|d   _        |j	                  t        t        d|j                        |             y |ry |rat        |      rU|d   }dj                  |D cg c]  }t        |       c}      j                         d	k(  r| j                  |t               y y d
|v r| j                  |t               d| _        y y c c}w c c}w )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   	transformzFixNextCall.transform*   s   w{{6"{{6"{{6"!! +/0a	00!#QT$vdkk"BDIJ   %v77D1qCF1288:mKLL|4	 &  LL|,!%D !' 1 2s   D(D-)	__name__
__module____qualname__BM_compatiblePATTERNorderr   r,   __classcell__)r   s   @r   r
   r
      s     MG E'"&r   r
   c                     t        |       }|y|j                  D ]/  }|j                  t        j                  k(  r yt        ||       s/ y y)NFT)find_assignchildrentyper   EQUAL
is_subtree)r*   assignchilds      r   r&   r&   R   sL    F~ ::$t$	
 r   c                     | j                   t        j                  k(  r| S | j                   t        j                  k(  s| j                  y t        | j                        S N)r7   syms	expr_stmtsimple_stmtparentr5   )r*   s    r   r5   r5   ^   sD    yyDNN"yyD$$$(;t{{##r   c                 L    | k(  ryt        fd| j                  D              S )NTc              3   6   K   | ]  }t        |        y wr=   )r9   ).0cr*   s     r   	<genexpr>zis_subtree.<locals>.<genexpr>h   s     :qz!T":s   )anyr6   )rootr*   s    `r   r9   r9   e   s"    t|:DMM:::r   N)__doc__lib2to3.pgen2r   lib2to3.pygramr   r>   lib2to3r   lib2to3.fixer_utilr   r   r   r   BaseFixr
   r&   r5   r9    r   r   <module>rP      sB      1  7 7L8&*$$ 8&|
$;r   