U e5d½ ã @ 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.8/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|krˆ ||¡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||…<