ó
è¾bc           @   s_   d  Z  d d l m Z d d l m Z m Z m Z d d l m Z d e j f d „  ƒ  YZ	 d S(   s/   Fixer that changes xrange(...) into range(...).i   (   t
   fixer_base(   t   Namet   Callt   consuming_calls(   t   patcompt	   FixXrangec           B   st   e  Z e Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d Z
 e j e
 ƒ Z d Z e j e ƒ Z d „  Z RS(	   sˆ   
              power<
                 (name='range'|name='xrange') trailer< '(' args=any ')' >
              rest=any* >
              c         C   s)   t  t |  ƒ j | | ƒ t ƒ  |  _ d  S(   N(   t   superR   t
   start_treet   sett   transformed_xranges(   t   selft   treet   filename(    (    s.   /usr/lib/python2.7/lib2to3/fixes/fix_xrange.pyR      s    c         C   s   d  |  _ d  S(   N(   t   NoneR	   (   R
   R   R   (    (    s.   /usr/lib/python2.7/lib2to3/fixes/fix_xrange.pyt   finish_tree   s    c         C   s^   | d } | j  d k r) |  j | | ƒ S| j  d k rH |  j | | ƒ St t | ƒ ƒ ‚ d  S(   Nt   nameu   xrangeu   range(   t   valuet   transform_xranget   transform_ranget
   ValueErrort   repr(   R
   t   nodet   resultsR   (    (    s.   /usr/lib/python2.7/lib2to3/fixes/fix_xrange.pyt	   transform   s    
c         C   s@   | d } | j  t d d | j ƒƒ |  j j t | ƒ ƒ d  S(   NR   u   ranget   prefix(   t   replaceR   R   R	   t   addt   id(   R
   R   R   R   (    (    s.   /usr/lib/python2.7/lib2to3/fixes/fix_xrange.pyR   $   s    
c         C   s’   t  | ƒ |  j k rŽ |  j | ƒ rŽ t t d ƒ | d j ƒ  g ƒ } t t d ƒ | g d | j ƒ} x | d D] } | j | ƒ qs W| Sd  S(   Nu   ranget   argsu   listR   t   rest(   R   R	   t   in_special_contextR   R   t   cloneR   t   append_child(   R
   R   R   t
   range_callt	   list_callt   n(    (    s.   /usr/lib/python2.7/lib2to3/fixes/fix_xrange.pyR   *   s    "s3   power< func=NAME trailer< '(' node=any ')' > any* >sŸ   for_stmt< 'for' any 'in' node=any ':' any* >
            | comp_for< 'for' any 'in' node=any any* >
            | comparison< any 'in' node=any any*>
         c         C   s   | j  d  k r t Si  } | j  j  d  k	 rg |  j j | j  j  | ƒ rg | d | k rg | d j t k S|  j j | j  | ƒ oŒ | d | k S(   NR   t   func(   t   parentR   t   Falset   p1t   matchR   R   t   p2(   R
   R   R   (    (    s.   /usr/lib/python2.7/lib2to3/fixes/fix_xrange.pyR   ?   s    (   t   __name__t
   __module__t   Truet   BM_compatiblet   PATTERNR   R   R   R   R   t   P1R   t   compile_patternR'   t   P2R)   R   (    (    (    s.   /usr/lib/python2.7/lib2to3/fixes/fix_xrange.pyR      s   						N(
   t   __doc__t    R    t
   fixer_utilR   R   R   R   t   BaseFixR   (    (    (    s.   /usr/lib/python2.7/lib2to3/fixes/fix_xrange.pyt   <module>   s   