a
´i½ ã @ 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||…<