
    Ng-                         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	 ddl
mZ dd	lmZ  G d
 de          Z G d de          ZdS )    )absolute_importprint_function   )CythonTransform)EncodedString)Options)
PyrexTypes   )ExpressionWriter)warningc                   2    e Zd ZdZddZ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     ]/var/www/html/ai-engine/env/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<???>Tz6Failed to convert code to string representation in {0}r   levelputr   r   r   posformatr   nodes     r   
visit_NodezAnnotationWriter.visit_Node   sq     	4DHLSS(* *124 4 4 4 4 4	4 	4r   c                     |                      d           d| _        | j        r1t          |j        d                    | j                  d           d S d S )Nz<lambda>Tz8Failed to convert lambda to string representation in {0}r   r   r   r   s     r   visit_LambdaNodez!AnnotationWriter.visit_LambdaNode    sq     	4DHNUU(* *124 4 4 4 4 4	4 	4r   c                 2    |                      |d           d S )N )emit_stringr   s     r   visit_UnicodeNodez"AnnotationWriter.visit_UnicodeNode)   s      	r"""""r   c                 D    |                      |j        j                   d S N)r   stringunicode_valuer   s     r   visit_AnnotationNodez%AnnotationWriter.visit_AnnotationNode.   s    *+++++r   r'   )	__name__
__module____qualname____doc__r   r   r!   r%   r*    r   r   r   r      sn                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                 t    t          t          |                               |           d | _        d | _        d S r'   )superr1   r   
class_name
class_node)r   context	__class__s     r   r   zEmbedSignature.__init__4   s3    nd##,,W555r   c                 L    t                      }|                    |          }|S r'   )r   writer   r   writerresults       r   	_fmt_exprzEmbedSignature._fmt_expr9   #    !##d##r   c                 L    t                      }|                    |          }|S r'   )r   r9   r:   s       r   _fmt_annotationzEmbedSignature._fmt_annotation?   r>   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_formatE   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_argrH   is_type_argrF   typer	   py_object_typedeclaration_coderG   
annotation	_fmt_typer@   defaultr=   )r   argarg_docrU   
defaultvals        r   _fmt_argzEmbedSignature._fmt_argK   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 )NrN   )rO   rU   rH   r@   )r   rX   rY   rU   s       r   _fmt_star_argzEmbedSignature._fmt_star_argh   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)entryrP   r[   appendr]   insert)r   argsnpoargsnpargspargsnkargskargs	hide_selfarglistrX   rY   s              r   _fmt_arglistzEmbedSignature._fmt_arglistp   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 )	Nr#   r   rL   c_string_type _r_   p)
r	   rS   rF   rT   rG   	is_stringrE   
is_numericpy_type_namereplace)r   rR   coderU   s       r   rV   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)rj   z, ().z -> )rl   joinrF   rH   r@   rV   )r   cls_name	func_namerd   re   rf   rg   rh   ri   return_exprreturn_typerj   rk   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                 z    | j         r| j        d         r|S |r| j         rd}nd}|||fz  S | j         rd}nd}||z  S )Nbindingz	%s
--

%sz%s
%sz%s
--

z%s)rH   rE   )r   	signaturenode_docdocfmts       r   _embed_signaturezEmbedSignature._embed_signature   sr      	T%<Y%G 	O 	&$ "'!Y111$ %I%%r   c                 p    t           j        s|S t          t          |                               |          S r'   )r   
docstringsr3   r1   __call__)r   r   r7   s     r   r   zEmbedSignature.__call__   s1    ! 	>K..77===r   c                     | j         }| j        }|| _        	 |j        | _         n# t          $ r |j         | _         Y nw xY w|                     |           || _         || _        |S r'   )r4   r5   rO   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        r0| j        o
|j        dk    }|s|S d }|j        }| j        r	| j        }d}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 }|                     |	|          }t)          |          |
_        |s/t          |d	d           t)          |          |j        j        _        |S )
NembedsignatureFr   Tnum_posonly_argsr   num_kwonly_args)r~   r   rj   py_func)rE   rJ   ra   
is_specialr5   rO   rF   r4   getattrlenrd   r   star_argstarstar_argreturn_type_annotationrR   scopedocr   r   r   )r   r   is_constructorrj   r4   r}   re   rh   rf   r   
doc_holderold_docnew_docs                r   visit_DefNodezEmbedSignature.visit_DefNode   s   &'78 	K	:  
	?!_Hj1HN! J	I ! O	 	$(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*733JN! @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   )r   r   )overridablerE   rJ   r   r4   
declaratorbaserO   rd   r   ra   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   publicr#   r   rL   z'%s'rz   __get__z: )rE   rJ   ra   bodyrO   
visibilityrF   rR   rT   is_pyobjectis_extension_typemodule_namerG   rV   statsr4   r   r@   r   r   rH   r   )
r   r   ra   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   r=   r@   rJ   r[   r]   rl   rV   r   r   r   r   r!   r   r   r   __classcell__)r7   s   @r   r1   r1   2   sG           
    = = =  :   15%)$   *  & 37'+59!&	   .& & & > > > > >    + + +Z  2! ! ! ! ! ! !r   r1   N)
__future__r   r   Visitorr   StringEncodingr   r#   r   r	   
CodeWriterr   Errorsr   r   r1   r/   r   r   <module>r      s    6 6 6 6 6 6 6 6 $ $ $ $ $ $ ) ) ) ) ) )             ) ) ) ) ) )      $, $, $, $, $,' $, $, $,NL L L L L_ L L L L Lr   