a 97a:@s~dZddlmZddlmZddlmZmZmZm Z m Z m Z m Z m Z mZmZddlmZmZmZddZGdd d ejZd S) zD Fixer for: (a,)* *b (,c)* [,] = s for (a,)* *b (,c)* [,] in d: ... ) fixer_base)count) AssignCommaCallNewlineNameNumbertokensymsNodeLeaf) indentationsuitify commatizec Csg}t|}t|}|dkrttjt|ttjttjdttj ttj dt |gttj dgg}| || ttjdddttjttjdddt|ttjttjdttj |dkrt |ntdd ttj d|dkrttjttjd t |gntdd gttj dttj dgg}| ||dkr| ttjdddttjt|ddttjttjdttj ttjttjd t |gttj dgttj dgg} | | ttj|} | S) z 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 r[:]+ prefix-)unicoder r powerrtrailerr r LSQBZ subscriptCOLONr RSQBappendPLUSZfactorMINUSZ arith_expr) Znum_preZnum_postLISTNAMEITERNAMEchildrenprepostZpre_partZ main_partZ post_partsourcer*|/private/var/folders/s6/9n5zrl012gv99k63s4q6ccsd4s6mqz/T/pip-target-f5cq3f2q/lib/python/libpasteurize/fixes/fix_unpacking.pyassignment_sourcesJ   b  r,c@s(eZdZdZddZddZddZdS) FixUnpackinga9 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 sfdddD\}}}}dd|D}d|_dd|D}ddt||g|D}|td |_tt|jttd |g}t|t t |t ||j|j } || fS) Nc3s|]}|VqdSNget.0nresultsr*r+ 3z4FixUnpacking.fix_explicit_context..)r'namer(r)cSs g|]}|jtjkr|qSr*typer NAMEcloner1r*r*r+ 4r7z5FixUnpacking.fix_explicit_context..rcSs g|]}|jtjkr|qSr*r9r1r*r*r+r=6r7cSsg|] }|qSr*r<r1r*r*r+r=7r7rlist) rrr<r!rrrr$rr,lenr%) selfnoder5r'r8r(r)target setup_line power_liner*r4r+fix_explicit_context2s    z!FixUnpacking.fix_explicit_contextc sfdddD\}}}}dd|D}d|_dd|D}ddt||g|D}|t|}d |_tt|jttd t|j g} t|t t |t ||j|j } | | fS) z_ Only example of the implicit context is a for loop, so only fix that. c3s|]}|VqdSr.r/r1r4r*r+r6Er7z4FixUnpacking.fix_implicit_context..)r'r8r(itcSs g|]}|jtjkr|qSr*r9r1r*r*r+r=Fr7z5FixUnpacking.fix_implicit_context..rcSs g|]}|jtjkr|qSr*r9r1r*r*r+r=Hr7cSsg|] }|qSr*r>r1r*r*r+r=Ir7rr?) rrr<r!rrrr$rr%r,r@) rArBr5r'r8r(rGrCr)rDrEr*r4r+fix_implicit_context@s  " z!FixUnpacking.fix_implicit_contextc Cs@|d|_|d|_|d|d}}|dur|||\}}|j|_t|j|_|t |j}| }| ||| ||n|dur<| ||\}}t |dd|jDd} d |_| jd j|_t| jd | jd _| d t | d || d t | d ||d t|jd ddS)a 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 Z _3to2listZ _3to2iterexplimplNcSsg|]}|jtjkr|qSr*)r:r suite)r2kr*r*r+r=pr7z*FixUnpacking.transform..rrrlstrr)new_namer$r%r0rFrrparentZ append_childrremoveZ insert_childrHrr&valuereplacer) rArBr5rIrJrDrErPirKr*r*r+ transformSs0        zFixUnpacking.transformN)__name__ __module__ __qualname__ZPATTERNrFrHrUr*r*r*r+r-&s r-N)__doc__Zlib2to3r itertoolsrZlib2to3.fixer_utilrrrrrr r r r r Zlibfuturize.fixer_utilrrrr,ZBaseFixr-r*r*r*r+s   0