
    h/^                         S r SSKJr  SSK7  SSKJr   " S S5      r " S S\5      r " S	 S
\5      r " S S\5      r	 " S S\\	5      r
 " S S\\	5      rg)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                   ,    \ rS rSrS rS rS rS rSrg)LinesResult   c                      / U l         SU l        g N linessselfs    K/var/www/fran/franai/venv/lib/python3.13/site-packages/Cython/CodeWriter.py__init__LinesResult.__init__   s    
    c                 .    U =R                   U-  sl         g N)r   r   r   s     r   putLinesResult.put   s    !r   c                 \    U R                   R                  U R                  5        SU l        g r
   )r   appendr   r   s    r   newlineLinesResult.newline   s    

$&&!r   c                 F    U R                  U5        U R                  5         g r   )r   r   r   s     r   putlineLinesResult.putline   s    r   r   N)	__name__
__module____qualname____firstlineno__r   r   r   r   __static_attributes__ r   r   r   r      s    r   r   c                   *  ^  \ rS rSrSrSrS-U 4S jjrS rS rS r	S.S jr
S	 rS
 rS.S jrS rS/S jrS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S& r(S' r)S( r*S) r+S* r,S+ r-S,r.U =r/$ )0DeclarationWriter   z=
A Cython code writer that is limited to declarations nodes.
z    c                 r   > [         TU ]  5         Uc
  [        5       nXl        SU l        0 U l        SU l        g )N    )superr   r   result
numindents	tempnamestempblockindexr   r-   	__class__s     r   r   DeclarationWriter.__init__&   s5    > ]Fr   c                 <    U R                  U5        U R                  $ r   visitr-   r   trees     r   writeDeclarationWriter.write/       

4{{r   c                 .    U =R                   S-  sl         g Nr   r.   r   s    r   indentDeclarationWriter.indent3       1r   c                 .    U =R                   S-  sl         g r=   r>   r   s    r   dedentDeclarationWriter.dedent6   rA   r   c                 n    U R                   R                  U R                  U R                  -  U-   5        g r   )r-   r   indent_stringr.   r   s     r   	startlineDeclarationWriter.startline9   s&    **T__<q@Ar   c                 :    U R                   R                  U5        g r   )r-   r   r   s     r   r   DeclarationWriter.put<   s    r   c                 n    U R                   R                  U R                  U R                  -  U-   5        g r   )r-   r   rF   r.   r   s     r   r   DeclarationWriter.putline?   s(    D..@1DEr   c                 :    U R                   R                  U5        g r   )r-   r   r   s     r   endlineDeclarationWriter.endlineB   s    Ar   c                 F    U R                  U5        U R                  5         g r   rG   rN   r   s     r   lineDeclarationWriter.lineE   s    qr   c                    [        U5      S:  a  US S  He  nU R                  U5        U(       a9  UR                  b,  U R                  S5        U R                  UR                  5        U R                  S5        Mg     U R                  US   5        U(       aA  US   R                  b0  U R                  S5        U R                  US   R                  5        g g g g )Nr+    = , )lenr6   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                 f    U R                  5         U R                  U5        U R                  5         g r   )r?   r6   rC   r   nodes     r   _visit_indented!DeclarationWriter._visit_indentedV   s     

4r   c                     [        SU-  5      eNz"Node not handled by serializer: %rAssertionErrorr`   s     r   
visit_NodeDeclarationWriter.visit_Node[       ADHIIr   c                 &    U R                  U5        g r   visitchildrenr`   s     r   visit_ModuleNode"DeclarationWriter.visit_ModuleNode^       4 r   c                 &    U R                  U5        g r   rl   r`   s     r   visit_StatListNode$DeclarationWriter.visit_StatListNodea   rp   r   c                     UR                   c  SnOSUR                   -  nU R                  SU-  5        U R                  UR                  5        g )Nr   z"%s"zcdef extern from %s:)include_filer   rb   body)r   ra   files      r   visit_CDefExternNode&DeclarationWriter.visit_CDefExternNoded   sG    $DD---D+d23TYY'r   c                 \    U R                  S5        U R                  UR                  5        g )Nr   r   r6   baser`   s     r   visit_CPtrDeclaratorNode*DeclarationWriter.visit_CPtrDeclaratorNodel       

499r   c                 \    U R                  S5        U R                  UR                  5        g )N&r{   r`   s     r   visit_CReferenceDeclaratorNode0DeclarationWriter.visit_CReferenceDeclaratorNodep   r   r   c                     U R                  UR                  5        U R                  S5        UR                  b  U R                  UR                  5        U R                  S5        g N[])r6   r|   r   	dimensionr`   s     r   visit_CArrayDeclaratorNode,DeclarationWriter.visit_CArrayDeclaratorNodet   sB    

499>>%JJt~~&r   c                     U R                  UR                  5        U R                  S5        U R                  UR                  5        U R                  S5        g N())r6   r|   r   r]   argsrN   r`   s     r   visit_CFuncDeclaratorNode+DeclarationWriter.visit_CFuncDeclaratorNode{   s;    

499!!$)),Sr   c                 :    U R                  UR                  5        g r   r   namer`   s     r   visit_CNameDeclaratorNode+DeclarationWriter.visit_CNameDeclaratorNode       r   c                 p   UR                   (       a|  U R                  SUR                     5        UR                  S:  a   U R                  SUR                  * -  5        O.UR                  S:  a  U R                  SUR                  -  5        UR                  b  U R                  UR                  5        g g )N)z	unsigned r   zsigned r+   zshort zlong )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                 p    U R                  UR                  5        U R                  UR                  5        g r   )r6   	base_type
declaratorr`   s     r   visit_CComplexBaseTypeNode,DeclarationWriter.visit_CComplexBaseTypeNode   s"    

4>>"

4??#r   c                     U R                  UR                  5        U R                  S5        U R                  UR                  5        g )N.)r6   r   r   r   r`   s     r   visit_CNestedBaseTypeNode+DeclarationWriter.visit_CNestedBaseTypeNode   s-    

4>>"r   c                     U R                  UR                  5        U R                  S5        U R                  UR                  UR
                  R                  -   5        U R                  S5        g r   )r6   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                     U R                  S5        U R                  UR                  5        U R                  S5        U R	                  UR
                  SS9  U R                  5         g )Ncdef  T)r[   )rG   r6   r   r   r]   declaratorsrN   r`   s     r   visit_CVarDefNode#DeclarationWriter.visit_CVarDefNode   sK    w

4>>"!!$"2"2t!Dr   c                    U R                  U5        UR                  (       aW  U R                  S5        U R                  UR                  5        UR                  b  U R                  SUR                  -  5        U(       a  U R                  U5        U R	                  S5        U R                  5         U(       d  U R                  S5        OU H  nU R                  U5        M     U R                  5         g )Nr    "%s":pass)	rG   r   r   cnamerN   r?   r   r6   rC   )r   ra   declextras
attributes	attributes         r   _visit_container_node'DeclarationWriter._visit_container_node   s    t99HHSMHHTYYzz%4::-.HHVSLL '	

9% (r   c                     UR                   (       a  SnOSnUR                  S:X  a  US-  nUR                  (       a  US-  nX!R                  -  nU R	                  XS UR
                  5        g )N	ctypedef r   publiczpublic zpacked )typedef_flag
visibilitypackedkindr   r   )r   ra   r   s      r   visit_CStructOrUnionDefNode-DeclarationWriter.visit_CStructOrUnionDefNode   s^    DD??h&ID;;ID		""4tT__Er   c                    SnUR                   (       a  SSR                  UR                   5      -  nUR                  (       a!  USSR                  UR                  5      -  -  nU R                  USX!R                  5        g )Nr   z[%s]rW   z(%s)zcdef cppclass)	templatesjoinbase_classesr   r   )r   ra   r   s      r   visit_CppClassNode$DeclarationWriter.visit_CppClassNode   sb    >>dii77Fftyy):):;;;F""4&//Rr   c                 @    U R                  USS UR                  5        g )Nz	cdef enum)r   rZ   r`   s     r   visit_CEnumDefNode$DeclarationWriter.visit_CEnumDefNode   s    ""4dDJJGr   c                 2   U R                  UR                  5        UR                  (       a  U R                  SUR                  -  5        UR                  (       a,  U R                  S5        U R                  UR                  5        U R                  5         g )Nr   rV   )rG   r   r   r   valuer6   rN   r`   s     r   visit_CEnumDefItemNode(DeclarationWriter.visit_CEnumDefItemNode   sY    tyy!::HHWtzz)*::HHUOJJtzz"r   c                 Z   UR                   (       a   eUR                  (       a$  UR                   H  nU R                  U5        M     U R                  S5        U R	                  UR
                  5        UR                  (       az  U R	                  S5        UR                  (       a,  U R	                  UR                  5        U R	                  S5        U R	                  UR                  5        U R	                  S5        U R                  S5        U R                  UR                  5        g )Nzcdef class r   r   r   r   )module_name
decoratorsr6   rG   r   
class_namebase_class_namebase_class_modulerN   rb   rv   )r   ra   	decorators      r   visit_CClassDefNode%DeclarationWriter.visit_CClassDefNode   s    ####??!__	

9% -}%!HHSM%%//0HHT))*HHSMSTYY'r   c                     U R                  S5        U R                  UR                  5        U R                  S5        U R                  UR                  5        U R                  5         g )Nr   r   )rG   r6   r   r   r   rN   r`   s     r   visit_CTypeDefNode$DeclarationWriter.visit_CTypeDefNode   sB    {#

4>>"

4??#r   c                     U R                  SUR                  -  5        U R                  UR                  5        U R	                  S5        U R                  UR                  5        g )Nzdef %s():)rG   r   r]   r   rN   rb   rv   r`   s     r   visit_FuncDefNode#DeclarationWriter.visit_FuncDefNode   sG    y499,-!!$)),TTYY'r   c                 V   U R                  UR                  (       a  SOS5        UR                  (       a;  U R                  SR	                  UR                  5      5        U R                  S5        UR
                  S:w  a,  U R                  UR
                  5        U R                  S5        UR                  (       a  U R                  S5        UR                  (       aC  U R                  UR                  5        UR                  R                  b  U R                  S5        U R                  UR                  R                  5        U R                  S5        U R                  UR                  R                  5        U R                  S5        U R                  UR                   5        g )Ncpdef r   r   privateapi r   r   )rG   overridable	modifiersr   r   r   apir   r6   r   r   r|   r]   r   rN   rb   rv   r`   s     r   visit_CFuncDefNode$DeclarationWriter.visit_CFuncDefNode   s   4#3#3xA>>HHSXXdnn-.HHSM??i'HHT__%HHSM88HHV>>JJt~~&~~"". 	

4??''(!!$//"6"67TTYY'r   c                    [        UR                  [        5      (       a  UR                  R                  bK  U R	                  UR                  5        UR
                  R                  5       (       a  U R                  S5        U R	                  UR
                  5        UR                  b-  U R                  S5        U R	                  UR                  5        g g )Nr   rV   )	
isinstancer   r   r   r6   r   declared_namer   rY   r`   s     r   visit_CArgDeclNode$DeclarationWriter.visit_CArgDeclNode  s     $..*=>>##/JJt~~& ,,..

4??#<<#HHUOJJt||$ $r   c                     U R                  S5        U R                  UR                  5        UR                  (       a,  U R                  S5        U R                  UR                  5        U R	                  5         g )Nzcimport  as )rG   r   r   as_namerN   r`   s     r   visit_CImportStatNode'DeclarationWriter.visit_CImportStatNode"  sL    z"!!"<<HHVHHT\\"r   c                    U R                  S5        U R                  UR                  5        U R                  S5        SnUR                   Hb  u  p4pVUb   eU(       a  SnOU R                  S5        U R                  U5        U(       d  M@  U R                  S5        U R                  U5        Md     U R	                  5         g )Nzfrom z	 cimport TFrW   r   )rG   r   r   imported_namesrN   )r   ra   firstposr   r   r   s          r   visit_FromCImportStatNode+DeclarationWriter.visit_FromCImportStatNode*  s    w!!"(,(;(;$Cw<<HHTNw ! )< 	r   c                 :    U R                  UR                  5        g r   r   r`   s     r   visit_NameNode DeclarationWriter.visit_NameNode;  r   r   c                 |    U R                  S5        U R                  UR                  5        U R                  5         g )N@)rG   r6   r   rN   r`   s     r   visit_DecoratorNode%DeclarationWriter.visit_DecoratorNode>  s'    s

4>>"r   c                 F    U R                  S5        U R                  5         g )Nr   rQ   r`   s     r   visit_PassStatNode$DeclarationWriter.visit_PassStatNodeC  s    vr   )r.   r-   r0   r/   r   )r   )F)0r!   r"   r#   r$   __doc__rF   r   r9   r?   rC   rG   r   r   rN   rR   r]   rb   rh   rn   rr   rx   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__r2   s   @r   r(   r(      s     M BF.
J!!(	 $
&
FSH("((0%$"
 r   r(   c                       \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rSrg)StatementWriteriH  z<
A Cython code writer for most language statement features.
c                     U R                  5         U R                  UR                  5        U R                  S5        U R                  UR                  5        U R                  5         g NrV   )rG   r6   lhsr   rhsrN   r`   s     r   visit_SingleAssignmentNode*StatementWriter.visit_SingleAssignmentNodeM  s@    

488

488r   c                     U R                  5         UR                   H%  nU R                  U5        U R                  S5        M'     U R                  UR                  5        U R                  5         g r  )rG   lhs_listr6   r   r  rN   )r   ra   r  s      r   visit_CascadedAssignmentNode,StatementWriter.visit_CascadedAssignmentNodeT  sK    ==CJJsOHHUO ! 	

488r   c                     U R                  S5        U R                  UR                  R                  5        UR                  (       d  U R                  S5        U R                  5         g )Nzprint ,)rG   r]   	arg_tupler   append_newliner   rN   r`   s     r   visit_PrintStatNode#StatementWriter.visit_PrintStatNode\  sC    x !!$.."5"56""HHSMr   c                    U R                  S5        UR                  R                  (       a&  U R                  UR                  R                  5        OU R                  UR                  5        U R                  S5        U R                  UR                  R                  5        U R                  S5        U R                  UR                  5        UR                  b-  U R                  S5        U R                  UR                  5        g g )Nzfor  in r   else:)rG   targetis_sequence_constructorr]   r   r6   r   iteratorsequencerN   rb   rv   else_clauserR   r`   s     r   visit_ForInStatNode#StatementWriter.visit_ForInStatNodec  s    v;;..%%dkk&6&67JJt{{#

4==))*STYY''IIg  !1!12 (r   c                 8   U R                  S5        U R                  UR                  S   R                  5        U R	                  S5        U R                  UR                  S   R                  5        UR                  SS   H[  nU R                  S5        U R                  UR                  5        U R	                  S5        U R                  UR                  5        M]     UR                  b-  U R                  S5        U R                  UR                  5        g g )Nzif r+   r   r   zelif r  )	rG   r6   
if_clauses	conditionrN   rb   rv   r$  rR   )r   ra   clauses      r   visit_IfStatNode StatementWriter.visit_IfStatNodeq  s     	u

4??1%//0ST__Q/445ooab)FNN7#JJv''(LL  -	 *
 'IIg  !1!12 (r   c                 (   U R                  S5        U R                  UR                  5        U R                  S5        U R	                  UR
                  5        UR                  b-  U R                  S5        U R	                  UR                  5        g g )Nzwhile r   r  )rG   r6   r)  rN   rb   rv   r$  rR   r`   s     r   visit_WhileStatNode#StatementWriter.visit_WhileStatNode  sm    x 

4>>"STYY''IIg  !1!12 (r   c                 &    U R                  S5        g )NcontinuerR   r`   s     r   visit_ContinueStatNode&StatementWriter.visit_ContinueStatNode  s    		*r   c                 &    U R                  S5        g )Nbreakr2  r`   s     r   visit_BreakStatNode#StatementWriter.visit_BreakStatNode      		'r   c                 :    U R                  UR                  5        g r   )r]   r   r`   s     r   visit_SequenceNode"StatementWriter.visit_SequenceNode  s    !!$)),r   c                 z    U R                  5         U R                  UR                  5        U R                  5         g r   )rG   r6   exprrN   r`   s     r   visit_ExprStatNode"StatementWriter.visit_ExprStatNode  s%    

499r   c                     U R                  5         U R                  UR                  5        U R                  SUR                  -  5        U R                  UR
                  5        U R                  5         g )Nz %s= )rG   r6   r  r   operatorr  rN   r`   s     r   visit_InPlaceAssignmentNode+StatementWriter.visit_InPlaceAssignmentNode  sJ    

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

488r   c                 F   U R                  5         U R                  S5        U R                  UR                  5        UR                  b,  U R                  S5        U R                  UR                  5        U R                  S5        U R                  UR                  5        g )Nzwith r   r   )rG   r   r6   managerr   rN   rb   rv   r`   s     r   visit_WithStatNode"StatementWriter.visit_WithStatNode  sl    

4<< ;;"HHVJJt{{#STYY'r   c                     U R                  S5        U R                  UR                  5        U R                  S5        U R                  UR                  5        g )Ntry:zfinally:)rR   rb   rv   finally_clauser`   s     r   visit_TryFinallyStatNode(StatementWriter.visit_TryFinallyStatNode  s@    		&TYY'		*T001r   c                     U R                  S5        U R                  UR                  5        UR                   H  nU R	                  U5        M     UR
                  b  U R	                  UR
                  5        g g )NrJ  )rR   rb   rv   except_clausesr6   r$  )r   ra   xs      r   visit_TryExceptStatNode'StatementWriter.visit_TryExceptStatNode  s^    		&TYY'$$AJJqM %'JJt''( (r   c                 b   U R                  S5        UR                  b,  U R                  S5        U R                  UR                  5        UR                  b,  U R                  S5        U R                  UR                  5        U R                  S5        U R                  UR                  5        g )Nexceptr   rW   r   )rG   patternr   r6   r   rN   rb   rv   r`   s     r   visit_ExceptClauseNode&StatementWriter.visit_ExceptClauseNode  sv    x <<#HHSMJJt||$;;"HHTNJJt{{#STYY'r   c                     U R                  S5        UR                  b,  U R                  S5        U R                  UR                  5        U R	                  5         g )Nreturnr   )rG   r   r   r6   rN   r`   s     r   visit_ReturnStatNode$StatementWriter.visit_ReturnStatNode  s<    x ::!HHSMJJtzz"r   c                 &    U R                  S5        g )Nraiser2  r`   s     r   visit_ReraiseStatNode%StatementWriter.visit_ReraiseStatNode  r9  r   c                 T    U R                  SUR                  R                  -  5        g )Nz(import %s))r   r   r   r`   s     r   visit_ImportNode StatementWriter.visit_ImportNode  s    !1!1!7!778r   c                     SnUR                    H&  nSU R                  U4-  U R                  U'   US-  nM(     U =R                  S-  sl        U R                  UR                  5        g)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)tempsr0   r/   r6   rv   )r   ra   idxhandles       r   visit_TempsBlockNode$StatementWriter.visit_TempsBlockNode  sa     jjF%-1D1Dc0J%JDNN6"1HC ! 	q 

499r   c                 T    U R                  U R                  UR                     5        g r   )r   r/   rf  r`   s     r   visit_TempRefNode!StatementWriter.visit_TempRefNode  s    ,-r   r&   N)r!   r"   r#   r$   r  r  r  r  r%  r+  r.  r3  r7  r;  r?  rC  rG  rL  rQ  rV  rZ  r^  ra  rg  rj  r%   r&   r   r   r  r  H  sk    33 3-
(2)	(9.r   r  c            
         ^  \ rS rSrSrSNU 4S jjrS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rSOS jrS rS rS rS rS rSSSSSS.r0 SS_SS_S S!_S"S!_S#S!_S$S!_S%S!_S&S!_S'S!_S(S!_S)S!_S*S!_S+S,_S-S._S/S0_S1S2_S3S2_S4S4S5S5S5S5S5S6S7.ErS8 rS9 rS: rS; r S< r!S= r"S> r#S? r$S@ r%SA r&SB r'SC r(SD r)SE r*SF r+SG r, SOSH jr-SI r.SJ r/SK r0SL r1SMr2U =r3$ )PExpressionWriteri  zD
A Cython code writer that is intentionally limited to expressions.
c                 H   > [         TU ]  5         Uc  SnXl        S/U l        g )Nr   r+   )r,   r   r-   
precedencer1   s     r   r   ExpressionWriter.__init__  s&    >F#r   c                 <    U R                  U5        U R                  $ r   r5   r7   s     r   r9   ExpressionWriter.write  r;   r   c                 .    U =R                   U-  sl         g r   )r-   r   s     r   r   ExpressionWriter.put  s    qr   c                     U R                   R                  U5      (       a  U R                   S [        U5      *  U l         g g r   )r-   endswithrX   r   s     r   removeExpressionWriter.remove  s4    ;;""++hAw/DK #r   c                     [        U5      S:  aC  US S  H%  nU R                  U5        U R                  S5        M'     U R                  US   5        g g )Nr+   rU   rW   )rX   r6   r   )r   rZ   r\   s      r   r]   %ExpressionWriter.comma_separated_list  sK    u:>cr


4  # JJuRy!	 r   c                     [        SU-  5      ere   rf   r`   s     r   rh   ExpressionWriter.visit_Node  rj   r   c                 :    U R                  UR                  5        g r   r   r   r`   s     r   visit_IntNodeExpressionWriter.visit_IntNode      r   c                 :    U R                  UR                  5        g r   r~  r`   s     r   visit_FloatNode ExpressionWriter.visit_FloatNode  r  r   c                 &    U R                  S5        g )NNoner   r`   s     r   visit_NoneNodeExpressionWriter.visit_NoneNode	  s    r   c                 :    U R                  UR                  5        g r   r   r`   s     r   r   ExpressionWriter.visit_NameNode  r   r   c                 &    U R                  S5        g )Nz...r  r`   s     r   visit_EllipsisNode#ExpressionWriter.visit_EllipsisNode  s    r   c                 L    U R                  [        UR                  5      5        g r   r   strr   r`   s     r   visit_BoolNodeExpressionWriter.visit_BoolNode      TZZ!r   c                 L    U R                  [        UR                  5      5        g r   r  r`   s     r   visit_ConstNode ExpressionWriter.visit_ConstNode  r  r   c                 @    U R                  UR                   S35        g )Njr~  r`   s     r   visit_ImagNodeExpressionWriter.visit_ImagNode  s    DJJ<q!"r   c                 L    U R                  [        UR                  5      5        g r   r   reprr   r`   s     r   visit_BytesNode ExpressionWriter.visit_BytesNode      djj!"r   c                 L    U R                  [        UR                  5      5        g r   r  r`   s     r   visit_UnicodeNode"ExpressionWriter.visit_UnicodeNode  r  r   c                     Uu  p4UR                  5       nU R                  U5        U R                  U5        U R                  U5        g r   )subexpr_nodesr   r]   )r   ra   parens
open_parenclose_parenrZ   s         r   emit_sequenceExpressionWriter.emit_sequence!  s>    "(
""$!!%(r   c                 (    U R                  US5        g )N[]r  r`   s     r   visit_ListNodeExpressionWriter.visit_ListNode(      4&r   c                 (    U R                  US5        g )N()r  r`   s     r   visit_TupleNode ExpressionWriter.visit_TupleNode+  r  r   c                     [        UR                  5       5      S:  a  U R                  US5        g U R                  S5        g )Nr+   {}zset())rX   r  r  r   r`   s     r   visit_SetNodeExpressionWriter.visit_SetNode.  s4    t!!#$q(tT*HHWr   c                 (    U R                  US5        g )Nr  r  r`   s     r   visit_DictNodeExpressionWriter.visit_DictNode4  r  r   c                     U R                  UR                  5        U R                  S5        U R                  UR                  5        g Nz: )r6   keyr   r   r`   s     r   visit_DictItemNode#ExpressionWriter.visit_DictItemNode7  s-    

488

4::r         )not!+-~orr   and   in   not_inisis_not<z<=>z>=z!=z==|   ^   r      z<<   z>>	   
      )r  r  r   r  /z//%**c                     U R                   S   nX!:  a  U R                  S5        U R                   R                  U5        g )NrU   r   )ro  r   r   )r   new_precold_precs      r   operator_enterExpressionWriter.operator_enterO  s3    ??2&HHSMx(r   c                     U R                   SS  u  pX:  a  U R                  S5        U R                   R                  5         g )Nr   )ro  r   pop)r   r  r  s      r   operator_exitExpressionWriter.operator_exitU  s6    !__RS1HHSMr   c                     SnU R                   U   nU R                  U5        U R                  S5        U R                  UR                  5        U R                  5         g )Nr  znot )unop_precedencer  r   r6   operandr  r   ra   opprecs       r   visit_NotNodeExpressionWriter.visit_NotNode[  sM    ##B'D!

4<< r   c                     UR                   nU R                  U   nU R                  U5        U R                  SUR                   -  5        U R	                  UR
                  5        U R                  5         g )Nz%s)rB  r  r  r   r6   r  r  r  s       r   visit_UnopNodeExpressionWriter.visit_UnopNodec  sZ    ]]##B'D!%&

4<< r   c                 J   UR                   nU R                  R                  US5      nU R                  U5        U R	                  UR
                  5        U R                  SUR                  SS5      -  5        U R	                  UR                  5        U R                  5         g )Nr+   z %s _r   )
rB  binop_precedencegetr  r6   operand1r   replaceoperand2r  r  s       r   visit_BinopNode ExpressionWriter.visit_BinopNodek  sy    ]]$$((Q/D!

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

4==!r   c                 &    U R                  U5        g r   r  r`   s     r   visit_BoolBinopNode$ExpressionWriter.visit_BoolBinopNodet      T"r   c                 &    U R                  U5        g r   r  r`   s     r   visit_PrimaryCmpNode%ExpressionWriter.visit_PrimaryCmpNodew  r  r   c                    U R                  UR                  5        U R                  S5        [        UR                  [
        5      (       aM  UR                  R                  5       (       a  U R                  UR                  5        O-U R                  S5        OU R                  UR                  5        U R                  S5        g )Nr   r  r   )r6   r|   r   r   index	TupleNoder  r  r`   s     r   visit_IndexNode ExpressionWriter.visit_IndexNodez  sy    

499djj),,zz''))""4::.JJtzz"r   c                    U R                  UR                  5        U R                  S5        UR                  (       a  U R                  UR                  5        U R                  S5        UR                  (       a  U R                  UR                  5        UR
                  (       a,  U R                  S5        U R                  UR
                  5        U R                  S5        g )Nr   r   r   )r6   r|   r   startstopslicer`   s     r   visit_SliceIndexNode%ExpressionWriter.visit_SliceIndexNode  s    

499::JJtzz"99JJtyy!::HHSMJJtzz"r   c                    UR                   R                  (       d  U R                  UR                   5        U R                  S5        UR                  R                  (       d  U R                  UR                  5        UR
                  R                  (       d-  U R                  S5        U R                  UR
                  5        g g )Nr   )r  is_noner6   r   r  stepr`   s     r   visit_SliceNode ExpressionWriter.visit_SliceNode  st    zz!!JJtzz"yy  JJtyy!yy  HHSMJJtyy! !r   c                     U R                  UR                  5        U R                  S5        U R                  UR                  5        U R                  S5        U R                  UR                  5        g )N if z else )r6   true_valr   test	false_valr`   s     r   visit_CondExprNode#ExpressionWriter.visit_CondExprNode  sJ    

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

499

4>>"r   c                 v    U R                  UR                  5        U R                  SUR                  -  5        g )Nz.%s)r6   objr   r   r`   s     r   visit_AttributeNode$ExpressionWriter.visit_AttributeNode  s'    

488'(r   c                     U R                  UR                  5        U R                  S5        U R                  UR                  5        U R                  S5        g r   )r6   functionr   r]   r   r`   s     r   visit_SimpleCallNode%ExpressionWriter.visit_SimpleCallNode  s:    

4==!!!$)),r   c                 ,   Uc  g [        U[        5      (       a7  U R                  UR                  5        U R                  UR                  5        g [        U[
        5      (       a:  UR                  5        H%  nU R                  U5        U R                  S5        M'     g [        U[        5      (       a>  U R                  S5        U R                  UR                  5        U R                  S5        g U R                  U5        U R                  S5        g )NrW   r   )r   AddNodeemit_pos_argsr  r  r  r  r6   r   AsTupleNodeargr   ra   r>  s      r   r&  ExpressionWriter.emit_pos_args  s    <dG$$t}}-t}}-i((**,

4  - k**HHSMJJtxx HHTNJJtHHTNr   c                    Uc  g [        U[        5      (       a)  UR                  5        H  nU R                  U5        M     g [        U[        5      (       al  UR                  5        HW  nU R                  SUR                  R                  -  5        U R                  UR                  5        U R                  S5        MY     g U R                  S5        U R                  U5        U R                  S5        g )Nz%s=rW   r  )	r   MergedDictNoder  emit_kwd_argsDictNoder   r  r   r6   r)  s      r   r-  ExpressionWriter.emit_kwd_args  s    <dN++**,""4( -h''**,/0

4::& -
 HHTNJJtHHTNr   c                    U R                  UR                  5        U R                  S5        U R                  UR                  5        U R                  UR                  5        U R                  S5        U R                  S5        g )Nr   rW   r   )r6   r!  r   r&  r   r-  r   rw  r`   s     r   visit_GeneralCallNode&ExpressionWriter.visit_GeneralCallNode  s\    

4==!4//04,,-Dr   c                 L   Uu  pgU R                  U5        U R                  U5        U R                  S5        U R                  U5        U R                  S5        U R                  U5        U(       a"  U R                  S5        U R                  U5        U R                  U5        g )Nz for r  r  )r   r6   )r   rv   r   r#  r)  r  r  r  s           r   emit_comprehension#ExpressionWriter.emit_comprehension  s{     #)


4

6

8HHVJJy!r   c                 :    U R                  UR                  5        g r   )r6   r>  r`   s     r   visit_ComprehensionAppendNode.ExpressionWriter.visit_ComprehensionAppendNode  s    

499r   c                     U R                  UR                  5        U R                  S5        U R                  UR                  5        g r  )r6   key_exprr   
value_exprr`   s     r   !visit_DictComprehensionAppendNode2ExpressionWriter.visit_DictComprehensionAppendNode  s-    

4==!

4??#r   c                    SSSS.nX!R                   R                  5          nUR                  R                  nUR                  R                  nUR                  R
                  R                  nS n[        US5      (       a2  UR                  S   R                  nUR                  S   R                  nU R                  XEXgU5        g )Nr  r  )listdictsetr(  r+   )typepy_type_namelooprv   r   r"  r#  hasattrr(  r)  r4  )r   ra   tpmapr  rv   r   r#  r)  s           r   visit_ComprehensionNode(ExpressionWriter.visit_ComprehensionNode  s    tD9yy--/0yy~~!!99%%..	4&&*44I??1%**Dh6Jr   c                    UR                   R                  nUR                   R                  nUR                   R                  R                  nS n[        US5      (       aG  UR                  S   R                  nUR                  S   R                  R                  R                  nO'[        US5      (       a  UR                  R                  nU R                  X#XES5        g )Nr(  r+   r>  r  )rD  rv   r   r"  r#  rE  r(  r)  r>  r(  r4  )r   ra   rv   r   r#  r)  s         r   visit_GeneratorExpressionNode.ExpressionWriter.visit_GeneratorExpressionNode  s    yy~~!!99%%..	4&&*44I??1%**//33DT6""99==Dh4Hr   )ro  r-   r   ))r   r   )4r!   r"   r#   r$   r  r   r9   r   rw  r]   rh   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-  r1  r4  r7  r<  rG  rJ  r%   r	  r
  s   @r   rm  rm    s   0"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I Ir   rm  c                   *    \ rS rSrSrS rS rS rSrg)	PxdWriteri  zP
A Cython code writer for everything supported in pxd files.
(currently unused)
c                 l    [        SR                  U R                  U5      R                  5      5        U$ )N
)printr   r9   r   r`   s     r   __call__PxdWriter.__call__  s'    dii

4(../0r   c                    UR                   (       a  U R                  S5        OU R                  S5        UR                  (       a;  U R                  SR	                  UR                  5      5        U R                  S5        UR
                  S:w  a,  U R                  UR
                  5        U R                  S5        UR                  (       a  U R                  S5        U R                  UR                  5        g )Nr   r   r   r   r   )	r   rG   r   r   r   r   r   r6   r   r`   s     r   r   PxdWriter.visit_CFuncDefNode  s    NN8$NN7#>>HHSXXdnn-.HHSM??i'HHT__%HHSM88HHV

4??#r   c                     g r   r&   r`   s     r   visit_StatNodePxdWriter.visit_StatNode$  s    r   r&   N)	r!   r"   r#   r$   r  rQ  r   rV  r%   r&   r   r   rM  rM    s    
$r   rM  c                       \ rS rSrSrSrg)
CodeWriteri(  z 
A complete Cython code writer.
r&   N)r!   r"   r#   r$   r  r%   r&   r   r   rY  rY  (  s    r   rY  N)r  Compiler.Visitorr   Compiler.ExprNodesCompiler.Nodesr   r   r(   r  rm  rM  rY  r&   r   r   <module>r]     sn    * ! / "f fR	U.' U.phI{ hIV	!#3 :"2 r   