ðÕYf†
ã @ s_ d Z d d l m Z d d l m Z m Z m Z d d l m Z Gd d „ d e j ƒ Z d S)z/Fixer that changes xrange(...) into range(...).é )Ú
fixer_base)ÚNameÚCallÚconsuming_calls)Úpatcompc s” 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 ‡ 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__© ú=/opt/alt/python35/lib64/python3.5/lib2to3/fixes/fix_xrange.pyr s zFixXrange.start_treec C s
d | _ d S)N)r )r r
r r r r Úfinish_tree s zFixXrange.finish_treec C s^ | d } | j d k r) | j | | ƒ S| j d k rH | j | | ƒ St t | ƒ ƒ ‚ d S)NÚnameZxrangeÚrange)ÚvalueÚtransform_xrangeÚtransform_rangeÚ
ValueErrorÚrepr)r ÚnodeÚresultsr r r r Ú transform s
zFixXrange.transformc C s@ | d } | j t d d | j ƒƒ | j j t | ƒ ƒ d S)Nr r Úprefix)Úreplacer r r ÚaddÚid)r r r r r r r r $ s
zFixXrange.transform_xrangec 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)Nr ÚargsÚlistr Úrest)r r Úin_special_contextr r Zcloner Zappend_child)r r r Z
range_callZ list_callÚnr r r r * s "zFixXrange.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 s� | j d k r d 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)NFr Úfunc)ÚparentÚp1Úmatchr r Úp2)r r r r r r r$ ? s zFixXrange.in_special_context)Ú__name__Ú
__module__Ú__qualname__Z
BM_compatibleZPATTERNr r r r r ZP1r Zcompile_patternr( ZP2r* r$ r r )r r r s r N)
Ú__doc__Ú r Z
fixer_utilr r r r ZBaseFixr r r r r Ú