JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbrў fc@sdZddlmZddlmZddlmZddlmZmZm Z m Z m Z m Z ddZ Gdd d ejZd d Zd d ZgdddZddZdS(u: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(upytree(utoken(u fixer_base(uAssignuNameuNewlineuNumberu SubscriptusymscCs)t|tjo(|jdjtjkS(Ni(u isinstanceupytreeuNodeuchildrenutypeutokenuSTRING(ustmt((uC/opt/alt/python33/lib64/python3.3/lib2to3/fixes/fix_tuple_params.pyu is_docstringsu is_docstringcBs>|EeZdZdZdZdZddZddZdS( uFixTupleParamsiu funcdef< 'def' any parameters< '(' args=any ')' > ['->' any] ':' suite=any+ > | lambda= lambdef< 'lambda' args=vfpdef< '(' inner=any ')' > ':' body=any > c s6d|krj||Sg|d}|d}|djdjtjkryd}|djdj}tn!d}d}tjtjdd fd d }|jt j kr||n`|jt j kr4xKt |jD]7\}} | jt j kr|| d |dkqqWns>dSxD]} |d| _qEW|} |dkr~d d_n1t|dj|r|d_|d} nxD]} |d| _qW|dj| | .handle_tupleu add_prefixu F(utransform_lambdauchildrenutypeutokenuINDENTuvalueuNewlineupytreeuLeafuFalseusymsutfpdefu typedargslistu enumerateuparentuprefixu is_docstringurangeulenuchanged( uselfunodeuresultsusuiteuargsustartuindentu handle_tupleuiuargulineuafter((uendu new_linesuselfuC/opt/alt/python33/lib64/python3.3/lib2to3/fixes/fix_tuple_params.pyu transform.sF            (uFixTupleParams.transformc CsB|d}|d}t|d}|jtjkr\|j}d|_|j|dSt|}t|}|j t |}t |dd} |j| jx|j D]} | jtjkr| j |krdd|| j D} tjtj| jg| } | j| _| j| qqWdS(Nuargsubodyuinneru uprefixcSsg|]}|jqS((uclone(u.0uc((uC/opt/alt/python33/lib64/python3.3/lib2to3/fixes/fix_tuple_params.pyu s u3FixTupleParams.transform_lambda..(u simplify_argsutypeutokenuNAMEucloneuprefixureplaceu find_paramsu map_to_indexunew_nameu tuple_nameuNameu post_orderuvalueupytreeuNodeusymsupower( uselfunodeuresultsuargsubodyuinneruparamsuto_indexutup_nameu new_paramunu subscriptsunew((uC/opt/alt/python33/lib64/python3.3/lib2to3/fixes/fix_tuple_params.pyutransform_lambdans(       !  uFixTupleParams.transform_lambdaNT( u__name__u __module__u __qualname__u run_orderuTrueu BM_compatibleuPATTERNu transformutransform_lambda(u __locals__((uC/opt/alt/python33/lib64/python3.3/lib2to3/fixes/fix_tuple_params.pyuFixTupleParamss   @uFixTupleParamscCso|jtjtjfkr|S|jtjkr[x#|jtjkrV|jd}q4W|Std|dS(NiuReceived unexpected node %s(utypeusymsuvfplistutokenuNAMEuvfpdefuchildrenu RuntimeError(unode((uC/opt/alt/python33/lib64/python3.3/lib2to3/fixes/fix_tuple_params.pyu simplify_argssu simplify_argscCsP|jtjkr#t|jdS|jtjkr<|jSdd|jDS(NicSs.g|]$}|jtjkrt|qS((utypeutokenuCOMMAu find_params(u.0uc((uC/opt/alt/python33/lib64/python3.3/lib2to3/fixes/fix_tuple_params.pyu s ufind_params..(utypeusymsuvfpdefu find_paramsuchildrenutokenuNAMEuvalue(unode((uC/opt/alt/python33/lib64/python3.3/lib2to3/fixes/fix_tuple_params.pyu find_paramss u find_paramscCs|dkri}nxht|D]Z\}}ttt|g}t|trnt||d|q"||||s. l