File: //lib64/python3.9/lib2to3/fixes/__pycache__/fix_tuple_params.cpython-39.opt-1.pyc
a
    �DOg�  �                   @   s�   d Z ddlmZ ddlmZ ddlmZ ddlmZmZm	Z	m
Z
mZmZ dd� Z
G dd	� d	ej�Zd
d� Zdd
� Zg dfdd�Zdd� ZdS )a:  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
�   )�pytree)�token)�
fixer_base)�Assign�Name�Newline�Number�	Subscript�symsc                 C   s   t | tj�o| jd jtjkS )N�    )�
isinstancer   �Node�children�typer   �STRING)�stmt� r   �6/usr/lib64/python3.9/lib2to3/fixes/fix_tuple_params.py�is_docstring   s    �r   c                   @   s(   e Zd ZdZdZdZdd� 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|v r�� ||�S g �|d }|d }|d jd jtjkrZd}|d jd j}t� � nd}d}t�tjd�� d� ��fd
d�	}|jt	j
kr�||� n<|jt	jkr�t|j�D ]$\}}	|	jt	j
kr�||	|dkd� q��s�d S �D ]}
|d |
_
q�|}|dk�r
d
�d _n&t|d j| ��r0|�d _|d }�D ]}
|d |
_
�q4�|d j||�<