ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ A[c@sdZddlmZddlmZddlmZmZmZm Z m Z m Z m Z m Z mZmZddlmZmZmZdZdejfdYZd S( uD Fixer for: (a,)* *b (,c)* [,] = s for (a,)* *b (,c)* [,] in d: ... i(t fixer_base(tcount( tAssigntCommatCalltNewlinetNametNumberttokentsymstNodetLeaf(t indentationtsuitifyt commatizec Csg}t|}t|}|dkrttjt|ttjttjdttj ttj dt |gttj dgg}|j ||j ttjdddnttjttjdddt|ttjttjdttj |dkr(t |n tdd ttj d|dkryttjttjd t |gn tdd gttj dttj dgg}|j ||dkr|j ttjdddttjt|ddttjttjdttj ttjttjd t |gttj dgttj dgg} |j | nttj|} | S( u Accepts num_pre and num_post, which are counts of values before and after the starg (not including the starg) Returns a source fit for Assign() from fixer_util iu[u:u]u+tprefixu iuu-(tunicodeR R tpowerRttrailerR RtLSQBt subscripttCOLONRtRSQBtappendtPLUStfactortMINUSt arith_expr( tnum_pretnum_posttLISTNAMEtITERNAMEtchildrentpretposttpre_partt main_partt post_parttsource((sR/opt/alt/python27/lib/python2.7/site-packages/libpasteurize/fixes/fix_unpacking.pytassignment_sources   o "  t FixUnpackingcBs)eZdZdZdZdZRS(u9 expl=expr_stmt< testlist_star_expr< pre=(any ',')* star_expr< '*' name=NAME > post=(',' any)* [','] > '=' source=any > | impl=for_stmt< 'for' lst=exprlist< pre=(any ',')* star_expr< '*' name=NAME > post=(',' any)* [','] > 'in' it=any ':' suite=any>c sFfdd D\}}}}g|D]$}|jtjkr)|j^q)}d|_g|D]$}|jtjkrc|j^qc}gt||jg|D]}|j^q}|jtd|_tt |j t t d|jg} t|t t |t ||j |j} | | fS( Nc3s|]}j|VqdS(N(tget(t.0tn(tresults(sR/opt/alt/python27/lib/python2.7/site-packages/libpasteurize/fixes/fix_unpacking.pys 3supreunameupostusourceu uulist(upreunameupostusource(ttypeRtNAMEtcloneRRRRRRRRR'tlenR( tselftnodeR,R!tnameR"R&R+ttargett setup_linet power_line((R,sR/opt/alt/python27/lib/python2.7/site-packages/libpasteurize/fixes/fix_unpacking.pytfix_explicit_context2s"1 16 00c sUfdd D\}}}}g|D]$}|jtjkr)|j^q)}d|_g|D]$}|jtjkrc|j^qc}gt||jg|D]}|j^q}|jt|j} d| _tt |j t t dt |j g} t|t t|t||j |j } | | fS( u_ Only example of the implicit context is a for loop, so only fix that. c3s|]}j|VqdS(N(R)(R*R+(R,(sR/opt/alt/python27/lib/python2.7/site-packages/libpasteurize/fixes/fix_unpacking.pys Esupreunameupostuitu uulist(upreunameupostuit(R-RR.R/RRRRRRRRRR'R0( R1R2R,R!R3R"titR+R4R&R5R6((R,sR/opt/alt/python27/lib/python2.7/site-packages/libpasteurize/fixes/fix_unpacking.pytfix_implicit_context@s"1 16  30c Cs|jd|_|jd|_|jd|jd}}|d k r|j||\}}|j|_t|j|_|j t |j}|j }|j |||j ||n|d k r|j ||\}}t|g|jD]} | jtjkr| ^qd} d|_| jdj|_t| jd| jd_| j dt | j d|| j dt | j d||jd jt|jd d nd S( u a,b,c,d,e,f,*g,h,i = range(100) changes to _3to2list = list(range(100)) a,b,c,d,e,f,g,h,i, = _3to2list[:6] + [_3to2list[6:-2]] + _3to2list[-2:] and for a,b,*c,d,e in iter_of_iters: do_stuff changes to for _3to2iter in iter_of_iters: _3to2list = list(_3to2iter) a,b,c,d,e, = _3to2list[:2] + [_3to2list[2:-2]] + _3to2list[-2:] do_stuff u _3to2listu _3to2iteruexpluimpliuiiulstRu N(tnew_nameRRR)tNoneR7RR tparentt append_childRtremovet insert_childR9R R R-R tsuitetvaluetreplaceR( R1R2R,texpltimplR5R6R<titkR@((sR/opt/alt/python27/lib/python2.7/site-packages/libpasteurize/fixes/fix_unpacking.pyt transformSs0      2 (t__name__t __module__tPATTERNR7R9RG(((sR/opt/alt/python27/lib/python2.7/site-packages/libpasteurize/fixes/fix_unpacking.pyR(&s   N(t__doc__tlib2to3Rt itertoolsRtlib2to3.fixer_utilRRRRRRRR R R tlibfuturize.fixer_utilR R RR'tBaseFixR((((sR/opt/alt/python27/lib/python2.7/site-packages/libpasteurize/fixes/fix_unpacking.pyts F