B YI~d��@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�C/opt/alt/python37/lib64/python3.7/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��||�Sg�|d}|d}|djdjtjkrZd}|djdj}t��nd}d}t�tjd��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|d��dS)N�lambda�suite�argsr �rz; �Fcs\t����}|��}d|_t||���}|r2d|_|�|���t�t 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$�lineZafterr)r%r&r'r� transform.sF           zFixTupleParams.transformc Cs�|d}|d}t|d�}|jtjkrD|��}d|_|�|�dSt|�}t|�}|� t |��}t |dd�} |�| ���xd|� �D]X} | jtjkr�| j |kr�dd�|| j D�} t�tj| ��g| �} | j| _| �| �q�WdS)Nr�body�innerr)rcSsg|] }|���qSr)r)�.0�crrr� �sz3FixTupleParams.transform_lambda..)� simplify_argsrr�NAMErrr � find_params� map_to_indexr� tuple_namerZ post_orderr+rr r Zpower) r'r0r1rr7r8�paramsZto_indexZtup_nameZ new_paramr#Z subscripts�newrrrr)ns(    zFixTupleParams.transform_lambdaN)�__name__� __module__� __qualname__Z run_orderZ BM_compatibleZPATTERNr6r)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>)r9r: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(|�t|��q |�|�q Wd�|�S)N�_)r rKr!r@�join)rL�lrMrrrr@�s   r@)rrZpgen2rrZ fixer_utilrrrrr r rZBaseFixrr<r>r?r@rrrr�s    l