o
    "†aH4  ã                   @   sT   d dl mZmZ d dlZd dlZG dd„ deƒZG dd„ deƒZdd„ Zd	d
„ ZdS )é    )Ú	AstToGAstÚ	GAstToAstNc                   @   s¬   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)S )*Ú
Ast2ToGAstc                 C   s   t  |  |j¡g ¡}|S ©N)ÚgastÚModuleÚ_visitÚbody©ÚselfÚnodeÚnew_node© r   ú+/usr/lib/python3/dist-packages/gast/ast2.pyÚvisit_Module	   s
   
þzAst2ToGAst.visit_Modulec                 C   sP   t  |  |j¡|  |j¡|  |j¡|  |j¡d d ¡}t  ||¡ d  |_|_	|S r   )
r   ÚFunctionDefr   ÚnameÚargsr	   Údecorator_listÚcopy_locationÚ
end_linenoÚend_col_offsetr
   r   r   r   Úvisit_FunctionDef   s   



úzAst2ToGAst.visit_FunctionDefc              	   C   sN   t  |  |j¡|  |j¡g |  |j¡|  |j¡¡}t  ||¡ d  |_|_	|S r   )
r   ÚClassDefr   r   Úbasesr	   r   r   r   r   r
   r   r   r   Úvisit_ClassDef   s   



ûzAst2ToGAst.visit_ClassDefc                 C   s:   t  |  |j¡|  |j¡d ¡}t  ||¡ d  |_|_|S r   )r   ÚAssignr   ÚtargetsÚvaluer   r   r   r
   r   r   r   Úvisit_Assign+   s   

ýzAst2ToGAst.visit_Assignc                 C   sN   t  |  |j¡|  |j¡|  |j¡|  |j¡g ¡}t  ||¡ d  |_|_	|S r   )
r   ÚForr   ÚtargetÚiterr	   Úorelser   r   r   r
   r   r   r   Ú	visit_For6   s   



ûzAst2ToGAst.visit_Forc                 C   sL   t  t  |  |j¡|  |j¡¡g|  |j¡d ¡}t  ||¡ d  |_|_	|S r   )
r   ÚWithZwithitemr   Úcontext_exprÚoptional_varsr	   r   r   r   r
   r   r   r   Ú
visit_WithB   s   

þ
úzAst2ToGAst.visit_Withc                 C   sÚ   |   |j¡}|   |j¡}|   |j¡}|}|d ur,t ||gg ¡}t ||¡ d  |_|_|d urYt 	|dt 
¡ ¡}t ||¡ d  |_|_t ||gg ¡}t ||¡ d  |_|_t |d ¡}t ||¡ d  |_|_|S )NÚwith_traceback)r   ÚtypeÚinstZtbackr   ÚCallr   r   r   Ú	AttributeÚLoadÚRaise)r   r   ZntypeZninstZntbackZwhatÚattrr   r   r   r   Úvisit_RaiseO   s.   ýzAst2ToGAst.visit_Raisec                 C   sD   t  |  |j¡|  |j¡|  |j¡g ¡}t  ||¡ d  |_|_|S r   )	r   ÚTryr   r	   Úhandlersr#   r   r   r   r
   r   r   r   Úvisit_TryExceptn   s   


üzAst2ToGAst.visit_TryExceptc                 C   s<   t  |  |j¡g g |  |j¡¡}t  ||¡ d  |_|_|S r   )r   r2   r   r	   Ú	finalbodyr   r   r   r
   r   r   r   Úvisit_TryFinallyy   s   

üzAst2ToGAst.visit_TryFinallyc                 C   s<   t  |  |j¡|  |j¡d d ¡}t  ||¡ d  |_|_|S r   )r   ÚNamer   ÚidÚctxr   r   r   r
   r   r   r   Ú
visit_Name†   s   

üzAst2ToGAst.visit_Namec                 C   ó*   t  |jd ¡}t  ||¡ d  |_|_|S r   )r   ÚConstantÚnr   r   r   r
   r   r   r   Ú	visit_Num‘   ó   þzAst2ToGAst.visit_Numc                 C   sF   |   |j¡}t |   |j¡||   |j¡¡}t ||¡ d  |_|_|S r   )	r   Úslicer   Ú	Subscriptr   r9   r   r   r   ©r   r   Z	new_slicer   r   r   r   Úvisit_Subscriptš   s   

ýzAst2ToGAst.visit_Subscriptc                 C   s(   t  td ¡}t  ||¡ d  |_|_|S r   )r   r<   ÚEllipsisr   r   r   r
   r   r   r   Úvisit_Ellipsis¥   s   þzAst2ToGAst.visit_Ellipsisc                 C   s   |   |j¡S r   )r   r   )r   r   r   r   r   Úvisit_Index®   ó   zAst2ToGAst.visit_Indexc                 C   s8   |   |j¡}t |t ¡ ¡}t ||¡ d  |_|_|S r   )r   Zdimsr   ÚTupler.   r   r   r   )r   r   Znew_dimsr   r   r   r   Úvisit_ExtSlice±   s
   zAst2ToGAst.visit_ExtSlicec                 C   r;   r   )r   r<   Úsr   r   r   r
   r   r   r   Ú	visit_Str¸   r?   zAst2ToGAst.visit_Strc                 C   s®   |j rt |  |j ¡t ¡ ¡}t ||¡ d  |_|_|g}ng }|jr0t 	d |  |j¡¡g}ng }t 
|  |j¡|  |j¡| |  |j¡| ¡}t ||¡ d  |_|_|S r   )Ústarargsr   ÚStarredr   r.   r   r   r   ÚkwargsÚkeywordr,   Úfuncr   Úkeywords)r   r   ZstarZstarredrN   r   r   r   r   Ú
visit_CallÁ   s"   
ýzAst2ToGAst.visit_Callc                 C   sF   t j|  |j¡|  |j¡|  |j¡dd}t  ||¡ d  |_|_|S )Nr   )r!   r"   ÚifsÚis_async)	r   Zcomprehensionr   r!   r"   rS   r   r   r   r
   r   r   r   Úvisit_comprehensionØ   s   


üzAst2ToGAst.visit_comprehensionc                 C   s   |j rt |j t ¡ ¡}nd }|jrt |jt ¡ ¡}nd }|j r+t |j t ¡ ¡}nd }t |  |j¡g |  |¡g g |  |¡|  |j	¡¡}|S r   )
ÚvarargÚastr7   ÚParamÚkwargr   Ú	argumentsr   r   Údefaults©r   r   rV   rY   r   r   r   r   Úvisit_argumentsä   s&   

ù	zAst2ToGAst.visit_argumentsc                 C   s8   t  |  |j¡|  |j¡¡}d  |_|_d  |_|_|S r   )	r   Úaliasr   r   ÚasnameÚlinenoÚ
col_offsetr   r   r
   r   r   r   Úvisit_alias   s   

þzAst2ToGAst.visit_aliasN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r$   r(   r1   r4   r6   r:   r>   rC   rE   rF   rI   rK   rR   rU   r]   rb   r   r   r   r   r      s*    			r   c                   @   s„   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS ) Ú
GAstToAst2c                 C   s   t  |  |j¡¡}|S r   )rW   r   r   r	   r
   r   r   r   r     s   zGAstToAst2.visit_Modulec                 C   sp   t  |  |j¡|  |j¡|  |j¡|  |j¡¡}|jjr$t  |jj|¡ |jj	r0t  |jj	|¡ t  ||¡ |S r   )
rW   r   r   r   r   r	   r   rV   r   rY   r
   r   r   r   r     s   



üzGAstToAst2.visit_FunctionDefc                 C   ó@   t  |  |j¡|  |j¡|  |j¡|  |j¡¡}t  ||¡ |S r   )rW   r   r   r   r   r	   r   r   r
   r   r   r   r   "  ó   



üzGAstToAst2.visit_ClassDefc                 C   ó,   t  |  |j¡|  |j¡¡}t  ||¡ |S r   )rW   r   r   r   r   r   r
   r   r   r   r   -  s   

þzGAstToAst2.visit_Assignc                 C   rg   r   )rW   r    r   r!   r"   r	   r#   r   r
   r   r   r   r$   6  rh   zGAstToAst2.visit_Forc                 C   sB   t  |  |jd j¡|  |jd j¡|  |j¡¡}t  ||¡ |S )Nr   )rW   r%   r   Úitemsr&   r'   r	   r   r
   r   r   r   r(   A  s   
ýzGAstToAst2.visit_Withc                 C   s~   t |jtjƒr(t |jjtjƒr(|jjjdkr(|  |jjj¡}|  |jj	d ¡}n|  |j¡}d }t
 |d |¡}t
 ||¡ |S )Nr)   r   )Ú
isinstanceÚexcr   r,   rP   r-   r0   r   r   r   rW   r/   r   )r   r   ZraisedÚ	tracebackr   r   r   r   r1   J  s   ÿþzGAstToAst2.visit_Raisec                 C   sZ   |j rt |  |j¡|  |j ¡¡}nt |  |j¡|  |j¡|  |j¡¡}t ||¡ |S r   )	r5   rW   Z
TryFinallyr   r	   Z	TryExceptr3   r#   r   r
   r   r   r   Ú	visit_TryW  s   

þ


ýzGAstToAst2.visit_Tryc                 C   ri   r   )rW   r7   r   r8   r9   r   r
   r   r   r   r:   h  s   

þzGAstToAst2.visit_Namec                 C   sT   t |jtttttfƒrt |j¡}n|jt	u rt 	¡ }nt 
|j¡}t ||¡ |S r   )rk   r   ÚboolÚintZlongÚfloatÚcomplexrW   ZNumrD   ZStrr   r
   r   r   r   Úvisit_Constantp  s   

zGAstToAst2.visit_Constantc                    sŽ   dd„ ‰ t |jtjƒrt ‡ ‡fdd„|jjD ƒ¡}nˆ ˆ |j¡ƒ}t ||j¡ t 	ˆ |j
¡|ˆ |j¡¡}t ||¡ d  |_|_|S )Nc                 S   s    t | tjtjfƒr| S t | ¡S r   )rk   rW   ZSlicerD   ZIndex)rJ   r   r   r   Úadjust_slice{  s   
z0GAstToAst2.visit_Subscript.<locals>.adjust_slicec                    s   g | ]	}ˆ ˆ  |¡ƒ‘qS r   )r   )Ú.0Úelt©rt   r   r   r   Ú
<listcomp>  s    ÿz.GAstToAst2.visit_Subscript.<locals>.<listcomp>)rk   r@   r   rH   rW   ZExtSliceÚeltsr   r   rA   r   r9   r   r   rB   r   rw   r   rC   z  s   
ÿ

ýzGAstToAst2.visit_Subscriptc              	   C   s¼   |j rt|j d tjƒr|j d d… }|j d j}n|j }d }|jr8|jd jd u r8|jd d… }|jd j}n|j}d }t |  	|j
¡|  	|¡|  	|¡|  	|¡|  	|¡¡}t ||¡ |S )Néÿÿÿÿ)r   rk   r   rM   r   rQ   ÚargrW   r,   r   rP   r   )r   r   r   rL   rQ   rN   r   r   r   r   rR     s&   
ûzGAstToAst2.visit_Callc                 C   s"   t  |jt  ¡ ¡}t  ||¡ |S r   )rW   r7   r{   rX   r   r
   r   r   r   Ú	visit_arg©  s   zGAstToAst2.visit_argc                 C   sL   |j o|j j}|jo|jj}t |  |j¡|  |¡|  |¡|  |j¡¡}|S r   )rV   r8   rY   rW   rZ   r   r   r[   r\   r   r   r   r]   ¯  s   

üzGAstToAst2.visit_argumentsc                 C   s    t  |  |j¡|  |j¡¡}|S r   )rW   r^   r   r   r_   r
   r   r   r   rb   »  s
   

þzGAstToAst2.visit_aliasN)rc   rd   re   r   r   r   r   r$   r(   r1   rn   r:   rs   rC   rR   r|   r]   rb   r   r   r   r   rf   
  s     		
rf   c                 C   ó   t ƒ  | ¡S r   )r   Úvisit©r   r   r   r   Úast_to_gastÃ  rG   r€   c                 C   r}   r   )rf   r~   r   r   r   r   Úgast_to_astÇ  rG   r   )	Zastnr   r   rW   r   r   rf   r€   r   r   r   r   r   Ú<module>   s       :