§
    ZQd½  ã                   ó˜   — 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„ Z G d„ dej        ¦  «        Zd	„ Zd
„ Zg dfd„Z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                 óv   — t          | t          j        ¦  «        o| j        d         j        t
          j        k    S )Né    )Ú
isinstancer   ÚNodeÚchildrenÚtyper   ÚSTRING)Ústmts    ú5/usr/lib/python3.11/lib2to3/fixes/fix_tuple_params.pyÚis_docstringr      s/   € Ý�d�FœKÑ(Ô(ð 1ØŒ=˜ÔÔ ¥E¤LÒ0ð1ó    c                   ó&   — e Zd ZdZdZdZd„ Z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                 óþ  ‡ ‡‡— d|v r‰                       ||¦  «        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ˆˆˆ fd
„	}|j        t          j
        k    r ||¦  «         nU|j        t          j        k    r@t          |j        ¦  «        D ]+\  }}	|	j        t          j
        k    r ||	|dk    ¬¦  «         Œ,‰sd S ‰D ]}
|d         |
_        Œ|}|dk    rd‰d         _        n2t          |d         j        |         ¦  «        r|‰d         _        |dz   }‰D ]}
|d         |
_        Œ‰|d         j        ||…<   t!          |dz   |t#          ‰¦  «        z   dz   ¦  «        D ]}||d         j        |         _        Œ|d                              ¦   «          d S )NÚlambdaÚsuiteÚargsr   é   r   z; Ú Fc                 óŒ  •— t          ‰                     ¦   «         ¦  «        }|                      ¦   «         }d|_        t	          ||                     ¦   «         ¦  «        }|rd|_        |                      |¦  «         ‰                     t          j        t          j
        |‰                     ¦   «         g¦  «        ¦  «         d S )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.<locals>.handle_tupleC   s­   ø€ Ý�T—]’]‘_”_Ñ%Ô%ˆAØ—/’/Ñ#Ô#ˆCØˆCŒJÝ˜#˜qŸwšw™yœyÑ)Ô)ˆDØð Ø�”Ø×Ò˜aÑ Ô Ð Ø×Ò�Vœ[­Ô)9Ø*.°·	²	±´Ð)<ñ>ô >ñ ?ô ?ð ?ð ?ð ?r   )r)   r!   )F)Útransform_lambdar   r   r   ÚINDENTÚvaluer   r   ÚLeafr   ÚtfpdefÚtypedargslistÚ	enumerateÚparentr$   r   ÚrangeÚlenÚchanged)r.   ÚnodeÚresultsr   r   ÚstartÚindentr/   Úir+   ÚlineÚafterr,   r-   s   `           @@r   Ú	transformzFixTupleParams.transform.   sM  øøø€ Ø�wÐÐØ×(Ò(¨¨wÑ7Ô7Ð7àˆ	Ø˜Ô ˆØ�vŒˆð �Œ8Ô˜QÔÔ$­¬Ò4Ð4ØˆEØ˜1”XÔ& qÔ)Ô/ˆFÝ‘)”)ˆCˆCàˆEØˆFÝ”+�eœl¨BÑ/Ô/ˆCð
		?ð 		?ð 		?ð 		?ð 		?ð 		?ð 		?ð 		?ð Œ9�œÒ#Ð#ØˆL˜ÑÔÐÐØŒY�$Ô,Ò,Ð,Ý# D¤MÑ2Ô2ð :ð :‘��3Ø”8�tœ{Ò*Ð*ð !�L °!°a²%Ð9Ñ9Ô9Ð9øàð 	ØˆFð ð 	#ð 	#ˆDØ œ(ˆDŒKˆKð ˆØ�AŠ:ˆ:Ø"%ˆI�aŒLÔÐÝ˜% œ(Ô+¨EÔ2Ñ3Ô3ð 	Ø"(ˆI�aŒLÔØ˜A‘IˆEàð 	#ð 	#ˆDØ œ(ˆDŒKˆKØ)2ˆˆaŒÔ˜% ˜+Ñ&Ý�u˜Q‘w ¥c¨)¡n¤nÑ 4°QÑ 6Ñ7Ô7ð 	1ð 	1ˆAØ*0ˆE�!ŒHÔ˜aÔ Ô'Ð'ØˆaŒ×ÒÑÔÐÐÐr   c                 ó  — |d         }|d         }t          |d         ¦  «        }|j        t          j        k    r2|                     ¦   «         }d|_        |                     |¦  «         d S t          |¦  «        }t          |¦  «        }|  	                    t          |¦  «        ¦  «        }t          |d¬¦  «        }	|                     |	                     ¦   «         ¦  «         |                     ¦   «         D ]�}
|
j        t          j        k    rv|
j        |v rmd„ ||
j                 D ¦   «         }t          j        t           j        |	                     ¦   «         g|z   ¦  «        }|
j        |_        |
                     |¦  «         ŒŽd S )Nr   ÚbodyÚinnerr!   )r$   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS © )r#   ©Ú.0Úcs     r   ú
<listcomp>z3FixTupleParams.transform_lambda.<locals>.<listcomp>‚   s    € ÐCÐCÐC¨A˜aŸgšg™iœiÐCÐCÐCr   )Úsimplify_argsr   r   ÚNAMEr#   r$   r%   Úfind_paramsÚmap_to_indexr"   Ú
tuple_namer   Ú
post_orderr2   r   r   r   Úpower)r.   r;   r<   r   rD   rE   ÚparamsÚto_indexÚtup_nameÚ	new_paramr*   Ú
subscriptsÚnews                r   r0   zFixTupleParams.transform_lambdan   s`  € Ø�vŒˆØ�vŒˆÝ˜g gÔ.Ñ/Ô/ˆð Œ:�œÒ#Ð#Ø—K’K‘M”MˆEØˆEŒLØ�LŠL˜ÑÔÐØˆFå˜TÑ"Ô"ˆÝ Ñ'Ô'ˆØ—=’=¥¨FÑ!3Ô!3Ñ4Ô4ˆå˜¨#Ð.Ñ.Ô.ˆ	Ø�Š�Y—_’_Ñ&Ô&Ñ'Ô'Ð'Ø—’Ñ"Ô"ð 	ð 	ˆAØŒv�œÒ#Ð#¨¬°8Ð(;Ð(;ØCÐC°¸!¼'Ô1BÐCÑCÔC�
Ý”k¥$¤*Ø#,§?¢?Ñ#4Ô#4Ð"5¸
Ñ"BñDô D�àœX�”
Ø—	’	˜#‘”�øð	ð 	r   N)Ú__name__Ú
__module__Ú__qualname__Ú	run_orderÚBM_compatibleÚPATTERNrB   r0   rG   r   r   r   r      sD   € € € € € Ø€Ià€Mð€Gð>ð >ð >ð@ð ð ð ð r   r   c                 ó  — | j         t          j        t          j        fv r| S | j         t          j        k    r9| j         t          j        k    r"| j        d         } | j         t          j        k    °"| S t          d| z  ¦  «        ‚)Nr   zReceived unexpected node %s)r   r   Úvfplistr   rM   Úvfpdefr   ÚRuntimeError©r;   s    r   rL   rL   ‹   ss   € Ø„y•T”\¥5¤:Ð.Ð.Ð.ØˆØ	Œ•d”kÒ	!Ð	!ð Œi�4œ;Ò&Ð&Ø”= Ô#ˆDð Œi�4œ;Ò&Ð&àˆÝ
Ð4°tÑ;Ñ
<Ô
<Ð<r   c                 óº   — | j         t          j        k    rt          | j        d         ¦  «        S | j         t
          j        k    r| j        S d„ | j        D ¦   «         S )Nr   c                 óV   — g | ]&}|j         t          j        k    ¯t          |¦  «        ‘Œ'S rG   )r   r   ÚCOMMArN   rH   s     r   rK   zfind_params.<locals>.<listcomp>›   s,   € ÐKÐKÐK˜q°Q´V½u¼{Ò5JÐ5J�K˜‰NŒNÐ5JÐ5JÐ5Jr   )r   r   ra   rN   r   r   rM   r2   rc   s    r   rN   rN   –   sS   € Ø„y•D”KÒÐÝ˜4œ=¨Ô+Ñ,Ô,Ð,Ø	Œ•e”jÒ	 Ð	 ØŒzÐØKÐK D¤MÐKÑKÔKÐKr   Nc                 óì   — |€i }t          | ¦  «        D ]_\  }}t          t          t          |¦  «        ¦  «        ¦  «        g}t	          |t
          ¦  «        rt          |||¬¦  «         ŒW||z   ||<   Œ`|S )N)Úd)r6   r
   r	   Ústrr   ÚlistrO   )Ú
param_listr$   rh   r?   ÚobjÚtrailers         r   rO   rO   �   s‚   € Ø€yØˆÝ˜JÑ'Ô'ð &ð &‰ˆˆ3Ý�V¥C¨¡F¤F™^œ^Ñ,Ô,Ð-ˆÝ�c�4Ñ Ô ð 	&Ý˜˜g¨Ð+Ñ+Ô+Ð+Ð+à˜gÑ%ˆAˆc‰FˆFØ€Hr   c                 óÔ   — g }| D ]O}t          |t          ¦  «        r#|                     t          |¦  «        ¦  «         Œ:|                     |¦  «         ŒPd                     |¦  «        S )NÚ_)r   rj   r&   rP   Újoin)rk   Úlrl   s      r   rP   rP   ¨   sd   € Ø
€AØð ð ˆÝ�c�4Ñ Ô ð 	Ø�HŠH•Z ‘_”_Ñ%Ô%Ð%Ð%à�HŠH�S‰MŒMˆMˆMØ�8Š8�A‰;Œ;Ðr   )Ú__doc__r   r   Úpgen2r   r   Ú
fixer_utilr   r   r   r	   r
   r   r   ÚBaseFixr   rL   rN   rO   rP   rG   r   r   ú<module>rv      s  ððð ð* Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ Gð1ð 1ð 1ðgð gð gð gð g�ZÔ'ñ gô gð gðX	=ð 	=ð 	=ðLð Lð Lð %'¨$ð 	ð 	ð 	ð 	ðð ð ð ð r   