Your IP : 3.145.35.234


Current Path : /opt/alt/python34/lib64/python3.4/lib2to3/fixes/__pycache__/
Upload File :
Current File : //opt/alt/python34/lib64/python3.4/lib2to3/fixes/__pycache__/fix_tuple_params.cpython-34.pyc

�
j f��@s�dZddlmZddlmZddlmZddlmZmZm	Z	m
Z
mZmZdd�Z
Gdd	�d	ej�Zd
d�Zdd
�Zgddd�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�symscCs)t|tj�o(|jdjtjkS)N�)�
isinstancer�Node�children�typer�STRING)�stmt�r�C/opt/alt/python34/lib64/python3.4/lib2to3/fixes/fix_tuple_params.py�is_docstringsrc@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s6d|kr�j||�Sg�|d}|d}|djdjtjkryd}|djdj}t��n!d}d}tjtjd��d	���fd
d�}|jt	j
kr�||�n`|jt	jkr4xKt|j�D]7\}}	|	jt	j
kr�||	d|dk�q�q�Wn�s>dSx�D]}
|d|
_
qEW|}|dkr~d
�d_n1t|dj|�r�|�d_|d}nx�D]}
|d|
_
q�W�|dj||�<x=t|d|t��d�D]}||dj|_qW|dj�dS)N�lambda�suite�argsr�rz; �Fcs�t�j��}|j�}d|_t||j��}|rNd|_n|j|��jtjt	j
|�j�g��dS)Nr� )r�new_name�clone�prefixr�replace�appendrr
r
Zsimple_stmt)Z	tuple_arg�
add_prefix�n�argr)�end�	new_lines�selfrr�handle_tupleCs	
z.FixTupleParams.transform.<locals>.handle_tupler"r)�transform_lambdarrr�INDENT�valuerrZLeafr
ZtfpdefZ
typedargslist�	enumerate�parentrr�range�lenZchanged)r'�node�resultsrr�start�indentr(�ir$�line�afterr)r%r&r'r�	transform.sF


 



(zFixTupleParams.transformc
CsB|d}|d}t|d�}|jtjkr\|j�}d|_|j|�dSt|�}t|�}|j	t
|��}t|dd�}	|j|	j��x�|j�D]}
|
jtjkr�|
j
|kr�dd�||
j
D�}tjtj|	j�g|�}|
j|_|
j|�q�q�WdS)Nr�body�innerrrcSsg|]}|j��qSr)r)�.0�crrr�
<listcomp>�s	z3FixTupleParams.transform_lambda.<locals>.<listcomp>)�
simplify_argsrr�NAMErrr �find_params�map_to_indexr�
tuple_namerZ
post_orderr+rr
r
Zpower)
r'r0r1rr8r9ZparamsZto_indexZtup_nameZ	new_paramr#Z
subscripts�newrrrr)ns(

	
!zFixTupleParams.transform_lambdaN)�__name__�
__module__�__qualname__Z	run_orderZ
BM_compatibleZPATTERNr7r)rrrrrs

@rcCso|jtjtjfkr|S|jtjkr[x#|jtjkrV|jd}q4W|Std|��dS)NrzReceived unexpected node %s)rr
Zvfplistrr>�vfpdefr�RuntimeError)r0rrrr=�sr=cCsP|jtjkr#t|jd�S|jtjkr<|jSdd�|jD�S)NrcSs.g|]$}|jtjkrt|��qSr)rr�COMMAr?)r:r;rrrr<�s	zfind_params.<locals>.<listcomp>)rr
rFr?rrr>r+)r0rrrr?�s
r?NcCs�|dkri}nxht|�D]Z\}}ttt|���g}t|t�rnt||d|�q"||||<q"W|S)N�d)r,r	r�strr�listr@)�
param_listrrIr4�objZtrailerrrrr@�s	r@cCsVg}x@|D]8}t|t�r8|jt|��q
|j|�q
Wdj|�S)N�_)rrKr!rA�join)rL�lrMrrrrA�s
rA)�__doc__rrZpgen2rrZ
fixer_utilrrrrr	r
rZBaseFixrr=r?r@rArrrr�<module>s.l

?>