o
    "†a:  ã                   @   s\   d dl mZmZ d dl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ejjdk rdd„ Zejjdk r dd„ Zdd„ Zd	d
„ Z	ejjdk r^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ejjd.k rvd/d0„ Zd1S d1S )2Ú
Ast3ToGAsté
   c                 C   s8   t  |  |j¡|  |j¡¡}d  |_|_d  |_|_|S ©N)	ÚgastÚaliasÚ_visitÚnameÚasnameÚlinenoÚ
col_offsetÚ
end_linenoÚend_col_offset©ÚselfÚnodeÚnew_node© r   ú+/usr/lib/python3/dist-packages/gast/ast3.pyÚvisit_alias
   s   

þzAst3ToGAst.visit_aliasé	   c                 C   s$   t  |  |j¡t  ¡ ¡}t  ||¡S r   )r   ÚTupler	   ZdimsÚLoadÚcopy_locationr   r   r   r   Úvisit_ExtSlice   s   zAst3ToGAst.visit_ExtSlicec                 C   s   |   |j¡S r   )r	   Úvalue)r   r   r   r   r   Úvisit_Index   ó   zAst3ToGAst.visit_Indexc                 C   s:   t  |  |j¡|  |j¡d ¡}t  ||¡ d  |_|_|S r   )r   ÚAssignr	   Útargetsr   r   r   r   r   r   r   r   Úvisit_Assign   s   

ýzAst3ToGAst.visit_Assigné   c                 C   s   t  |  |j¡g ¡}|S r   )r   ÚModuler	   Úbodyr   r   r   r   Úvisit_Module(   s
   
þzAst3ToGAst.visit_Modulec                 C   ó   t  |jd ¡}t  ||¡S r   )r   ÚConstantÚnr   r   r   r   r   Ú	visit_Num/   ó
   þzAst3ToGAst.visit_Numc                 C   s(   t  td ¡}t  ||¡ d  |_|_|S r   )r   r'   ÚEllipsisr   r   r   r   r   r   r   Úvisit_Ellipsis6   s   þzAst3ToGAst.visit_Ellipsisc                 C   r&   r   ©r   r'   Úsr   r   r   r   r   Ú	visit_Str?   r*   zAst3ToGAst.visit_Strc                 C   r&   r   r-   r   r   r   r   Úvisit_BytesF   r*   zAst3ToGAst.visit_Bytesc              	   C   óH   t  |  |j¡|  |j¡|  |j¡|  |j¡|  |j¡d ¡}t  ||¡S r   )	r   ÚFunctionDefr	   r
   Úargsr$   Údecorator_listÚreturnsr   r   r   r   r   Úvisit_FunctionDefM   ó   




úzAst3ToGAst.visit_FunctionDefc              	   C   r1   r   )	r   ÚAsyncFunctionDefr	   r
   r3   r$   r4   r5   r   r   r   r   r   Úvisit_AsyncFunctionDefX   r7   z!Ast3ToGAst.visit_AsyncFunctionDefc                 C   ó>   t  |  |j¡|  |j¡|  |j¡|  |j¡d ¡}t  ||¡S r   )r   ÚForr	   ÚtargetÚiterr$   Úorelser   r   r   r   r   Ú	visit_Forc   ó   



ûzAst3ToGAst.visit_Forc                 C   r:   r   )r   ÚAsyncForr	   r<   r=   r$   r>   r   r   r   r   r   Úvisit_AsyncForm   r@   zAst3ToGAst.visit_AsyncForc                 C   ó*   t  |  |j¡|  |j¡d ¡}t  ||¡S r   )r   ÚWithr	   Úitemsr$   r   r   r   r   r   Ú
visit_Withw   ó   

ýzAst3ToGAst.visit_Withc                 C   rC   r   )r   Ú	AsyncWithr	   rE   r$   r   r   r   r   r   Úvisit_AsyncWith   rG   zAst3ToGAst.visit_AsyncWithc                 C   sº   t jjdk r<|jrt |  |j¡t ¡ ¡}t ||¡ |g}ng }|j	r9t 
d |  |j	¡¡}t ||j	¡ |g}ng }ng  }}t |  |j¡|  |j¡| |  |j¡| ¡}t ||¡S )Né   )ÚsysÚversion_infoÚminorÚstarargsr   ÚStarredr	   r   r   ÚkwargsÚkeywordÚCallÚfuncr3   Úkeywords)r   r   ZstarZstarredÚkwrP   r   r   r   r   Ú
visit_Call‡   s(   ÿ
ýzAst3ToGAst.visit_Callc                 C   sR   |j d u rt d d ¡}n|j du rt dd ¡}n|j du r#t dd ¡}t ||¡S )NTF)r   r   r'   r   r   r   r   r   Úvisit_NameConstant¡   s   


zAst3ToGAst.visit_NameConstantc                 C   sR   t  |  |j¡g |  |j¡|  |j¡|  |j¡|  |j¡|  |j¡¡}t  	||¡S r   )
r   Ú	argumentsr	   r3   ÚvarargÚ
kwonlyargsÚkw_defaultsÚkwargÚdefaultsr   r   r   r   r   Úvisit_argumentsª   s   





ù	zAst3ToGAst.visit_argumentsc                 C   s&   t  |j|  |j¡d d ¡}t ||¡S r   )r   ÚNameÚidr	   ÚctxÚastr   r   r   r   r   Ú
visit_Name¶   s   
üzAst3ToGAst.visit_Namec                 C   sH   t jjdk r	d }n|  |j¡}t |jt ¡ |  |j	¡|¡}t
 ||¡S ©Nr"   )rK   rL   rM   r	   Útype_commentr   r_   ÚargZParamÚ
annotationrb   r   )r   r   Z	extra_argr   r   r   r   Ú	visit_arg¿   s   
üzAst3ToGAst.visit_argc              	   C   sL   |j r!t |  |j¡t |j t ¡ d d ¡|  |j¡¡}t 	||¡S |  
|¡S r   )r
   r   ÚExceptHandlerr	   Útyper_   ZStorer$   rb   r   Úgeneric_visitr   r   r   r   Úvisit_ExceptHandlerÍ   s   

ý
zAst3ToGAst.visit_ExceptHandleré   c                 C   s6   t j|  |j¡|  |j¡|  |j¡dd}t ||¡S )Nr   )r<   r=   ÚifsÚis_async)r   Zcomprehensionr	   r<   r=   rn   rb   r   r   r   r   r   Úvisit_comprehensionÙ   s   


üzAst3ToGAst.visit_comprehensionN)Ú__name__Ú
__module__Ú__qualname__rK   rL   rM   r   r   r   r!   r%   r)   r,   r/   r0   r6   r9   r?   rB   rF   rI   rV   rW   r^   rc   rh   rl   rp   r   r   r   r   r      s8    		

		
þr   c                   @   sÚ   e Zd Zejjdk rdd„ Zejjdk rdd„ Zdd„ Zejjd	k r*d
d„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zejjdk rEdd„ Zdd„ Zn"ejjd	k rgd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 ))Ú
GAstToAst3r   c                 C   s    t  |  |j¡|  |j¡¡}|S r   )rb   r   r	   r
   r   r   r   r   r   r   å   s
   

þzGAstToAst3.visit_aliasr   c                    sÌ   dd„ ‰ t |jtjƒrBtdd„ |jjD ƒƒr(t ‡ fdd„|  |jj¡D ƒ¡}n"t |  |jj¡t 	¡ ¡}t 
||j¡ t |¡}nˆ |  |j¡ƒ}t 
||j¡ t |  |j¡||  |j¡¡}t 
||¡S )Nc                 S   s   t | tjƒr| S t | ¡S r   )Ú
isinstancerb   ZSliceÚIndex)r.   r   r   r   Úadjust_sliceî   s   
z0GAstToAst3.visit_Subscript.<locals>.adjust_slicec                 s   s    | ]	}t |tjƒV  qd S r   )ru   r   Úslice)Ú.0Úeltr   r   r   Ú	<genexpr>ô   s   € z-GAstToAst3.visit_Subscript.<locals>.<genexpr>c                    s   g | ]}ˆ |ƒ‘qS r   r   )ry   Úx©rw   r   r   Ú
<listcomp>ö   s    z.GAstToAst3.visit_Subscript.<locals>.<listcomp>)ru   rx   r   r   ÚanyÚeltsrb   ZExtSlicer	   r   r   rv   Z	Subscriptr   ra   )r   r   Z	new_slicer   r   r   r}   r   Úvisit_Subscriptí   s&   
ÿÿ

ýzGAstToAst3.visit_Subscriptc                 C   ó(   t  |  |j¡|  |j¡¡}t  ||¡S r   )rb   r   r	   r    r   r   r   r   r   r   r!     s
   

þzGAstToAst3.visit_Assignr"   c                 C   s   t  |  |j¡¡}|S r   )rb   r#   r	   r$   r   r   r   r   r%     s   zGAstToAst3.visit_Modulec                 C   s˜   |j d u rt |j ¡}n:|j tu rt ¡ }n0t|j tƒr#t |j ¡}n#t|j tttfƒr3t 	|j ¡}nt|j t
ƒr@t |j ¡}nt |j ¡}t ||¡S r   )r   rb   ZNameConstantr+   ru   ÚboolÚintÚfloatÚcomplexZNumÚstrZStrZBytesr   r   r   r   r   Úvisit_Constant  s   


zGAstToAst3.visit_Constantc                 C   s^   |d u rd S t jjdk rtƒ }n|  |j¡f}tj|  |j¡|  |j	¡g|¢R Ž }t 
||¡S rd   )rK   rL   rM   Útupler	   re   rb   rf   r`   rg   r   ©r   r   Ú
extra_argsr   r   r   r   Ú	_make_arg$  s   

þýzGAstToAst3._make_argc                 C   r‚   r   )rb   r_   r	   r`   ra   r   r   r   r   r   rc   4  ó
   

þzGAstToAst3.visit_Namec                 C   s>   |j rt |  |j¡|j j|  |j¡¡}t ||¡S |  |¡S r   )	r
   rb   ri   r	   rj   r`   r$   r   rk   r   r   r   r   rl   ;  s   

ý
zGAstToAst3.visit_ExceptHandlerrJ   c              	   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éÿÿÿÿ)r3   ru   r   rO   r   rT   rf   rb   rR   r	   rS   r   )r   r   r3   rN   rT   rP   r   r   r   r   rV   G  s$   
ûzGAstToAst3.visit_Callc              	   C   sV   |   |¡ tj|  |j¡|  |j¡|  |j¡|  |j¡|  |j¡d d d}t 	||¡S )N)r
   ÚbasesrT   r$   r4   rN   rP   )
rk   rb   ZClassDefr	   r
   r   rT   r$   r4   r   r   r   r   r   Úvisit_ClassDef_  s   





ù	zGAstToAst3.visit_ClassDefc              	   C   óF   t  |  |j¡|  |j¡|  |j¡|  |j¡|  |j¡¡}t  ||¡S r   )	rb   r2   r	   r
   r3   r$   r4   r5   r   r   r   r   r   r6   n  ó   




ûzGAstToAst3.visit_FunctionDefc              	   C   r‘   r   )	rb   r8   r	   r
   r3   r$   r4   r5   r   r   r   r   r   r9   x  r’   z!GAstToAst3.visit_AsyncFunctionDefc                 C   s<   t  |  |j¡|  |j¡|  |j¡|  |j¡¡}t  ||¡S r   )rb   r;   r	   r<   r=   r$   r>   r   r   r   r   r   r?   ‚  s   



üzGAstToAst3.visit_Forc                 C   r:   r   )rb   rA   r	   r<   r=   r$   r>   r   r   r   r   r   rB   ‹  r@   zGAstToAst3.visit_AsyncForc                 C   r‚   r   )rb   rD   r	   rE   r$   r   r   r   r   r   rF   •  r   zGAstToAst3.visit_Withc                 C   r‚   r   )rb   rH   r	   rE   r$   r   r   r   r   r   rI   œ  r   zGAstToAst3.visit_AsyncWithc                 C   s2   t  |  |j¡|  |j¡|  |j¡¡}t  ||¡S r   )rb   rR   r	   rS   r3   rT   r   r   r   r   r   rV   £  s   


ýc                    s¨   ˆ   |j¡‡ fdd„|jD ƒˆ  |j¡ˆ   |j¡ˆ  |j¡g}tjj	dkrAt
j‡ fdd„|jD ƒ‡ fdd„|jD ƒg|¢R Ž }|S t
j‡ fdd„|jD ƒg|¢R Ž }|S )Nc                    ó   g | ]}ˆ   |¡‘qS r   ©rŒ   ©ry   r(   ©r   r   r   r~   ­  ó    z.GAstToAst3.visit_arguments.<locals>.<listcomp>r"   c                    r“   r   r”   )ry   rf   r–   r   r   r~   ³  r—   c                    r“   r   r”   r•   r–   r   r   r~   ´  r—   c                    r“   r   r”   r•   r–   r   r   r~   ¹  r—   )rŒ   rY   rZ   r	   r[   r\   r]   rK   rL   rM   rb   rX   Úposonlyargsr3   rŠ   r   r–   r   r^   «  s(   



üþý
üÿþzGAstToAst3.visit_argumentsN)rq   rr   rs   rK   rL   rM   r   r   r!   r%   rˆ   rŒ   rc   rl   rV   r   r6   r9   r?   rB   rF   rI   r^   r   r   r   r   rt   ã   s0    



	
rt   c                 C   ó   t ƒ  | ¡S r   )r   Úvisit©r   r   r   r   Úast_to_gast¿  r   rœ   c                 C   r™   r   )rt   rš   r›   r   r   r   Úgast_to_astÃ  r   r   )
Z	gast.astnr   r   r   rb   rK   r   rt   rœ   r   r   r   r   r   Ú<module>   s     ] ]