a
    b]                     @   st   d dl mZmZ ddlmZ ddlmZ ddlmZ ddlm	Z	m
Z
 ddlmZ G d	d
 d
eZG dd deZdS )    )absolute_importprint_function   )CythonTransform)EncodedString)Options)
PyrexTypes	ExprNodes   )ExpressionWriterc                   @   s   e Zd Zdd Zdd ZdS )AnnotationWriterc                 C   s   |  d d S )Nz<???>putselfnode r   q/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/Cython/Compiler/AutoDocTransforms.py
visit_Node   s    zAnnotationWriter.visit_Nodec                 C   s   |  d d S )Nz<lambda>r   r   r   r   r   visit_LambdaNode   s    z!AnnotationWriter.visit_LambdaNodeN)__name__
__module____qualname__r   r   r   r   r   r   r   
   s   r   c                       s   e Zd Z fddZdd Zdd Zdd Zd ddZdd Zd!ddZ	dd Z
 fddZdd Zdd Zdd Zdd Zdd Z  ZS )"EmbedSignaturec                    s    t t| | d | _d | _d S N)superr   __init__
class_name
class_node)r   context	__class__r   r   r      s    zEmbedSignature.__init__c                 C   s   t  }||}|S r   )r   write)r   r   writerresultr   r   r   	_fmt_expr   s    
zEmbedSignature._fmt_exprc                 C   s   |j tju s|jr|j}n|j j|jdd}|jrj| |j}|d|  }|jr| |j}|d|  }n|jr| |j}|d|  }|S )Nr   Zfor_display: %sz = %sz=%s)	typer   py_object_typeis_self_argnamedeclaration_code
annotationr%   default)r   argdocr-   r.   r   r   r   _fmt_arg!   s    zEmbedSignature._fmt_argc                 C   s(   |j }|jr$| |j}|d|  }|S )Nr'   )r+   r-   r%   )r   r/   arg_docr-   r   r   r   _fmt_star_arg2   s
    zEmbedSignature._fmt_star_argr   NFc           
      C   s~   g }|D ]$}|r|j js| |}	||	 q|rN| |}	||d|	  n|r^||d |rz| |}	|d|	  |S )Nz*%s*z**%s)entryr*   r1   appendr3   insert)
r   argsnpargspargsnkargskargs	hide_selfarglistr/   r2   r   r   r   _fmt_arglist9   s    


zEmbedSignature._fmt_arglistc                 C   s    |t ju rd S |jdddS d S )N r   r&   )r   r)   r,   )r   retr   r   r   _fmt_ret_typeL   s    
zEmbedSignature._fmt_ret_typec                 C   sr   | j ||||||
d}d|}d||f }|r<d||f }d }|rP| |}n|	r^| |	}|rnd||f }|S )N)r=   z, z%s(%s)z%s.%sz%s -> %s)r?   joinr%   rB   )r   cls_name	func_namer8   r9   r:   r;   r<   return_exprreturn_typer=   r>   Zarglist_docZfunc_docZret_docr   r   r   _fmt_signatureR   s"    

zEmbedSignature._fmt_signaturec                 C   s   |rd||f S |S d S )Nz%s
%sr   )r   	signatureZnode_docr   r   r   _embed_signatureh   s    zEmbedSignature._embed_signaturec                    s   t js
|S tt| |S d S r   )r   Z
docstringsr   r   __call__r   r    r   r   rK   n   s    zEmbedSignature.__call__c                 C   sT   | j }| j}|| _z|j| _ W n ty8   |j | _ Y n0 | | || _ || _|S r   )r   r   r+   AttributeErrorZvisitchildren)r   r   ZoldnameZoldclassr   r   r   visit_ClassDefNodet   s    
z!EmbedSignature.visit_ClassDefNodec                 C   s   |S r   r   r   r   r   r   r      s    zEmbedSignature.visit_LambdaNodec                 C   s*  | j d s|S d}d}|jjrH| jo,|jdk}|s6|S d | j }}d}n| j|j }}t|dd}t|j| }| j	|||j||j
||j|jd |d
}|r&|r| jjjj}	n|j}	|	jd ur|	j}
n$|st|dd d ur|jjj}
nd }
| ||
}t||	_|s&t|dd d ur&t||jj_|S )	NembedsignatureFr   TZnum_kwonly_argsr   )rF   rG   r=   py_func)current_directivesr5   Z
is_specialr   r+   r   getattrlenr8   rH   Zstar_argZstarstar_argZreturn_type_annotationr(   Zscoper0   rO   rJ   r   )r   r   Zis_constructorr=   r   rE   r;   r9   rI   Z
doc_holderold_docnew_docr   r   r   visit_DefNode   sD    


zEmbedSignature.visit_DefNodec                 C   s   | j d s|S |js|S | j| j|jjj|jj|jd}|r|j	j
d urR|j	j
}n t|dd d urn|jj	j
}nd }| ||}t||j	_
t|dr|jd urt||jj	_
|S )NrN   )rG   rO   )rP   ZoverridablerH   r   Z
declaratorbaser+   r8   rG   r5   r0   rQ   rO   rJ   r   hasattr)r   r   rI   rS   rT   r   r   r   visit_CFuncDefNode   s(    

z!EmbedSignature.visit_CFuncDefNodec                 C   s   | j d s|S |j}|jdkr~|jjddd}|jjs@d| }n|jjrX|jjd | }d|j|f }| 	||j
}t||_
|S )	NrN   publicr@   r   r&   z'%s'.z%s: %s)rP   r5   Z
visibilityr(   r,   Zis_pyobjectZis_extension_typemodule_namer+   rJ   r0   r   )r   r   r5   	type_namerI   rT   r   r   r   visit_PropertyNode   s    



z!EmbedSignature.visit_PropertyNode)r   Nr   NF)r   Nr   NNNF)r   r   r   r   r%   r1   r3   r?   rB   rH   rJ   rK   rM   r   rU   rX   r]   __classcell__r   r   r    r   r      s*      
    
)r   N)
__future__r   r   ZVisitorr   ZStringEncodingr   r@   r   r   r	   Z
CodeWriterr   r   r   r   r   r   r   <module>   s   
