ó
    F±‰jUc  ã                   ó°   • 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    ÚŸC:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\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   r@   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   rE   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   ©rF   rM   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+   éÿÿÿÿú = ú, )Úlenr5   Údefaultr   )r   ÚitemsÚ
output_rhsÚitems       r   Úcomma_separated_listÚ&DeclarationWriter.comma_separated_listI   s¬   € Üˆu‹:˜‹>Ø˜c˜r›
�Ø—
‘
˜4Ô Þ $§,¡,Ñ":Ø—H‘H˜U”OØ—J‘J˜tŸ|™|Ô,Ø—‘˜–ñ #ð �J‰J�u˜R‘yÔ!Þ˜e B™i×/Ñ/Ñ;Ø—‘˜”Ø—
‘
˜5 ™9×,Ñ,Õ-ð <ˆzð r   c                 óf   • U R                  5         U R                  U5        U R                  5         g r   )r>   r5   rB   ©r   Únodes     r   Ú_visit_indentedÚ!DeclarationWriter._visit_indentedV   s    € Ø�‰ŒØ�
‰
�4ÔØ�‰�r   c                 ó   • [        SU-  5      e)Nú"Node not handled by serializer: %r)ÚAssertionErrorr_   s     r   Ú
visit_NodeÚDeclarationWriter.visit_Node[   s   € ÜÐAÀDÑ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   ri   r_   s     r   Úvisit_StatListNodeÚ$DeclarationWriter.visit_StatListNodea   rm   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   ra   Úbody)r   r`   Úfiles      r   Úvisit_CDefExternNodeÚ&DeclarationWriter.visit_CDefExternNoded   sG   € Ø×ÑÑ$Ø‰Dà˜D×-Ñ-Ñ-ˆDØ�‰Ð+¨dÑ2Ô3Ø×Ñ˜TŸY™YÕ'r   c                 ó\   • U R                  S5        U R                  UR                  5        g )Nr   ©r   r5   Úbaser_   s     r   Úvisit_CPtrDeclaratorNodeÚ*DeclarationWriter.visit_CPtrDeclaratorNodel   ó   € Ø�‰�ŒØ�
‰
�4—9‘9Õr   c                 ó\   • U R                  S5        U R                  UR                  5        g )NÚ&rx   r_   s     r   Úvisit_CReferenceDeclaratorNodeÚ0DeclarationWriter.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Ú[Ú])r5   ry   r   Ú	dimensionr_   s     r   Úvisit_CArrayDeclaratorNodeÚ,DeclarationWriter.visit_CArrayDeclaratorNodet   sB   € Ø�
‰
�4—9‘9ÔØ�‰�ŒØ�>‰>Ñ%Ø�J‰J�t—~‘~Ô&Ø�‰��r   c                 ó´   • U R                  UR                  5        U R                  S5        U R                  UR                  5        U R                  S5        g ©NÚ(Ú))r5   ry   r   r\   ÚargsrM   r_   s     r   Úvisit_CFuncDeclaratorNodeÚ+DeclarationWriter.visit_CFuncDeclaratorNode{   s;   € à�
‰
�4—9‘9ÔØ�‰�ŒØ×!Ñ! $§)¡)Ô,Ø�‰�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„   € à××Ø�H‰HÐ1°$·+±+Ñ>Ô?Ø�}‰}˜qÓ Ø—‘˜ T§]¡] NÑ2Õ3Ø—‘ Ó"Ø—‘˜ 4§=¡=Ñ0Ô1Ø�9‰9Ñ Ø�H‰H�T—Y‘YÕð !r   c                 óp   • U R                  UR                  5        U R                  UR                  5        g r   )r5   Ú	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Ú.)r5   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‚   )r5   Úbase_type_noder   r\   Úpositional_argsÚkeyword_argsÚkey_value_pairsr_   s     r   Úvisit_TemplatedTypeNodeÚ)DeclarationWriter.visit_TemplatedTypeNode™   sO   € Ø�
‰
�4×&Ñ&Ô'Ø�‰�ŒØ×!Ñ! $×"6Ñ"6¸×9JÑ9J×9ZÑ9ZÑ"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)rZ   )rF   r5   rœ   r   r\   ÚdeclaratorsrM   r_   s     r   Úvisit_CVarDefNodeÚ#DeclarationWriter.visit_CVarDefNodeŸ   sK   € Ø�‰�wÔØ�
‰
�4—>‘>Ô"Ø�‰�ŒØ×!Ñ! $×"2Ñ"2¸tÐ!Ñ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)	rF   r‘   r   ÚcnamerM   r>   r   r5   rB   )r   r`   ÚdeclÚextrasÚ
attributesÚ	attributes         r   Ú_visit_container_nodeÚ'DeclarationWriter._visit_container_node¦   s¡   € à�‰�tÔØ�9�9Ø�H‰H�SŒMØ�H‰H�T—Y‘YÔØ�z‰zÑ%Ø—‘˜ 4§:¡:Ñ-Ô.ÞØ�H‰H�VÔØ�‰�SÔØ�‰ŒÞØ�L‰L˜Õ ã'�	Ø—
‘
˜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   r`   r¶   s      r   Úvisit_CStructOrUnionDefNodeÚ-DeclarationWriter.visit_CStructOrUnionDefNode¹   s^   € Ø××Ø‰DàˆDØ�?‰?˜hÓ&Ø�IÑˆDØ�;�;Ø�IÑˆDØ—	‘	ÑˆØ×"Ñ" 4¨t°T·_±_Õ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]rV   z(%s)zcdef cppclass)Ú	templatesÚjoinÚbase_classesrº   r¸   )r   r`   r·   s      r   Úvisit_CppClassNodeÚ$DeclarationWriter.visit_CppClassNodeÅ   sb   € ØˆØ�>�>Ø˜dŸi™i¨¯©Ó7Ñ7ˆFØ××Ø�f˜tŸy™y¨×):Ñ):Ó;Ñ;Ñ;ˆFØ×"Ñ" 4¨¸&Ç/Á/ÕRr   c                 ó@   • U R                  USS UR                  5        g )Nz	cdef enum)rº   rY   r_   s     r   Úvisit_CEnumDefNodeÚ$DeclarationWriter.visit_CEnumDefNodeÍ   s   € Ø×"Ñ" 4¨°d¸D¿J¹JÕ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²   rU   )rF   r‘   rµ   r   Úvaluer5   rM   r_   s     r   Úvisit_CEnumDefItemNodeÚ(DeclarationWriter.visit_CEnumDefItemNodeÐ   sY   € Ø�‰�t—y‘yÔ!Ø�:�:Ø�H‰H�W˜tŸz™zÑ)Ô*Ø�:�:Ø�H‰H�UŒOØ�J‰J�t—z‘zÔ"Ø�‰�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Ú
decoratorsr5   rF   r   Ú
class_nameÚbase_class_nameÚbase_class_modulerM   ra   rs   )r   r`   Ú	decorators      r   Úvisit_CClassDefNodeÚ%DeclarationWriter.visit_CClassDefNodeÙ   sÃ   € Ø×#×#Ð#Ð#Ø�?�?Ø!Ÿ_œ_�	Ø—
‘
˜9Ö%ñ -à�‰�}Ô%Ø�‰�—‘Ô!Ø××Ø�H‰H�SŒMØ×%×%Ø—‘˜×/Ñ/Ô0Ø—‘˜”Ø�H‰H�T×)Ñ)Ô*Ø�H‰H�SŒMØ�‰�SÔØ×Ñ˜TŸY™YÕ'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­   )rF   r5   rœ   r   r�   rM   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(ú):)rF   r‘   r\   rŒ   rM   ra   rs   r_   s     r   Úvisit_FuncDefNodeÚ#DeclarationWriter.visit_FuncDefNodeñ   sG   € à�‰�y 4§9¡9Ñ,Ô-Ø×!Ñ! $§)¡)Ô,Ø�‰�TÔØ×Ñ˜TŸY™YÕ'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ß   )rF   ÚoverridableÚ	modifiersr   rÇ   rÀ   Úapirœ   r5   r‘   r�   ry   r\   rŒ   rM   ra   rs   r_   s     r   Úvisit_CFuncDefNodeÚ$DeclarationWriter.visit_CFuncDefNodeø   s  € Ø�‰ 4×#3×#3‘x¸ÔAØ�>�>Ø�H‰H�S—X‘X˜dŸn™nÓ-Ô.Ø�H‰H�SŒMØ�?‰?˜iÓ'Ø�H‰H�T—_‘_Ô%Ø�H‰H�SŒMØ�8�8Ø�H‰H�VÔà�>�>Ø�J‰J�t—~‘~Ô&Ø�~‰~×"Ñ"Ñ.Ø—‘˜”ð 	�
‰
�4—?‘?×'Ñ'Ô(Ø�‰�ŒØ×!Ñ! $§/¡/×"6Ñ"6Ô7Ø�‰�TÔà×Ñ˜TŸY™YÕ'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­   rU   )	Ú
isinstancerœ   r   r‘   r5   r�   Údeclared_namer   rX   r_   s     r   Úvisit_CArgDeclNodeÚ$DeclarationWriter.visit_CArgDeclNode  s�   € ô ˜$Ÿ.™.Ô*=×>Ñ>Ø—‘×#Ñ#Ñ/Ø�J‰J�t—~‘~Ô&ð �‰×,Ñ,×.Ñ.Ø—‘˜”Ø�
‰
�4—?‘?Ô#Ø�<‰<Ñ#Ø�H‰H�UŒOØ�J‰J�t—|‘|Õ$ð $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 )rF   r   rÓ   Úas_namerM   r_   s     r   Úvisit_CImportStatNodeÚ'DeclarationWriter.visit_CImportStatNode"  sL   € Ø�‰�zÔ"Ø�‰�×!Ñ!Ô"Ø�<�<Ø�H‰H�VÔØ�H‰H�T—\‘\Ô"Ø�‰�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 TFrV   rñ   )rF   r   rÓ   Úimported_namesrM   )r   r`   ÚfirstÚposr‘   rò   rÂ   s          r   Úvisit_FromCImportStatNodeÚ+DeclarationWriter.visit_FromCImportStatNode*  s–   € Ø�‰�wÔØ�‰�×!Ñ!Ô"Ø�‰�ÔØˆØ(,×(;Ô(;Ñ$ˆC�wØ‘<Ð�<ÞØ‘à—‘˜”Ø�H‰H�TŒNßˆ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Ú@)rF   r5   rØ   rM   r_   s     r   Úvisit_DecoratorNodeÚ%DeclarationWriter.visit_DecoratorNode>  s'   € Ø�‰�sÔØ�
‰
�4—>‘>Ô"Ø�‰�r   c                 óF   • U R                  S5        U R                  5         g )Nr´   rP   r_   s     r   Úvisit_PassStatNodeÚ$DeclarationWriter.visit_PassStatNodeC  s   € Ø�‰�vÔØ�‰�r   )r.   r-   r0   r/   r   )r   )F)0r!   r"   r#   r$   Ú__doc__rE   r   r8   r>   rB   rF   r   r   rM   rQ   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%   Ú__classcell__©r1   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 ©NrU   )rF   r5   Úlhsr   ÚrhsrM   r_   s     r   Úvisit_SingleAssignmentNodeÚ*StatementWriter.visit_SingleAssignmentNodeM  s@   € Ø�‰ÔØ�
‰
�4—8‘8ÔØ�‰�ŒØ�
‰
�4—8‘8ÔØ�‰�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  )rF   Úlhs_listr5   r   r  rM   )r   r`   r  s      r   Úvisit_CascadedAssignmentNodeÚ,StatementWriter.visit_CascadedAssignmentNodeT  sK   € Ø�‰ÔØ—=”=ˆCØ�J‰J�sŒOØ�H‰H�UŽOñ !ð 	�
‰
�4—8‘8ÔØ�‰�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 Ú,)rF   r\   Ú	arg_tuplerŒ   Úappend_newliner   rM   r_   s     r   Úvisit_PrintStatNodeÚ#StatementWriter.visit_PrintStatNode\  sC   € Ø�‰�xÔ Ø×!Ñ! $§.¡.×"5Ñ"5Ô6Ø×"×"Ø�H‰H�SŒMØ�‰�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:)rF   ÚtargetÚis_sequence_constructorr\   rŒ   r5   r   ÚiteratorÚsequencerM   ra   rs   Úelse_clauserQ   r_   s     r   Úvisit_ForInStatNodeÚ#StatementWriter.visit_ForInStatNodec  s´   € Ø�‰�vÔØ�;‰;×.×.Ø×%Ñ% d§k¡k×&6Ñ&6Õ7à�J‰J�t—{‘{Ô#Ø�‰�ÔØ�
‰
�4—=‘=×)Ñ)Ô*Ø�‰�SÔØ×Ñ˜TŸY™YÔ'Ø×ÑÑ'Ø�I‰I�gÔØ× Ñ  ×!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  )	rF   r5   Ú
if_clausesÚ	conditionrM   ra   rs   r!  rQ   )r   r`   Úclauses      r   Úvisit_IfStatNodeÚ StatementWriter.visit_IfStatNodeq  sØ   € ð 	�‰�uÔØ�
‰
�4—?‘? 1Ñ%×/Ñ/Ô0Ø�‰�SÔØ×Ñ˜TŸ_™_¨QÑ/×4Ñ4Ô5Ø—o‘o a bÓ)ˆFØ�N‰N˜7Ô#Ø�J‰J�v×'Ñ'Ô(Ø�L‰L˜ÔØ× Ñ  §¡Ö-ñ	 *ð
 ×ÑÑ'Ø�I‰I�gÔØ× Ñ  ×!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  )rF   r5   r&  rM   ra   rs   r!  rQ   r_   s     r   Úvisit_WhileStatNodeÚ#StatementWriter.visit_WhileStatNode�  sm   € Ø�‰�xÔ Ø�
‰
�4—>‘>Ô"Ø�‰�SÔØ×Ñ˜TŸY™YÔ'Ø×ÑÑ'Ø�I‰I�gÔØ× Ñ  ×!1Ñ!1Õ2ð (r   c                 ó&   • U R                  S5        g )NÚcontinue©rQ   r_   s     r   Úvisit_ContinueStatNodeÚ&StatementWriter.visit_ContinueStatNodeŠ  s   € Ø�	‰	�*Õr   c                 ó&   • U R                  S5        g )NÚbreakr/  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   )rF   r5   ÚexprrM   r_   s     r   Úvisit_ExprStatNodeÚ"StatementWriter.visit_ExprStatNode“  s%   € Ø�‰ÔØ�
‰
�4—9‘9ÔØ�‰�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= )rF   r5   r  r   Úoperatorr  rM   r_   s     r   Úvisit_InPlaceAssignmentNodeÚ+StatementWriter.visit_InPlaceAssignmentNode˜  sJ   € Ø�‰ÔØ�
‰
�4—8‘8ÔØ�‰�˜4Ÿ=™=Ñ(Ô)Ø�
‰
�4—8‘8ÔØ�‰�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³   )rF   r   r5   Úmanagerr  rM   ra   rs   r_   s     r   Úvisit_WithStatNodeÚ"StatementWriter.visit_WithStatNodeŸ  sl   € Ø�‰ÔØ�‰�ÔØ�
‰
�4—<‘<Ô Ø�;‰;Ñ"Ø�H‰H�VÔØ�J‰J�t—{‘{Ô#Ø�‰�SÔØ×Ñ˜TŸY™YÕ'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:)rQ   ra   rs   Úfinally_clauser_   s     r   Úvisit_TryFinallyStatNodeÚ(StatementWriter.visit_TryFinallyStatNode©  s@   € Ø�	‰	�&ÔØ×Ñ˜TŸY™YÔ'Ø�	‰	�*ÔØ×Ñ˜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 )NrG  )rQ   ra   rs   Úexcept_clausesr5   r!  )r   r`   Úxs      r   Úvisit_TryExceptStatNodeÚ'StatementWriter.visit_TryExceptStatNode¯  s^   € Ø�	‰	�&ÔØ×Ñ˜TŸY™YÔ'Ø×$Ô$ˆAØ�J‰J�qŽMñ %à×ÑÑ'Ø�J‰J�t×'Ñ'Õ(ð (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­   rV   r³   )rF   Úpatternr   r5   r  rM   ra   rs   r_   s     r   Úvisit_ExceptClauseNodeÚ&StatementWriter.visit_ExceptClauseNode·  sv   € Ø�‰�xÔ Ø�<‰<Ñ#Ø�H‰H�SŒMØ�J‰J�t—|‘|Ô$Ø�;‰;Ñ"Ø�H‰H�TŒNØ�J‰J�t—{‘{Ô#Ø�‰�SÔØ×Ñ˜TŸY™YÕ'r   c                 ó¸   • U R                  S5        UR                  b,  U R                  S5        U R                  UR                  5        U R	                  5         g )NÚreturnr­   )rF   rÏ   r   r5   rM   r_   s     r   Úvisit_ReturnStatNodeÚ$StatementWriter.visit_ReturnStatNodeÂ  s<   € Ø�‰�xÔ Ø�:‰:Ñ!Ø�H‰H�SŒMØ�J‰J�t—z‘zÔ"Ø�‰�r   c                 ó&   • U R                  S5        g )NÚraiser/  r_   s     r   Úvisit_ReraiseStatNodeÚ%StatementWriter.visit_ReraiseStatNodeÉ  r6  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/   r5   rs   )r   r`   ÚidxÚhandles       r   Úvisit_TempsBlockNodeÚ$StatementWriter.visit_TempsBlockNodeÏ  sa   € ð ˆØ—j”jˆFØ%-°×1DÑ1DÀcÐ0JÑ%JˆD�N‰N˜6Ñ"Ø�1‰HŠCñ !ð 	×Ò˜qÑ ÕØ�
‰
�4—9‘9Õr   c                 óT   • U R                  U R                  UR                     5        g r   )r   r/   rc  r_   s     r   Úvisit_TempRefNodeÚ!StatementWriter.visit_TempRefNodeÜ  s   € Ø�‰�—‘ §¡Ñ,Õ-r   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   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                 óT   >• [         TU ]  5         Uc  SnXl        X l        S/U l        g )Nr   r+   )r,   r   r-   Úallow_unknown_nodesÚ
precedence)r   r-   rl  r1   s      €r   r   ÚExpressionWriter.__init__å  s,   ø€ Ü‰ÑÔØ‰>ØˆFØŒØ#6Ô Ø˜#ˆ�r   c                 ó<   • U R                  U5        U R                  $ r   r4   r6   s     r   r8   Ú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-   ÚendswithrW   r   s     r   ÚremoveÚExpressionWriter.removeô  s4   € Ø�;‰;×Ñ ×"Ñ"ØŸ+™+ h¬¨A« wÐ/ˆD�Kð #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+   rT   rV   )rW   r5   r   )r   rY   r[   s      r   r\   Ú%ExpressionWriter.comma_separated_listø  sK   € Üˆu‹:˜‹>Ø˜c˜r›
�Ø—
‘
˜4Ô Ø—‘˜–ñ #ð �J‰J�u˜R‘yÕ!ð	 r   c                 ód   • U R                   (       a  U R                  S5        g [        SU-  5      e)Nú...rd   )rl  r   re   r_   s     r   rf   ÚExpressionWriter.visit_Nodeÿ  s'   € Ø×#×#Ø�H‰H�U�Oä Ð!EÈÑ!LÓMÐMr   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 )Nrz  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  ó   € Ø�‰”�T—Z‘Z“Õ!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   € Ø�‰�D—J‘J�<˜qÐ!Õ"r   c                 óL   • U R                  [        UR                  5      5        g r   ©r   ÚreprrÏ   r_   s     r   Úvisit_BytesNodeÚ ExpressionWriter.visit_BytesNode  ó   € Ø�‰”�d—j‘jÓ!Õ"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   r`   ÚparensÚ
open_parenÚclose_parenrY   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())rW   r¥  r©  r   r_   s     r   Úvisit_SetNodeÚExpressionWriter.visit_SetNode2  s4   € Üˆt×!Ñ!Ó#Ó$ qÓ(Ø×Ñ˜t TÕ*à�H‰H�WÕr   c                 ó(   • U R                  US5        g )Nr¶  r­  r_   s     r   Úvisit_DictNodeÚExpressionWriter.visit_DictNode8  r°  r   c                 ó’   • U R                  UR                  5        U R                  S5        U R                  UR                  5        g )Nú: )r5   Úkeyr   rÏ   r_   s     r   Úvisit_DictItemNodeÚ#ExpressionWriter.visit_DictItemNode;  s-   € Ø�
‰
�4—8‘8ÔØ�‰�ŒØ�
‰
�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 )NrT   rŠ   )rm  r   r   )r   Únew_precÚold_precs      r   Úoperator_enterÚExpressionWriter.operator_enterS  s3   € Ø—?‘? 2Ñ&ˆØÓØ�H‰H�SŒMØ�‰×Ñ˜xÕ(r   c                 ó†   • U R                   SS  u  pX:”  a  U R                  S5        U R                   R                  5         g )Néþÿÿÿr‹   )rm  r   Úpop)r   rà  rß  s      r   Úoperator_exitÚExpressionWriter.operator_exitY  s6   € Ø!Ÿ_™_¨R¨SÐ1ÑˆØÓØ�H‰H�SŒMØ�‰×ÑÕ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   r5   Úoperandræ  ©r   r`   Ú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)r?  ré  rá  r   r5   rê  ræ  rë  s       r   Úvisit_UnopNodeÚExpressionWriter.visit_UnopNodeg  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­   )
r?  Úbinop_precedenceÚgetrá  r5   Úoperand1r   ÚreplaceÚoperand2ræ  rë  s       r   Úvisit_BinopNodeÚ ExpressionWriter.visit_BinopNodeo  sy   € Ø�]‰]ˆØ×$Ñ$×(Ñ(¨¨QÓ/ˆØ×Ñ˜DÔ!Ø�
‰
�4—=‘=Ô!Ø�‰�˜"Ÿ*™* S¨#Ó.Ñ.Ô/Ø�
‰
�4—=‘=Ô!Ø×ÑÕr   c                 ó&   • U R                  U5        g r   ©rú  r_   s     r   Úvisit_BoolBinopNodeÚ$ExpressionWriter.visit_BoolBinopNodex  ó   € Ø×Ñ˜TÕ"r   c                 ó&   • U R                  U5        g r   rý  r_   s     r   Úvisit_PrimaryCmpNodeÚ%ExpressionWriter.visit_PrimaryCmpNode{  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„   )r5   ry   r   rì   ÚindexÚ	TupleNoder¥  r©  r_   s     r   Úvisit_IndexNodeÚ ExpressionWriter.visit_IndexNode~  sy   € Ø�
‰
�4—9‘9ÔØ�‰�ŒÜ�d—j‘j¤)×,Ñ,Ø�z‰z×'Ñ'×)Ñ)Ø×"Ñ" 4§:¡:Õ.à—‘˜•à�J‰J�t—z‘zÔ"Ø�‰��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„   )r5   ry   r   ÚstartÚstopÚslicer_   s     r   Úvisit_SliceIndexNodeÚ%ExpressionWriter.visit_SliceIndexNodeŠ  sƒ   € Ø�
‰
�4—9‘9ÔØ�‰�ŒØ�:�:Ø�J‰J�t—z‘zÔ"Ø�‰�ŒØ�9�9Ø�J‰J�t—y‘yÔ!Ø�:�:Ø�H‰H�SŒMØ�J‰J�t—z‘zÔ"Ø�‰��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_noner5   r   r  Ústepr_   s     r   Úvisit_SliceNodeÚ ExpressionWriter.visit_SliceNode—  st   € Ø�z‰z×!×!Ø�J‰J�t—z‘zÔ"Ø�‰�ŒØ�y‰y× × Ø�J‰J�t—y‘yÔ!Ø�y‰y× × Ø�H‰H�SŒMØ�J‰J�t—y‘yÕ!ð !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 )r5   Útrue_valr   r&  Ú	false_valr_   s     r   Úvisit_CondExprNodeÚ#ExpressionWriter.visit_CondExprNode¡  sJ   € Ø�
‰
�4—=‘=Ô!Ø�‰�ÔØ�
‰
�4—>‘>Ô"Ø�‰�ÔØ�
‰
�4—>‘>Õ"r   c                 óv   • U R                  UR                  5        U R                  SUR                  -  5        g )Nz.%s)r5   Úobjr   r¹   r_   s     r   Úvisit_AttributeNodeÚ$ExpressionWriter.visit_AttributeNode¨  s'   € Ø�
‰
�4—8‘8ÔØ�‰�˜Ÿ™Ñ'Õ(r   c                 ó´   • U R                  UR                  5        U R                  S5        U R                  UR                  5        U R                  S5        g r‰   )r5   Ú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 )NrV   r   )rì   ÚAddNodeÚemit_pos_argsr÷  rù  r  r¥  r5   r   ÚAsTupleNodeÚarg©r   r`   r;  s      r   r$  ÚExpressionWriter.emit_pos_args²  s¾   € Ø‰<ØÜ�dœG×$Ñ$Ø×Ñ˜tŸ}™}Ô-Ø×Ñ˜tŸ}™}Õ-Ü˜œi×(Ñ(Ø×*Ñ*Ö,�Ø—
‘
˜4Ô Ø—‘˜–ò -ô ˜œk×*Ñ*Ø�H‰H�SŒMØ�J‰J�t—x‘xÔ Ø�H‰H�T�Nà�J‰J�tÔØ�H‰H�T�Nr   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=rV   rÝ  )	rì   ÚMergedDictNoder¥  Úemit_kwd_argsÚDictNoder   r¾  rÏ   r5   r'  s      r   r+  ÚExpressionWriter.emit_kwd_argsÄ  s°   € Ø‰<ØÜ�dœN×+Ñ+Ø×*Ñ*Ö,�Ø×"Ñ" 4Ö(ò -ä˜œh×'Ñ'Ø×*Ñ*Ö,�Ø—‘˜ §¡§¡Ñ/Ô0Ø—
‘
˜4Ÿ:™:Ô&Ø—‘˜–ò -ð
 �H‰H�TŒNØ�J‰J�tÔØ�H‰H�T�Nr   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Š   rV   r‹   )r5   r  r   r$  r¦   r+  r§   ru  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   r5   )r   rs   r  r   r&  r¦  r§  r¨  s           r   Úemit_comprehensionÚ#ExpressionWriter.emit_comprehensionÜ  s{   € ð #)Ñˆ
Ø�‰�ÔØ�
‰
�4ÔØ�‰�ÔØ�
‰
�6ÔØ�‰�ÔØ�
‰
�8ÔÞØ�H‰H�VÔØ�J‰J�yÔ!Ø�‰�Õr   c                 ó:   • U R                  UR                  5        g r   )r5   r;  r_   s     r   Úvisit_ComprehensionAppendNodeÚ.ExpressionWriter.visit_ComprehensionAppendNodeë  s   € Ø�
‰
�4—9‘9Õr   c                 óº  • UR                   n[        U[        5      (       aH  U R                  UR                  5        U R                  S5        U R                  UR                  5        g UR                  =(       d    UR                  nU R                  S5        U(       d  U R                  S5        U R                  U5        U(       d  U R                  S5        g g )Nr½  rÝ  rŠ   r‹   )	Ú	dict_itemrì   ÚDictItemNoder5   r¾  r   rÏ   Úis_nameÚis_attribute)r   r`   r[   Ú	is_simples       r   Ú!visit_DictComprehensionAppendNodeÚ2ExpressionWriter.visit_DictComprehensionAppendNodeî  s�   € Ø�~‰~ˆÜ�dœL×)Ñ)Ø�J‰J�t—x‘xÔ Ø�H‰H�TŒNØ�J‰J�t—z‘zÕ"àŸ™×9¨×(9Ñ(9ˆIØ�H‰H�TŒNÞØ—‘˜”Ø�J‰J�tÔÞØ—‘˜•ð 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Úlooprs   r  r  r   Úhasattrr%  r&  r2  )r   r`   Útpmapr¦  rs   r  r   r&  s           r   Úvisit_ComprehensionNodeÚ(ExpressionWriter.visit_ComprehensionNodeý  s    € Ø t°DÑ9ˆØ—y‘y×-Ñ-Ó/Ñ0ˆØ�y‰y�~‰~ˆØ—‘×!Ñ!ˆØ—9‘9×%Ñ%×.Ñ.ˆØˆ	Ü�4˜×&Ñ&àŸ™¨Ñ*×4Ñ4ˆIØ—?‘? 1Ñ%×*Ñ*ˆDØ×Ñ ¨hÀ6Õ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²  )rE  rs   r  r  r   rF  r%  r&  r;  r&  r2  )r   r`   rs   r  r   r&  s         r   Úvisit_GeneratorExpressionNodeÚ.ExpressionWriter.visit_GeneratorExpressionNode
  s¥   € Ø�y‰y�~‰~ˆØ—‘×!Ñ!ˆØ—9‘9×%Ñ%×.Ñ.ˆØˆ	Ü�4˜×&Ñ&àŸ™¨Ñ*×4Ñ4ˆIØ—?‘? 1Ñ%×*Ñ*×/Ñ/×3Ñ3‰DÜ�T˜6×"Ñ"à—9‘9—=‘=ˆDØ×Ñ ¨hÀ4ÕHr   )rl  rm  r-   )NF))r   r   )4r!   r"   r#   r$   r  r   r8   r   ru  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/  r2  r5  r=  rH  rK  r%   r  r  s   @r   rj  rj  à  sø  ø† ñ÷òòò0ò"òNòòòòòò"ò"ò#ò#ò#ôò'ò'òò'òð �qØ�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Ø�b˜r¨°"àòÐò)òòòòò#ò#ò
òò"ò#ò)òòò$ò ð #+ôòòòK÷Ið Ir   rj  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Ç   r8   r   r_   s     r   Ú__call__ÚPxdWriter.__call__  s'   € Üˆd�i‰i˜Ÿ
™
 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æ   rF   rç   r   rÇ   rÀ   rè   r5   r�   r_   s     r   ré   ÚPxdWriter.visit_CFuncDefNode#  s˜   € Ø××Ø�N‰N˜8Õ$à�N‰N˜7Ô#Ø�>�>Ø�H‰H�S—X‘X˜dŸn™nÓ-Ô.Ø�H‰H�SŒMØ�?‰?˜iÓ'Ø�H‰H�T—_‘_Ô%Ø�H‰H�SŒMØ�8�8Ø�H‰H�VÔØ�
‰
�4—?‘?Õ#r   c                 ó   • g r   r&   r_   s     r   Úvisit_StatNodeÚPxdWriter.visit_StatNode2  s   € Ør   r&   N)	r!   r"   r#   r$   r  rR  ré   rW  r%   r&   r   r   rN  rN    s   † ñò
ò$õr   rN  c                   ó   • \ rS rSrSrSrg)Ú
CodeWriteri6  z 
A complete Cython code writer.
r&   N)r!   r"   r#   r$   r  r%   r&   r   r   rZ  rZ  6  s   † ôr   rZ  N)r  ÚCompiler.Visitorr   ÚCompiler.ExprNodesÚCompiler.Nodesr   r   r(   r	  rj  rN  rZ  r&   r   r   Ú<module>r^     sn   ðñõ *Ü !Ý /÷ñ ô"f˜ô fôR	U.Ð'ô U.ôpvI�{ô vIôr	Ð!Ð#3ô ô:�Ð"2õ r   