???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................U
    e5dg;                  
   @   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dVddZdd Zdd Zdd Ze e fddZdWddZdd Zdd ZdXddZd d! ZdYd"d#ZdZd$d%Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1d2d3d4d5d6d7d8d9h
Zd:d; Z d<a!d=a"d>a#d?a$d@dA Z%dBdC Z&dDdE Z'dFdG Z(dHdI Z)dJdK Z*dLdM Z+dNdO Z,ej-ej.hZ/d[dPdQZ0ej.ej-ej1hZ2dRdS Z3d\dTdUZ4dS )]   )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   */usr/lib64/python3.8/lib2to3/fixer_util.py
KeywordArg   s    r   c                   C   s   t tjdS )N()r   r   LPARr   r   r   r   LParen   s    r   c                   C   s   t tjdS )N))r   r   RPARr   r   r   r   RParen   s    r   c                 C   sH   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   s   t tj| |dS Nr   )r   r   NAME)namer   r   r   r   Name$   s    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   s   t tjdS )N,)r   r   COMMAr   r   r   r   Comma,   s    r*   c                   C   s   t tjdS )N.)r   r   DOTr   r   r   r   r$   0   s    r$   c                 C   s4   t tj| | g}| r0|dt tj|  |S )Nr   )r   r   r#   cloneinsert_childarglist)argsZlparenZrparennoder   r   r   ArgList4   s    r2   c                 C   s&   t tj| t|g}|d k	r"||_|S r"   )r   r   powerr2   r   )Z	func_namer0   r   r1   r   r   r   Call;   s    r4   c                   C   s   t tjdS )N
r   r   NEWLINEr   r   r   r   NewlineB   s    r8   c                   C   s   t tjdS )N r6   r   r   r   r   	BlankLineF   s    r:   c                 C   s   t tj| |dS r   )r   r   NUMBER)nr   r   r   r   NumberJ   s    r=   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    
rB   c                 C   s   t tj| |dS r   )r   r   STRING)stringr   r   r   r   StringS   s    rE   c           	      C   s   d| _ d|_ d|_ ttjd}d|_ ttjd}d|_ ||||g}|rtd|_ 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 )Nr9   r   forinifr>   r?   )r   r   r   r   appendr   r   Zcomp_ifZ	listmakerZcomp_forr   r@   rA   )	ZxpfpitZtestZfor_leafZin_leafZ
inner_argsZif_leafinnerr   r   r   ListCompW   s(    

rM   c                 C   sV   |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    


rU   c              	   C   s   |d   }|jtjkr"|  }nttj|  g}|d }|rNd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   )r-   ).0r<   r   r   r   
<listcomp>   s     z!ImportAndCall.<locals>.<listcomp>    r   ZlparZrpar)
r-   typer   r/   r   r3   r'   r!   r#   r   )r1   resultsnamesr%   Z
newarglistrV   newr   r   r   ImportAndCall   s*    


r^   c                 C   s   t | tr | jt t gkr dS t | tot| jdkot | jd tot | jd tot | jd to| jd jdko| jd jdkS )NT   rY   r      r   r   )r   r   rS   r   r   lenr   r   r1   r   r   r   is_tuple   s    
rc   c                 C   sX   t | toVt| jdkoVt | jd toVt | jd toV| jd jdkoV| jd jdkS )Nr   rY   r>   r?   )r   r   ra   rS   r   r   rb   r   r   r   is_list   s    
re   c                 C   s   t tjt | t gS r"   )r   r   r   r   r   rb   r   r   r   parenthesize   s    rf   sortedr   setanyalltuplesumminmax	enumeratec                 c   s$   t | |}|r |V  t ||}q
d S r"   )getattr)r%   r&   nextr   r   r   
attr_chain   s    
rr   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   sp   t s&ttattattada tttg}t|t| dD ]*\}}i }|||r@|d | kr@ dS q@dS )NTparentr1   F)	
pats_builtr   Zcompile_patternp0p1p2ziprr   match)r1   Zpatternspatternrs   r[   r   r   r   in_special_context   s    



r{   c                 C   s   | j }|d k	r|jtjkrdS | j}|jtjtjfkr:dS |jtjkrX|j	d | krXdS |jtj
ks|jtjkr|d k	r|jtjks|j	d | krdS dS )NFrY   T)Zprev_siblingrZ   r   r,   rs   r   funcdefclassdef	expr_stmtrS   Z
parametersZtypedargslistr)   )r1   prevrs   r   r   r   is_probably_builtin   s&    

r   c                 C   sJ   | d k	rF| j tjkr>t| jdkr>| jd }|j tjkr>|jS | j} q dS )Nr`   r   r9   )	rZ   r   suitera   rS   r   INDENTr   rs   )r1   indentr   r   r   find_indentation  s    
r   c                 C   s>   | j tjkr| S |  } | jd  }| _ttj| g}||_|S r"   )rZ   r   r   r-   rs   r   )r1   rs   r   r   r   r   
make_suite  s    r   c                 C   s$   | j tjkr | j} | s tdq | S )Nz,root found before file_input node was found.)rZ   r   Z
file_inputrs   
ValueErrorrb   r   r   r   	find_root&  s
    
r   c                 C   s   t |t|| }t|S r"   )find_bindingr   bool)packager    r1   Zbindingr   r   r   does_tree_import/  s    r   c                 C   s   | j tjtjfkS r"   )rZ   r   import_namerR   rb   r   r   r   	is_import7  s    r   c                 C   s.  dd }t |}t| ||r d S d }}t|jD ]F\}}||sDq2t|j|d  D ]\}}||sV qlqV|| } qzq2|dkrt|jD ]8\}}|jtjkr|jr|jd jtjkr|d } qq| d krt	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 )NrY   )rZ   r   simple_stmtrS   r   rb   r   r   r   is_import_stmt>  s    z$touch_import.<locals>.is_import_stmtrY   r   rO   r   r   )r   r   ro   rS   rZ   r   r   r   rC   r   r   r   r   rU   r8   r.   )r   r    r1   r   rootZ
insert_posoffsetidxZnode2import_rS   r   r   r   touch_import;  s8    

r   c                 C   s  |j D ]}d }|jtjkrVt| |j d r4|  S t| t|j d |}|rR|}n0|jtjtjfkrt| t|j d |}|r|} n|jtj	krt| t|j d |}|r|}nTt
|j dd  D ]@\}}|jtjkr|jdkrt| t|j |d  |}|r|}qnx|jtkr2|j d j| kr2|}nTt|| |rF|}n@|jtjkrbt| ||}n$|jtjkrt| |j d r|}|r|s|  S t|r|  S qd S )Nr   rd   r`   r_   :   rY   )rS   rZ   r   Zfor_stmt_findr   r   Zif_stmtZ
while_stmtZtry_stmtro   r   COLONr   	_def_syms_is_import_bindingr   r~   r   )r    r1   r   childZretr<   iZkidr   r   r   r   i  sH       
r   c                 C   sT   |g}|rP|  }|jdkr4|jtkr4||j q|jtjkr|j| kr|S qd S )N   )poprZ   _block_symsextendrS   r   r   r   )r    r1   Znodesr   r   r   r     s    r   c                 C   s  | j tjkr|s| jd }|j tjkrx|jD ]H}|j tjkrV|jd j|krt|   S q,|j tjkr,|j|kr,|   S q,nL|j tjkr|jd }|j tjkr|j|kr| S n|j tjkr|j|kr| S n| j tj	kr|rt
| jd  |krd S | jd }|rtd|rd S |j tjkr0t||r0| S |j tjkrh|jd }|j tjkr|j|kr| S n6|j tjkr|j|kr| S |r|j tjkr| S d S )Nr   r`   rd   r_   as)rZ   r   r   rS   Zdotted_as_namesZdotted_as_namer   r   r   rR   strstripr   rQ   Zimport_as_nameSTAR)r1   r    r   rT   r   Zlastr<   r   r   r   r     s@    





r   )N)NN)N)N)N)N)N)5Zpgen2r   Zpytreer   r   Zpygramr   r   r9   r   r   r   r   r   r!   r'   r*   r$   r2   r4   r8   r:   r=   rB   rE   rM   rU   r^   rc   re   rf   Zconsuming_callsrr   ru   rv   rw   rt   r{   r   r   r   r   r   r   r   r}   r|   r   r   r#   r   r   r   r   r   r   r   <module>   s^   




  		-
*
