o
    QeÌ?  ã                   @   s`   d dl mZmZ d dl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Ú	GAstToAst)Úgasté    Nc                   @   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)r   ÚTupleÚ_visitÚdimsÚLoadÚcopy_location©ÚselfÚnodeÚnew_node© r   úFD:\Projects\ConvertPro\env\Lib\site-packages\paddle/utils/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_Module3   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_EllipsisB   s   þzAst3ToGAst.visit_Ellipsisc                 C   r   r   ©r   r   Úsr   r   r   r   r   Ú	visit_StrK   r    zAst3ToGAst.visit_Strc                 C   r   r   r%   r   r   r   r   Úvisit_BytesS   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   r0   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   r3   r   )r   ÚAsyncForr
   r5   r6   r   r7   r   r   r   r   r   Úvisit_AsyncFor~   r9   zAst3ToGAst.visit_AsyncForc                 C   ó.   t  |  |j¡|  |j¡d ¡}t  ||¡ |S r   )r   ÚWithr
   Úitemsr   r   r   r   r   r   Ú
visit_With‰   ó   

ýzAst3ToGAst.visit_Withc                 C   r<   r   )r   Ú	AsyncWithr
   r>   r   r   r   r   r   r   Úvisit_AsyncWith’   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ÚkwrI   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   )rD   rE   rF   r
   Útype_commentr   rY   Ú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
   ÚtyperY   Ú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   )r5   r6   ÚifsÚis_async)r   Úcomprehensionr
   r5   r6   rl   r\   r   r   r   r   r   Úvisit_comprehensionò   s   


üzAst3ToGAst.visit_comprehensionN)Ú__name__Ú
__module__Ú__qualname__rD   rE   rF   r   r   r   r   r$   r'   r(   r/   r2   r8   r;   r?   rB   rP   rQ   rX   r]   re   rj   ro   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   )rt   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>)rt   rx   r   r	   ÚanyÚeltsr\   ÚExtSlicer
   r   r   rv   Ú	Subscriptr   r[   )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!   rt   Ú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^   )rD   rE   rF   Útupler
   r_   r\   r`   rZ   rb   r   rc   r   r   r   Ú	_make_arg1  s   ÿzGAstToAst3._make_argc                 C   ó,   t  |  |j¡|  |j¡¡}t  ||¡ |S r   )r\   rY   r
   rZ   r[   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\   rf   r
   rg   rZ   r   r   ri   r   r   r   r   rj   F  s   
ÿ
zGAstToAst3.visit_ExceptHandlerrC   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,   rt   r   rH   r   rM   r`   r\   rK   r
   rL   r   )r   r   r,   rG   rM   rI   r   r   r   r   rP   P  s&   
ûzGAstToAst3.visit_Callc              	   C   sV   |   |¡ tj|  |j¡|  |j¡|  |j¡|  |j¡|  |j¡d d d}t 	||¡S )N)r+   ÚbasesrM   r   r-   rG   rI   )
ri   r\   ÚClassDefr
   r+   r“   rM   r   r-   r   r   r   r   r   Úvisit_ClassDefi  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/   x  ó   




ûzGAstToAst3.visit_FunctionDefc              	   C   r–   r   )	r\   r1   r
   r+   r,   r   r-   r.   r   r   r   r   r   r2   ƒ  r—   z!GAstToAst3.visit_AsyncFunctionDefc                 C   s@   t  |  |j¡|  |j¡|  |j¡|  |j¡¡}t  ||¡ |S r   )r\   r4   r
   r5   r6   r   r7   r   r   r   r   r   r8   Ž  s   



üzGAstToAst3.visit_Forc                 C   r3   r   )r\   r:   r
   r5   r6   r   r7   r   r   r   r   r   r;   ˜  r9   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\   rA   r
   r>   r   r   r   r   r   r   rB   «  r‘   zGAstToAst3.visit_AsyncWithc                 C   s6   t  |  |j¡|  |j¡|  |j¡¡}t  ||¡ |S r   )r\   rK   r
   rL   r,   rM   r   r   r   r   r   rP   ³  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   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   rS   rT   r
   rU   rV   rW   rD   rE   rF   r\   rR   Úposonlyargsr,   rc   r   r›   r   rX   ¼  s$   



ûþþþÿzGAstToAst3.visit_argumentsN)rp   rq   rr   rD   rE   rF   rƒ   r   r   r   r]   rj   rP   r•   r/   r2   r8   r;   r?   rB   rX   r   r   r   r   rs   ü   s*    

	rs   c                 C   ó   t ƒ  | ¡S r   )r   Úvisit©r   r   r   r   Úast_to_gastÎ  r   r¡   c                 C   rž   r   )rs   rŸ   r    r   r   r   Úgast_to_astÒ  r   r¢   )Zastnr   r   Ú r   r\   rD   r   rs   r¡   r¢   r   r   r   r   Ú<module>   s    W S