\d \dZddlmZddlmZmZmZddlmZGddejZ dS)z/Fixer that changes xrange(...) into range(...).) fixer_base)NameCallconsuming_calls)patcompceZdZdZdZfdZdZdZdZdZ dZ e j e Z d Ze j eZd ZxZS) FixXrangeTz power< (name='range'|name='xrange') trailer< '(' args=any ')' > rest=any* > ctt|||t|_dSN)superr start_treesettransformed_xranges)selftreefilename __class__s )..\python\lib\lib2to3\fixes\fix_xrange.pyr zFixXrange.start_trees5 i))$999#&55   cd|_dSr )r)rrrs r finish_treezFixXrange.finish_trees#'   rc|d}|jdkr|||S|jdkr|||Stt |)Nnamexrangerange)valuetransform_xrangetransform_range ValueErrorreprrnoderesultsrs r transformzFixXrange.transformsev : ! !((w77 7 Z7 " "''g66 6T$ZZ(( (rc|d}|td|j|jt |dS)Nrrprefix)replacerr'raddidr!s rrzFixXrange.transform_xrange$sOv T'$+666777  $$RXX.....rcZt||jvr||stt d|dg}tt d|g|j}|dD]}|||SdSdS)Nrargslistr&rest)r*rin_special_contextrrcloner' append_child)rr"r# range_call list_callns rrzFixXrange.transform_range*s tHHD4 4 4''-- 5d7mmgfo.C.C.E.E-FGGJT&\\J<$(K111IV_ * *&&q))))  5 4 4 4rz3power< 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 |jdSi}|jjC|j|jj|r|d|ur|djtvS|j|j|o |d|uS)NFr"func)parentp1matchrrp2)rr"r#s rr/zFixXrange.in_special_context?s ; 5 K  *w}}T[/99 +v$&&6?(O; ;w}}T['22Nwv$7NNr)__name__ __module__ __qualname__ BM_compatiblePATTERNr rr$rrP1rcompile_patternr8P2r:r/ __classcell__)rs@rr r sMG )))))((()))///    ?B   $ $B B !  $ $B O O O O O O Orr N) __doc__r fixer_utilrrrrBaseFixr rrrIs654444444444=O=O=O=O=O "=O=O=O=O=Or