U
    \Sh                  &   @  s   U d Z ddlmZ ddlZddlmZ 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dddZed&ddddddZd'd dd!dd"dZG d#d$ d$ejZdS )(z'Helpers for AST (Abstract Syntax Tree).    )annotationsN)overload+and&|^/z//~z<<@*%not**orz>>-zdict[type[ast.AST], str]	OPERATORS Nonestr)nodecodereturnc                 C  s   d S N r   r   r   r   D/root/rtd-docs/venv/lib/python3.8/site-packages/sphinx/pycode/ast.pyunparse   s    r   ast.ASTc                 C  s   d S r   r   r   r   r   r   r   $   s    ast.AST | Nonez
str | Nonec                 C  s(   | dk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                   @  sd  e Zd ZdCdddddZdddd	d
ZeD ]Zee dej  < q.dddddZddddddZ	dddddZ
dddddZdddddZdddddZdddd d!Zd"ddd#d$Zd%ddd&d'Zd(ddd)d*Zd+ddd,d-Zd.ddd/d0Zd1ddd2d3Zd4ddd5d6Zd7ddd8d9Zd:ddd;d<Zd=ddd>d?Zd@dA ZdBS )Dr!   r   r   r   )r   r   c                 C  s
   || _ d S r   )r   )selfr   r   r   r   __init__4   s    z_UnparseVisitor.__init__r   )r   r   c                 C  s
   t |j S r   )r   	__class__r#   r   r   r   r   	_visit_op7   s    z_UnparseVisitor._visit_opvisit_zast.argc                 C  s(   |j r|j d| |j  S |jS d S )N: )
annotationargr"   r&   r   r   r   	visit_arg<   s    z_UnparseVisitor.visit_argr   )r+   defaultr   c                 C  s>   |  |}|r:|jr(|d|  | 7 }n|d|  | 7 }|S )z&Unparse a single argument to a string.z = %sz=%s)r"   r*   )r#   r+   r-   namer   r   r   _visit_arg_with_defaultB   s    
z'_UnparseVisitor._visit_arg_with_defaultzast.argumentsc           
   	   C  sl  t |j}t|j}t|j}||7 }tt||D ]}|dd  q4t |j}tt|t|jD ]}|dd  qdg }t	|jD ]\}}	|
| |	||  q|jr|
d t	|jD ]"\}}	|
| |	|||   q|jr|
d| |j  |jr|js|
d t	|jD ] \}}	|
| |	||  q"|jrb|
d| |j  d|S )Nr   r	   r   r   , )listdefaultslenargsposonlyargsrangeinsertkw_defaults
kwonlyargs	enumerateappendr/   varargr"   kwargjoin)
r#   r   r2   positionalsr5   _r8   r4   ir+   r   r   r   visit_argumentsL   s2    





z_UnparseVisitor.visit_argumentszast.Attributec                 C  s   |  |j d|j S )N.)r"   valueattrr&   r   r   r   visit_Attributeo   s    z_UnparseVisitor.visit_Attributez	ast.BinOpc                   sP   t |jtjr,dt j|j|j|jfS d fdd|j|j|jfD S )Nr    c                 3  s   | ]}  |V  qd S r   r"   .0er#   r   r   	<genexpr>v   s     z._UnparseVisitor.visit_BinOp.<locals>.<genexpr>)	r    opastPowr>   mapr"   leftrightr&   r   rL   r   visit_BinOpr   s    z_UnparseVisitor.visit_BinOpz
ast.BoolOpc                   s*   d  |j }| fdd|jD S )Nz %s c                 3  s   | ]}  |V  qd S r   rH   rI   rL   r   r   rM   z   s     z/_UnparseVisitor.visit_BoolOp.<locals>.<genexpr>)r"   rN   r>   values)r#   r   rN   r   rL   r   visit_BoolOpx   s    z_UnparseVisitor.visit_BoolOpzast.Callc                   sF   d  fdd|jD  fdd|jD  } |j d| dS )Nr0   c                   s   g | ]}  |qS r   rH   rI   rL   r   r   
<listcomp>}   s     z._UnparseVisitor.visit_Call.<locals>.<listcomp>c                   s$   g | ]}|j  d  |j qS )=)r+   r"   rD   rJ   krL   r   r   rW   ~   s     ())r>   r4   keywordsr"   func)r#   r   r4   r   rL   r   
visit_Call|   s    z_UnparseVisitor.visit_Callzast.Constantc                 C  sX   |j tkrdS t|j tttfrJ| jr>t| j|p<t	|j S t	|j S n
t	|j S d S )Nz...)
rD   Ellipsisr    intfloatcomplexr   rO   get_source_segmentreprr&   r   r   r   visit_Constant   s    
z_UnparseVisitor.visit_Constantzast.Dictc                   sN    fdd|j D } fdd|jD }dd t||D }dd| d S )Nc                 3  s    | ]}|d k	r  |V  qd S r   rH   rY   rL   r   r   rM      s      z-_UnparseVisitor.visit_Dict.<locals>.<genexpr>c                 3  s   | ]}  |V  qd S r   rH   )rJ   vrL   r   r   rM      s     c                 s  s   | ]\}}|d  | V  qdS )r)   Nr   )rJ   rZ   rg   r   r   r   rM      s     {r0   })keysrU   zipr>   )r#   r   rj   rU   itemsr   rL   r   
visit_Dict   s    z_UnparseVisitor.visit_Dictz	ast.Indexc                 C  s   |  |jS r   )r"   rD   r&   r   r   r   visit_Index   s    z_UnparseVisitor.visit_Indexz
ast.Lambdac                 C  s   d|  |j S )Nzlambda %s: ...)r"   r4   r&   r   r   r   visit_Lambda   s    z_UnparseVisitor.visit_Lambdazast.Listc                   s"   dd  fdd|jD  d S )N[r0   c                 3  s   | ]}  |V  qd S r   rH   rI   rL   r   r   rM      s     z-_UnparseVisitor.visit_List.<locals>.<genexpr>]r>   eltsr&   r   rL   r   
visit_List   s    z_UnparseVisitor.visit_Listzast.Namec                 C  s   |j S r   )idr&   r   r   r   
visit_Name   s    z_UnparseVisitor.visit_Namezast.Setc                   s"   dd  fdd|jD  d S )Nrh   r0   c                 3  s   | ]}  |V  qd S r   rH   rI   rL   r   r   rM      s     z,_UnparseVisitor.visit_Set.<locals>.<genexpr>ri   rr   r&   r   rL   r   	visit_Set   s    z_UnparseVisitor.visit_Setzast.Subscriptc                   s   ddddd}||j rNd fdd|j jD } |j d	| d
S t|j tjr||j jrd fdd|j jjD } |j d	| d
S  |j d	 |j  d
S d S )Nr   bool)rD   r   c                 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    rO   Starred)rJ   eltr   r   r   rM      s     zK_UnparseVisitor.visit_Subscript.<locals>.is_simple_tuple.<locals>.<genexpr>)r    rO   Tuplerx   rs   any)rD   r   r   r   is_simple_tuple   s
    z8_UnparseVisitor.visit_Subscript.<locals>.is_simple_tupler0   c                 3  s   | ]}  |V  qd S r   rH   rI   rL   r   r   rM      s     z2_UnparseVisitor.visit_Subscript.<locals>.<genexpr>rp   rq   c                 3  s   | ]}  |V  qd S r   rH   rI   rL   r   r   rM      s     )slicer>   rs   r"   rD   r    rO   Index)r#   r   r}   rs   r   rL   r   visit_Subscript   s    
z_UnparseVisitor.visit_Subscriptzast.UnaryOpc                 C  sH   t |jtjr,| |j d| |j S | |j | |j S )NrG   )r    rN   rO   Notr"   operandr&   r   r   r   visit_UnaryOp   s    z_UnparseVisitor.visit_UnaryOpz	ast.Tuplec                   sZ   t |jdkrdS t |jdkr4d |jd  S dd fdd|jD  d	 S d S )
Nr   z()   z(%s,)r[   r0   c                 3  s   | ]}  |V  qd S r   rH   rI   rL   r   r   rM      s     z._UnparseVisitor.visit_Tuple.<locals>.<genexpr>r\   )r3   rs   r"   r>   r&   r   rL   r   visit_Tuple   s
    z_UnparseVisitor.visit_Tuplec                 C  s   t dt|j d S )NzUnable to parse %s object)NotImplementedErrortype__name__r&   r   r   r   generic_visit   s    z_UnparseVisitor.generic_visitN)r   )r   
__module____qualname__r$   r'   r   Z_oplocalsr,   r/   rB   rF   rT   rV   r_   rf   rm   rn   ro   rt   rv   rw   r   r   r   r   r   r   r   r   r!   3   s,   
#r!   )r   )r   )r   )__doc__
__future__r   rO   typingr   AddAndBitAndBitOrBitXorDivFloorDivInvertLShiftMatMultMultModr   rP   OrRShiftSubUAddUSubr   __annotations__r   NodeVisitorr!   r   r   r   r   <module>   s`                      
