
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,a½  ã                   @   sˆ   d dl mZ d dlmZ d dl mZ d dlmZmZmZm	Z	m
Z
mZ dd„ ZG dd„ dejƒZd	d
„ Zdd„ Zg dfdd„Zdd„ ZdS )é   )Úpytree)Útoken)Ú
fixer_base)ÚAssignÚNameÚNewlineÚNumberÚ	SubscriptÚsymsc                 C   s   t | tjƒo| jd jtjkS )Né    )Ú
isinstancer   ÚNodeÚchildrenÚtyper   ÚSTRING)Ústmt© r   úC/opt/alt/python38/lib64/python3.8/lib2to3/fixes/fix_tuple_params.pyÚis_docstring   s    ÿr   c                   @   s(   e Zd ZdZdZdZdd„ Zdd„ ZdS )	ÚFixTupleParamsé   Ta  
              funcdef< 'def' any parameters< '(' args=any ')' >
                       ['->' any] ':' suite=any+ >
              |
              lambda=
              lambdef< 'lambda' args=vfpdef< '(' inner=any ')' >
                       ':' body=any
              >
              c                    sš  d|krˆ  ||¡S g ‰|d }|d }|d jd jtjkrZd}|d jd j}tƒ ‰ nd}d}t tjd¡‰ d‡ ‡‡fd
d„	}|jt	j
kr˜||ƒ n<|jt	jkrÔt|jƒD ]$\}}	|	jt	j
kr®||	|dkd� q®ˆsÜd S ˆD ]}
|d |
_qà|}|dk�r
dˆd _n&t|d j| ƒ�r0|ˆd _|d }ˆD ]}
|d |
_�q4ˆ|d j||…< t|d |tˆƒ d ƒD ]}||d j| _�qr|d  ¡  d S )NÚlambdaÚsuiteÚargsr   é   r   z; Ú Fc                    s\   t ˆ ¡ ƒ}|  ¡ }d|_t|| ¡ ƒ}|r2d|_|  |¡ ˆ t t	j
|ˆ  ¡ g¡¡ d S )Nr   ú )r   Únew_nameÚcloneÚprefixr   ÚreplaceÚappendr   r   r
   Zsimple_stmt)Z	tuple_argÚ
add_prefixÚnÚargr   ©ÚendZ	new_linesÚselfr   r   Úhandle_tupleC   s    

ÿz.FixTupleParams.transform.<locals>.handle_tuple)r"   r   )F)Útransform_lambdar   r   r   ÚINDENTÚvaluer   r   ZLeafr
   ZtfpdefZtypedargslistÚ	enumerateÚparentr   r   ÚrangeÚlenZchanged)r'   ÚnodeÚresultsr   r   ÚstartÚindentr(   Úir$   ÚlineZafterr   r%   r   Ú	transform.   sF    


zFixTupleParams.transformc                 C   sâ   |d }|d }t |d ƒ}|jtjkrD| ¡ }d|_| |¡ d S t|ƒ}t|ƒ}|  	t
|ƒ¡}t|dd�}	| |	 ¡ ¡ | ¡ D ]X}
|
jtjkr„|
j|kr„dd„ ||
j D ƒ}t tj|	 ¡ g| ¡}|
j|_|
 |¡ q„d S )Nr   ÚbodyÚinnerr   )r   c                 S   s   g | ]}|  ¡ ‘qS r   )r   ©Ú.0Úcr   r   r   Ú
<listcomp>‚   s     z3FixTupleParams.transform_lambda.<locals>.<listcomp>)Úsimplify_argsr   r   ÚNAMEr   r   r    Úfind_paramsÚmap_to_indexr   Ú
tuple_namer   Z
post_orderr+   r   r   r
   Zpower)r'   r0   r1   r   r7   r8   ZparamsZto_indexZtup_nameZ	new_paramr#   Z
subscriptsÚnewr   r   r   r)   n   s*    
ÿzFixTupleParams.transform_lambdaN)Ú__name__Ú
__module__Ú__qualname__Z	run_orderZBM_compatibleZPATTERNr6   r)   r   r   r   r   r      s
   
@r   c                 C   sN   | j tjtjfkr| S | j tjkr>| j tjkr:| jd } q"| S td|  ƒ‚d S )Nr   zReceived unexpected node %s)r   r
   Zvfplistr   r>   Úvfpdefr   ÚRuntimeError©r0   r   r   r   r=   ‹   s    r=   c                 C   s<   | j tjkrt| jd ƒS | j tjkr,| jS dd„ | jD ƒS )Nr   c                 S   s    g | ]}|j tjkrt|ƒ‘qS r   )r   r   ÚCOMMAr?   r9   r   r   r   r<   ›   s      zfind_params.<locals>.<listcomp>)r   r
   rF   r?   r   r   r>   r+   rH   r   r   r   r?   –   s
    r?   Nc                 C   sZ   |d kri }t | ƒD ]@\}}ttt|ƒƒƒg}t|tƒrHt|||d� q|| ||< q|S )N)Úd)r,   r	   r   Ústrr   Úlistr@   )Ú
param_listr   rJ   r4   ÚobjZtrailerr   r   r   r@   �   s    
r@   c                 C   s<   g }| D ](}t |tƒr&| t|ƒ¡ q| |¡ qd |¡S )NÚ_)r   rL   r!   rA   Újoin)rM   ÚlrN   r   r   r   rA   ¨   s    
rA   )r   r   Zpgen2r   r   Z
fixer_utilr   r   r   r   r	   r
   r   ZBaseFixr   r=   r?   r@   rA   r   r   r   r   Ú<module>   s    l