
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,a†
  ã                   @   sF   d Z ddlmZ ddlmZmZmZ ddlmZ G dd„ dejƒZ	dS )z/Fixer that changes xrange(...) into range(...).é   )Ú
fixer_base)ÚNameÚCallÚconsuming_calls)Úpatcompc                       sh   e Zd ZdZdZ‡ fdd„Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dZ
e e
¡ZdZe e¡Zdd„ Z‡  ZS )Ú	FixXrangeTzˆ
              power<
                 (name='range'|name='xrange') trailer< '(' args=any ')' >
              rest=any* >
              c                    s   t t| ƒ ||¡ tƒ | _d S ©N)Úsuperr   Ú
start_treeÚsetÚtransformed_xranges©ÚselfZtreeÚfilename©Ú	__class__© ú=/opt/alt/python38/lib64/python3.8/lib2to3/fixes/fix_xrange.pyr
      s    zFixXrange.start_treec                 C   s
   d | _ d S r   )r   r   r   r   r   Úfinish_tree   s    zFixXrange.finish_treec                 C   sD   |d }|j dkr|  ||¡S |j dkr4|  ||¡S tt|ƒƒ‚d S )NÚnameZxrangeÚrange)ÚvalueÚtransform_xrangeÚtransform_rangeÚ
ValueErrorÚrepr©r   ÚnodeÚresultsr   r   r   r   Ú	transform   s    

zFixXrange.transformc                 C   s0   |d }|  td|jd�¡ | j t|ƒ¡ d S )Nr   r   ©Úprefix)Úreplacer   r!   r   ÚaddÚidr   r   r   r   r   $   s    zFixXrange.transform_xrangec                 C   sf   t |ƒ| jkrb|  |¡sbttdƒ|d  ¡ gƒ}ttdƒ|g|jd�}|d D ]}| |¡ qN|S d S )Nr   ÚargsÚlistr    Úrest)r$   r   Úin_special_contextr   r   Zcloner!   Zappend_child)r   r   r   Z
range_callZ	list_callÚnr   r   r   r   *   s    ÿÿzFixXrange.transform_rangez3power< func=NAME trailer< '(' node=any ')' > any* >zŸfor_stmt< 'for' any 'in' node=any ':' any* >
            | comp_for< 'for' any 'in' node=any any* >
            | comparison< any 'in' node=any any*>
         c                 C   sf   |j d krdS i }|j j d k	rJ| j |j j |¡rJ|d |krJ|d jtkS | j |j |¡od|d |kS )NFr   Úfunc)ÚparentÚp1Úmatchr   r   Úp2)r   r   r   r   r   r   r(   ?   s    
ÿ
þzFixXrange.in_special_context)Ú__name__Ú
__module__Ú__qualname__ZBM_compatibleZPATTERNr
   r   r   r   r   ZP1r   Zcompile_patternr,   ZP2r.   r(   Ú__classcell__r   r   r   r   r      s   	

r   N)
Ú__doc__Ú r   Z
fixer_utilr   r   r   r   ZBaseFixr   r   r   r   r   Ú<module>   s   