o
    Ni                     @  s  U d Z ddlmZ ddlZddlmZmZ i ejdejdej	dej
dejd	ejd
ejdejdejdejdejdejdejdejdejdejdejdejdejdiZded< ed'd(ddZed'd)d!dZd'd*d$dZG d%d& d&ejZdS )+z'Helpers for AST (Abstract Syntax Tree).    )annotationsN)NoReturnoverload+and&|^/z//~z<<@*%not**orz>>-zdict[type[ast.AST], str]	OPERATORS nodeNonecodestrreturnc                 C     d S N r   r   r   r   E/home/ubuntu/.local/lib/python3.10/site-packages/sphinx/pycode/ast.pyunparse      r   ast.ASTc                 C  r   r   r   r   r   r   r   r   #   r    ast.AST | None
str | Nonec                 C  s(   | du rdS t | tr| S t|| S )zUnparse an AST to string.N)
isinstancer   _UnparseVisitorvisitr   r   r   r   r   '   s
   
c                   @  s   e Zd ZdFdGddZdHd
dZeD ]Zee dej  < qdIddZdJddZ	dKddZ
dLddZdMddZdNdd ZdOd"d#ZdPd%d&ZdQd(d)ZdRd+d,ZdSd.d/ZdTd1d2ZdUd4d5ZdVd7d8ZdWd:d;ZdXd=d>ZdYd@dAZdZdCdDZdES )[r%   r   r   r   r   r   c                 C  s
   || _ d S r   )r   )selfr   r   r   r   __init__2      
z_UnparseVisitor.__init__r   r!   c                 C  s
   t |j S r   )r   	__class__r'   r   r   r   r   	_visit_op5   r)   z_UnparseVisitor._visit_opvisit_ast.argc                 C  s$   |j r|j d| |j  S |jS )N: )
annotationargr&   r+   r   r   r   	visit_arg;   s   z_UnparseVisitor.visit_argr1   defaultr"   c                 C  s@   |  |}|r|jr|d|  | 7 }|S |d|  | 7 }|S )z&Unparse a single argument to a string.z = %sz=%s)r&   r0   )r'   r1   r3   namer   r   r   _visit_arg_with_defaultA   s   
z'_UnparseVisitor._visit_arg_with_defaultast.argumentsc           	   	     sP  t |j t|j}t|j}||7 }tt |D ]} dd  qt |j}tt|t|jD ]}|dd  q2 fddt	|jD }|jrP|
d t	|jD ]\}}|
| ||   qU|jru|
d|j  |jr|js|
d t	|jD ]\}}|
|||  q|jr|
d|j  d|S )Nr   c                   s    g | ]\}} | | qS r   )r5   ).0ir1   defaultsr'   r   r   
<listcomp>W   s    z3_UnparseVisitor.visit_arguments.<locals>.<listcomp>r
   r   r   , )listr:   lenargsposonlyargsrangeinsertkw_defaults
kwonlyargs	enumerateappendr5   varargr&   kwargjoin)	r'   r   positionalsr@   _rC   r?   r8   r1   r   r9   r   visit_argumentsK   s2   






z_UnparseVisitor.visit_argumentsast.Attributec                 C  s   |  |j d|j S )N.)r&   valueattrr+   r   r   r   visit_Attributeo   s   z_UnparseVisitor.visit_Attribute	ast.BinOpc                 C  sJ   t |jtjrdt| j|j|j|jfS dt| j|j|j|jfS )Nr    )	r$   opastPowrI   mapr&   leftrightr+   r   r   r   visit_BinOpr   s   z_UnparseVisitor.visit_BinOp
ast.BoolOpc                   s*   d  |j }| fdd|jD S )Nz %s c                 3      | ]}  |V  qd S r   r&   r7   er'   r   r   	<genexpr>z       z/_UnparseVisitor.visit_BoolOp.<locals>.<genexpr>)r&   rT   rI   values)r'   r   rT   r   r`   r   visit_BoolOpx   s   z_UnparseVisitor.visit_BoolOpast.Callc                   sF   d  fdd|jD  fdd|jD  } |j d| dS )Nr<   c                   s   g | ]}  |qS r   r]   r^   r`   r   r   r;   ~   s    z._UnparseVisitor.visit_Call.<locals>.<listcomp>c                   s$   g | ]}|j  d  |j qS )=)r1   r&   rO   r7   kr`   r   r   r;      s   $ ())rI   r?   keywordsr&   func)r'   r   r?   r   r`   r   
visit_Call|   s   z_UnparseVisitor.visit_Callast.Constantc                 C  sT   |j tu rdS t|j ttB tB r%| jr t| j|pt	|j S t	|j S t	|j S )Nz...)
rO   Ellipsisr$   intfloatcomplexr   rU   get_source_segmentreprr+   r   r   r   visit_Constant   s   


z_UnparseVisitor.visit_Constantast.Dictc                   sR    fdd|j D } fdd|jD }dd t||ddD }dd| d	 S )
Nc                 3  s"    | ]}|d ur  |V  qd S r   r]   rg   r`   r   r   ra      s     z-_UnparseVisitor.visit_Dict.<locals>.<genexpr>c                 3  r\   r   r]   )r7   vr`   r   r   ra      rb   c                 s  s     | ]\}}|d  | V  qdS )r/   Nr   )r7   rh   rw   r   r   r   ra      s    T)strict{r<   })keysrc   ziprI   )r'   r   r{   rc   itemsr   r`   r   
visit_Dict   s   z_UnparseVisitor.visit_Dict
ast.Lambdac                 C  s   d|  |j S )Nzlambda %s: ...)r&   r?   r+   r   r   r   visit_Lambda   s   z_UnparseVisitor.visit_Lambdaast.Listc                   "   dd  fdd|jD  d S )N[r<   c                 3  r\   r   r]   r^   r`   r   r   ra      rb   z-_UnparseVisitor.visit_List.<locals>.<genexpr>]rI   eltsr+   r   r`   r   
visit_List      "z_UnparseVisitor.visit_Listast.Namec                 C  s   |j S r   )idr+   r   r   r   
visit_Name   s   z_UnparseVisitor.visit_Nameast.Setc                   r   )Nry   r<   c                 3  r\   r   r]   r^   r`   r   r   ra      rb   z,_UnparseVisitor.visit_Set.<locals>.<genexpr>rz   r   r+   r   r`   r   	visit_Set   r   z_UnparseVisitor.visit_Set	ast.Slicec                 C  s   |j s|js|jsdS |j r| |j nd}|jr| |jnd}|js+| d| S |jr4| |jnd}| d| d| S )N:r   )lowerupperstepr&   )r'   r   startstopr   r   r   r   visit_Slice   s   z_UnparseVisitor.visit_Sliceast.Subscriptc                   sh   ddd}||j r$d fdd	|j jD } |j d
| dS  |j d
 |j  dS )NrO   ast.exprr   boolc                 S  s,   t | tjot| jotdd | jD  S )Nc                 s  s    | ]	}t |tjV  qd S r   )r$   rU   Starred)r7   eltr   r   r   ra      s    zK_UnparseVisitor.visit_Subscript.<locals>.is_simple_tuple.<locals>.<genexpr>)r$   rU   Tupler   r   any)rO   r   r   r   is_simple_tuple   s
   z8_UnparseVisitor.visit_Subscript.<locals>.is_simple_tupler<   c                 3  r\   r   r]   r^   r`   r   r   ra      rb   z2_UnparseVisitor.visit_Subscript.<locals>.<genexpr>r   r   )rO   r   r   r   )slicerI   r   r&   rO   )r'   r   r   r   r   r`   r   visit_Subscript   s
   

 z_UnparseVisitor.visit_Subscriptast.UnaryOpc                 C  sH   t |jtjr| |j d| |j S | |j | |j S )NrS   )r$   rT   rU   Notr&   operandr+   r   r   r   visit_UnaryOp   s   z_UnparseVisitor.visit_UnaryOp	ast.Tuplec                   sV   t |jdkr	dS t |jdkrd |jd  S dd fdd|jD  d	 S )
Nr   z()   z(%s,)ri   r<   c                 3  r\   r   r]   r^   r`   r   r   ra      rb   z._UnparseVisitor.visit_Tuple.<locals>.<genexpr>rj   )r>   r   r&   rI   r+   r   r`   r   visit_Tuple   s
   "z_UnparseVisitor.visit_Tupler   c                 C  s   t dt|j )NzUnable to parse %s object)NotImplementedErrortype__name__r+   r   r   r   generic_visit   s   z_UnparseVisitor.generic_visitNr   )r   r   r   r   )r   r!   r   r   )r   r.   r   r   )r1   r.   r3   r"   r   r   )r   r6   r   r   )r   rM   r   r   )r   rR   r   r   )r   r[   r   r   )r   re   r   r   )r   rn   r   r   )r   rv   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   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____qualname__r(   r,   r   _oplocalsr2   r5   rL   rQ   rZ   rd   rm   ru   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r%   1   s.    





$












r%   r   )r   r   r   r   r   r   )r   r!   r   r   r   r   )r   r"   r   r   r   r#   )__doc__
__future__r   rU   typingr   r   AddAndBitAndBitOrBitXorDivFloorDivInvertLShiftMatMultMultModr   rV   OrRShiftSubUAddUSubr   __annotations__r   NodeVisitorr%   r   r   r   r   <module>   s`    	

