509318396
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3

  \†
  ã               @   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je
ƒZdZejeƒZdd„ Z‡  ZS )Ú	FixXrangeTzˆ
              power<
                 (name='range'|name='xrange') trailer< '(' args=any ')' >
              rest=any* >
              c                s   t t| ƒj||ƒ tƒ | _d S )N)Úsuperr   Ú
start_treeÚsetÚtransformed_xranges)ÚselfÚtreeÚfilename)Ú	__class__© ú0/usr/lib64/python3.6/lib2to3/fixes/fix_xrange.pyr	      s    zFixXrange.start_treec             C   s
   d | _ d S )N)r   )r   r   r   r   r   r   Úfinish_tree   s    zFixXrange.finish_treec             C   sD   |d }|j dkr| j||ƒS |j dkr4| j||ƒ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 }|j td|jd�ƒ | jjt|ƒƒ d S )Nr   r   )Úprefix)Úreplacer   r   r   ÚaddÚid)r   r   r   r   r   r   r   r   $   s    zFixXrange.transform_xrangec             C   sl   t |ƒ| jkrh| j|ƒ rhttdƒ|d jƒ gƒ}ttdƒ|g|jd�}x|d D ]}|j|ƒ qRW |S d S )Nr   ÚargsÚlist)r   Ú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 j |ƒrJ|d |krJ|d jtkS | j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   