
    ZQd
                     \    d Z ddlmZ ddlmZmZmZ ddlmZ  G d dej                  Z	dS )z/Fixer that changes xrange(...) into range(...).   )
fixer_base)NameCallconsuming_calls)patcompc                        e Zd ZdZdZ fdZd Zd Zd Zd Z	dZ
 ej        e
          Zd	Z ej        e          Zd
 Z xZS )	FixXrangeTz
              power<
                 (name='range'|name='xrange') trailer< '(' args=any ')' >
              rest=any* >
              c                     t          t          |                               ||           t                      | _        d S N)superr	   
start_treesettransformed_xranges)selftreefilename	__class__s      //usr/lib/python3.11/lib2to3/fixes/fix_xrange.pyr   zFixXrange.start_tree   s5    i))$999#&55       c                     d | _         d S r   )r   )r   r   r   s      r   finish_treezFixXrange.finish_tree   s    #'   r   c                     |d         }|j         dk    r|                     ||          S |j         dk    r|                     ||          S t          t	          |                    )Nnamexrangerange)valuetransform_xrangetransform_range
ValueErrorreprr   noderesultsr   s       r   	transformzFixXrange.transform   se    v:!!((w777Z7""''g666T$ZZ(((r   c                     |d         }|                     t          d|j                             | j                            t          |                     d S )Nr   r   prefix)replacer   r'   r   addidr!   s       r   r   zFixXrange.transform_xrange$   sO    vT'$+666777 $$RXX.....r   c                 Z   t          |          | j        vr|                     |          st          t	          d          |d                                         g          }t          t	          d          |g|j                  }|d         D ]}|                    |           |S d S d S )Nr   argslistr&   rest)r*   r   in_special_contextr   r   cloner'   append_child)r   r"   r#   
range_call	list_callns         r   r   zFixXrange.transform_range*   s    tHHD444''-- 5d7mmgfo.C.C.E.E-FGGJT&\\J<$(K1 1 1I V_ * *&&q)))) 5444r   z3power< func=NAME trailer< '(' node=any ')' > any* >zfor_stmt< 'for' any 'in' node=any ':' any* >
            | comp_for< 'for' any 'in' node=any any* >
            | comparison< any 'in' node=any any*>
         c                 
   |j         dS i }|j         j         C| j                            |j         j         |          r|d         |u r|d         j        t          v S | j                            |j         |          o	|d         |u S )NFr"   func)parentp1matchr   r   p2)r   r"   r#   s      r   r/   zFixXrange.in_special_context?   s    ;5K*w}}T[/99 +v$&&6?(O;;w}}T['22Nwv$7NNr   )__name__
__module____qualname__BM_compatiblePATTERNr   r   r$   r   r   P1r   compile_patternr8   P2r:   r/   __classcell__)r   s   @r   r	   r	      s        MG) ) ) ) )( ( () ) )/ / /
 
 
 
?B	 	 	$	$B
B 
!	 	$	$B
O 
O 
O 
O 
O 
O 
Or   r	   N)
__doc__ r   
fixer_utilr   r   r   r   BaseFixr	    r   r   <module>rI      s    6 5       4 4 4 4 4 4 4 4 4 4      =O =O =O =O =O
" =O =O =O =O =Or   