File: //lib/python3.6/site-packages/libpasteurize/fixes/__pycache__/fix_kwargs.cpython-36.opt-1.pyc
3
�cg � @ s� d Z ddlmZ ddlmZmZmZmZmZ ddl m
Z
mZmZ dZ
dZdZdZd d
� Zefdd�Zefd
d�ZG dd� dej�ZdS )zg
Fixer for Python 3 function parameter syntax
This fixer is rather sensitive to incorrect py3k syntax.
� )�
fixer_base)�token�String�Newline�Comma�Name)�indentation�suitify�
DoubleStarz=%(name)s = %(kwargs)s['%(name)s']; del %(kwargs)s['%(name)s']z'if '%(name)s' in %(kwargs)s: %(assign)szelse: %(name)s = %(default)sZ_3to2kwargsc c s� d}t | �}x�||k r�| | }|j}|jtjkr:|d7 }q|dk rP|jtjkrPP |j}|j}|dk r�|jtjkr�|j}|d7 }nd}||fV |d7 }qW dS )z�
Generator that yields tuples of (name, default_value) for each parameter in the list
If no default is given, then it is default_value is None (not Leaf(token.NAME, 'None'))
� � N) �lenZprev_sibling�typer �NAME�
DOUBLESTAR�valueZnext_sibling�EQUAL)�
raw_paramsZcurr_idxZmax_idxZ curr_itemZ prev_item�nameZnxt�
default_value� r � /usr/lib/python3.6/fix_kwargs.py�
gen_params s$
r c C sr | d j tjkr6| d j� | d j� | dd� }n| dd� }x*|D ]}|j tjkrb|j� qHdS qHW dS dS )z�
Removes all keyword-only args from the params list and a bare star, if any.
Does not add the kwargs dict if needed.
Returns True if more action is needed, False if not
(more action is needed if no kwargs dict exists)
r r r N� FT)r r �COMMA�remover )r �kwargs_defaultZ kw_paramsZparamr r r �
remove_params+ s
r c C s� d}d}xv| dd� D ]Z}|j tjkr*qq|j tjkrB| rBd}q|j tjkr`|r`|r\|jS dS |j tjkrd}qW |r||S dS dS )z�
Returns string with the name of the kwargs dict if the params after the first star need fixing
Otherwise returns empty string
Fr NT� )r r r r r r )r r Zfound_kwargsZ needs_fix�tr r r �needs_fixingA s r c @ s e Zd ZdZdZdd� ZdS )� FixKwargs� z^funcdef< 'def' NAME parameters< '(' arglist=typedargslist< params=any* > ')' > ':' suite=any >c C s� |d }x2t |�D ]"\}}|jtjkr||d � }P qW d S t|�}|sLd S t|� |jd }|jd }t|�} x�t|�D ]�\}
}|d kr�|j dt
� � |j dtt|
|d� | d�� qz|j dt
� � |j dtt
|
|d� | d�� |j dt
� � |j dttt|
|d� |
|d� | d�� qzW | |_d|jd _t|�}|�r�|d }
t|
j�d
k�rx|
jd
jtjk�rx|
jt� � |
jtdd�� |
jt|�� d S )NZparams� r )r �kwargs)�prefix)r �default)Zassignr r$ r �arglistr r � ���)� enumerater r �STARr r Zchildrenr r Zinsert_childr r �_assign_template�_else_template�_if_templater% r r
r Zappend_childr r
r )�selfZnode�resultsZparams_rawlist�i�itemZ
new_kwargsZsuiteZ
first_stmtZidentr r Zmust_add_kwargsr'