Ë
    #´˜j½  ã                   óš   — 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y)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                  «      xr* | j                  d   j                  t
        j                  k(  S )Né    )Ú
isinstancer   ÚNodeÚchildrenÚtyper   ÚSTRING)Ústmts    ú0lib/python3.12/lib2to3/fixes/fix_tuple_params.pyÚis_docstringr      s5   € Ü�dœFŸK™KÓ(ò 1Ø�=‰=˜Ñ× Ñ ¤E§L¡LÑ0ð1ó    c                   ó$   — e Zd ZdZdZdZd„ Zd„ Zy)Ú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ˆˆˆ fd	„	}|j                  t        j                  k(  r	 ||«       ne|j                  t        j                  k(  rHt        |j                  «      D ]0  \  }}	|	j                  t        j                  k(  sŒ$ ||	|dkD  ¬
«       Œ2 ‰sy ‰D ]  }
|d   |
_        Œ |}|dk(  rd‰d   _        n*t        |d   j                  |   «      r|‰d   _        |dz   }‰D ]  }
|d   |
_        Œ ‰|d   j                  || t!        |dz   |t#        ‰«      z   dz   «      D ]  }||d   j                  |   _        Œ |d   j%                  «        y )NÚlambdaÚsuiteÚargsr   é   r   z; Ú c                 óT  •— t        ‰j                  «       «      }| j                  «       }d|_        t	        ||j                  «       «      }|rd|_        | 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.<locals>.handle_tupleC   s   ø€ Ü�T—]‘]“_Ó%ˆAØ—/‘/Ó#ˆCØˆCŒJÜ˜#˜qŸw™w›yÓ)ˆDÙØ�”Ø×Ñ˜aÔ Ø×ÑœVŸ[™[¬×)9Ñ)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.   sß  ú€ Ø�wÑØ×(Ñ(¨¨wÓ7Ð7àˆ	Ø˜Ñ ˆØ�v‰ˆð �‰8×Ñ˜QÑ×$Ñ$¬¯©Ò4ØˆEØ˜1‘X×&Ñ& qÑ)×/Ñ/ˆFÜ“)‰CàˆEØˆFÜ—+‘+œeŸl™l¨BÓ/ˆC÷
		?ð �9‰9œŸ™Ò#Ù˜ÕØ�Y‰Yœ$×,Ñ,Ò,Ü# D§M¡MÖ2‘��3Ø—8‘8œtŸ{™{Ó*ñ ! °!°a±%Ö9ð	 3ñ Øó ˆDØ ™(ˆD�Kð ð ˆØ�AŠ:Ø"%ˆI�a‰LÕÜ˜% ™(×+Ñ+¨EÑ2Ô3Ø"(ˆI�a‰LÔØ˜A‘IˆEãˆDØ ™(ˆD�Kð à)2ˆˆa‰×Ñ˜% Ð&Ü�u˜Q‘w ¤c¨)£nÑ 4°QÑ 6Ö7ˆAØ*0ˆE�!‰H×Ñ˜aÑ Õ'ð 8àˆa‰×ÑÕr   c                 ó
  — |d   }|d   }t        |d   «      }|j                  t        j                  k(  r)|j	                  «       }d|_        |j                  |«       y t        |«      }t        |«      }| j                  t        |«      «      }t        |d¬«      }	|j                  |	j	                  «       «       |j                  «       D ]±  }
|
j                  t        j                  k(  sŒ!|
j                  |v sŒ0||
j                     D �cg c]  }|j	                  «       ‘Œ }}t        j                  t         j"                  |	j	                  «       g|z   «      }|
j
                  |_        |
j                  |«       Œ³ y c c}w )Nr   ÚbodyÚinnerr!   )r$   )Ú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*   ÚcÚ
subscriptsÚnews                 r   r0   zFixTupleParams.transform_lambdan   s-  € Ø�v‰ˆØ�v‰ˆÜ˜g gÑ.Ó/ˆð �:‰:œŸ™Ò#Ø—K‘K“MˆEØˆEŒLØ�L‰L˜ÔØä˜TÓ"ˆÜ Ó'ˆØ—=‘=¤¨FÓ!3Ó4ˆä˜¨#Ô.ˆ	Ø�‰�Y—_‘_Ó&Ô'Ø—‘Ö"ˆAØ�v‰vœŸ™Ó#¨¯©°8Ò(;Ø19¸!¿'¹'Ò1BÓCÑ1B¨A˜aŸg™g�iÐ1B�
ÐCÜ—k‘k¤$§*¡*Ø#,§?¡?Ó#4Ð"5¸
Ñ"BóD�àŸX™X�”
Ø—	‘	˜#•ñ #ùâCs   ÄF N)Ú__name__Ú
__module__Ú__qualname__Ú	run_orderÚBM_compatibleÚPATTERNrB   r0   © r   r   r   r      s   „ Ø€Ià€Mð€Gò>ó@r   r   c                 óL  — | j                   t        j                  t        j                  fv r| S | j                   t        j
                  k(  rL| j                   t        j
                  k(  r-| j                  d   } | j                   t        j
                  k(  rŒ-| S t        d| z  «      ‚)Nr   zReceived unexpected node %s)r   r   Úvfplistr   rG   Úvfpdefr   ÚRuntimeError)r;   s    r   rF   rF   ‹   sx   € Ø‡y�y”T—\‘\¤5§:¡:Ð.Ñ.ØˆØ	�‰”d—k‘kÒ	!ð �i‰iœ4Ÿ;™;Ò&Ø—=‘= Ñ#ˆDð �i‰iœ4Ÿ;™;Ó&àˆÜ
Ð4°tÑ;Ó
<Ð<r   c                 óJ  — | j                   t        j                  k(  rt        | j                  d   «      S | j                   t
        j                  k(  r| j                  S | j                  D �cg c]+  }|j                   t
        j                  k7  sŒ!t        |«      ‘Œ- c}S c c}w )Nr   )	r   r   r]   rH   r   r   rG   r2   ÚCOMMA)r;   rQ   s     r   rH   rH   –   so   € Ø‡y�y”D—K‘KÒÜ˜4Ÿ=™=¨Ñ+Ó,Ð,Ø	�‰”e—j‘jÒ	 Ø�z‰zÐØ$(§M¢MÓK¡M˜q°Q·V±V¼u¿{¹{Ó5JŒK˜�N MÑKÐKùÒKs   Á-"B ÂB Nc                 ó¾   — |€i }t        | «      D ]J  \  }}t        t        t        |«      «      «      g}t	        |t
        «      rt        |||¬«       ŒC||z   ||<   ŒL |S )N)Úd)r6   r
   r	   Ústrr   ÚlistrI   )Ú
param_listr$   rb   r?   ÚobjÚtrailers         r   rI   rI   �   s_   € Ø€yØˆÜ˜JÖ'‰ˆˆ3ÜœV¤C¨£F›^Ó,Ð-ˆÜ�cœ4Ô Ü˜˜g¨Ö+à˜gÑ%ˆAˆcŠFð (ð €Hr   c                 ó®   — g }| D ]>  }t        |t        «      r|j                  t        |«      «       Œ.|j                  |«       Œ@ dj	                  |«      S )NÚ_)r   rd   r&   rJ   Újoin)re   Úlrf   s      r   rJ   rJ   ¨   sF   € Ø
€AÛˆÜ�cœ4Ô Ø�H‰H”Z “_Õ%à�H‰H�S�Mð	 ð
 �8‰8�A‹;Ðr   )Ú__doc__r   r   Úpgen2r   r   Ú
fixer_utilr   r   r   r	   r
   r   r   ÚBaseFixr   rF   rH   rI   rJ   rZ   r   r   Ú<module>rp      sQ   ðñõ* Ý Ý ß G× Gò1ôg�Z×'Ñ'ô gòX	=òLð %'¨$ó 	ór   