Ë
‚Ö¦i½ ã óš — d Z ddlmZ ddlmZ ddlmZ ddlmZmZm Z m
Z
mZmZ d„ Z
G d„ dej « Zd „ Zd
„ Zg dfd„Zd
„ Zy)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 óŽ — t | t j « xr* | j d j t
j k( S )Né )Ú
isinstancer ÚNodeÚchildrenÚtyper ÚSTRING)Ústmts ú7/usr/lib64/python3.12/lib2to3/fixes/fix_tuple_params.pyÚis_docstringr s5 € Ü�dœFŸK™KÓ(ò 1Ø�=‰=˜Ñ× Ñ ¤E§L¡LÑ0ð1ó c ó$ — e Zd ZdZdZdZd„ Zd„ Zy)ÚFixTupleParamsé Ta
funcdef< 'def' any parameters< '(' args=any ')' >
['->' any] ':' suite=any+ >
|
lambda=
lambdef< 'lambda' args=vfpdef< '(' inner=any ')' >
':' body=any
>
c óð ‡ ‡‡
— d|v r‰ j ||« S g Š
|d }|d }|d j d j t j k( r)d}|d j d j
}t
« Šn(d}d}t j t j d« Šdˆˆ
ˆ fd „ }|j t j k( r ||« ne|j t j k( rHt |j « D ]0 \ }} | j t j k( sŒ$ || |dkD ¬
« Œ2 ‰
sy ‰
D ] }
|d |
_
Œ |}|dk( rd‰
d _ n*t |d j | « r|‰
d _ |dz }‰
D ] }
|d |
_
Œ ‰
|d j || t! |dz |t# ‰
« z dz « D ] }||d j | _ Œ |d j% « y )
NÚlambdaÚsuiteÚargsr
é r z; Ú c óT •— t ‰j « « }| j « }d|_ t ||j « « }|rd|_ | j |« ‰j
t j t j |‰j « g« « y )Nr Ú )r Únew_nameÚcloneÚprefixr ÚreplaceÚappendr r r Úsimple_stmt)Ú tuple_argÚ
add_prefixÚnÚargr ÚendÚ new_linesÚselfs €€€r Úhandle_tuplez.FixTupleParams.transform.