
    -Ph.                         d dl Z ddlmZ ddlmZ ddlmZ ddlmZ ddlm	Z	 dd	l
mZ  G d
 de	          Z G d de          ZdS )    N   )CythonTransform)EncodedString)Options)
PyrexTypes   )ExpressionWriter)warningc                   ,    e Zd ZdZddZd Zd Zd ZdS )AnnotationWriterzW
    A Cython code writer for Python expressions in argument/variable annotations.
    Nc                 J    t          j        |            || _        d| _        dS )zdescription is optional. If specified it is used in
        warning messages for the nodes that don't convert to string properly.
        If not specified then no messages are generated.
        FN)r	   __init__description
incomplete)selfr   s     a/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/Cython/Compiler/AutoDocTransforms.pyr   zAnnotationWriter.__init__   s(    
 	!$'''&    c                     |                      d           d| _        | j        r1t          |j        d                    | j                  d           d S d S )Nz<???>Tz5Failed to convert code to string representation in {}r   levelputr   r   r
   posformatr   nodes     r   
visit_NodezAnnotationWriter.visit_Node   sq     	4DHKRR(* *124 4 4 4 4 4	4 	4r   c                     |                      d           d| _        | j        r1t          |j        d                    | j                  d           d S d S )Nz<lambda>Tz7Failed to convert lambda to string representation in {}r   r   r   r   s     r   visit_LambdaNodez!AnnotationWriter.visit_LambdaNode    sq     	4DHMTT(* *124 4 4 4 4 4	4 	4r   c                 D    |                      |j        j                   d S N)r   stringvaluer   s     r   visit_AnnotationNodez%AnnotationWriter.visit_AnnotationNode)   s    "#####r   r!   )__name__
__module____qualname____doc__r   r   r   r$    r   r   r   r      s_                4 4 44 4 4$ $ $ $ $r   r   c                        e Zd Z fdZd Zd Zd Zd Zd Z	 	 	 dd
Z	d Z
	 	 	 	 ddZd Z fdZd Zd Zd Zd Zd Z xZS )EmbedSignaturec                 f    t                                          |           d | _        d | _        d S r!   )superr   
class_name
class_node)r   context	__class__s     r   r   zEmbedSignature.__init__/   s-    !!!r   c                 L    t                      }|                    |          }|S r!   )r	   writer   r   writerresults       r   	_fmt_exprzEmbedSignature._fmt_expr4   #    !##d##r   c                 L    t                      }|                    |          }|S r!   )r   r3   r4   s       r   _fmt_annotationzEmbedSignature._fmt_annotation:   r8   r   c                 b    | j         d         }|dk    | _        |dk    | _        |dk    | _        d S )Nzembedsignature.formatcpythonclinic)current_directivesis_format_cis_format_pythonis_format_clinic)r   signature_formats     r   _setup_formatzEmbedSignature._setup_format@   s>    23JK+s2 0H < 0H <r   c                    |j         }d }d }|j        r
| j        rd}nu|j        r
| j        rd}nd| j        r5|j        t          j        ur!|j                            |j         d          }n(| j	        r!|j
        s|                     |j                  }|j
        r!| j        s|                     |j
                  }|j        r|                     |j                  }|r|d|z  z   }|r|d|z  z   }n
|r|d|z  z   }|S )Nz$selfz$typer   for_display: %sz = %sz=%s)nameis_self_argrB   is_type_argr@   typer   py_object_typedeclaration_coderA   
annotation	_fmt_typer:   defaultr7   )r   argarg_docrO   
defaultvals        r   _fmt_argzEmbedSignature._fmt_argF   s=   (

? 	6$ "!_ 	6$ "! 	6xz888(33CH!3LL" 	6> 6!^^CH55
> 	B( B!11#.AA
; 	544J 	5*!45G ;!Wz%9: 	5!34Gr   c                 t    |j         }|j        r)| j        s"|                     |j                  }|d|z  z   }|S )NrH   )rI   rO   rB   r:   )r   rR   rS   rO   s       r   _fmt_star_argzEmbedSignature._fmt_star_argc   sG    (> 	:( :!11#.AA
!Vj%89r   r   NFc                    g }|D ]:}	|r|	j         j        s*|                     |	          }
|                    |
           ;|r2|                     |          }
|                    ||z   d|
z             n|r|                    ||z   d           |r|                    |d           |r-|                     |          }
|                    d|
z             |S )Nz*%s*/z**%s)entryrJ   rU   appendrW   insert)r   argsnpoargsnpargspargsnkargskargs	hide_selfarglistrR   rS   s              r   _fmt_arglistzEmbedSignature._fmt_arglistk   s      	( 	(C (CI$9 (--,,w''' 	2((//GNN6G+UW_==== 	2NN6G+S111 	)NN7C((( 	-((//GNN6G+,,,r   c                 b   |t           j        u rd S | j        r|                    dd          }|S | j        rwd }|j        r| j        d         }n|j        r|                                }|A|                    dd          }|	                    dd          	                    dd          }|S d S )	N r   rF   c_string_type _rY   p)
r   rM   r@   rN   rA   	is_stringr?   
is_numericpy_type_namereplace)r   rL   coderO   s       r   rP   zEmbedSignature._fmt_type   s    :,,,4 	(((;;DK" 		J~ 1!4_E

 1!..00
!,,RQ,??!\\#s33;;CEE
tr   c           	         |                      |||||||          }d                    |          }|d|d}| j        r	|r|d|}| j        s:d }|	r|                     |	          }n|
r|                     |
          }|r|d|}|S )N)rd   z, ().z -> )rf   joinr@   rB   r:   rP   )r   cls_name	func_namer^   r_   r`   ra   rb   rc   return_exprreturn_typerd   re   arglist_docfunc_docret_docs                   r   _fmt_signaturezEmbedSignature._fmt_signature   s    
 ##'65&% $ 
 
 ii(((yy+++6 	6 	6"*((HH5H$ 	<G 6..{;; 6..55 <)177;r   c                     | j         r| j        d         r|S |r'| j         rd}nd}t          j        |          }|||fz  S | j         rd}nd}||z  S )Nbindingz	%s
--

%sz%s

%sz%s
--

z%s)rB   r?   inspectcleandoc)r   	signaturenode_docdocfmts       r   _embed_signaturezEmbedSignature._embed_signature   s      	T%<Y%G 	O 	&$ $'#'11HY111$ %I%%r   c                 b    t           j        s|S t                                          |          S r!   )r   
docstringsr-   __call__)r   r   r1   s     r   r   zEmbedSignature.__call__   s+    ! 	*K77##D)))r   c                     | j         }| j        }|| _        	 |j        | _         n# t          $ r |j         | _         Y nw xY w|                     |           || _         || _        |S r!   )r.   r/   rI   AttributeErrorvisitchildren)r   r   oldnameoldclasss       r   visit_ClassDefNodez!EmbedSignature.visit_ClassDefNode   sx    /?	."iDOO 	. 	. 	."oDOOO	. 	4   !"s   $ ==c                     |S r!   r)   r   s     r   r   zEmbedSignature.visit_LambdaNode   s    r   c                    | j         d         s|S |                                  d}d}|j        j        r=| j        o
|j        dk    }|rd }|j        }| j        r	| j        }d}n| j        |j        }}n| j        |j        }}t          |dd          }t          |dd          }t          |j
                  |z
  |z
  }|                     |||j
        |||j        ||j        |j        d |          }	|	r|r| j        r| j        j        j        j        }
n|j        }
|
j        |
j        }n'|s#t          |d	d           |j        j        j        }nd }|                     |	|          }|j        j        r|s|j        j        t+          |          |
_        |s/t          |d	d           t+          |          |j        j        _        |S )
NembedsignatureFr   Tnum_posonly_argsr   num_kwonly_args)ry   rz   rd   py_func)r?   rD   r[   
is_specialr/   rI   r@   r.   getattrlenr^   r~   star_argstarstar_argreturn_type_annotationrL   scopedocr   r   wrapperbase_cnamer   )r   r   is_constructorrd   r.   rx   r_   rb   r`   r   
doc_holderold_docnew_docs                r   visit_DefNodezEmbedSignature.visit_DefNode   s   &'78 	K	:  	?!_Hj1HN C!
 I	# % $I $I(,I

$(OTY	J$ 2A660!44TY&(72''	49VT]D%3	 ( 3 3	  	@ ($"2 (!_27=

!Z
~)$.# i(F(F(R,,0++Iw??G:( 8N 8dj>Z>f
 "/w!7!7
! @gdIt&D&D&P)6w)?)?"&r   c                    |j         s|S | j        d         s|S |                                  |                     | j        |j        j        j        |j        j        |j	                  }|r|j
        j        |j
        j        }n%t          |dd           |j        j
        j        }nd }|                     ||          }t          |          |j
        _        t          |dd           }|t          |          |j
        _        |S )Nr   )rz   r   )overridabler?   rD   r~   r.   
declaratorbaserI   r^   rz   r[   r   r   r   r   r   )r   r   r   r   r   r   s         r   visit_CFuncDefNodez!EmbedSignature.visit_CFuncDefNode  s
    	K&'78 	K''OT_16O ( ( * *	  	;z~)*.y$//;,,0++Iw??G*733DJNdIt44G"$1'$:$:!r   c                    | j         d         s|S |                                  |j        }|j        }|j        }d }|j        dk    ru| j        rM|j                            dd          }|j        j	        sd|z  }n@|j        j
        r|j        j        dz   |z   }n!| j        r|                     |j                  }|G|j        D ]?}|j        dk    r| j        r| j        d|}|j        }|r|                     |          }@|=|d	|}|                     ||j                  }	| j        st+          |	          |_        |S )
Nr   publicrh   r   rF   z'%s'ru   __get__z: )r?   rD   r[   bodyrI   
visibilityr@   rL   rN   is_pyobjectis_extension_typemodule_namerA   rP   statsr.   r   r:   r   r   rB   r   )
r   r   r[   r   	prop_name	type_namestatret_annotationr   r   s
             r   visit_PropertyNodez!EmbedSignature.visit_PropertyNode  s   &'78 	K
yJ		x'' 7!J777JJ	z- I & 2IIZ1 I %
 6 <y HI& 7 NN5:66	
 E E9	))# G+/???II FI!%!<! E $ 4 4^ D DI $-IIyy9I++IuyAAG( 3)'22	r   )r   r   Nr   NF)r   r   Nr   NNNF)r%   r&   r'   r   r7   r:   rD   rU   rW   rf   rP   r~   r   r   r   r   r   r   r   __classcell__)r1   s   @r   r+   r+   -   sG           
    = = =  :   15%)$   *  & 37'+59!&	   .& & &"* * * * *    1 1 1f  2! ! ! ! ! ! !r   r+   )r   Visitorr   StringEncodingr   rh   r   r   
CodeWriterr	   Errorsr
   r   r+   r)   r   r   <module>r      s     $ $ $ $ $ $ ) ) ) ) ) )             ) ) ) ) ) )      $ $ $ $ $' $ $ $DS S S S S_ S S S S Sr   