
    Ng_                         d Z ddlmZmZ ddlmZ ddlT ddlmZ  G d de	          Z
 G d	 d
e          Z G d de          Z G d de          Z G d dee          Z G d dee          ZdS )a  
Serializes a Cython code tree to Cython code. This is primarily useful for
debugging and testing purposes.
The output is in a strict format, no whitespace or comments from the input
is preserved (and it could not be as it is not present in the code tree).
    )absolute_importprint_function   )TreeVisitor)*)CSimpleBaseTypeNodec                   &    e Zd Zd Zd Zd Zd ZdS )LinesResultc                 "    g | _         d| _        d S N )linessselfs    M/var/www/html/ai-engine/env/lib/python3.11/site-packages/Cython/CodeWriter.py__init__zLinesResult.__init__   s    
    c                 &    | xj         |z  c_         d S N)r   r   r   s     r   putzLinesResult.put   s    !r   c                 R    | j                             | j                   d| _        d S r   )r   appendr   r   s    r   newlinezLinesResult.newline   s%    
$&!!!r   c                 X    |                      |           |                                  d S r   )r   r   r   s     r   putlinezLinesResult.putline   s"    r   N)__name__
__module____qualname__r   r   r   r    r   r   r
   r
      sP                  r   r
   c                       e Zd ZdZdZd. fd	Zd Zd Zd Zd/d	Z	d
 Z
d Zd/dZd Zd0dZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd  Zd! Z d" Z!d# Z"d$ Z#d% Z$d& Z%d' Z&d( Z'd) Z(d* Z)d+ Z*d, Z+d- Z, xZ-S )1DeclarationWriterzE
    A Cython code writer that is limited to declarations nodes.
    z    Nc                     t          t          |                                            |t                      }|| _        d| _        i | _        d| _        d S )Nr   )superr#   r   r
   result
numindents	tempnamestempblockindexr   r&   	__class__s     r   r   zDeclarationWriter.__init__'   sQ    &&//111> ]]Fr   c                 :    |                      |           | j        S r   visitr&   r   trees     r   writezDeclarationWriter.write0       

4{r   c                 &    | xj         dz  c_         d S Nr   r'   r   s    r   indentzDeclarationWriter.indent4       1r   c                 &    | xj         dz  c_         d S r4   r5   r   s    r   dedentzDeclarationWriter.dedent7   r7   r   r   c                 Z    | j                             | j        | j        z  |z              d S r   )r&   r   indent_stringr'   r   s     r   	startlinezDeclarationWriter.startline:   s+    *T_<q@AAAAAr   c                 :    | j                             |           d S r   )r&   r   r   s     r   r   zDeclarationWriter.put=   s    r   c                 Z    | j                             | j        | j        z  |z              d S r   )r&   r   r;   r'   r   s     r   r   zDeclarationWriter.putline@   s-    D.@1DEEEEEr   c                 :    | j                             |           d S r   )r&   r   r   s     r   endlinezDeclarationWriter.endlineC   s    Ar   c                 X    |                      |           |                                  d S r   r<   r@   r   s     r   linezDeclarationWriter.lineF   s%    qr   Fc                    t          |          dk    r|d d         D ]d}|                     |           |r6|j        /|                     d           |                     |j                   |                     d           e|                     |d                    |rF|d         j        ;|                     d           |                     |d         j                   d S d S d S d S )Nr    = , )lenr.   defaultr   )r   items
output_rhsitems       r   comma_separated_listz&DeclarationWriter.comma_separated_listJ   s    u::>>crc
    

4    -$,":HHV$$$JJt|,,,JJuRy!!! .eBi/;   

59,----- >. .;;r   c                     |                                   |                     |           |                                  d S r   )r6   r.   r9   r   nodes     r   _visit_indentedz!DeclarationWriter._visit_indentedW   s2    

4r   c                 &    t          d|z            Nz"Node not handled by serializer: %rAssertionErrorrO   s     r   
visit_NodezDeclarationWriter.visit_Node\       ADHIIIr   c                 0    |                      |           d S r   visitchildrenrO   s     r   visit_ModuleNodez"DeclarationWriter.visit_ModuleNode_       4     r   c                 0    |                      |           d S r   rY   rO   s     r   visit_StatListNodez$DeclarationWriter.visit_StatListNodeb   r\   r   c                     |j         d}n
d|j         z  }|                     d|z             |                     |j                   d S )Nr   z"%s"zcdef extern from %s:)include_filer   rQ   body)r   rP   files      r   visit_CDefExternNodez&DeclarationWriter.visit_CDefExternNodee   sS    $DDT..D,t3444TY'''''r   c                 d    |                      d           |                     |j                   d S )Nr   r   r.   baserO   s     r   visit_CPtrDeclaratorNodez*DeclarationWriter.visit_CPtrDeclaratorNodem   +    

49r   c                 d    |                      d           |                     |j                   d S )N&re   rO   s     r   visit_CReferenceDeclaratorNodez0DeclarationWriter.visit_CReferenceDeclaratorNodeq   rh   r   c                     |                      |j                   |                     d           |j        |                      |j                   |                     d           d S N[])r.   rf   r   	dimensionrO   s     r   visit_CArrayDeclaratorNodez,DeclarationWriter.visit_CArrayDeclaratorNodeu   sT    

49>%JJt~&&&r   c                     |                      |j                   |                     d           |                     |j                   |                     d           d S N())r.   rf   r   rM   argsr@   rO   s     r   visit_CFuncDeclaratorNodez+DeclarationWriter.visit_CFuncDeclaratorNode|   sS    

49!!$),,,Tr   c                 :    |                      |j                   d S r   r   namerO   s     r   visit_CNameDeclaratorNodez+DeclarationWriter.visit_CNameDeclaratorNode       r   c                 >   |j         rr|                     d|j                            |j        dk     r|                     d|j         z             n(|j        dk    r|                     d|j        z             |j        |                     |j                   d S d S )N)z	unsigned r   zsigned r   zshort zlong )is_basic_c_typer   signedlongnessrz   rO   s     r   visit_CSimpleBaseTypeNodez+DeclarationWriter.visit_CSimpleBaseTypeNode   s     	2HH1$+>???}q  T]N23333""4=01119 HHTY ! r   c                 n    |                      |j                   |                      |j                   d S r   )r.   	base_type
declaratorrO   s     r   visit_CComplexBaseTypeNodez,DeclarationWriter.visit_CComplexBaseTypeNode   s0    

4>"""

4?#####r   c                     |                      |j                   |                     d           |                     |j                   d S )N.)r.   r   r   rz   rO   s     r   visit_CNestedBaseTypeNodez+DeclarationWriter.visit_CNestedBaseTypeNode   s?    

4>"""r   c                     |                      |j                   |                     d           |                     |j        |j        j        z              |                     d           d S rm   )r.   base_type_noder   rM   positional_argskeyword_argskey_value_pairsrO   s     r   visit_TemplatedTypeNodez)DeclarationWriter.visit_TemplatedTypeNode   s[    

4&'''!!$"69J9Z"Z[[[r   c                     |                      d           |                     |j                   |                     d           |                     |j        d           |                                  d S )Ncdef  T)rK   )r<   r.   r   r   rM   declaratorsr@   rO   s     r   visit_CVarDefNodez#DeclarationWriter.visit_CVarDefNode   sd    x   

4>"""!!$"2t!DDDr   c                    |                      |           |j        rS|                     d           |                     |j                   |j        |                     d|j        z             |r|                     |           |                     d           |                                  |s|                     d           n|D ]}|                     |           |                                  d S )Nr    "%s":pass)	r<   rz   r   cnamer@   r6   r   r.   r9   )r   rP   declextras
attributes	attributes         r   _visit_container_nodez'DeclarationWriter._visit_container_node   s    t9 	0HHTNNNHHTYz%DJ./// 	HHVS 	&LL    ' & &	

9%%%%r   c                     |j         rd}nd}|j        dk    r|dz  }|j        r|dz  }||j        z  }|                     ||d |j                   d S )N	ctypedef r   publiczpublic zpacked )typedef_flag
visibilitypackedkindr   r   )r   rP   r   s      r   visit_CStructOrUnionDefNodez-DeclarationWriter.visit_CStructOrUnionDefNode   sr     	DDD?h&&JD; 	JD	""4tT_EEEEEr   c                     d}|j         rdd                    |j                   z  }|j        r |dd                    |j                  z  z  }|                     |d||j                   d S )Nr   z[%s]rG   z(%s)zcdef cppclass)	templatesjoinbase_classesr   r   )r   rP   r   s      r   visit_CppClassNodez$DeclarationWriter.visit_CppClassNode   su    > 	9tyy888F 	<ftyy):;;;;F""4)964?SSSSSr   c                 @    |                      |dd |j                   d S )Nz	cdef enum)r   rJ   rO   s     r   visit_CEnumDefNodez$DeclarationWriter.visit_CEnumDefNode   s$    ""4tTZHHHHHr   c                    |                      |j                   |j        r|                     d|j        z             |j        r/|                     d           |                     |j                   |                                  d S )Nr   rF   )r<   rz   r   r   valuer.   r@   rO   s     r   visit_CEnumDefItemNodez(DeclarationWriter.visit_CEnumDefItemNode   sz    ty!!!: 	,HHX
*+++: 	#HHVJJtz"""r   c                 "   |j         rJ |j        r|j        D ]}|                     |           |                     d           |                     |j                   |j        rz|                     d           |j        r/|                     |j                   |                     d           |                     |j                   |                     d           |                     d           | 	                    |j
                   d S )Nzcdef class rt   r   ru   r   )module_name
decoratorsr.   r<   r   
class_namebase_class_namebase_class_moduler@   rQ   ra   )r   rP   	decorators      r   visit_CClassDefNodez%DeclarationWriter.visit_CClassDefNode   s   ####? 	&!_ & &	

9%%%%~&&&!!! 	HHTNNN% /000HHT)***HHTNNNTTY'''''r   c                     |                      d           |                     |j                   |                     d           |                     |j                   |                                  d S )Nr   r   )r<   r.   r   r   r   r@   rO   s     r   visit_CTypeDefNodez$DeclarationWriter.visit_CTypeDefNode   s\    |$$$

4>"""

4?###r   c                     |                      d|j        z             |                     |j                   |                     d           |                     |j                   d S )Nzdef %s():)r<   rz   rM   rv   r@   rQ   ra   rO   s     r   visit_FuncDefNodez#DeclarationWriter.visit_FuncDefNode   s_    zDI-...!!$),,,UTY'''''r   c                    |                      |j        rdnd           |j        rB|                     d                    |j                             |                     d           |j        dk    r/|                     |j                   |                     d           |j        r|                     d           |j        r;|                     |j                   |j        j	        |                     d           |                     |j
        j                   |                     d           |                     |j
        j                   |                     d           |                     |j                   d S )Ncpdef r   r   privateapi rt   r   )r<   overridable	modifiersr   r   r   apir   r.   rz   r   rf   rM   rv   r@   rQ   ra   rO   s     r   visit_CFuncDefNodez$DeclarationWriter.visit_CFuncDefNode   sL   D$4Byy(CCC> 	HHSXXdn--...HHSMMM?i''HHT_%%%HHTNNN8 	HHW> 	JJt~&&&~". 	

4?'(((!!$/"6777UTY'''''r   c                    t          |j        t                    r|j        j        H|                     |j                   |j                                        r|                     d           |                     |j                   |j        1|                     d           |                     |j                   d S d S )Nr   rF   )	
isinstancer   r   rz   r.   r   declared_namer   rI   rO   s     r   visit_CArgDeclNodez$DeclarationWriter.visit_CArgDeclNode  s     $.*=>> 		#/JJt~&&& ,,.. 

4?###<#HHVJJt|$$$$$ $#r   c                     |                      d           |                     |j                   |j        r/|                     d           |                     |j                   |                                  d S )Nzcimport  as )r<   r   r   as_namer@   rO   s     r   visit_CImportStatNodez'DeclarationWriter.visit_CImportStatNode#  sj    {###!"""< 	#HHWHHT\"""r   c                    |                      d           |                     |j                   |                     d           d}|j        D ]f\  }}}}|J |rd}n|                     d           |                     |           |r*|                     d           |                     |           g|                                  d S )Nzfrom z	 cimport TFrG   r   )r<   r   r   imported_namesr@   )r   rP   firstposrz   r   r   s          r   visit_FromCImportStatNodez+DeclarationWriter.visit_FromCImportStatNode+  s    x   !"""(,(; 		" 		"$Cw<<<  HHTNNN "!!!!!!r   c                 :    |                      |j                   d S r   ry   rO   s     r   visit_NameNodez DeclarationWriter.visit_NameNode<  r|   r   c                     |                      d           |                     |j                   |                                  d S )N@)r<   r.   r   r@   rO   s     r   visit_DecoratorNodez%DeclarationWriter.visit_DecoratorNode?  s9    s

4>"""r   c                 X    |                      d           |                                  d S )Nr   rB   rO   s     r   visit_PassStatNodez$DeclarationWriter.visit_PassStatNodeD  s%    wr   r   r   )F).r   r   r    __doc__r;   r   r1   r6   r9   r<   r   r   r@   rC   rM   rQ   rV   r[   r^   rc   rg   rk   rq   rw   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __classcell__r+   s   @r   r#   r#       s         M                 B B B B  F F F     . . . .  
J J J! ! !! ! !( ( (          	  	  	 $ $ $  
      &
F 
F 
FT T TI I I  ( ( ("  ( ( (( ( (0% % %$    "    
      r   r#   c                       e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )StatementWriterzD
    A Cython code writer for most language statement features.
    c                     |                                   |                     |j                   |                     d           |                     |j                   |                                  d S NrF   )r<   r.   lhsr   rhsr@   rO   s     r   visit_SingleAssignmentNodez*StatementWriter.visit_SingleAssignmentNodeN  s]    

48

48r   c                     |                                   |j        D ],}|                     |           |                     d           -|                     |j                   |                                  d S r   )r<   lhs_listr.   r   r   r@   )r   rP   r   s      r   visit_CascadedAssignmentNodez,StatementWriter.visit_CascadedAssignmentNodeU  sl    = 	 	CJJsOOOHHV

48r   c                     |                      d           |                     |j        j                   |j        s|                     d           |                                  d S )Nzprint ,)r<   rM   	arg_tuplerv   append_newliner   r@   rO   s     r   visit_PrintStatNodez#StatementWriter.visit_PrintStatNode]  sX    y!!!!!$."5666" 	HHTNNNr   c                    |                      d           |j        j        r |                     |j        j                   n|                     |j                   |                     d           |                     |j        j                   | 	                    d           | 
                    |j                   |j        1|                     d           | 
                    |j                   d S d S )Nzfor  in r   else:)r<   targetis_sequence_constructorrM   rv   r.   r   iteratorsequencer@   rQ   ra   else_clauserC   rO   s     r   visit_ForInStatNodez#StatementWriter.visit_ForInStatNoded  s    w;. 	$%%dk&67777JJt{###

4=)***TTY''''IIh  !122222 ('r   c                 >   |                      d           |                     |j        d         j                   |                     d           |                     |j        d         j                   |j        dd          D ]`}|                      d           |                     |j                   |                     d           |                     |j                   a|j        1|                     d           |                     |j                   d S d S )Nzif r   r   r   zelif r   )	r<   r.   
if_clauses	conditionr@   rQ   ra   r   rC   )r   rP   clauses      r   visit_IfStatNodez StatementWriter.visit_IfStatNoder  s    	v

4?1%/000ST_Q/4555oabb) 	. 	.FNN7###JJv'(((LL  ----'IIg  !122222 ('r   c                 2   |                      d           |                     |j                   |                     d           |                     |j                   |j        1|                     d           |                     |j                   d S d S )Nzwhile r   r   )r<   r.   r   r@   rQ   ra   r   rC   rO   s     r   visit_WhileStatNodez#StatementWriter.visit_WhileStatNode  s    y!!!

4>"""TTY''''IIg  !122222 ('r   c                 0    |                      d           d S )NcontinuerC   rO   s     r   visit_ContinueStatNodez&StatementWriter.visit_ContinueStatNode  s    		+r   c                 0    |                      d           d S )Nbreakr   rO   s     r   visit_BreakStatNodez#StatementWriter.visit_BreakStatNode  s    		(r   c                 :    |                      |j                   d S r   )rM   rv   rO   s     r   visit_SequenceNodez"StatementWriter.visit_SequenceNode  s    !!$),,,,,r   c                     |                                   |                     |j                   |                                  d S r   )r<   r.   exprr@   rO   s     r   visit_ExprStatNodez"StatementWriter.visit_ExprStatNode  s7    

49r   c                     |                                   |                     |j                   |                     d|j        z             |                     |j                   |                                  d S )Nz %s= )r<   r.   r   r   operatorr   r@   rO   s     r   visit_InPlaceAssignmentNodez+StatementWriter.visit_InPlaceAssignmentNode  sd    

48DM)***

48r   c                 V   |                                   |                     d           |                     |j                   |j        /|                     d           |                     |j                   |                     d           |                     |j                   d S )Nzwith r   r   )r<   r   r.   managerr   r@   rQ   ra   rO   s     r   visit_WithStatNodez"StatementWriter.visit_WithStatNode  s    

4<   ;"HHWJJt{###TTY'''''r   c                     |                      d           |                     |j                   |                      d           |                     |j                   d S )Ntry:zfinally:)rC   rQ   ra   finally_clauserO   s     r   visit_TryFinallyStatNodez(StatementWriter.visit_TryFinallyStatNode  sY    		'TY'''		+T011111r   c                     |                      d           |                     |j                   |j        D ]}|                     |           |j        |                     |j                   d S d S )Nr  )rC   rQ   ra   except_clausesr.   r   )r   rP   xs      r   visit_TryExceptStatNodez'StatementWriter.visit_TryExceptStatNode  sy    		'TY'''$ 	 	AJJqMMMM'JJt'((((( ('r   c                 f   |                      d           |j        /|                     d           |                     |j                   |j        /|                     d           |                     |j                   |                     d           |                     |j                   d S )Nexceptr   rG   r   )r<   patternr   r.   r   r@   rQ   ra   rO   s     r   visit_ExceptClauseNodez&StatementWriter.visit_ExceptClauseNode  s    y!!!<#HHTNNNJJt|$$$;"HHUOOOJJt{###STY'''''r   c                     |                      d           |j        /|                     d           |                     |j                   |                                  d S )Nreturnr   )r<   r   r   r.   r@   rO   s     r   visit_ReturnStatNodez$StatementWriter.visit_ReturnStatNode  sP    x   :!HHTNNNJJtz"""r   c                 0    |                      d           d S )Nraiser   rO   s     r   visit_ReraiseStatNodez%StatementWriter.visit_ReraiseStatNode  s    		'r   c                 J    |                      d|j        j        z             d S )Nz(import %s))r   r   r   rO   s     r   visit_ImportNodez StatementWriter.visit_ImportNode  s%    $"2"8899999r   c                     d}|j         D ]}d| j        |fz  | j        |<   |dz  }| xj        dz  c_        |                     |j                   dS )z
        Temporaries are output like $1_1', where the first number is
        an index of the TempsBlockNode and the second number is an index
        of the temporary which that block allocates.
        r   z$%d_%dr   N)tempsr)   r(   r.   ra   )r   rP   idxhandles       r   visit_TempsBlockNodez$StatementWriter.visit_TempsBlockNode  sl     j 	 	F%-1Dc0J%JDN6"1HCCq 

49r   c                 P    |                      | j        |j                            d S r   )r   r(   r%  rO   s     r   visit_TempRefNodez!StatementWriter.visit_TempRefNode  s#    ,-----r   N)r   r   r    r   r   r   r   r   r   r   r   r  r  r  r
  r  r  r  r  r  r  r!  r&  r(  r!   r   r   r   r   I  sJ              3 3 33 3 3 3 3 3    - - -  
  ( ( (2 2 2) ) )	( 	( 	(    : : :  . . . . .r   r   c            
           e Zd ZdZdQ fd	Zd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd ZdRdZd Zd Zd ZdSdZd Zd Zd Zd Zd ZddddddZi d d!d"d#d$d%d&d%d'd%d(d%d)d%d*d%d+d%d,d%d-d%d.d%d/d0d1d2d3d4d5d6d7d6d8d8d9d9d9d9d9d:d;Zd< Zd= Zd> Z d? Z!d@ Z"dA Z#dB Z$dC Z%dD Z&dE Z'dF Z(dG Z)dH Z*dI Z+dJ Z,dK Z-	 dSdLZ.dM Z/dN Z0dO Z1dP Z2 xZ3S )TExpressionWriterzL
    A Cython code writer that is intentionally limited to expressions.
    Nc                 |    t          t          |                                            |d}|| _        dg| _        d S )Nr   r   )r%   r*  r   r&   
precedencer*   s     r   r   zExpressionWriter.__init__  s>    %%..000>F#r   c                 :    |                      |           | j        S r   r-   r/   s     r   r1   zExpressionWriter.write  r2   r   c                 &    | xj         |z  c_         d S r   )r&   r   s     r   r   zExpressionWriter.put  s    qr   c                     | j                             |          r$| j         d t          |                    | _         d S d S r   )r&   endswithrH   r   s     r   removezExpressionWriter.remove  sB    ;"" 	0+hAwh/DKKK	0 	0r   c                     t          |          dk    rT|d d         D ],}|                     |           |                     d           -|                     |d                    d S d S )Nr   rE   rG   )rH   r.   r   )r   rJ   rL   s      r   rM   z%ExpressionWriter.comma_separated_list  sn    u::>>crc
    

4   JJuRy!!!!!	 >r   c                 &    t          d|z            rS   rT   rO   s     r   rV   zExpressionWriter.visit_Node  rW   r   c                 :    |                      |j                   d S r   r   r   rO   s     r   visit_IntNodezExpressionWriter.visit_IntNode      r   c                 :    |                      |j                   d S r   r5  rO   s     r   visit_FloatNodez ExpressionWriter.visit_FloatNode  r7  r   c                 0    |                      d           d S )NNoner   rO   s     r   visit_NoneNodezExpressionWriter.visit_NoneNode  s    r   c                 :    |                      |j                   d S r   ry   rO   s     r   r   zExpressionWriter.visit_NameNode  r|   r   c                 0    |                      d           d S )Nz...r<  rO   s     r   visit_EllipsisNodez#ExpressionWriter.visit_EllipsisNode  s    r   c                 T    |                      t          |j                             d S r   r   strr   rO   s     r   visit_BoolNodezExpressionWriter.visit_BoolNode  "    TZ!!!!!r   c                 T    |                      t          |j                             d S r   rB  rO   s     r   visit_ConstNodez ExpressionWriter.visit_ConstNode  rE  r   c                 d    |                      |j                   |                      d           d S )Njr5  rO   s     r   visit_ImagNodezExpressionWriter.visit_ImagNode  s)    r   r   c                     t          |j                  }|d         dv r
|dd          }|                     ||           d S )Nr   ubr   )reprr   r   )r   rP   prefixrepr_vals       r   emit_stringzExpressionWriter.emit_string  sN    
##A;$|HFFHH-.....r   c                 2    |                      |d           d S )NbrP  rO   s     r   visit_BytesNodez ExpressionWriter.visit_BytesNode!      t$$$$$r   c                 0    |                      |           d S r   rS  rO   s     r   visit_StringNodez!ExpressionWriter.visit_StringNode$  s    r   c                 2    |                      |d           d S )NurS  rO   s     r   visit_UnicodeNodez"ExpressionWriter.visit_UnicodeNode'  rU  r   r   r   c                     |\  }}|                                 }|                     |           |                     |           |                     |           d S r   )subexpr_nodesr   rM   )r   rP   parens
open_parenclose_parenrJ   s         r   emit_sequencezExpressionWriter.emit_sequence*  s[    "(
K""$$!!%(((r   c                 2    |                      |d           d S )N[]ra  rO   s     r   visit_ListNodezExpressionWriter.visit_ListNode1      4'''''r   c                 2    |                      |d           d S )N()rd  rO   s     r   visit_TupleNodez ExpressionWriter.visit_TupleNode4  rf  r   c                     t          |                                          dk    r|                     |d           d S |                     d           d S )Nr   {}zset())rH   r]  ra  r   rO   s     r   visit_SetNodezExpressionWriter.visit_SetNode7  sU    t!!##$$q((tU+++++HHXr   c                 2    |                      |d           d S )Nrk  rd  rO   s     r   visit_DictNodezExpressionWriter.visit_DictNode=  rf  r   c                     |                      |j                   |                     d           |                      |j                   d S Nz: )r.   keyr   r   rO   s     r   visit_DictItemNodez#ExpressionWriter.visit_DictItemNode@  s?    

48

4:r         )not!+-~orr   and   in   not_inisis_not<z<=>z>=z!=z==|   ^   rj      z<<   z>>	   
      )rw  rx  r   r   /z//%**c                     | j         d         }||k    r|                     d           | j                             |           d S )NrE   rt   )r,  r   r   )r   new_precold_precs      r   operator_enterzExpressionWriter.operator_enterX  sD    ?2&hHHTNNNx(((((r   c                     | j         dd          \  }}||k    r|                     d           | j                                          d S )Nru   )r,  r   pop)r   r  r  s      r   operator_exitzExpressionWriter.operator_exit^  sK    !_RSS1(hHHTNNNr   c                     d}| j         |         }|                     |           |                     d           |                     |j                   |                                  d S )Nru  znot )unop_precedencer  r   r.   operandr  r   rP   opprecs       r   visit_NotNodezExpressionWriter.visit_NotNoded  sf    #B'D!!!

4<   r   c                     |j         }| j        |         }|                     |           |                     d|j         z             |                     |j                   |                                  d S )Nz%s)r	  r  r  r   r.   r  r  r  s       r   visit_UnopNodezExpressionWriter.visit_UnopNodel  so    ]#B'D!!!&'''

4<   r   c                 \   |j         }| j                            |d          }|                     |           |                     |j                   |                     d|                    dd          z             |                     |j                   | 	                                 d S )Nr   z %s _r   )
r	  binop_precedencegetr  r.   operand1r   replaceoperand2r  r  s       r   visit_BinopNodez ExpressionWriter.visit_BinopNodet  s    ]$((Q//D!!!

4=!!!2::c3///000

4=!!!r   c                 0    |                      |           d S r   r  rO   s     r   visit_BoolBinopNodez$ExpressionWriter.visit_BoolBinopNode}      T"""""r   c                 0    |                      |           d S r   r  rO   s     r   visit_PrimaryCmpNodez%ExpressionWriter.visit_PrimaryCmpNode  r  r   c                    |                      |j                   |                     d           t          |j        t
                    rJ|j                                        r|                     |j                   n0|                     d           n|                      |j                   |                     d           d S )Nrn   rh  ro   )r.   rf   r   r   index	TupleNoder]  ra  rO   s     r   visit_IndexNodez ExpressionWriter.visit_IndexNode  s    

49dj),, 	#z''))  ""4:....JJtz"""r   c                    |                      |j                   |                     d           |j        r|                      |j                   |                     d           |j        r|                      |j                   |j        r/|                     d           |                      |j                   |                     d           d S )Nrn   r   ro   )r.   rf   r   startstopslicerO   s     r   visit_SliceIndexNodez%ExpressionWriter.visit_SliceIndexNode  s    

49: 	#JJtz"""9 	"JJty!!!: 	#HHTNNNJJtz"""r   c                 B   |j         j        s|                     |j                    |                     d           |j        j        s|                     |j                   |j        j        s1|                     d           |                     |j                   d S d S )Nr   )r  is_noner.   r   r  steprO   s     r   visit_SliceNodez ExpressionWriter.visit_SliceNode  s    z! 	#JJtz"""y  	"JJty!!!y  	"HHTNNNJJty!!!!!	" 	"r   c                     |                      |j                   |                     d           |                      |j                   |                     d           |                      |j                   d S )N if z else )r.   true_valr   test	false_valrO   s     r   visit_CondExprNodez#ExpressionWriter.visit_CondExprNode  sh    

4=!!!

49

4>"""""r   c                 t    |                      |j                   |                     d|j        z             d S )Nz.%s)r.   objr   r   rO   s     r   visit_AttributeNodez$ExpressionWriter.visit_AttributeNode  s5    

48$.()))))r   c                     |                      |j                   |                     d           |                     |j                   |                     d           d S rs   )r.   functionr   rM   rv   rO   s     r   visit_SimpleCallNodez%ExpressionWriter.visit_SimpleCallNode  sN    

4=!!!!!$),,,r   c                 ^   |d S t          |t                    r6|                     |j                   |                     |j                   d S t          |t
                    rC|                                D ],}|                     |           |                     d           -d S t          |t                    rF|                     d           |                     |j
                   |                     d           d S |                     |           |                     d           d S )NrG   r   )r   AddNodeemit_pos_argsr  r  r  r]  r.   r   AsTupleNodeargr   rP   r  s      r   r  zExpressionWriter.emit_pos_args  s   <FdG$$ 	t}---t}-----i(( 
	**,,    

4       k** 	HHSMMMJJtx   HHUOOOOOJJtHHUOOOOOr   c                    |d S t          |t                    r.|                                D ]}|                     |           d S t          |t                    rj|                                D ]S}|                     d|j        j        z             |                     |j                   |                     d           Td S |                     d           |                     |           |                     d           d S )Nz%s=rG   r  )	r   MergedDictNoder]  emit_kwd_argsDictNoder   rq  r   r.   r  s      r   r  zExpressionWriter.emit_kwd_args  s   <FdN++ 	**,, ) )""4(((() )h'' 	**,,    $(.0111

4:&&&   
 HHUOOOJJtHHUOOOOOr   c                     |                      |j                   |                     d           |                     |j                   |                     |j                   |                     d           |                     d           d S )Nrt   rG   ru   )r.   r  r   r  r   r  r   r1  rO   s     r   visit_GeneralCallNodez&ExpressionWriter.visit_GeneralCallNode  sx    

4=!!!4/0004,---Er   c                    |\  }}|                      |           |                     |           |                      d           |                     |           |                      d           |                     |           |r*|                      d           |                     |           |                      |           d S )Nz for r   r  )r   r.   )r   ra   r   r   r   r^  r_  r`  s           r   emit_comprehensionz#ExpressionWriter.emit_comprehension  s     #)
K

4

6

8 	"HHWJJy!!!r   c                 :    |                      |j                   d S r   )r.   r  rO   s     r   visit_ComprehensionAppendNodez.ExpressionWriter.visit_ComprehensionAppendNode  s    

49r   c                     |                      |j                   |                     d           |                      |j                   d S rp  )r.   key_exprr   
value_exprrO   s     r   !visit_DictComprehensionAppendNodez2ExpressionWriter.visit_DictComprehensionAppendNode  s?    

4=!!!

4?#####r   c                 @   dddd}||j                                                  }|j        j        }|j        j        }|j        j        j        }d }t          |d          r$|j        d         j	        }|j        d         j        }| 
                    |||||           d S )Nrc  rk  )listdictsetr   r   )typepy_type_nameloopra   r   r   r   hasattrr   r   r  )r   rP   tpmapr^  ra   r   r   r   s           r   visit_ComprehensionNodez(ExpressionWriter.visit_ComprehensionNode  s    e<<ty--//0y~!9%.	4&& 	+*4I?1%*Dfh	6JJJJJr   c                 D   |j         j        }|j         j        }|j         j        j        }d }t          |d          r/|j        d         j        }|j        d         j        j        j	        }nt          |d          r|j        j	        }| 
                    ||||d           d S )Nr   r   r  rh  )r  ra   r   r   r   r  r   r   r  r  r  )r   rP   ra   r   r   r   s         r   visit_GeneratorExpressionNodez.ExpressionWriter.visit_GeneratorExpressionNode  s    y~!9%.	4&& 	!*4I?1%*/3DDT6"" 	!9=Dfh	5IIIIIr   r   r   )r[  )4r   r   r    r   r   r1   r   r1  rM   rV   r6  r9  r=  r   r@  rD  rG  rJ  rP  rT  rW  rZ  ra  re  ri  rl  rn  rr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   s   @r   r*  r*    s                 0 0 0" " "J J J          " " "" " "  / / / /% % %  % % %   ( ( (( ( (  ( ( (   qbr Oaq 	a	 1	 #A	 (0	 58	 =A!	 FI!	 NRST	 W[\]	 `def	
 	Q 	Q 	Q 	a q Qbr"  ) ) )        # # ## # #
 
 
  " " "# # #* * *    $      #-     $ $ $
K K KJ J J J J J Jr   r*  c                   $    e Zd ZdZd Zd Zd ZdS )	PxdWriterz\
    A Cython code writer for everything supported in pxd files.
    (currently unused)
    c                 z    t          d                    |                     |          j                             |S )N
)printr   r1   r   rO   s     r   __call__zPxdWriter.__call__  s0    ejjD))/00111r   c                    |j         r|                     d           n|                     d           |j        rB|                     d                    |j                             |                     d           |j        dk    r/|                     |j                   |                     d           |j        r|                     d           |                     |j                   d S )Nr   r   r   r   r   )	r   r<   r   r   r   r   r   r.   r   rO   s     r   r   zPxdWriter.visit_CFuncDefNode  s     	%NN9%%%%NN8$$$> 	HHSXXdn--...HHSMMM?i''HHT_%%%HHTNNN8 	HHW

4?#####r   c                     d S r   r!   rO   s     r   visit_StatNodezPxdWriter.visit_StatNode-  s    r   N)r   r   r    r   r  r   r  r!   r   r   r  r    sK         
  $ $ $    r   r  c                       e Zd ZdZdS )
CodeWriterz(
    A complete Cython code writer.
    N)r   r   r    r   r!   r   r   r  r  1  s           r   r  N)r   
__future__r   r   Compiler.Visitorr   Compiler.ExprNodesCompiler.Nodesr   objectr
   r#   r   r*  r  r  r!   r   r   <module>r     s    7 6 6 6 6 6 6 6 ) ) ) ) ) ) ! ! ! ! / / / / / /    &   "f f f f f f f fR	U. U. U. U. U.' U. U. U.ppJ pJ pJ pJ pJ{ pJ pJ pJf	    !#3   :    "2     r   