+
    VBi^                         R t ^RIHt ^RI5 ^RIHt  ! R R4      t ! R R]4      t ! R R	]4      t ! R
 R]4      t	 ! R R]]	4      t
 ! R R]]	4      tR# )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).
)TreeVisitor)*)CSimpleBaseTypeNodec                   8   a  ] tR t^t o R tR tR tR tRtV t	R# )LinesResultc                "    . V n         R V n        R#  Nlinessselfs   &6/usr/lib/python3.14/site-packages/Cython/CodeWriter.py__init__LinesResult.__init__   s    
    c                8    V ;P                   V,          un         R # N)r   r   r   s   &&r   putLinesResult.put   s    !r   c                ^    V P                   P                  V P                  4       R V n        R# r   )r   appendr   r   s   &r   newlineLinesResult.newline   s    

$&&!r   c                H    V P                  V4       V P                  4        R # r   )r   r   r   s   &&r   putlineLinesResult.putline   s    r   r
   N)
__name__
__module____qualname____firstlineno__r   r   r   r   __static_attributes____classdictcell____classdict__s   @r   r   r      s      r   r   c                   4  a a ] tR t^t oRtRtR,V 3R lltR tR tR t	R-R lt
R tR	 tR-R
 ltR tR.R ltR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR t R t!R t"R  t#R! t$R" t%R# t&R$ t'R% t(R& t)R' t*R( t+R) t,R* t-R+t.Vt/V ;t0# )/DeclarationWriterz=
A Cython code writer that is limited to declarations nodes.
z    c                v   < \         SV `  4        Vf   \        4       pWn        ^ V n        / V n        ^ V n        R # r   )superr   r   result
numindents	tempnamestempblockindex)r   r+   	__class__s   &&r   r   DeclarationWriter.__init__&   s5    > ]Fr   c                <    V P                  V4       V P                  # r   visitr+   r   trees   &&r   writeDeclarationWriter.write/       

4{{r   c                8    V ;P                   ^,          un         R#    Nr,   r   s   &r   indentDeclarationWriter.indent3       1r   c                8    V ;P                   ^,          un         R# r:   r<   r   s   &r   dedentDeclarationWriter.dedent6   r?   r   c                    V P                   P                  V P                  V P                  ,          V,           4       R # r   )r+   r   indent_stringr,   r   s   &&r   	startlineDeclarationWriter.startline9   s&    **T__<q@Ar   c                <    V P                   P                  V4       R # r   )r+   r   r   s   &&r   r   DeclarationWriter.put<   s    r   c                    V P                   P                  V P                  V P                  ,          V,           4       R # r   )r+   r   rD   r,   r   s   &&r   r   DeclarationWriter.putline?   s(    D..@1DEr   c                <    V P                   P                  V4       R # r   )r+   r   r   s   &&r   endlineDeclarationWriter.endlineB   s    Ar   c                H    V P                  V4       V P                  4        R # r   rE   rL   r   s   &&r   lineDeclarationWriter.lineE   s    qr   c                   \        V4      ^ 8  d   VRR  Fg  pV P                  V4       V'       d;   VP                  e-   V P                  R4       V P                  VP                  4       V P                  R4       Ki  	  V P                  VR,          4       V'       dM   VR,          P                  e6   V P                  R4       V P                  VR,          P                  4       R# R# R# R# )    N = , )lenr3   defaultr   )r   items
output_rhsitems   &&& r   comma_separated_list&DeclarationWriter.comma_separated_listI   s    u:>cr


4 $,,":HHUOJJt||, # JJuRy!eBi//;

59,,- <z r   c                h    V P                  4        V P                  V4       V P                  4        R # r   )r=   r3   rA   r   nodes   &&r   _visit_indented!DeclarationWriter._visit_indentedV   s     

4r   c                &    \        R V,          4      h)"Node not handled by serializer: %r)AssertionErrorr_   s   &&r   
visit_NodeDeclarationWriter.visit_Node[   s    ADHIIr   c                (    V P                  V4       R # r   visitchildrenr_   s   &&r   visit_ModuleNode"DeclarationWriter.visit_ModuleNode^       4 r   c                (    V P                  V4       R # r   ri   r_   s   &&r   visit_StatListNode$DeclarationWriter.visit_StatListNodea   rm   r   c                    VP                   f   RpMRVP                   ,          pV P                  RV,          4       V P                  VP                  4       R # )Nr   z"%s"zcdef extern from %s:)include_filer   ra   body)r   r`   files   && r   visit_CDefExternNode&DeclarationWriter.visit_CDefExternNoded   sG    $DD---D+d23TYY'r   c                ^    V P                  R 4       V P                  VP                  4       R# )r   Nr   r3   baser_   s   &&r   visit_CPtrDeclaratorNode*DeclarationWriter.visit_CPtrDeclaratorNodel       

499r   c                ^    V P                  R 4       V P                  VP                  4       R# )&Nrx   r_   s   &&r   visit_CReferenceDeclaratorNode0DeclarationWriter.visit_CReferenceDeclaratorNodep   r|   r   c                    V P                  VP                  4       V P                  R 4       VP                  e   V P                  VP                  4       V P                  R4       R# )[N])r3   ry   r   	dimensionr_   s   &&r   visit_CArrayDeclaratorNode,DeclarationWriter.visit_CArrayDeclaratorNodet   sB    

499>>%JJt~~&r   c                    V P                  VP                  4       V P                  R 4       V P                  VP                  4       V P                  R4       R# ()N)r3   ry   r   r\   argsrL   r_   s   &&r   visit_CFuncDeclaratorNode+DeclarationWriter.visit_CFuncDeclaratorNode{   s;    

499!!$)),Sr   c                <    V P                  VP                  4       R # r   r   namer_   s   &&r   visit_CNameDeclaratorNode+DeclarationWriter.visit_CNameDeclaratorNode       r   c                   VP                   '       d   V P                  RVP                  ,          4       VP                  ^ 8  d%   V P                  RVP                  ) ,          4       M3VP                  ^ 8  d#   V P                  RVP                  ,          4       VP                  e   V P                  VP                  4       R# R# )	unsigned zshort zlong N)r   r	   zsigned )is_basic_c_typer   signedlongnessr   r_   s   &&r   visit_CSimpleBaseTypeNode+DeclarationWriter.visit_CSimpleBaseTypeNode   s    HH1$++>?}}q T]]N23"4==0199 HHTYY !r   c                r    V P                  VP                  4       V P                  VP                  4       R # r   )r3   	base_type
declaratorr_   s   &&r   visit_CComplexBaseTypeNode,DeclarationWriter.visit_CComplexBaseTypeNode   s"    

4>>"

4??#r   c                    V P                  VP                  4       V P                  R 4       V P                  VP                  4       R# ).N)r3   r   r   r   r_   s   &&r   visit_CNestedBaseTypeNode+DeclarationWriter.visit_CNestedBaseTypeNode   s-    

4>>"r   c                    V P                  VP                  4       V P                  R 4       V P                  VP                  VP
                  P                  ,           4       V P                  R4       R# )r   r   N)r3   base_type_noder   r\   positional_argskeyword_argskey_value_pairsr_   s   &&r   visit_TemplatedTypeNode)DeclarationWriter.visit_TemplatedTypeNode   sO    

4&&'!!$"6"69J9J9Z9Z"Z[r   c                    V P                  R 4       V P                  VP                  4       V P                  R4       V P	                  VP
                  RR7       V P                  4        R# )cdef  T)rZ   N)rE   r3   r   r   r\   declaratorsrL   r_   s   &&r   visit_CVarDefNode#DeclarationWriter.visit_CVarDefNode   sK    w

4>>"!!$"2"2t!Dr   c                    V P                  V4       VP                  '       d]   V P                  R 4       V P                  VP                  4       VP                  e#   V P                  RVP                  ,          4       V'       d   V P                  V4       V P	                  R4       V P                  4        V'       g   V P                  R4       MV F  pV P                  V4       K  	  V P                  4        R# )r   N "%s":pass)	rE   r   r   cnamerL   r=   r   r3   rA   )r   r`   declextras
attributes	attributes   &&&&& r   _visit_container_node'DeclarationWriter._visit_container_node   s    t999HHSMHHTYYzz%4::-.HHVSLL '	

9% (r   c                    VP                   '       d   R pMRpVP                  R8X  d
   VR,          pVP                  '       d
   VR,          pW!P                  ,          pV P	                  WRVP
                  4       R# )	ctypedef r   publiczpublic zpacked N)typedef_flag
visibilitypackedkindr   r   )r   r`   r   s   && r   visit_CStructOrUnionDefNode-DeclarationWriter.visit_CStructOrUnionDefNode   sc    DD??h&ID;;;ID		""4tT__Er   c                "   R pVP                   '       d#   RRP                  VP                   4      ,          pVP                  '       d*   VRRP                  VP                  4      ,          ,          pV P                  VRW!P                  4       R# )r	   z[%s]rU   z(%s)zcdef cppclassN)	templatesjoinbase_classesr   r   )r   r`   r   s   && r   visit_CppClassNode$DeclarationWriter.visit_CppClassNode   sg    >>>dii77Fftyy):):;;;F""4&//Rr   c                B    V P                  VR RVP                  4       R# )z	cdef enumN)r   rY   r_   s   &&r   visit_CEnumDefNode$DeclarationWriter.visit_CEnumDefNode   s    ""4dDJJGr   c                @   V P                  VP                  4       VP                  '       d#   V P                  R VP                  ,          4       VP                  '       d-   V P                  R4       V P                  VP                  4       V P                  4        R# )r   rT   N)rE   r   r   r   valuer3   rL   r_   s   &&r   visit_CEnumDefItemNode(DeclarationWriter.visit_CEnumDefItemNode   s]    tyy!:::HHWtzz)*:::HHUOJJtzz"r   c                d   VP                   '       d   Q hVP                  '       d%   VP                   F  pV P                  V4       K  	  V P                  R 4       V P	                  VP
                  4       VP                  '       d|   V P	                  R4       VP                  '       d-   V P	                  VP                  4       V P	                  R4       V P	                  VP                  4       V P	                  R4       V P                  R4       V P                  VP                  4       R# )zcdef class r   r   r   r   N)module_name
decoratorsr3   rE   r   
class_namebase_class_namebase_class_modulerL   ra   rs   )r   r`   	decorators   && r   visit_CClassDefNode%DeclarationWriter.visit_CClassDefNode   s    #####???!__	

9% -}%!HHSM%%%//0HHT))*HHSMSTYY'r   c                    V P                  R 4       V P                  VP                  4       V P                  R4       V P                  VP                  4       V P                  4        R# )r   r   N)rE   r3   r   r   r   rL   r_   s   &&r   visit_CTypeDefNode$DeclarationWriter.visit_CTypeDefNode   sB    {#

4>>"

4??#r   c                    V P                  R VP                  ,          4       V P                  VP                  4       V P	                  R4       V P                  VP                  4       R# )zdef %s():N)rE   r   r\   r   rL   ra   rs   r_   s   &&r   visit_FuncDefNode#DeclarationWriter.visit_FuncDefNode   sG    y499,-!!$)),TTYY'r   c                d   T P                  VP                  '       d   R MR4       VP                  '       d<   V P                  RP	                  VP                  4      4       V P                  R4       VP
                  R8w  d-   V P                  VP
                  4       V P                  R4       VP                  '       d   V P                  R4       VP                  '       dE   V P                  VP                  4       VP                  P                  e   V P                  R4       V P                  VP                  P                  4       V P                  R4       V P                  VP                  P                  4       V P                  R4       V P                  VP                   4       R# )cpdef r   r   privateapi Nr   r   )rE   overridable	modifiersr   r   r   apir   r3   r   r   ry   r\   r   rL   ra   rs   r_   s   &&r   visit_CFuncDefNode$DeclarationWriter.visit_CFuncDefNode   s   4#3#3#3xA>>>HHSXXdnn-.HHSM??i'HHT__%HHSM888HHV>>>JJt~~&~~"". 	

4??''(!!$//"6"67TTYY'r   c                   \        VP                  \        4      '       d   VP                  P                  eM   V P	                  VP                  4       VP
                  P                  4       '       d   V P                  R4       V P	                  VP
                  4       VP                  e/   V P                  R4       V P	                  VP                  4       R # R # )Nr   rT   )	
isinstancer   r   r   r3   r   declared_namer   rX   r_   s   &&r   visit_CArgDeclNode$DeclarationWriter.visit_CArgDeclNode  s     $..*=>>##/JJt~~& ,,..

4??#<<#HHUOJJt||$ $r   c                    V P                  R 4       V P                  VP                  4       VP                  '       d-   V P                  R4       V P                  VP                  4       V P	                  4        R# )zcimport  as N)rE   r   r   as_namerL   r_   s   &&r   visit_CImportStatNode'DeclarationWriter.visit_CImportStatNode"  sN    z"!!"<<<HHVHHT\\"r   c                   V P                  R 4       V P                  VP                  4       V P                  R4       RpVP                   Fe  w  r4rVVe   Q hV'       d   RpMV P                  R4       V P                  V4       V'       g   KC  V P                  R4       V P                  V4       Kg  	  V P	                  4        R# )zfrom z	 cimport TNFrU   r   )rE   r   r   imported_namesrL   )r   r`   firstposr   r   r   s   &&     r   visit_FromCImportStatNode+DeclarationWriter.visit_FromCImportStatNode*  s    w!!"(,(;(;$Cw<<HHTNw ! )< 	r   c                <    V P                  VP                  4       R # r   r   r_   s   &&r   visit_NameNode DeclarationWriter.visit_NameNode;  r   r   c                ~    V P                  R 4       V P                  VP                  4       V P                  4        R# )@N)rE   r3   r   rL   r_   s   &&r   visit_DecoratorNode%DeclarationWriter.visit_DecoratorNode>  s'    s

4>>"r   c                H    V P                  R 4       V P                  4        R# )r   NrO   r_   s   &&r   visit_PassStatNode$DeclarationWriter.visit_PassStatNodeC  s    vr   )r,   r+   r.   r-   r   )r	   )F)1r   r    r!   r"   __doc__rD   r   r6   r=   rA   rE   r   r   rL   rP   r\   ra   rf   rk   ro   ru   rz   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$   __classcell__r/   r&   s   @@r   r(   r(      s      M BF.
J!!(	 $
&
FSH("((0%$"
 r   r(   c                      a  ] tR tRt o RtR tR tR tR tR t	R t
R	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tRtV tR# )StatementWriteriH  z<
A Cython code writer for most language statement features.
c                    V P                  4        V P                  VP                  4       V P                  R 4       V P                  VP                  4       V P                  4        R# rT   N)rE   r3   lhsr   rhsrL   r_   s   &&r   visit_SingleAssignmentNode*StatementWriter.visit_SingleAssignmentNodeM  s@    

488

488r   c                    V P                  4        VP                   F%  pV P                  V4       V P                  R 4       K'  	  V P                  VP                  4       V P                  4        R# r  )rE   lhs_listr3   r   r  rL   )r   r`   r  s   && r   visit_CascadedAssignmentNode,StatementWriter.visit_CascadedAssignmentNodeT  sK    ==CJJsOHHUO ! 	

488r   c                    V P                  R 4       V P                  VP                  P                  4       VP                  '       g   V P                  R4       V P                  4        R# )zprint ,N)rE   r\   	arg_tupler   append_newliner   rL   r_   s   &&r   visit_PrintStatNode#StatementWriter.visit_PrintStatNode\  sF    x !!$.."5"56"""HHSMr   c                   V P                  R 4       VP                  P                  '       d'   V P                  VP                  P                  4       MV P                  VP                  4       V P                  R4       V P                  VP                  P                  4       V P                  R4       V P                  VP                  4       VP                  e/   V P                  R4       V P                  VP                  4       R# R# )zfor  in r   Nelse:)rE   targetis_sequence_constructorr\   r   r3   r   iteratorsequencerL   ra   rs   else_clauserP   r_   s   &&r   visit_ForInStatNode#StatementWriter.visit_ForInStatNodec  s    v;;...%%dkk&6&67JJt{{#

4==))*STYY''IIg  !1!12 (r   c                V   V P                  R 4       V P                  VP                  ^ ,          P                  4       V P	                  R4       V P                  VP                  ^ ,          P                  4       VP                  R,           F[  pV P                  R4       V P                  VP                  4       V P	                  R4       V P                  VP                  4       K]  	  VP                  e/   V P                  R4       V P                  VP                  4       R# R# )zif r   :r;   NNzelif Nr  )	rE   r3   
if_clauses	conditionrL   ra   rs   r!  rP   )r   r`   clauses   && r   visit_IfStatNode StatementWriter.visit_IfStatNodeq  s     	u

4??1%//0ST__Q/445oob))FNN7#JJv''(LL  -	 *
 'IIg  !1!12 (r   c                .   V P                  R 4       V P                  VP                  4       V P                  R4       V P	                  VP
                  4       VP                  e/   V P                  R4       V P	                  VP                  4       R# R# )zwhile r   Nr  )rE   r3   r&  rL   ra   rs   r!  rP   r_   s   &&r   visit_WhileStatNode#StatementWriter.visit_WhileStatNode  sm    x 

4>>"STYY''IIg  !1!12 (r   c                (    V P                  R 4       R# )continueNrP   r_   s   &&r   visit_ContinueStatNode&StatementWriter.visit_ContinueStatNode  s    		*r   c                (    V P                  R 4       R# )breakNr/  r_   s   &&r   visit_BreakStatNode#StatementWriter.visit_BreakStatNode      		'r   c                <    V P                  VP                  4       R # r   )r\   r   r_   s   &&r   visit_SequenceNode"StatementWriter.visit_SequenceNode  s    !!$)),r   c                |    V P                  4        V P                  VP                  4       V P                  4        R # r   )rE   r3   exprrL   r_   s   &&r   visit_ExprStatNode"StatementWriter.visit_ExprStatNode  s%    

499r   c                    V P                  4        V P                  VP                  4       V P                  R VP                  ,          4       V P                  VP
                  4       V P                  4        R# )z %s= N)rE   r3   r  r   operatorr  rL   r_   s   &&r   visit_InPlaceAssignmentNode+StatementWriter.visit_InPlaceAssignmentNode  sJ    

4884==()

488r   c                J   V P                  4        V P                  R 4       V P                  VP                  4       VP                  e-   V P                  R4       V P                  VP                  4       V P                  R4       V P                  VP                  4       R# )zwith Nr   r   )rE   r   r3   managerr  rL   ra   rs   r_   s   &&r   visit_WithStatNode"StatementWriter.visit_WithStatNode  sl    

4<< ;;"HHVJJt{{#STYY'r   c                    V P                  R 4       V P                  VP                  4       V P                  R4       V P                  VP                  4       R# )try:zfinally:N)rP   ra   rs   finally_clauser_   s   &&r   visit_TryFinallyStatNode(StatementWriter.visit_TryFinallyStatNode  s@    		&TYY'		*T001r   c                    V P                  R 4       V P                  VP                  4       VP                   F  pV P	                  V4       K  	  VP
                  e   V P	                  VP
                  4       R# R# )rG  N)rP   ra   rs   except_clausesr3   r!  )r   r`   xs   && r   visit_TryExceptStatNode'StatementWriter.visit_TryExceptStatNode  s^    		&TYY'$$AJJqM %'JJt''( (r   c                h   V P                  R 4       VP                  e-   V P                  R4       V P                  VP                  4       VP                  e-   V P                  R4       V P                  VP                  4       V P                  R4       V P                  VP                  4       R# )exceptNr   rU   r   )rE   patternr   r3   r  rL   ra   rs   r_   s   &&r   visit_ExceptClauseNode&StatementWriter.visit_ExceptClauseNode  sv    x <<#HHSMJJt||$;;"HHTNJJt{{#STYY'r   c                    V P                  R 4       VP                  e-   V P                  R4       V P                  VP                  4       V P	                  4        R# )returnNr   )rE   r   r   r3   rL   r_   s   &&r   visit_ReturnStatNode$StatementWriter.visit_ReturnStatNode  s<    x ::!HHSMJJtzz"r   c                (    V P                  R 4       R# )raiseNr/  r_   s   &&r   visit_ReraiseStatNode%StatementWriter.visit_ReraiseStatNode  r6  r   c                ^    V P                  R VP                  P                  ,          4       R# )z(import %s)N)r   r   r   r_   s   &&r   visit_ImportNode StatementWriter.visit_ImportNode  s    !1!1!7!778r   c                    ^ pVP                    F.  pRV P                  V3,          V P                  V&   V^,          pK0  	  V ;P                  ^,          un        V P                  VP                  4       R# )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.
z$%d_%dN)tempsr.   r-   r3   rs   )r   r`   idxhandles   &&  r   visit_TempsBlockNode$StatementWriter.visit_TempsBlockNode  sa     jjF%-1D1Dc0J%JDNN6"1HC ! 	q 

499r   c                ^    V P                  V P                  VP                  ,          4       R # r   )r   r-   rc  r_   s   &&r   visit_TempRefNode!StatementWriter.visit_TempRefNode  s    ,-r    N)r   r    r!   r"   r  r  r  r  r"  r(  r+  r0  r4  r8  r<  r@  rD  rI  rN  rS  rW  r[  r^  rd  rg  r#   r$   r%   s   @r   r	  r	  H  ss     33 3-
(2)	(9. .r   r	  c                     a a ] tR tRt oRtRKV 3R lltR tR tR tR t	R t
R	 tR
 tR tR tR tR tR tR tR tR tRLR ltR tR tR tR tR tR^R^R^R^R^/t/ R^bR^bR ^bR!^bR"^bR#^bR$^bR%^bR&^bR'^bR(^bR)^bR*^bR+^bR,^bR-^bR.^bR^	R^	R/^
R0^
R1^
R2^
R3^
R4^/CtR5 tR6 tR7 tR8 t R9 t!R: t"R; t#R< t$R= t%R> t&R? t'R@ t(RA t)RB t*RC t+RD t,RLRE lt-RF t.RG t/RH t0RI t1RJt2Vt3V ;t4# )MExpressionWriteri  zD
A Cython code writer that is intentionally limited to expressions.
c                X   < \         SV `  4        Vf   RpWn        W n        ^ .V n        R # )Nr	   )r*   r   r+   allow_unknown_nodes
precedence)r   r+   rm  r/   s   &&&r   r   ExpressionWriter.__init__  s,    >F#6 #r   c                <    V P                  V4       V P                  # r   r2   r4   s   &&r   r6   ExpressionWriter.write  r8   r   c                8    V ;P                   V,          un         R # r   )r+   r   s   &&r   r   ExpressionWriter.put  s    qr   c                    V P                   P                  V4      '       d!   V P                   R \        V4      )  V n         R # R # r   )r+   endswithrW   r   s   &&r   removeExpressionWriter.remove  s4    ;;""++hAw/DK #r   c                    \        V4      ^ 8  dI   VRR  F%  pV P                  V4       V P                  R4       K'  	  V P                  VR,          4       R# R# )rS   NrU   rV   )rW   r3   r   )r   rY   r[   s   && r   r\   %ExpressionWriter.comma_separated_list  sK    u:>cr


4  # JJuRy!	 r   c                p    V P                   '       d   V P                  R 4       R# \        RV,          4      h)...rd   N)rm  r   re   r_   s   &&r   rf   ExpressionWriter.visit_Node  s*    ###HHUO !E!LMMr   c                <    V P                  VP                  4       R # r   r   r   r_   s   &&r   visit_IntNodeExpressionWriter.visit_IntNode      r   c                <    V P                  VP                  4       R # r   r~  r_   s   &&r   visit_FloatNode ExpressionWriter.visit_FloatNode
  r  r   c                (    V P                  R 4       R# )NoneNr   r_   s   &&r   visit_NoneNodeExpressionWriter.visit_NoneNode  s    r   c                <    V P                  VP                  4       R # r   r   r_   s   &&r   r   ExpressionWriter.visit_NameNode  r   r   c                (    V P                  R 4       R# )r{  Nr  r_   s   &&r   visit_EllipsisNode#ExpressionWriter.visit_EllipsisNode  s    r   c                N    V P                  \        VP                  4      4       R # r   r   strr   r_   s   &&r   visit_BoolNodeExpressionWriter.visit_BoolNode      TZZ!r   c                N    V P                  \        VP                  4      4       R # r   r  r_   s   &&r   visit_ConstNode ExpressionWriter.visit_ConstNode  r  r   c                B    V P                  VP                   R 24       R# )jNr~  r_   s   &&r   visit_ImagNodeExpressionWriter.visit_ImagNode  s    DJJ<q!"r   c                N    V P                  \        VP                  4      4       R # r   r   reprr   r_   s   &&r   visit_BytesNode ExpressionWriter.visit_BytesNode      djj!"r   c                N    V P                  \        VP                  4      4       R # r   r  r_   s   &&r   visit_UnicodeNode"ExpressionWriter.visit_UnicodeNode"  r  r   c                    Vw  r4VP                  4       pV P                  V4       V P                  V4       V P                  V4       R # r   )subexpr_nodesr   r\   )r   r`   parens
open_parenclose_parenrY   s   &&&   r   emit_sequenceExpressionWriter.emit_sequence%  s>    "(
""$!!%(r   c                *    V P                  VR 4       R# )[]Nr  r_   s   &&r   visit_ListNodeExpressionWriter.visit_ListNode,      4&r   c                *    V P                  VR 4       R# )()Nr  r_   s   &&r   visit_TupleNode ExpressionWriter.visit_TupleNode/  r  r   c                    \        VP                  4       4      ^ 8  d   V P                  VR4       R# V P                  R4       R# )rS   {}zset()N)rW   r  r  r   r_   s   &&r   visit_SetNodeExpressionWriter.visit_SetNode2  s4    t!!#$q(tT*HHWr   c                *    V P                  VR 4       R# )r  Nr  r_   s   &&r   visit_DictNodeExpressionWriter.visit_DictNode8  r  r   c                    V P                  VP                  4       V P                  R 4       V P                  VP                  4       R# z: N)r3   keyr   r   r_   s   &&r   visit_DictItemNode#ExpressionWriter.visit_DictItemNode;  s-    

488

4::r   not!+-~orandinnot_inisis_not<z<=>z>=z!=z==|^r~   z<<z>>r   r   /z//%**c                    V P                   R,          pW!8  d   V P                  R4       V P                   P                  V4       R# )r;   r   NrV   )rn  r   r   )r   new_precold_precs   && r   operator_enterExpressionWriter.operator_enterS  s3    ??2&HHSMx(r   c                    V P                   RR w  rW8  d   V P                  R4       V P                   P                  4        R# )   Nr   )rn  r   pop)r   r  r  s   &  r   operator_exitExpressionWriter.operator_exitY  s6    !__RS1HHSMr   c                    R pV P                   V,          pV P                  V4       V P                  R4       V P                  VP                  4       V P                  4        R# )r  znot N)unop_precedencer  r   r3   operandr  r   r`   opprecs   &&  r   visit_NotNodeExpressionWriter.visit_NotNode_  sM    ##B'D!

4<< r   c                    VP                   pV P                  V,          pV P                  V4       V P                  R VP                   ,          4       V P	                  VP
                  4       V P                  4        R# )z%sN)r?  r  r  r   r3   r  r  r  s   &&  r   visit_UnopNodeExpressionWriter.visit_UnopNodeg  sZ    ]]##B'D!%&

4<< r   c                T   VP                   pV P                  P                  V^ 4      pV P                  V4       V P	                  VP
                  4       V P                  RVP                  RR4      ,          4       V P	                  VP                  4       V P                  4        R# )rS   z %s _r   N)
r?  binop_precedencegetr  r3   operand1r   replaceoperand2r  r  s   &&  r   visit_BinopNode ExpressionWriter.visit_BinopNodeo  sy    ]]$$((Q/D!

4==!"**S#../

4==!r   c                (    V P                  V4       R # r   r  r_   s   &&r   visit_BoolBinopNode$ExpressionWriter.visit_BoolBinopNodex      T"r   c                (    V P                  V4       R # r   r  r_   s   &&r   visit_PrimaryCmpNode%ExpressionWriter.visit_PrimaryCmpNode{  r  r   c                   V P                  VP                  4       V P                  R 4       \        VP                  \
        4      '       dO   VP                  P                  4       '       d   V P                  VP                  4       M-V P                  R4       MV P                  VP                  4       V P                  R4       R# )r   r  r   N)r3   ry   r   r   index	TupleNoder  r  r_   s   &&r   visit_IndexNode ExpressionWriter.visit_IndexNode~  sy    

499djj),,zz''))""4::.JJtzz"r   c                   V P                  VP                  4       V P                  R 4       VP                  '       d   V P                  VP                  4       V P                  R4       VP                  '       d   V P                  VP                  4       VP
                  '       d-   V P                  R4       V P                  VP
                  4       V P                  R4       R# )r   r   r   N)r3   ry   r   startstopslicer_   s   &&r   visit_SliceIndexNode%ExpressionWriter.visit_SliceIndexNode  s    

499:::JJtzz"999JJtyy!:::HHSMJJtzz"r   c                   VP                   P                  '       g   V P                  VP                   4       V P                  R 4       VP                  P                  '       g   V P                  VP                  4       VP
                  P                  '       g/   V P                  R 4       V P                  VP
                  4       R# R# )r   N)r  is_noner3   r   r  stepr_   s   &&r   visit_SliceNode ExpressionWriter.visit_SliceNode  s}    zz!!!JJtzz"yy   JJtyy!yy   HHSMJJtyy! !r   c                    V P                  VP                  4       V P                  R 4       V P                  VP                  4       V P                  R4       V P                  VP                  4       R# ) if z else N)r3   true_valr   test	false_valr_   s   &&r   visit_CondExprNode#ExpressionWriter.visit_CondExprNode  sJ    

4==!

499

4>>"r   c                    V P                  VP                  4       V P                  R VP                  ,          4       R# )z.%sN)r3   objr   r   r_   s   &&r   visit_AttributeNode$ExpressionWriter.visit_AttributeNode  s'    

488'(r   c                    V P                  VP                  4       V P                  R 4       V P                  VP                  4       V P                  R4       R# r   )r3   functionr   r\   r   r_   s   &&r   visit_SimpleCallNode%ExpressionWriter.visit_SimpleCallNode  s:    

4==!!!$)),r   c                >   Vf   R # \        V\        4      '       d9   V P                  VP                  4       V P                  VP                  4       R # \        V\
        4      '       d<   VP                  4        F%  pV P                  V4       V P                  R4       K'  	  R # \        V\        4      '       d@   V P                  R4       V P                  VP                  4       V P                  R4       R # V P                  V4       V P                  R4       R # )NrU   r   )r   AddNodeemit_pos_argsr  r  r  r  r3   r   AsTupleNodeargr   r`   r;  s   && r   r  ExpressionWriter.emit_pos_args  s    <dG$$t}}-t}}-i((**,

4  - k**HHSMJJtxx HHTNJJtHHTNr   c                   Vf   R # \        V\        4      '       d+   VP                  4        F  pV P                  V4       K  	  R # \        V\        4      '       dr   VP                  4        F[  pV P                  RVP                  P                  ,          4       V P                  VP                  4       V P                  R4       K]  	  R # V P                  R4       V P                  V4       V P                  R4       R # )Nz%s=rU   r  )	r   MergedDictNoder  emit_kwd_argsDictNoder   r  r   r3   r  s   && r   r#  ExpressionWriter.emit_kwd_args  s    <dN++**,""4( -h''**,/0

4::& -
 HHTNJJtHHTNr   c                   V P                  VP                  4       V P                  R 4       V P                  VP                  4       V P                  VP                  4       V P                  R4       V P                  R4       R# )r   rU   r   N)r3   r  r   r  r   r#  r   rv  r_   s   &&r   visit_GeneralCallNode&ExpressionWriter.visit_GeneralCallNode  s\    

4==!4//04,,-Dr   c                P   Vw  rgV P                  V4       V P                  V4       V P                  R 4       V P                  V4       V P                  R4       V P                  V4       V'       d#   V P                  R4       V P                  V4       V P                  V4       R# )z for r  r  N)r   r3   )r   rs   r  r   r&  r  r  r  s   &&&&&&  r   emit_comprehension#ExpressionWriter.emit_comprehension  s{     #)


4

6

8HHVJJy!r   c                <    V P                  VP                  4       R # r   )r3   r;  r_   s   &&r   visit_ComprehensionAppendNode.ExpressionWriter.visit_ComprehensionAppendNode  s    

499r   c                    V P                  VP                  4       V P                  R 4       V P                  VP                  4       R# r  )r3   key_exprr   
value_exprr_   s   &&r   !visit_DictComprehensionAppendNode2ExpressionWriter.visit_DictComprehensionAppendNode  s-    

4==!

4??#r   c                   R RRRRR/pW!P                   P                  4       ,          pVP                  P                  pVP                  P                  pVP                  P
                  P                  pRp\        VR4      '       d;   VP                  ^ ,          P                  pVP                  ^ ,          P                  pV P                  WEWgV4       R# )listr  dictr  setNr%  )typepy_type_namelooprs   r  r  r   hasattrr%  r&  r*  )r   r`   tpmapr  rs   r  r   r&  s   &&      r   visit_ComprehensionNode(ExpressionWriter.visit_ComprehensionNode  s    vtUD9yy--/0yy~~!!99%%..	4&&*44I??1%**Dh6Jr   c                   VP                   P                  pVP                   P                  pVP                   P                  P                  pR p\        VR4      '       dP   VP                  ^ ,          P                  pVP                  ^ ,          P                  P                  P                  pM(\        VR4      '       d   VP                  P                  pV P                  W#WER4       R # )Nr%  r;  r  )r:  rs   r  r  r   r;  r%  r&  r;  r  r*  )r   r`   rs   r  r   r&  s   &&    r   visit_GeneratorExpressionNode.ExpressionWriter.visit_GeneratorExpressionNode   s    yy~~!!99%%..	4&&*44I??1%**//33DT6""99==Dh4Hr   )rm  rn  r+   )NF))r	   r	   )5r   r    r!   r"   r  r   r6   r   rv  r\   rf   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  r  r  r  r#  r'  r*  r-  r2  r=  r@  r#   r$   r  r  s   @@r   rk  rk    s    0"N""###''' 	q#qRb#rOaq 	a	 1	 #A	 (0	 58	 =A!	 FI!	 NRST	 W[\]	 `def	
 	Q 	Q 	Q 	a q 	QQRb#r4S"b)##
"#)$ $
KI Ir   rk  c                   6   a  ] tR tRt o RtR tR tR tRtV t	R# )	PxdWriteri  zP
A Cython code writer for everything supported in pxd files.
(currently unused)
c                l    \        R P                  V P                  V4      P                  4      4       V# )
)printr   r6   r   r_   s   &&r   __call__PxdWriter.__call__  s'    dii

4(../0r   c                    VP                   '       d   V P                  R 4       MV P                  R4       VP                  '       d<   V P                  RP	                  VP                  4      4       V P                  R4       VP
                  R8w  d-   V P                  VP
                  4       V P                  R4       VP                  '       d   V P                  R4       V P                  VP                  4       R# )r   r   r   r   r   N)	r   rE   r   r   r   r   r   r3   r   r_   s   &&r   r   PxdWriter.visit_CFuncDefNode  s    NN8$NN7#>>>HHSXXdnn-.HHSM??i'HHT__%HHSM888HHV

4??#r   c                    R # r   ri  r_   s   &&r   visit_StatNodePxdWriter.visit_StatNode(  s    r   ri  N)
r   r    r!   r"   r  rG  r   rL  r#   r$   r%   s   @r   rC  rC    s     
$ r   rC  c                       ] tR tRtRtRtR# )
CodeWriteri,  z 
A complete Cython code writer.
ri  N)r   r    r!   r"   r  r#   ri  r   r   rO  rO  ,  s    r   rO  N)r  Compiler.Visitorr   Compiler.ExprNodesCompiler.Nodesr   r   r(   r	  rk  rC  rO  ri  r   r   <module>rS     sn    * ! / "f fR	U.' U.plI{ lI^	!#3 :"2 r   