o
     JAff;                     @   s  	 d dl mZ d dlmZmZ d dlmZ d dlm	Z	 dd Z
dd Zd	d
 Zdd ZdMddZdd Zdd Zdd Ze e fddZdNddZdd Zdd ZdMddZd d! ZdMd"d#ZdMd$d%Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zh d0Zd1d2 Z d3a!d4a"d5a#d6a$d7d8 Z%d9d: Z&d;d< Z'd=d> Z(d?d@ Z)dAdB Z*dCdD Z+dEdF Z,ej-ej.hZ/dMdGdHZ0ej.ej-ej1hZ2dIdJ Z3dMdKdLZ4dS )O   )token)LeafNode)python_symbols)patcompc                 C   s   t tj| ttjd|gS )N=)r   symsargumentr   r   EQUAL)keywordvalue r   )/usr/lib/python3.10/lib2to3/fixer_util.py
KeywordArg   s   r   c                   C      t tjdS )N()r   r   LPARr   r   r   r   LParen      r   c                   C   r   )N))r   r   RPARr   r   r   r   RParen   r   r   c                 C   sJ   	 t | ts	| g} t |tsd|_|g}ttj| ttjdddg | S )N r   prefix)	
isinstancelistr   r   r   atomr   r   r
   )targetsourcer   r   r   Assign   s   

r    Nc                 C      	 t tj| |dS Nr   )r   r   NAME)namer   r   r   r   Name$      r%   c                 C   s   	 | t tjt |ggS N)r   r   trailerDot)objattrr   r   r   Attr(   s   r,   c                   C      	 t tjdS )N,)r   r   COMMAr   r   r   r   Comma,      r0   c                   C   r-   )N.)r   r   DOTr   r   r   r   r)   0   r1   r)   c                 C   s6   	 t tj| | g}| r|dt tj|  |S )Nr   )r   r   r(   cloneinsert_childarglist)argsZlparenZrparennoder   r   r   ArgList4   s
   r9   c                 C   s(   	 t tj| t|g}|d ur||_|S r'   )r   r   powerr9   r   )	func_namer7   r   r8   r   r   r   Call;   s
   r<   c                   C   r-   )N
r   r   NEWLINEr   r   r   r   NewlineB   r1   r@   c                   C   r-   )N r>   r   r   r   r   	BlankLineF   r1   rB   c                 C   s   t tj| |dS r"   )r   r   NUMBER)nr   r   r   r   NumberJ   s   rE   c                 C   s$   	 t tjttjd| ttjdgS )N[])r   r   r(   r   r   LBRACERBRACE)Z
index_noder   r   r   	SubscriptM   s
   
rJ   c                 C   r!   r"   )r   r   STRING)stringr   r   r   r   StringS   r&   rM   c           	      C   s   	 d| _ d|_ d|_ ttjd}d|_ ttjd}d|_ ||||g}|r;d|_ ttjd}d|_ |ttj||g ttj| ttj	|g}ttj
ttjd|ttjdgS )NrA   r   forinifrF   rG   )r   r   r   r#   appendr   r   Zcomp_ifZ	listmakerZcomp_forr   rH   rI   )	ZxpfpittestZfor_leafZin_leafZ
inner_argsZif_leafinnerr   r   r   ListCompW   s*   

rV   c                 C   sX   	 |D ]}|   qttjdttj| ddttjdddttj|g}ttj|}|S )Nfromr   r   import)remover   r   r#   r   r   import_as_namesimport_from)Zpackage_nameZ
name_leafsZleafchildrenimpr   r   r   
FromImporto   s   


r^   c              	   C   s   	 |d   }|jtjkr|  }n	ttj|  g}|d }|r(dd |D }ttjtt|d t|d ttj|d   ||d   gg | }| j	|_	|S )	Nr*   afterc                 S   s   g | ]}|  qS r   )r4   ).0rD   r   r   r   
<listcomp>   s    z!ImportAndCall.<locals>.<listcomp>    r   ZlparZrpar)
r4   typer   r6   r   r:   r,   r%   r(   r   )r8   resultsnamesr*   Z
newarglistr_   newr   r   r   ImportAndCall   s,   


rg   c                 C   s   	 t | tr| jt t gkrdS t | toDt| jdkoDt | jd toDt | jd toDt | jd toD| jd jdkoD| jd jdkS )NT   rb   r      r   r   )r   r   r\   r   r   lenr   r   r8   r   r   r   is_tuple   s    
rl   c                 C   sZ   	 t | to,t| jdko,t | jd to,t | jd to,| jd jdko,| jd jdkS )Nr   rb   rF   rG   )r   r   rj   r\   r   r   rk   r   r   r   is_list   s   
rn   c                 C   s   t tjt | t gS r'   )r   r   r   r   r   rk   r   r   r   parenthesize   s   ro   >
   min	enumerater   tupleanyallsetsumsortedmaxc                 c   s.    	 t | |}|r|V  t ||}|s	d S d S r'   )getattr)r*   r+   nextr   r   r   
attr_chain   s   

r{   zefor_stmt< 'for' any 'in' node=any ':' any* >
        | comp_for< 'for' any 'in' node=any any* >
     z
power<
    ( 'iter' | 'list' | 'tuple' | 'sorted' | 'set' | 'sum' |
      'any' | 'all' | 'enumerate' | (any* trailer< '.' 'join' >) )
    trailer< '(' node=any ')' >
    any*
>
z`
power<
    ( 'sorted' | 'enumerate' )
    trailer< '(' arglist<node=any any*> ')' >
    any*
>
Fc                 C   sr   	 t sttattattada tttg}t|t| dD ]\}}i }|||r6|d | u r6 dS q!dS )NTparentr8   F)	
pats_builtr   compile_patternp0p1p2zipr{   match)r8   patternspatternr|   rd   r   r   r   in_special_context   s   



r   c                 C   s   	 | j }|d ur|jtjkrdS | j}|jtjtjfv rdS |jtjkr-|j	d | u r-dS |jtj
ksJ|jtjkrL|d urC|jtjksJ|j	d | u rLdS dS )NFrb   T)Zprev_siblingrc   r   r3   r|   r   funcdefclassdef	expr_stmtr\   Z
parametersZtypedargslistr/   )r8   prevr|   r   r   r   is_probably_builtin   s   r   c                 C   sR   	 | d ur'| j tjkr t| jdkr | jd }|j tjkr |jS | j} | d usdS )Nri   r   rA   )	rc   r   suiterj   r\   r   INDENTr   r|   )r8   indentr   r   r   find_indentation  s   
r   c                 C   s>   | j tjkr| S |  } | jd }| _ttj| g}||_|S r'   )rc   r   r   r4   r|   r   )r8   r|   r   r   r   r   
make_suite  s   r   c                 C   s0   	 | j tjkr| j} | std| j tjks| S )Nz,root found before file_input node was found.)rc   r   Z
file_inputr|   
ValueErrorrk   r   r   r   	find_root&  s   r   c                 C   s   	 t |t|| }t|S r'   )find_bindingr   bool)packager$   r8   Zbindingr   r   r   does_tree_import/  s   r   c                 C   s   	 | j tjtjfv S r'   )rc   r   import_namer[   rk   r   r   r   	is_import7  s   r   c                 C   s,  	 dd }t |}t| ||rd S d }}t|jD ]!\}}||s#qt|j|d  D ]
\}}||s6 nq,|| } |dkrbt|jD ]\}}|jtjkra|jra|jd jtjkra|d } nqE| d u ryt	tj
ttjdttj|ddg}	nt| ttj|ddg}	|	t g}
||t	tj|
 d S )Nc                 S   s    | j tjko| jot| jd S )Nrb   )rc   r   simple_stmtr\   r   rk   r   r   r   is_import_stmt>  s   z$touch_import.<locals>.is_import_stmtrb   r   rX   r   r   )r   r   rq   r\   rc   r   r   r   rK   r   r   r   r#   r^   r@   r5   )r   r$   r8   r   rootZ
insert_posoffsetidxZnode2import_r\   r   r   r   touch_import;  s<   

r   c                 C   s  	 |j D ]}d }|jtjkr*t| |j d r|  S t| t|j d |}|r)|}n|jtjtjfv rCt| t|j d |}|rB|}nw|jtj	krt| t|j d |}|rY|}nat
|j dd  D ] \}}|jtjkr|jdkrt| t|j |d  |}|r|}qbn6|jtv r|j d j| kr|}n&t|| |r|}n|jtjkrt| ||}n|jtjkrt| |j d r|}|r|s|  S t|r|  S qd S )Nr   rm   ri   rh   :   rb   )r\   rc   r   Zfor_stmt_findr   r   Zif_stmtZ
while_stmtZtry_stmtrq   r   COLONr   	_def_syms_is_import_bindingr   r   r   )r$   r8   r   childretrD   iZkidr   r   r   r   i  sN   
r   c                 C   sV   |g}|r)|  }|jdkr|jtvr||j n|jtjkr'|j| kr'|S |sd S )N   )poprc   _block_symsextendr\   r   r#   r   )r$   r8   Znodesr   r   r   r     s   r   c                 C   s  	 | j tjkrg|sg| jd }|j tjkr>|jD ]$}|j tjkr,|jd j|kr+|   S q|j tjkr;|j|kr;|   S qd S |j tjkrX|jd }|j tjkrV|j|krV| S d S |j tjkre|j|kre| S d S | j tj	kr|r|t
| jd  |kr|d S | jd }|rtd|rd S |j tjkrt||r| S |j tjkr|jd }|j tjkr|j|kr| S d S |j tjkr|j|kr| S |r|j tjkr| S d S )Nr   ri   rm   rh   as)rc   r   r   r\   Zdotted_as_namesZdotted_as_namer   r   r#   r[   strstripr   rZ   Zimport_as_nameSTAR)r8   r$   r   r]   r   ZlastrD   r   r   r   r     sN   




r   r'   )NN)5Zpgen2r   Zpytreer   r   Zpygramr   r   rA   r   r   r   r   r    r%   r,   r0   r)   r9   r<   r@   rB   rE   rJ   rM   rV   r^   rg   rl   rn   ro   Zconsuming_callsr{   r   r   r   r}   r   r   r   r   r   r   r   r   r   r   r   r   r(   r   r   r   r   r   r   r   <module>   sZ    




		-
*
