o
    gf;                     @   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   symsZargumentr   r   EQUAL)keywordvalue r   H/Users/admin/.pyenv/versions/3.10.0/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,      r/   c                   C   r,   )N.)r   r   DOTr   r   r   r   r(   0   r0   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
   r8   c                 C   s(   	 t tj| t|g}|d ur||_|S r&   )r   r   powerr8   r   )	func_namer6   r   r7   r   r   r   Call;   s
   r;   c                   C   r,   )N
r   r   NEWLINEr   r   r   r   NewlineB   r0   r?   c                   C   r,   )N r=   r   r   r   r   	BlankLineF   r0   rA   c                 C   s   t tj| |dS r!   )r   r   NUMBER)nr   r   r   r   NumberJ   s   rD   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
   
rI   c                 C   r    r!   )r   r   STRING)stringr   r   r   r   StringS   r%   rL   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 )Nr@   r   forinifrE   rF   )r   r   r   r"   appendr   r   Zcomp_ifZ	listmakerZcomp_forr   rG   rH   )	ZxpfpittestZfor_leafZin_leafZ
inner_argsZif_leafinnerr   r   r   ListCompW   s*   

rU   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   )r3   ).0rC   r   r   r   
<listcomp>   s    z!ImportAndCall.<locals>.<listcomp>    r   ZlparZrpar)
r3   typer   r5   r   r9   r+   r$   r'   r   )r7   resultsnamesr)   Z
newarglistr^   newr   r   r   ImportAndCall   s,   


rf   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   ra   r      r   r   )r   r   r[   r   r   lenr   r   r7   r   r   r   is_tuple   s    
rk   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   ra   rE   rF   )r   r   ri   r[   r   r   rj   r   r   r   is_list   s   
rm   c                 C   s   t tjt | t gS r&   )r   r   r   r   r   rj   r   r   r   parenthesize   s   rn   >
   tupleanysumminsortedallsetr   max	enumeratec                 c   s.    	 t | |}|r|V  t ||}|s	d S d S r&   )getattr)r)   r*   nextr   r   r   
attr_chain   s   

rz   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parentr7   F)	
pats_builtr   compile_patternp0p1p2ziprz   match)r7   patternspatternr{   rc   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 )NFra   T)Zprev_siblingrb   r   r2   r{   r   funcdefclassdef	expr_stmtr[   Z
parametersZtypedargslistr.   )r7   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 )Nrh   r   r@   )	rb   r   suiteri   r[   r   INDENTr   r{   )r7   indentr   r   r   find_indentation  s   
r   c                 C   s>   | j tjkr| S |  } | jd }| _ttj| g}||_|S r&   )rb   r   r   r3   r{   r   )r7   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.)rb   r   Z
file_inputr{   
ValueErrorrj   r   r   r   	find_root&  s   r   c                 C   s   	 t |t|| }t|S r&   )find_bindingr   bool)packager#   r7   Zbindingr   r   r   does_tree_import/  s   r   c                 C   s   	 | j tjtjfv S r&   )rb   r   import_namerZ   rj   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 q7q,|| } |dkrbt|jD ]\}}|jtjkra|jra|jd jtjkra|d } qbqE| 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 )Nra   )rb   r   simple_stmtr[   r   rj   r   r   r   is_import_stmt>  s   z$touch_import.<locals>.is_import_stmtra   r   rW   r   r   )r   r   rw   r[   rb   r   r   r   rJ   r   r   r   r"   r]   r?   r4   )r   r#   r7   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|}nv|jtj	krt| t|j d |}|rY|}n`t
|j dd  D ]V\}}|jtjkr|jdkrt| t|j |d  |}|r|}qb|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   rl   rh   rg   :   ra   )r[   rb   r   Zfor_stmt_findr   r   Zif_stmtZ
while_stmtZtry_stmtrw   r   COLONr   	_def_syms_is_import_bindingr   r   r   )r#   r7   r   childZretrC   iZkidr   r   r   r   i  sL   
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   )poprb   _block_symsextendr[   r   r"   r   )r#   r7   Znodesr   r   r   r     s   r   c                 C   s  	 | j tjkre|se| jd }|j tjkr<|jD ]K}|j tjkr,|jd j|kr+|   S q|j tjkr;|j|kr;|   S q|j tjkrV|jd }|j tjkrT|j|krT| S d S |j tjkrc|j|krc| S d S | j tj	kr|rzt
| jd  |krzd 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   rh   rl   rg   as)rb   r   r   r[   Zdotted_as_namesZdotted_as_namer   r   r"   rZ   strstripr   rY   Zimport_as_nameSTAR)r7   r#   r   r\   r   ZlastrC   r   r   r   r     sL   




r   r&   )NN)5Zpgen2r   Zpytreer   r   Zpygramr   r   r@   r   r   r   r   r   r$   r+   r/   r(   r8   r;   r?   rA   rD   rI   rL   rU   r]   rf   rk   rm   rn   Zconsuming_callsrz   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    




		-
*
