
    daf
                     ^    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	y)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                 L    t         t        |   ||       t               | _        y N)superr	   
start_treesettransformed_xranges)selftreefilename	__class__s      3/root/Python-3.12.4/Lib/lib2to3/fixes/fix_xrange.pyr   zFixXrange.start_tree   s    i)$9#&5     c                     d | _         y r   )r   )r   r   r   s      r   finish_treezFixXrange.finish_tree   s
    #' r   c                     |d   }|j                   dk(  r| j                  ||      S |j                   dk(  r| j                  ||      S t        t	        |            )Nnamexrangerange)valuetransform_xrangetransform_range
ValueErrorreprr   noderesultsr   s       r   	transformzFixXrange.transform   sX    v::!((w77ZZ7"''g66T$Z((r   c                     |d   }|j                  t        d|j                               | j                  j	                  t        |             y )Nr   r   prefix)replacer   r'   r   addidr!   s       r   r   zFixXrange.transform_xrange$   s:    vT'$++67  $$RX.r   c                 "   t        |      | j                  vrx| j                  |      sft        t	        d      |d   j                         g      }t        t	        d      |g|j                        }|d   D ]  }|j                  |        |S y y )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    tHD444''-d7mgfo.C.C.E-FGJT&\J<$(KK1I V_ *&&q)* . 5r   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                 B   |j                   yi }|j                   j                   L| j                  j                  |j                   j                   |      r|d   |u r|d   j                  t        v S | j
                  j                  |j                   |      xr |d   |u S )NFr"   func)parentp1matchr   r   p2)r   r"   r#   s      r   r/   zFixXrange.in_special_context?   s    ;;KK*ww}}T[[//9v$&6?((O;;ww}}T[['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	      sb    MG)()/
 
?B	 	 	 	$B
B 
!	 	 	$B
Or   r	   N)
__doc__ r   
fixer_utilr   r   r   r   BaseFixr	    r   r   <module>rI      s,    6  4 4 =O
"" =Or   