ðÕYf½ ã @ sà d Z 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
Gd d „ d e j ƒ Z d
d „ Z d d
„ Z g d d d „ Z d d „ Z d S)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 | t j ƒ o( | j d j t j k S)Né )Ú
isinstancer ÚNodeÚchildrenÚtyper ÚSTRING)Ústmt© r úC/opt/alt/python35/lib64/python3.5/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 ˆ j | | ƒ Sg ‰ | d } | d } | d j d j t j k ry d } | d j d j } t ƒ ‰ n! d } d } t j t j d ƒ ‰ d ‡ ‡ ‡ f d
d † } | j t j
k rÔ | | ƒ nZ | j t j k r.xE t | j ƒ D]4 \ } } | j t j
k rö | | d | d k ƒqö Wˆ s8d Sx ˆ D] }
| d |
_
q?W| } | d k rxd
ˆ d _ n. t | d j | ƒ r¦| ˆ d _ | d } x ˆ D] }
| d |
_
qWˆ | d j | | …