a XC?h��@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/python39/lib64/python3.9/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|vr��||�Sg�|d}|d}|djdjtjkrZd}|djdj}t��nd}d}t�tjd��d���fd d � }|jt j kr�||�n<|jt j kr�t |j�D]$\}} | jt j kr�|| |dkd �q��s�dS�D]} |d| _ q�|} |dk�r d �d_n&t|dj|��r0|�d_|d} �D]} |d| _ �q4�|dj| | �<t| d| t��d�D]}||dj|_�qr|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��endZ 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$�lineZafterrr%r� transform.sF         zFixTupleParams.transformc Cs�|d}|d}t|d�}|jtjkrD|��}d|_|�|�dSt|�}t|�}|� t |��}t |dd�} |�| ���|� �D]X} | jtjkr�| j |vr�dd�|| j D�} t�tj| ��g| �} | j| _| �| �q�dS)Nr�body�innerr)rcSsg|] }|���qSr)r��.0�crrr� ��z3FixTupleParams.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  @rcCsN|jtjtjfvr|S|jtjkr>|jtjkr:|jd}q"|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@r9rrrr<�r=zfind_params..)rr rHr@rrr?r+rJrrrr@�s   r@NcCsZ|dur i}t|�D]@\}}ttt|���g}t|t�rHt|||d�q||||<q|S)N)�d)r,r r�strr �listrA)� param_listrrLr4�objZtrailerrrrrA�s rAcCs<g}|D](}t|t�r&|�t|��q|�|�qd�|�S)N�_)r rNr!rB�join)rO�lrPrrrrB�s   rB)rrZpgen2rrZ fixer_utilrrrrr r rZBaseFixrr>r@rArBrrrr�s    l