
    4pfV                     ~    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dS )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$|                     |t
                     d| _        d S d| _        d S )NnextTF)superr
   
start_treer   warningbind_warningshadowed_next)selftreefilenamen	__class__s       _/var/www/html/nettyfy-visnx/env/lib/python3.11/site-packages/libfuturize/fixes/fix_next_call.pyr   zFixNextCall.start_tree    sj    k4  ++D(;;;&& 	'LLL)))!%D!&D    c                 x   |sJ |                     d          }|                     d          }|                     d          }|r[| j        rd S d |D             }d|d         _        |                    t	          t          d|j                  |                     d S |rd S |rkt          |          rZ|d	         }d                    d
 |D                                                       dk    r| 	                    |t                     d S d S d|v r$| 	                    |t                     d| _        d S d S )Nbaseattrnamec                 6    g | ]}|                                 S  )clone.0r   s     r   
<listcomp>z)FixNextCall.transform.<locals>.<listcomp>7   s     000a		000r    r   r   )prefixheadc                 ,    g | ]}t          |          S r   )strr!   s     r   r#   z)FixNextCall.transform.<locals>.<listcomp>E   s    111qCFF111r   __builtin__globalT)getr   r%   replacer   r   is_assign_targetjoinstripr   r   )r   noderesultsr   r   r   r&   s          r   	transformzFixNextCall.transform*   sf   {{6""{{6""{{6"" 	&! K 004000!#QT$vdk"B"B"BDIIJJJJJ 	& D 	&  %% v7711D1112288::mKKLL|444	    LL|,,,!%D ! r   )	__name__
__module____qualname__BM_compatiblePATTERNorderr   r2   __classcell__)r   s   @r   r
   r
      sZ        MG E' ' ' ' '"& "& "& "& "& "& "&r   r
   c                     t          |           }|dS |j        D ]-}|j        t          j        k    r dS t          ||           r dS .dS )NFT)find_assignchildrentyper   EQUAL
is_subtree)r0   assignchilds      r   r-   r-   R   sc    F~u  :$$55t$$ 	44	5r   c                     | j         t          j        k    r| S | j         t          j        k    s| j        d S t          | j                  S N)r=   syms	expr_stmtsimple_stmtparentr;   )r0   s    r   r;   r;   ^   sB    yDN""yD$$$(;tt{###r   c                 T    | k    rdS t          fd| j        D                       S )NTc              3   8   K   | ]}t          |          V  d S rC   )r?   )r"   cr0   s     r   	<genexpr>zis_subtree.<locals>.<genexpr>h   s-      ::qz!T""::::::r   )anyr<   )rootr0   s    `r   r?   r?   e   s6    t||t::::DM::::::r   N)__doc__lib2to3.pgen2r   lib2to3.pygramr   rD   lib2to3r   lib2to3.fixer_utilr   r   r   r   BaseFixr
   r-   r;   r?   r   r   r   <module>rT      s            1 1 1 1 1 1       7 7 7 7 7 7 7 7 7 7L8& 8& 8& 8& 8&*$ 8& 8& 8&|
 
 
$ $ $; ; ; ; ;r   