B
�/g^g; c
@ s� d Z ddlmZ ddlmZmZ ddlmZ ddl m
Z
dd� Zdd � Zd
d� Z
dd
� ZdWdd�Zdd� Zdd� Zdd� Ze� e
� fdd�ZdXdd�Zdd� Zdd� ZdYdd �Zd!d"� ZdZd#d$�Zd[d%d&�Zd'd(� Zd)d*� Zd+d,� Zd-d.� Zd/d0� Zd1d2d3d4d5d6d7d8d9d:h
Z d;d<� Z!d=a"d>a#d?a$d@a%dAdB� Z&dCdD� Z'dEdF� Z(dGdH� Z)dIdJ� Z*dKdL� Z+dMdN� Z,dOdP� Z-ej.ej/hZ0d\dQdR�Z1ej/ej.ej2hZ3dSdT� Z4d]dUdV�Z5dS )^z1Utility functions, node construction macros, etc.� )�token)�Leaf�Node)�python_symbols)�patcompc C s t tj| ttjd�|g�S )N�=)r �symsZargumentr r �EQUAL)Zkeyword�value� r
�*/usr/lib64/python3.7/lib2to3/fixer_util.py�
KeywordArg s r c C � t tjd�S )N�()r r ZLPARr
r
r
r �LParen � r c C r
)N�))r r ZRPARr
r
r
r �RParen r r c C sH t | t�s| g} t |t�s&d|_|g}ttj| ttjddd�g | �S )zBuild an assignment statement� r ��prefix) �
isinstance�listr r r �atomr r r )ZtargetZsourcer
r
r �Assign s
r Nc C � t tj| |d�S )zReturn a NAME leafr )r r �NAME)�namer r
r
r �Name$ � r c C s | t tjt� |g�gS )zA node tuple for obj.attr)r r �trailer�Dot)�obj�attrr
r
r �Attr( r r# c C r
)zA comma leafz,)r r �COMMAr
r
r
r �Comma, r r% c C r
)zA period (.) leafZ.)r r �DOTr
r
r
r r 0 r r c C s4 t tj|�� |�� g�}| r0|�dt tj| �� |S )z-A parenthesised argument list, used by Call()r )r r r �clone�insert_child�arglist)�argsZlparenZrparen�noder
r
r �ArgList4 s r, c C s&