B
    -¦aó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 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 rÌd*d+„ Zd,S )-Ú
Ast3ToGAsté	   c             C   s(   t  |  |j¡t  ¡ ¡}t  ||¡ |S )N)ÚgastÚTupleÚ_visitZdimsÚLoadÚcopy_location)ÚselfÚnodeÚnew_node© r   ú-/tmp/pip-unpacked-wheel-m2hdu3mj/gast/ast3.pyÚvisit_ExtSlice
   s    zAst3ToGAst.visit_ExtSlicec             C   s   |   |j¡S )N)r   Úvalue)r   r   r   r   r   Úvisit_Index   s    zAst3ToGAst.visit_Indexé   c             C   s   t  |  |j¡g ¡}|S )N)r   ÚModuler   Úbody)r   r   r   r   r   r   Úvisit_Module   s    
zAst3ToGAst.visit_Modulec             C   s   t  |jd ¡}t  ||¡ |S )N)r   ÚConstantÚnr
   )r   r   r   r   r   r   Ú	visit_Num   s
    zAst3ToGAst.visit_Numc             C   s(   t  td ¡}t  ||¡ d  |_|_|S )N)r   r   ÚEllipsisr
   Z
end_linenoZend_col_offset)r   r   r   r   r   r   Úvisit_Ellipsis"   s    zAst3ToGAst.visit_Ellipsisc             C   s   t  |jd ¡}t  ||¡ |S )N)r   r   Úsr
   )r   r   r   r   r   r   Ú	visit_Str+   s
    zAst3ToGAst.visit_Strc             C   s   t  |jd ¡}t  ||¡ |S )N)r   r   r   r
   )r   r   r   r   r   r   Úvisit_Bytes3   s
    zAst3ToGAst.visit_Bytesc          	   C   sL   t  |  |j¡|  |j¡|  |j¡|  |j¡|  |j¡d ¡}t  ||¡ |S )N)	r   ÚFunctionDefr   ÚnameÚargsr   Údecorator_listÚreturnsr
   )r   r   r   r   r   r   Úvisit_FunctionDef;   s    




zAst3ToGAst.visit_FunctionDefc          	   C   sL   t  |  |j¡|  |j¡|  |j¡|  |j¡|  |j¡d ¡}t  ||¡ |S )N)	r   ÚAsyncFunctionDefr   r    r!   r   r"   r#   r
   )r   r   r   r   r   r   Úvisit_AsyncFunctionDefG   s    




z!Ast3ToGAst.visit_AsyncFunctionDefc             C   sB   t  |  |j¡|  |j¡|  |j¡|  |j¡d ¡}t  ||¡ |S )N)r   ÚForr   ÚtargetÚiterr   Úorelser
   )r   r   r   r   r   r   Ú	visit_ForS   s    



zAst3ToGAst.visit_Forc             C   sB   t  |  |j¡|  |j¡|  |j¡|  |j¡d ¡}t  ||¡ |S )N)r   ÚAsyncForr   r(   r)   r   r*   r
   )r   r   r   r   r   r   Úvisit_AsyncFor^   s    



zAst3ToGAst.visit_AsyncForc             C   s.   t  |  |j¡|  |j¡d ¡}t  ||¡ |S )N)r   ÚWithr   Úitemsr   r
   )r   r   r   r   r   r   Ú
visit_Withi   s    

zAst3ToGAst.visit_Withc             C   s.   t  |  |j¡|  |j¡d ¡}t  ||¡ |S )N)r   Ú	AsyncWithr   r/   r   r
   )r   r   r   r   r   r   Úvisit_AsyncWithr   s    

zAst3ToGAst.visit_AsyncWithc             C   s¾   t jjdk rx|jr>t |  |j¡t ¡ ¡}t ||¡ |g}ng }|j	rrt 
d |  |j	¡¡}t ||j	¡ |g}q€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   ZstarZstarredÚkwr9   r   r   r   r   Ú
visit_Call{   s&    

zAst3ToGAst.visit_Callc             C   sV   |j d krt d d ¡}n.|j dkr0t dd ¡}n|j dkrFt dd ¡}t ||¡ |S )NTF)r   r   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 )N)
r   Ú	argumentsr   r!   ÚvarargÚ
kwonlyargsÚkw_defaultsÚkwargÚdefaultsr
   )r   r   r   r   r   r   Úvisit_arguments    s    




zAst3ToGAst.visit_argumentsc             C   s0   t  |  |j¡|  |j¡d d ¡}t ||¡ |S )N)r   ÚNamer   ÚidÚctxÚastr
   )r   r   r   r   r   r   Ú
visit_Name­   s    

zAst3ToGAst.visit_Namec             C   sZ   t jjdk rd g}n|  |j¡g}tj|  |j¡t ¡ |  |j	¡f|žŽ }t
 ||¡ |S )Nr   )r4   r5   r6   r   Útype_commentr   rH   ÚargZParamÚ
annotationrK   r
   )r   r   Ú
extra_argsr   r   r   r   Ú	visit_arg·   s    
zAst3ToGAst.visit_argc          	   C   sT   |j rFt |  |j¡t |j t ¡ d d ¡|  |j¡¡}t 	||¡ |S |  
|¡S d S )N)r    r   ÚExceptHandlerr   ÚtyperH   ZStorer   rK   r
   Úgeneric_visit)r   r   r   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)   ÚifsZis_async)r   Zcomprehensionr   r(   r)   rW   rK   r
   )r   r   r   r   r   r   Úvisit_comprehensionÓ   s    


zAst3ToGAst.visit_comprehensionN)Ú__name__Ú
__module__Ú__qualname__r4   r5   r6   r   r   r   r   r   r   r   r$   r&   r+   r-   r0   r2   r?   r@   rG   rL   rQ   rU   rX   r   r   r   r   r      s.   			

r   c               @   s¾   e Zd Zejjdk rdd„ Zejjdk r8dd„ Zdd„ Zd	d
„ Z	dd„ Z
dd„ Zejjdk rndd„ Zdd„ ZnDe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#S )$Ú
GAstToAst3r   c                sÐ   dd„ ‰ t |jtjƒr„tdd„ |jjD ƒƒrPt ‡ fdd„|  |jj¡D ƒ¡}q”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 d S )N)Ú
isinstancerK   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 )N)r]   r   Úslice)Ú.0Úeltr   r   r   ú	<genexpr>æ   s    z-GAstToAst3.visit_Subscript.<locals>.<genexpr>c                s   g | ]}ˆ |ƒ‘qS r   r   )ra   Úx)r_   r   r   ú
<listcomp>è   s    z.GAstToAst3.visit_Subscript.<locals>.<listcomp>)r]   r`   r   r   ÚanyZeltsrK   ZExtSlicer   r	   r
   r^   Z	Subscriptr   rJ   )r   r   Z	new_slicer   r   r   )r_   r   Úvisit_Subscriptß   s"    

zGAstToAst3.visit_Subscriptr   c             C   s   t  |  |j¡¡}|S )N)rK   r   r   r   )r   r   r   r   r   r   r   ü   s    zGAstToAst3.visit_Modulec             C   sœ   |j d krt |j ¡}nt|j tkr,t ¡ }n`t|j tƒrFt |j ¡}nFt|j tttfƒrft 	|j ¡}n&t|j t
ƒr€t |j ¡}nt |j ¡}t ||¡ |S )N)r   rK   ÚNameConstantr   r]   ÚboolÚintÚfloatÚcomplexÚNumÚstrÚStrÚBytesr
   )r   r   r   r   r   r   Úvisit_Constant   s    


zGAstToAst3.visit_Constantc             C   s\   |d krd S t jjdk r tƒ }n|  |j¡f}tj|  |j¡|  |j	¡f|žŽ }t 
||¡S )Nr   )r4   r5   r6   Útupler   rM   rK   rN   rI   rO   r
   )r   r   rP   r   r   r   r   Ú	_make_arg  s    
zGAstToAst3._make_argc             C   s,   t  |  |j¡|  |j¡¡}t  ||¡ |S )N)rK   rH   r   rI   rJ   r
   )r   r   r   r   r   r   rL      s
    
zGAstToAst3.visit_Namec             C   sB   |j r4t |  |j¡|j j|  |j¡¡}t ||¡S |  |¡S d S )N)	r    rK   rR   r   rS   rI   r   r
   rT   )r   r   r   r   r   r   rU   (  s    
zGAstToAst3.visit_ExceptHandlerr3   c          	   C   s¼   |j r4t|j d tjƒr4|j d d… }|j d j}n
|j }d }|jrp|jd jd krp|jd d… }|jd j}n
|j}d }t |  	|j
¡|  	|¡|  	|¡|  	|¡|  	|¡¡}t ||¡ |S )Néÿÿÿÿ)r!   r]   r   r8   r   r=   rN   rK   r;   r   r<   r
   )r   r   r!   r7   r=   r9   r   r   r   r   r?   4  s$    
zGAstToAst3.visit_Callc          	   C   sV   |   |¡ tj|  |j¡|  |j¡|  |j¡|  |j¡|  |j¡d d d}t 	||¡S )N)r    Úbasesr=   r   r"   r7   r9   )
rT   rK   ZClassDefr   r    ru   r=   r   r"   r
   )r   r   r   r   r   r   Úvisit_ClassDefM  s    





zGAstToAst3.visit_ClassDefc          	   C   sJ   t  |  |j¡|  |j¡|  |j¡|  |j¡|  |j¡¡}t  ||¡ |S )N)	rK   r   r   r    r!   r   r"   r#   r
   )r   r   r   r   r   r   r$   \  s    



zGAstToAst3.visit_FunctionDefc          	   C   sJ   t  |  |j¡|  |j¡|  |j¡|  |j¡|  |j¡¡}t  ||¡ |S )N)	rK   r%   r   r    r!   r   r"   r#   r
   )r   r   r   r   r   r   r&   g  s    



z!GAstToAst3.visit_AsyncFunctionDefc             C   s@   t  |  |j¡|  |j¡|  |j¡|  |j¡¡}t  ||¡ |S )N)rK   r'   r   r(   r)   r   r*   r
   )r   r   r   r   r   r   r+   r  s    


zGAstToAst3.visit_Forc             C   sB   t  |  |j¡|  |j¡|  |j¡|  |j¡d ¡}t  ||¡ |S )N)rK   r,   r   r(   r)   r   r*   r
   )r   r   r   r   r   r   r-   |  s    



zGAstToAst3.visit_AsyncForc             C   s,   t  |  |j¡|  |j¡¡}t  ||¡ |S )N)rK   r.   r   r/   r   r
   )r   r   r   r   r   r   r0   ‡  s
    
zGAstToAst3.visit_Withc             C   s,   t  |  |j¡|  |j¡¡}t  ||¡ |S )N)rK   r1   r   r/   r   r
   )r   r   r   r   r   r   r2     s
    
zGAstToAst3.visit_AsyncWithc             C   s6   t  |  |j¡|  |j¡|  |j¡¡}t  ||¡ |S )N)rK   r;   r   r<   r!   r=   r
   )r   r   r   r   r   r   r?   —  s    

c                s¢   ˆ   |j¡‡ fdd„|jD ƒˆ  |j¡ˆ   |j¡ˆ  |j¡g}tjj	dkr~t
j‡ fdd„|jD ƒ‡ fdd„|jD ƒf|žŽ }n t
j‡ fdd„|jD ƒf|žŽ }|S )Nc                s   g | ]}ˆ   |¡‘qS r   )rs   )ra   r   )r   r   r   re   ¢  s    z.GAstToAst3.visit_arguments.<locals>.<listcomp>r   c                s   g | ]}ˆ   |¡‘qS r   )rs   )ra   rN   )r   r   r   re   ¨  s    c                s   g | ]}ˆ   |¡‘qS r   )rs   )ra   r   )r   r   r   re   ©  s    c                s   g | ]}ˆ   |¡‘qS r   )rs   )ra   r   )r   r   r   re   ®  s    )rs   rB   rC   r   rD   rE   rF   r4   r5   r6   rK   rA   Zposonlyargsr!   )r   r   rP   r   r   )r   r   rG      s    



zGAstToAst3.visit_argumentsN)rY   rZ   r[   r4   r5   r6   rg   r   rq   rs   rL   rU   r?   rv   r$   r&   r+   r-   r0   r2   rG   r   r   r   r   r\   Ý   s(   


	r\   c             C   s   t ƒ  | ¡S )N)r   Úvisit)r   r   r   r   Úast_to_gast´  s    rx   c             C   s   t ƒ  | ¡S )N)r\   rw   )r   r   r   r   Úgast_to_ast¸  s    ry   )
Z	gast.astnr   r   r   rK   r4   r   r\   rx   ry   r   r   r   r   Ú<module>   s    W X