o
    deó7  ã                   @   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dd„ Zejjdk rPd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 rhd*d+„ Zd,S d,S )-Ú
Ast3ToGAsté	   c                 C   s(   t  |  |j¡t  ¡ ¡}t  ||¡ |S ©N)ÚgastÚTupleÚ_visitÚdimsÚLoadÚcopy_location©ÚselfÚnodeÚnew_node© r   ú9D:\Projects\ConvertPro\env\Lib\site-packages\gast/ast3.pyÚvisit_ExtSlice
   s   zAst3ToGAst.visit_ExtSlicec                 C   s   |   |j¡S r   )r	   Úvalue)r   r   r   r   r   Úvisit_Index   ó   zAst3ToGAst.visit_Indexé   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   Ú
end_linenoÚend_col_offsetr   r   r   r   Úvisit_Ellipsis"   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_Bytes3   r   zAst3ToGAst.visit_Bytesc              	   C   óL   t  |  |j¡|  |j¡|  |j¡|  |j¡|  |j¡d ¡}t  ||¡ |S r   )	r   ÚFunctionDefr	   ÚnameÚargsr   Údecorator_listÚreturnsr   r   r   r   r   Úvisit_FunctionDef;   ó   




úzAst3ToGAst.visit_FunctionDefc              	   C   r(   r   )	r   ÚAsyncFunctionDefr	   r*   r+   r   r,   r-   r   r   r   r   r   Úvisit_AsyncFunctionDefG   r/   z!Ast3ToGAst.visit_AsyncFunctionDefc                 C   óB   t  |  |j¡|  |j¡|  |j¡|  |j¡d ¡}t  ||¡ |S r   )r   ÚForr	   ÚtargetÚiterr   Úorelser   r   r   r   r   Ú	visit_ForS   ó   



ûzAst3ToGAst.visit_Forc                 C   r2   r   )r   ÚAsyncForr	   r4   r5   r   r6   r   r   r   r   r   Úvisit_AsyncFor^   r8   zAst3ToGAst.visit_AsyncForc                 C   ó.   t  |  |j¡|  |j¡d ¡}t  ||¡ |S r   )r   ÚWithr	   Úitemsr   r   r   r   r   r   Ú
visit_Withi   ó   

ýzAst3ToGAst.visit_Withc                 C   r;   r   )r   Ú	AsyncWithr	   r=   r   r   r   r   r   r   Úvisit_AsyncWithr   r?   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Úfuncr+   Úkeywords)r   r   ÚstarZstarredÚkwrH   r   r   r   r   Ú
visit_Call{   s*   ÿ
ýzAst3ToGAst.visit_Callc                 C   sV   |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   sV   t  |  |j¡g |  |j¡|  |j¡|  |j¡|  |j¡|  |j¡¡}t  	||¡ |S r   )
r   Ú	argumentsr	   r+   ÚvarargÚ
kwonlyargsÚkw_defaultsÚkwargÚdefaultsr   r   r   r   r   Úvisit_arguments    s   





ù	zAst3ToGAst.visit_argumentsc                 C   s0   t  |  |j¡|  |j¡d d ¡}t ||¡ |S r   )r   ÚNamer	   ÚidÚctxÚastr   r   r   r   r   Ú
visit_Name­   s   

üzAst3ToGAst.visit_Namec                 C   s\   t jjdk r
d g}n|  |j¡g}tj|  |j¡t ¡ |  |j	¡g|¢R Ž }t
 ||¡ |S ©Nr   )rC   rD   rE   r	   Útype_commentr   rX   ÚargÚParamÚ
annotationr[   r   ©r   r   Ú
extra_argsr   r   r   r   Ú	visit_arg·   s   

ýüzAst3ToGAst.visit_argc              	   C   sP   |j r#t |  |j¡t |j t ¡ d d ¡|  |j¡¡}t 	||¡ |S |  
|¡S r   )r*   r   ÚExceptHandlerr	   ÚtyperX   ÚStorer   r[   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   )r4   r5   ÚifsÚis_async)r   Úcomprehensionr	   r4   r5   rk   r[   r   r   r   r   r   Úvisit_comprehensionÓ   s   


üzAst3ToGAst.visit_comprehensionN)Ú__name__Ú
__module__Ú__qualname__rC   rD   rE   r   r   r   r   r#   r&   r'   r.   r1   r7   r:   r>   rA   rO   rP   rW   r\   rd   ri   rn   r   r   r   r   r      s2    			

þ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d	d
„ Z	dd„ Z
dd„ Zejjdk r7dd„ Zdd„ Zn"ejjdk rYd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                    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   )Ú
isinstancer[   Ú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   )rs   r   Úslice)Ú.0Úeltr   r   r   Ú	<genexpr>æ   s   € z-GAstToAst3.visit_Subscript.<locals>.<genexpr>c                    s   g | ]}ˆ |ƒ‘qS r   r   )rx   Úx©rv   r   r   Ú
<listcomp>è   s    z.GAstToAst3.visit_Subscript.<locals>.<listcomp>)rs   rw   r   r   ÚanyÚeltsr[   ÚExtSlicer	   r   r   ru   Ú	Subscriptr   rZ   )r   r   Z	new_slicer   r   r   r|   r   Úvisit_Subscriptß   s(   
ÿÿ

ýzGAstToAst3.visit_Subscriptr   c                 C   s   t  |  |j¡¡}|S r   )r[   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   r[   ÚNameConstantr    rs   ÚboolÚintÚfloatÚcomplexÚNumÚstrÚStrÚ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 r]   )rC   rD   rE   Útupler	   r^   r[   r_   rY   ra   r   rb   r   r   r   Ú	_make_arg  s   

þýzGAstToAst3._make_argc                 C   ó,   t  |  |j¡|  |j¡¡}t  ||¡ |S r   )r[   rX   r	   rY   rZ   r   r   r   r   r   r\      ó   

þzGAstToAst3.visit_Namec                 C   s>   |j rt |  |j¡|j j|  |j¡¡}t ||¡S |  |¡S r   )	r*   r[   re   r	   rf   rY   r   r   rh   r   r   r   r   ri   (  s   

ý
zGAstToAst3.visit_ExceptHandlerrB   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éÿÿÿÿ)r+   rs   r   rG   r   rL   r_   r[   rJ   r	   rK   r   )r   r   r+   rF   rL   rH   r   r   r   r   rO   4  s&   
ûzGAstToAst3.visit_Callc              	   C   sV   |   |¡ tj|  |j¡|  |j¡|  |j¡|  |j¡|  |j¡d d d}t 	||¡S )N)r*   ÚbasesrL   r   r,   rF   rH   )
rh   r[   ÚClassDefr	   r*   r’   rL   r   r,   r   r   r   r   r   Úvisit_ClassDefM  s   





ù	zGAstToAst3.visit_ClassDefc              	   C   óJ   t  |  |j¡|  |j¡|  |j¡|  |j¡|  |j¡¡}t  ||¡ |S r   )	r[   r)   r	   r*   r+   r   r,   r-   r   r   r   r   r   r.   \  ó   




ûzGAstToAst3.visit_FunctionDefc              	   C   r•   r   )	r[   r0   r	   r*   r+   r   r,   r-   r   r   r   r   r   r1   g  r–   z!GAstToAst3.visit_AsyncFunctionDefc                 C   s@   t  |  |j¡|  |j¡|  |j¡|  |j¡¡}t  ||¡ |S r   )r[   r3   r	   r4   r5   r   r6   r   r   r   r   r   r7   r  s   



üzGAstToAst3.visit_Forc                 C   r2   r   )r[   r9   r	   r4   r5   r   r6   r   r   r   r   r   r:   |  r8   zGAstToAst3.visit_AsyncForc                 C   r   r   )r[   r<   r	   r=   r   r   r   r   r   r   r>   ‡  r   zGAstToAst3.visit_Withc                 C   r   r   )r[   r@   r	   r=   r   r   r   r   r   r   rA     r   zGAstToAst3.visit_AsyncWithc                 C   s6   t  |  |j¡|  |j¡|  |j¡¡}t  ||¡ |S r   )r[   rJ   r	   rK   r+   rL   r   r   r   r   r   rO   —  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Ž   ©rx   r   ©r   r   r   r}   ¢  ó    z.GAstToAst3.visit_arguments.<locals>.<listcomp>r   c                    r—   r   r˜   )rx   r_   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Ž   rR   rS   r	   rT   rU   rV   rC   rD   rE   r[   rQ   Úposonlyargsr+   rb   r   rš   r   rW      s(   



üþý
üÿþzGAstToAst3.visit_argumentsN)ro   rp   rq   rC   rD   rE   r‚   r   rŒ   rŽ   r\   ri   rO   r”   r.   r1   r7   r:   r>   rA   rW   r   r   r   r   rr   Ý   s*    


	rr   c                 C   ó   t ƒ  | ¡S r   )r   Úvisit©r   r   r   r   Úast_to_gast´  r   r    c                 C   r   r   )rr   rž   rŸ   r   r   r   Úgast_to_ast¸  r   r¡   )
Z	gast.astnr   r   r   r[   rC   r   rr   r    r¡   r   r   r   r   Ú<module>   s     W X