Ñò §ÚêLc@s´dZddklZddklZddklZddklZlZl Z l Z l Z l Z d„Z deifd„ƒYZd „Zd „Zgd d „Zd „Zd S(s: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 i(tpytree(ttoken(t fixer_base(tAssigntNametNewlinetNumbert SubscripttsymscCs*t|tiƒo|iditijS(Ni(t isinstanceRtNodetchildrenttypeRtSTRING(tstmt((s6/usr/lib64/python2.6/lib2to3/fixes/fix_tuple_params.pyt is_docstringstFixTupleParamscBs eZdZd„Zd„ZRS(s funcdef< 'def' any parameters< '(' args=any ')' > ['->' any] ':' suite=any+ > | lambda= lambdef< 'lambda' args=vfpdef< '(' inner=any ')' > ':' body=any > c s@d|joˆi||ƒSg‰|d}|d}|diditijo'd}|didi}tƒ‰n"d}d}titidƒ‰t ‡‡‡fd †}|it i jo||ƒne|it i joQxNt |iƒD]9\}} | it i jo|| d |djƒqúqúWnˆpdSxˆD]} |d| _qNW|} |djod ˆd_n4t|di|ƒo|ˆd_|d} nxˆD]} |d| _qÃWˆ|di| | +x=t| d| tˆƒdƒD]}||di|_qW|diƒdS( Ntlambdatsuitetargsiiiu; ucs‰tˆiƒƒ}|iƒ}d|_t||iƒƒ}|o d|_n|i|ƒˆitit i |ˆiƒgƒƒdS(Nuu ( Rtnew_nametclonetprefixRtreplacetappendRR Rt simple_stmt(t tuple_argt add_prefixtntargR(t new_linestendtself(s6/usr/lib64/python2.6/lib2to3/fixes/fix_tuple_params.pyt handle_tuple?s    Ru (ttransform_lambdaR R RtINDENTtvalueRRtLeaftFalseRttfpdeft typedargslistt enumeratetparentRRtrangetlentchanged( R tnodetresultsRRtstarttindentR!tiRtlinetafter((RR Rs6/usr/lib64/python2.6/lib2to3/fixes/fix_tuple_params.pyt transform*sN      "  "cCs[|d}|d}t|dƒ}|itijo'|iƒ}d|_|i|ƒdSt|ƒ}t|ƒ}|i t |ƒƒ}t |ddƒ} |i| iƒƒx¤|i ƒD]–} | itijo}| i |jomg} || i D]} | | iƒqø~ } titi| iƒg| ƒ}| i|_| i|ƒq½q½WdS(NRtbodytinneru R(t simplify_argsR RtNAMERRRt find_paramst map_to_indexRt tuple_nameRt post_orderR$RR Rtpower(R R.R/RR6R7tparamstto_indexttup_namet new_paramRt_[1]tct subscriptstnew((s6/usr/lib64/python2.6/lib2to3/fixes/fix_tuple_params.pyR"js*        #.  (t__name__t __module__tPATTERNR5R"(((s6/usr/lib64/python2.6/lib2to3/fixes/fix_tuple_params.pyRs  @cCsu|ititifjo|S|itijo-x%|itijo|id}q7W|Std|ƒ‚dS(NisReceived unexpected node %s(R RtvfplistRR9tvfpdefR t RuntimeError(R.((s6/usr/lib64/python2.6/lib2to3/fixes/fix_tuple_params.pyR8‡scCs|itijot|idƒS|itijo|iSg}|iD]*}|itijo|t|ƒqNqN~S(Ni( R RRKR:R RR9R$tCOMMA(R.RCRD((s6/usr/lib64/python2.6/lib2to3/fixes/fix_tuple_params.pyR:’s cCsˆ|djo h}nxjt|ƒD]\\}}ttt|ƒƒƒg}t|tƒot||d|ƒq$||||s. h