grthtrhthjhtyjytjytkergtrhtrjytjerhrfh3 \½ã@sˆddlmZddlmZddlmZddlmZmZmZm Z m Z m Z dd„Z Gdd„dej ƒZd d „Zd d „Zgd fdd„Zdd„Zd S)é)Úpytree)Útoken)Ú fixer_base)ÚAssignÚNameÚNewlineÚNumberÚ SubscriptÚsymscCst|tjƒo|jdjtjkS)Né)Ú isinstancerÚNodeÚchildrenÚtyperÚSTRING)Ústmt©rú6/usr/lib64/python3.6/lib2to3/fixes/fix_tuple_params.pyÚ is_docstrings rc@s(eZdZdZdZdZdd„Zdd„ZdS) ÚFixTupleParamséTa funcdef< 'def' any parameters< '(' args=any ')' > ['->' any] ':' suite=any+ > | lambda= lambdef< 'lambda' args=vfpdef< '(' inner=any ')' > ':' body=any > c sªd|krˆj||ƒSg‰|d}|d}|djdjtjkrZd}|djdj}tƒ‰nd}d}tjtjdƒ‰d‡‡‡fd d „ }|jt j kr˜||ƒn@|jt j krØx2t |jƒD]$\}} | jt j kr°|| |dkd �q°WˆsàdSxˆD]} |d| _ qæW|} |dk�rd ˆd_n&t|dj|ƒ�r8|ˆd_|d} xˆD]} |d| _ �q>Wˆ|dj| | …<x4t| d| tˆƒdƒD]}||dj|_�q€W|djƒdS)NÚlambdaÚsuiteÚargsr érz; ÚFcs\tˆjƒƒ}|jƒ}d|_t||jƒƒ}|r2d|_|j|ƒˆjtjt j |ˆjƒgƒƒdS)Nrú ) rÚnew_nameÚcloneÚprefixrÚreplaceÚappendrr r Z simple_stmt)Z tuple_argÚ add_prefixÚnÚargr)ÚendÚ new_linesÚselfrrÚ handle_tupleCs   z.FixTupleParams.transform..handle_tuple)r"r)F)Útransform_lambdarrrÚINDENTÚvaluerrZLeafr ZtfpdefZ typedargslistÚ enumerateÚparentrrÚrangeÚlenZchanged) r'ÚnodeÚresultsrrÚstartÚindentr(Úir$ÚlineÚafterr)r%r&r'rÚ transform.sF           zFixTupleParams.transformc Csæ|d}|d}t|dƒ}|jtjkrD|jƒ}d|_|j|ƒdSt|ƒ}t|ƒ}|j t |ƒƒ}t |dd�} |j| jƒƒxd|j ƒD]X} | jtjkr†| j |kr†dd„|| j Dƒ} tjtj| jƒg| ƒ} | j| _| j| ƒq†WdS)NrÚbodyÚinnerr)rcSsg|] }|jƒ‘qSr)r)Ú.0Úcrrrú ‚sz3FixTupleParams.transform_lambda..)Ú simplify_argsrrÚNAMErrr Ú find_paramsÚ map_to_indexrÚ tuple_namerZ post_orderr+rr r Zpower) r'r0r1rr8r9ZparamsZto_indexZtup_nameZ new_paramr#Z subscriptsÚnewrrrr)ns(    zFixTupleParams.transform_lambdaN)Ú__name__Ú __module__Ú __qualname__Z run_orderZ BM_compatibleZPATTERNr7r)rrrrrs  @rcCsR|jtjtjfkr|S|jtjkrBx|jtjkr<|jd}q$W|Std|ƒ‚dS)NrzReceived unexpected node %s)rr Zvfplistrr>ÚvfpdefrÚ RuntimeError)r0rrrr=‹s r=cCs<|jtjkrt|jdƒS|jtjkr,|jSdd„|jDƒS)NrcSs g|]}|jtjkrt|ƒ‘qSr)rrÚCOMMAr?)r:r;rrrr<›szfind_params..)rr rFr?rrr>r+)r0rrrr?–s   r?NcCs^|dkr i}xLt|ƒD]@\}}ttt|ƒƒƒg}t|tƒrJt|||d�q||||<qW|S)N)Úd)r,r rÚstrr Úlistr@)Ú param_listrrIr4ÚobjZtrailerrrrr@�s r@cCs@g}x0|D](}t|tƒr(|jt|ƒƒq |j|ƒq Wdj|ƒS)NÚ_)r rKr!rAÚjoin)rLÚlrMrrrrA¨s   rA)rrZpgen2rrZ fixer_utilrrrrr r rZBaseFixrr=r?r@rArrrrÚs    l