o ?Og@sdZddlmZddlmZddlmZddlmZmZm Z m Z m Z m Z ddZ Gdd d ejZd d Zd d ZgdfddZddZdS)a:Fixer for function definitions with tuple parameters. def func(((a, b), c), d): ... -> def func(x, d): ((a, b), c) = x ... It will also support lambdas: lambda (x, y): x + y -> lambda t: t[0] + t[1] # The parens are a syntax error in Python 3 lambda (x): x + y -> lambda x: x + y )pytree)token) fixer_base)AssignNameNewlineNumber SubscriptsymscCst|tjo|jdjtjkS)N) isinstancerNodechildrentyperSTRING)stmtrE/opt/alt/python310/lib64/python3.10/lib2to3/fixes/fix_tuple_params.py is_docstrings rc@s(eZdZdZdZdZddZddZdS) FixTupleParamsTa funcdef< 'def' any parameters< '(' args=any ')' > ['->' any] ':' suite=any+ > | lambda= lambdef< 'lambda' args=vfpdef< '(' inner=any ')' > ':' body=any > c sd|vr ||Sg|d}|d}|djdjtjkr-d}|djdj}tn d}d}ttjddfd d }|jt j krL||n|jt j krjt |jD]\}} | jt j kri|| |dkd qWsndSD]} |d| _ qp|} |dkrd d_nt|dj|r|d_|d} D]} |d| _ q|dj| | <t| d| tdD] }||dj|_q|ddS)Nlambdasuiteargsr rz; Fcs\t}|}d|_t||}|rd|_||tt j |gdS)Nr ) rnew_namecloneprefixrreplaceappendrr r Z simple_stmt)Z tuple_arg add_prefixnargrendZ new_linesselfrr handle_tupleCs     z.FixTupleParams.transform..handle_tuple)r"r)F)transform_lambdarrrINDENTvaluerrZLeafr ZtfpdefZ typedargslist enumerateparentrrrangelenZchanged) r'noderesultsrrstartindentr(ir$lineZafterrr%r transform.sH        zFixTupleParams.transformc Cs|d}|d}t|d}|jtjkr"|}d|_||dSt|}t|}| t |}t |dd} || | D],} | jtjkrn| j |vrndd|| j D} ttj| g| } | j| _| | qBdS)Nrbodyinnerr)rcSsg|]}|qSr)r.0crrr sz3FixTupleParams.transform_lambda..) simplify_argsrrNAMErrr find_params map_to_indexr tuple_namerZ post_orderr+rr r Zpower) r'r0r1rr7r8paramsZto_indexZtup_nameZ new_paramr#Z subscriptsnewrrrr)ns.       zFixTupleParams.transform_lambdaN)__name__ __module__ __qualname__Z run_orderZ BM_compatibleZPATTERNr6r)rrrrrs  @rcCsT|jtjtjfvr |S|jtjkr$|jtjkr"|jd}|jtjks|Std|)NrzReceived unexpected node %s)rr Zvfplistrr>vfpdefr RuntimeErrorr0rrrr=s     r=cCs<|jtjkr t|jdS|jtjkr|jSdd|jDS)NrcSs g|] }|jtjkrt|qSr)rrCOMMAr?r9rrrr<s zfind_params..)rr rGr?rrr>r+rIrrrr?s  r?NcCsZ|duri}t|D] \}}ttt|g}t|tr$t|||dq ||||<q |S)N)d)r,r rstrr listr@) param_listrrKr4objZtrailerrrrr@s r@cCs<g}|D]}t|tr|t|q||qd|S)N_)r rMr!rAjoin)rNlrOrrrrAs    rA)__doc__rrZpgen2rrZ fixer_utilrrrrr r rZBaseFixrr=r?r@rArrrrs    l