
    daff                         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)z.Fixer for it.next() -> next(it), per PEP 3114.   )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 )FixNextTa  
    power< base=any+ trailer< '.' attr='next' > trailer< '(' ')' > >
    |
    power< head=any+ trailer< '.' attr='next' > not trailer< '(' ')' > >
    |
    classdef< 'class' any+ ':'
              suite< any*
                     funcdef< 'def'
                              name='next'
                              parameters< '(' NAME ')' > any+ >
                     any* > >
    |
    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       1/root/Python-3.12.4/Lib/lib2to3/fixes/fix_next.pyr   zFixNext.start_tree$   sA    gt'h7&LLL)!%D!&D    c                 4   |sJ |j                  d      }|j                  d      }|j                  d      }|r| j                  r'|j                  t        d|j                               y |D cg c]  }|j                          }}d|d   _        |j                  t        t        d|j                        |             y |r)t        d|j                        }|j                  |       y |r{t        |      rU|d	   }dj                  |D cg c]  }t        |       c}      j                         d
k(  r| j                  |t               y |j                  t        d             y d|v r| j                  |t               d| _        y y c c}w c c}w )Nbaseattrname__next__)prefix     r   head__builtin__globalT)getr   replacer   r   cloner   is_assign_targetjoinstrstripr   r   )r   noderesultsr   r   r   r   r"   s           r   	transformzFixNext.transform.   sD   w{{6"{{6"{{6"!!T*T[[AB+/0a	00!#QT$vdkk"BDIJZ4ALLO  %v77D1qCF1288:mKLL|4LLj)* LL|,!%D !! 1 2s   1FF)	__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(   Q   sL    F~ ::$t$	
 r   c                     | j                   t        j                  k(  r| S | j                   t        j                  k(  s| j                  y t        | j                        S N)r9   syms	expr_stmtsimple_stmtparentr7   )r,   s    r   r7   r7   ]   sD    yyDNN"yyD$$$(;t{{##r   c                 L    | k(  ryt        fd| j                  D              S )NTc              3   6   K   | ]  }t        |        y wr?   )r;   ).0cr,   s     r   	<genexpr>zis_subtree.<locals>.<genexpr>g   s     :qz!T":s   )anyr8   )rootr,   s    `r   r;   r;   d   s"    t|:DMM:::r   N)__doc__pgen2r   pygramr   r@   r    r   
fixer_utilr   r   r   r   BaseFixr
   r(   r7   r;    r   r   <module>rQ      s@    4  +  1 1L:&j   :&@
$;r   