Ë
    Æ[;jb  ã                   ó°   — d Z ddlmZ ddl­ ddlmZ  G d„ d«      Z G d„ de«      Z G d	„ d
e«      Z G d„ de«      Z	 G d„ dee	«      Z
 G d„ dee	«      Zy)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                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)ÚLinesResultc                 ó    — g | _         d| _        y ©NÚ )ÚlinesÚs©Úselfs    úZG:\00. PROJECTS\API\Inventory\templateJSON\kerjaOCR\Lib\site-packages\Cython/CodeWriter.pyÚ__init__zLinesResult.__init__   s   € ØˆŒ
Øˆ�ó    c                 ó.   — | xj                   |z  c_         y ©N)r   ©r   r   s     r   ÚputzLinesResult.put   s   € Ø�Š�!‰Žr   c                 ó\   — | j                   j                  | j                  «       d| _        y r	   )r   Úappendr   r   s    r   ÚnewlinezLinesResult.newline   s   € Ø�
‰
×Ñ˜$Ÿ&™&Ô!Øˆ�r   c                 óF   — | j                  |«       | j                  «        y r   )r   r   r   s     r   ÚputlinezLinesResult.putline   s   € Ø�‰�ŒØ�‰�r   N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   © r   r   r   r      s   „ òòòór   r   c                   ó  ‡ — e Zd ZdZdZd+ˆ fd„	Zd„ Zd„ Zd„ Zd,d„Z	d„ Z
d	„ Zd,d
„Zd„ Zd-d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d „ Z"d!„ Z#d"„ Z$d#„ Z%d$„ Z&d%„ Z'd&„ Z(d'„ Z)d(„ Z*d)„ Z+d*„ Z,ˆ xZ-S ).ÚDeclarationWriterzE
    A Cython code writer that is limited to declarations nodes.
    z    c                 ór   •— t         ‰| �  «        |€
t        «       }|| _        d| _        i | _        d| _        y )Né    )Úsuperr   r   ÚresultÚ
numindentsÚ	tempnamesÚtempblockindex)r   r$   Ú	__class__s     €r   r   zDeclarationWriter.__init__&   s7   ø€ Ü‰ÑÔØˆ>Ü “]ˆFØˆŒØˆŒØˆŒØˆÕr   c                 ó<   — | j                  |«       | j                  S r   ©Úvisitr$   ©r   Útrees     r   ÚwritezDeclarationWriter.write/   ó   € Ø�
‰
�4ÔØ�{‰{Ðr   c                 ó.   — | xj                   dz  c_         y ©Nr   ©r%   r   s    r   ÚindentzDeclarationWriter.indent3   ó   € Ø�Š˜1ÑŽr   c                 ó.   — | xj                   dz  c_         y r1   r2   r   s    r   ÚdedentzDeclarationWriter.dedent6   r4   r   c                 ón   — | j                   j                  | j                  | j                  z  |z   «       y r   )r$   r   Úindent_stringr%   r   s     r   Ú	startlinezDeclarationWriter.startline9   s&   € Ø�‰�‰˜×*Ñ*¨T¯_©_Ñ<¸qÑ@ÕAr   c                 ó:   — | j                   j                  |«       y r   )r$   r   r   s     r   r   zDeclarationWriter.put<   s   € Ø�‰�‰˜Õr   c                 ón   — | j                   j                  | j                  | j                  z  |z   «       y r   )r$   r   r8   r%   r   s     r   r   zDeclarationWriter.putline?   s(   € Ø�‰×Ñ˜D×.Ñ.°·±Ñ@À1ÑDÕEr   c                 ó:   — | j                   j                  |«       y r   )r$   r   r   s     r   ÚendlinezDeclarationWriter.endlineB   s   € Ø�‰×Ñ˜AÕr   c                 óF   — | j                  |«       | j                  «        y r   ©r9   r=   r   s     r   ÚlinezDeclarationWriter.lineE   s   € Ø�‰�qÔØ�‰�r   c                 óš  — t        |«      dkD  r½|d d D ]^  }| j                  |«       |r8|j                  �,| j                  d«       | j                  |j                  «       | j                  d«       Œ` | j                  |d   «       |r@|d   j                  �0| j                  d«       | j                  |d   j                  «       y y y y )Nr"   éÿÿÿÿú = ú, )Úlenr+   Údefaultr   )r   ÚitemsÚ
output_rhsÚitems       r   Úcomma_separated_listz&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   — | j                  «        | j                  |«       | j                  «        y r   )r3   r+   r6   ©r   Únodes     r   Ú_visit_indentedz!DeclarationWriter._visit_indentedV   s    € Ø�‰ŒØ�
‰
�4ÔØ�‰�r   c                 ó   — t        d|z  «      ‚)Nú"Node not handled by serializer: %r)ÚAssertionErrorrL   s     r   Ú
visit_NodezDeclarationWriter.visit_Node[   s   € ÜÐAÀDÑHÓIÐIr   c                 ó&   — | j                  |«       y r   ©ÚvisitchildrenrL   s     r   Úvisit_ModuleNodez"DeclarationWriter.visit_ModuleNode^   ó   € Ø×Ñ˜4Õ r   c                 ó&   — | j                  |«       y r   rT   rL   s     r   Úvisit_StatListNodez$DeclarationWriter.visit_StatListNodea   rW   r   c                 óž   — |j                   €d}nd|j                   z  }| j                  d|z  «       | j                  |j                  «       y )Nr   z"%s"zcdef extern from %s:)Úinclude_filer   rN   Úbody)r   rM   Úfiles      r   Úvisit_CDefExternNodez&DeclarationWriter.visit_CDefExternNoded   sG   € Ø×ÑÐ$Ø‰Dà˜D×-Ñ-Ñ-ˆDØ�‰Ð+¨dÑ2Ô3Ø×Ñ˜TŸY™YÕ'r   c                 ó\   — | j                  d«       | j                  |j                  «       y )Nr   ©r   r+   ÚbaserL   s     r   Úvisit_CPtrDeclaratorNodez*DeclarationWriter.visit_CPtrDeclaratorNodel   ó   € Ø�‰�ŒØ�
‰
�4—9‘9Õr   c                 ó\   — | j                  d«       | j                  |j                  «       y )NÚ&r`   rL   s     r   Úvisit_CReferenceDeclaratorNodez0DeclarationWriter.visit_CReferenceDeclaratorNodep   rc   r   c                 óÌ   — | j                  |j                  «       | j                  d«       |j                  �| j                  |j                  «       | j                  d«       y ©NÚ[Ú])r+   ra   r   Ú	dimensionrL   s     r   Úvisit_CArrayDeclaratorNodez,DeclarationWriter.visit_CArrayDeclaratorNodet   sB   € Ø�
‰
�4—9‘9ÔØ�‰�ŒØ�>‰>Ð%Ø�J‰J�t—~‘~Ô&Ø�‰��r   c                 ó´   — | j                  |j                  «       | j                  d«       | j                  |j                  «       | j                  d«       y ©NÚ(Ú))r+   ra   r   rJ   Úargsr=   rL   s     r   Úvisit_CFuncDeclaratorNodez+DeclarationWriter.visit_CFuncDeclaratorNode{   s;   € à�
‰
�4—9‘9ÔØ�‰�ŒØ×!Ñ! $§)¡)Ô,Ø�‰�SÕr   c                 ó:   — | j                  |j                  «       y r   ©r   ÚnamerL   s     r   Úvisit_CNameDeclaratorNodez+DeclarationWriter.visit_CNameDeclaratorNode‚   ó   € Ø�‰�—‘Õr   c                 ó`  — |j                   rz| j                  d|j                     «       |j                  dk  r | j                  d|j                   z  «       n-|j                  dkD  r| j                  d|j                  z  «       |j                  �| j                  |j                  «       y y )N)z	unsigned r
   zsigned r"   zshort zlong )Úis_basic_c_typer   ÚsignedÚlongnessru   rL   s     r   Úvisit_CSimpleBaseTypeNodez+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   — | j                  |j                  «       | j                  |j                  «       y r   )r+   Ú	base_typeÚ
declaratorrL   s     r   Úvisit_CComplexBaseTypeNodez,DeclarationWriter.visit_CComplexBaseTypeNode�   s"   € Ø�
‰
�4—>‘>Ô"Ø�
‰
�4—?‘?Õ#r   c                 ó’   — | j                  |j                  «       | j                  d«       | j                  |j                  «       y )NÚ.)r+   r~   r   ru   rL   s     r   Úvisit_CNestedBaseTypeNodez+DeclarationWriter.visit_CNestedBaseTypeNode”   s-   € Ø�
‰
�4—>‘>Ô"Ø�‰�ŒØ�‰�—‘Õr   c                 óâ   — | j                  |j                  «       | j                  d«       | j                  |j                  |j
                  j                  z   «       | j                  d«       y rh   )r+   Úbase_type_noder   rJ   Úpositional_argsÚkeyword_argsÚkey_value_pairsrL   s     r   Úvisit_TemplatedTypeNodez)DeclarationWriter.visit_TemplatedTypeNode™   sO   € Ø�
‰
�4×&Ñ&Ô'Ø�‰�ŒØ×!Ñ! $×"6Ñ"6¸×9JÑ9J×9ZÑ9ZÑ"ZÔ[Ø�‰��r   c                 óØ   — | j                  d«       | j                  |j                  «       | j                  d«       | j	                  |j
                  d¬«       | j                  «        y )Núcdef Ú T)rH   )r9   r+   r~   r   rJ   Údeclaratorsr=   rL   s     r   Úvisit_CVarDefNodez#DeclarationWriter.visit_CVarDefNodeŸ   sK   € Ø�‰�wÔØ�
‰
�4—>‘>Ô"Ø�‰�ŒØ×!Ñ! $×"2Ñ"2¸tÐ!ÔDØ�‰�r   c                 óÊ  — | j                  |«       |j                  rV| j                  d«       | j                  |j                  «       |j                  �| j                  d|j                  z  «       |r| j                  |«       | j	                  d«       | j                  «        |s| j                  d«       n|D ]  }| j                  |«       Œ | j                  «        y )NrŒ   ú "%s"Ú:Úpass)	r9   ru   r   Úcnamer=   r3   r   r+   r6   )r   rM   ÚdeclÚextrasÚ
attributesÚ	attributes         r   Ú_visit_container_nodez'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                 óÊ   — |j                   rd}nd}|j                  dk(  r|dz  }|j                  r|dz  }||j                  z  }| j	                  ||d |j
                  «       y )Nú	ctypedef r‹   Úpubliczpublic zpacked )Útypedef_flagÚ
visibilityÚpackedÚkindr˜   r–   )r   rM   r”   s      r   Úvisit_CStructOrUnionDefNodez-DeclarationWriter.visit_CStructOrUnionDefNode¹   sb   € Ø×ÒØ‰DàˆDØ�?‰?˜hÒ&Ø�IÑˆDØ�;Š;Ø�IÑˆDØ�—	‘	ÑˆØ×"Ñ" 4¨¨t°T·_±_ÕEr   c                 óò   — d}|j                   rddj                  |j                   «      z  }|j                  r!|ddj                  |j                  «      z  z  }| j                  |d||j                  «       y )Nr
   z[%s]rD   z(%s)zcdef cppclass)Ú	templatesÚjoinÚbase_classesr˜   r–   )r   rM   r•   s      r   Úvisit_CppClassNodez$DeclarationWriter.visit_CppClassNodeÅ   sd   € ØˆØ�>Š>Ø˜dŸi™i¨¯©Ó7Ñ7ˆFØ×ÒØ�f˜tŸy™y¨×):Ñ):Ó;Ñ;Ñ;ˆFØ×"Ñ" 4¨¸&À$Ç/Á/ÕRr   c                 ó@   — | j                  |dd |j                  «       y )Nz	cdef enum)r˜   rG   rL   s     r   Úvisit_CEnumDefNodez$DeclarationWriter.visit_CEnumDefNodeÍ   s   € Ø×"Ñ" 4¨°d¸D¿J¹JÕGr   c                 ó  — | j                  |j                  «       |j                  r| j                  d|j                  z  «       |j                  r,| j                  d«       | j                  |j                  «       | j                  «        y )Nr�   rC   )r9   ru   r“   r   Úvaluer+   r=   rL   s     r   Úvisit_CEnumDefItemNodez(DeclarationWriter.visit_CEnumDefItemNodeÐ   sY   € Ø�‰�t—y‘yÔ!Ø�:Š:Ø�H‰H�W˜tŸz™zÑ)Ô*Ø�:Š:Ø�H‰H�UŒOØ�J‰J�t—z‘zÔ"Ø�‰�r   c                 ó.  — |j                   rJ ‚|j                  r"|j                  D ]  }| j                  |«       Œ | j                  d«       | j	                  |j
                  «       |j                  ru| j	                  d«       |j                  r,| j	                  |j                  «       | j	                  d«       | j	                  |j                  «       | j	                  d«       | j                  d«       | j                  |j                  «       y )Nzcdef class ro   r‚   rp   r‘   )Úmodule_nameÚ
decoratorsr+   r9   r   Ú
class_nameÚbase_class_nameÚbase_class_moduler=   rN   r\   )r   rM   Ú	decorators      r   Úvisit_CClassDefNodez%DeclarationWriter.visit_CClassDefNodeÙ   sÃ   € Ø×#Ò#Ð#Ð#Ø�?Š?Ø!Ÿ_œ_�	Ø—
‘
˜9Õ%ð -à�‰�}Ô%Ø�‰�—‘Ô!Ø×ÒØ�H‰H�SŒMØ×%Ò%Ø—‘˜×/Ñ/Ô0Ø—‘˜”Ø�H‰H�T×)Ñ)Ô*Ø�H‰H�SŒMØ�‰�SÔØ×Ñ˜TŸY™YÕ'r   c                 óÔ   — | j                  d«       | j                  |j                  «       | j                  d«       | j                  |j                  «       | j                  «        y )Nrš   rŒ   )r9   r+   r~   r   r   r=   rL   s     r   Úvisit_CTypeDefNodez$DeclarationWriter.visit_CTypeDefNodeê   sB   € Ø�‰�{Ô#Ø�
‰
�4—>‘>Ô"Ø�‰�ŒØ�
‰
�4—?‘?Ô#Ø�‰�r   c                 óÎ   — | j                  d|j                  z  «       | j                  |j                  «       | j	                  d«       | j                  |j                  «       y )Nzdef %s(ú):)r9   ru   rJ   rq   r=   rN   r\   rL   s     r   Úvisit_FuncDefNodez#DeclarationWriter.visit_FuncDefNodeñ   sG   € à�‰�y 4§9¡9Ñ,Ô-Ø×!Ñ! $§)¡)Ô,Ø�‰�TÔØ×Ñ˜TŸY™YÕ'r   c                 ó*  — | j                  |j                  rdnd«       |j                  r;| j                  dj	                  |j                  «      «       | j                  d«       |j
                  dk7  r,| j                  |j
                  «       | j                  d«       |j                  r| j                  d«       |j                  rB| j                  |j                  «       |j                  j                  �| j                  d«       | j                  |j                  j                  «       | j                  d«       | j                  |j                  j                  «       | j                  d«       | j                  |j                   «       y )Núcpdef r‹   rŒ   Úprivateúapi ro   r¶   )r9   ÚoverridableÚ	modifiersr   r£   r�   Úapir~   r+   ru   r   ra   rJ   rq   r=   rN   r\   rL   s     r   Úvisit_CFuncDefNodez$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                 ó˜  — t        |j                  t        «      r|j                  j                  �F| j	                  |j                  «       |j
                  j                  «       r| j                  d«       | j	                  |j
                  «       |j                  �-| j                  d«       | j	                  |j                  «       y y )NrŒ   rC   )	Ú
isinstancer~   r   ru   r+   r   Údeclared_namer   rF   rL   s     r   Úvisit_CArgDeclNodez$DeclarationWriter.visit_CArgDeclNode  sŠ   € ô ˜$Ÿ.™.Ô*=Ô>Ø—‘×#Ñ#Ð/Ø�J‰J�t—~‘~Ô&ð �‰×,Ñ,Ô.Ø—‘˜”Ø�
‰
�4—?‘?Ô#Ø�<‰<Ð#Ø�H‰H�UŒOØ�J‰J�t—|‘|Õ$ð $r   c                 óì   — | j                  d«       | j                  |j                  «       |j                  r,| j                  d«       | j                  |j                  «       | j	                  «        y )Nzcimport ú as )r9   r   r¬   Úas_namer=   rL   s     r   Úvisit_CImportStatNodez'DeclarationWriter.visit_CImportStatNode"  sL   € Ø�‰�zÔ"Ø�‰�×!Ñ!Ô"Ø�<Š<Ø�H‰H�VÔØ�H‰H�T—\‘\Ô"Ø�‰�r   c                 ón  — | j                  d«       | j                  |j                  «       | j                  d«       d}|j                  D ]W  \  }}}}|�J ‚|rd}n| j                  d«       | j                  |«       |sŒ6| j                  d«       | j                  |«       ŒY | j	                  «        y )Nzfrom z	 cimport TFrD   rÅ   )r9   r   r¬   Úimported_namesr=   )r   rM   ÚfirstÚposru   rÆ   rŸ   s          r   Úvisit_FromCImportStatNodez+DeclarationWriter.visit_FromCImportStatNode*  s˜   € Ø�‰�wÔØ�‰�×!Ñ!Ô"Ø�‰�ÔØˆØ(,×(;Ô(;Ñ$ˆC��w Ø�<Ð�<ÙØ‘à—‘˜”Ø�H‰H�TŒNÚØ—‘˜Ô Ø—‘˜Õ!ð )<ð 	�‰�r   c                 ó:   — | j                  |j                  «       y r   rt   rL   s     r   Úvisit_NameNodez DeclarationWriter.visit_NameNode;  rw   r   c                 ó|   — | j                  d«       | j                  |j                  «       | j                  «        y )NÚ@)r9   r+   r±   r=   rL   s     r   Úvisit_DecoratorNodez%DeclarationWriter.visit_DecoratorNode>  s'   € Ø�‰�sÔØ�
‰
�4—>‘>Ô"Ø�‰�r   c                 óF   — | j                  d«       | j                  «        y )Nr’   r?   rL   s     r   Úvisit_PassStatNodez$DeclarationWriter.visit_PassStatNodeC  s   € Ø�‰�vÔØ�‰�r   r   )r
   )F).r   r   r   Ú__doc__r8   r   r.   r3   r6   r9   r   r   r=   r@   rJ   rN   rR   rV   rY   r^   rb   rf   rl   rr   rv   r|   r€   rƒ   r‰   rŽ   r˜   r    r¥   r§   rª   r²   r´   r·   r¿   rÃ   rÇ   rÌ   rÎ   rÑ   rÓ   Ú__classcell__©r(   s   @r   r    r       sÝ   ø„ ñð €Mõ òòòóBòòFóòó.òò
Jò!ò!ò(òòòòòò	 ò$òò
òòò&
FòSòHòò(ò"ò(ò(ò0%ò$òò"òö
r   r    c                   óˆ   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚStatementWriterzD
    A Cython code writer for most language statement features.
    c                 óÒ   — | j                  «        | j                  |j                  «       | j                  d«       | j                  |j                  «       | j                  «        y ©NrC   )r9   r+   Úlhsr   Úrhsr=   rL   s     r   Úvisit_SingleAssignmentNodez*StatementWriter.visit_SingleAssignmentNodeM  s@   € Ø�‰ÔØ�
‰
�4—8‘8ÔØ�‰�ŒØ�
‰
�4—8‘8ÔØ�‰�r   c                 óà   — | j                  «        |j                  D ]$  }| j                  |«       | j                  d«       Œ& | j                  |j                  «       | j                  «        y rÚ   )r9   Úlhs_listr+   r   rÜ   r=   )r   rM   rÛ   s      r   Úvisit_CascadedAssignmentNodez,StatementWriter.visit_CascadedAssignmentNodeT  sK   € Ø�‰ÔØ—=”=ˆCØ�J‰J�sŒOØ�H‰H�U�Oð !ð 	�
‰
�4—8‘8ÔØ�‰�r   c                 óÊ   — | j                  d«       | j                  |j                  j                  «       |j                  s| j                  d«       | j                  «        y )Nzprint Ú,)r9   rJ   Ú	arg_tuplerq   Úappend_newliner   r=   rL   s     r   Úvisit_PrintStatNodez#StatementWriter.visit_PrintStatNode\  sC   € Ø�‰�xÔ Ø×!Ñ! $§.¡.×"5Ñ"5Ô6Ø×"Ò"Ø�H‰H�SŒMØ�‰�r   c                 ó
  — | j                  d«       |j                  j                  r&| j                  |j                  j                  «       n| j                  |j                  «       | j                  d«       | j                  |j                  j                  «       | j                  d«       | j                  |j                  «       |j                  �-| j                  d«       | j                  |j                  «       y y )Nzfor ú in r‘   úelse:)r9   ÚtargetÚis_sequence_constructorrJ   rq   r+   r   ÚiteratorÚsequencer=   rN   r\   Úelse_clauser@   rL   s     r   Úvisit_ForInStatNodez#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                 ó2  — | j                  d«       | j                  |j                  d   j                  «       | j	                  d«       | j                  |j                  d   j                  «       |j                  dd  D ]Z  }| j                  d«       | j                  |j                  «       | j	                  d«       | j                  |j                  «       Œ\ |j                  �-| j                  d«       | j                  |j                  «       y y )Nzif r"   r‘   r   zelif rè   )	r9   r+   Ú
if_clausesÚ	conditionr=   rN   r\   rí   r@   )r   rM   Úclauses      r   Úvisit_IfStatNodez 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                 ó&  — | j                  d«       | j                  |j                  «       | j                  d«       | j	                  |j
                  «       |j                  �-| j                  d«       | j	                  |j                  «       y y )Nzwhile r‘   rè   )r9   r+   rñ   r=   rN   r\   rí   r@   rL   s     r   Úvisit_WhileStatNodez#StatementWriter.visit_WhileStatNode�  sm   € Ø�‰�xÔ Ø�
‰
�4—>‘>Ô"Ø�‰�SÔØ×Ñ˜TŸY™YÔ'Ø×ÑÐ'Ø�I‰I�gÔØ× Ñ  ×!1Ñ!1Õ2ð (r   c                 ó&   — | j                  d«       y )NÚcontinue©r@   rL   s     r   Úvisit_ContinueStatNodez&StatementWriter.visit_ContinueStatNodeŠ  s   € Ø�	‰	�*Õr   c                 ó&   — | j                  d«       y )NÚbreakrø   rL   s     r   Úvisit_BreakStatNodez#StatementWriter.visit_BreakStatNode�  ó   € Ø�	‰	�'Õr   c                 ó:   — | j                  |j                  «       y r   )rJ   rq   rL   s     r   Úvisit_SequenceNodez"StatementWriter.visit_SequenceNode�  s   € Ø×!Ñ! $§)¡)Õ,r   c                 óz   — | j                  «        | j                  |j                  «       | j                  «        y r   )r9   r+   Úexprr=   rL   s     r   Úvisit_ExprStatNodez"StatementWriter.visit_ExprStatNode“  s%   € Ø�‰ÔØ�
‰
�4—9‘9ÔØ�‰�r   c                 óì   — | j                  «        | j                  |j                  «       | j                  d|j                  z  «       | j                  |j
                  «       | j                  «        y )Nz %s= )r9   r+   rÛ   r   ÚoperatorrÜ   r=   rL   s     r   Úvisit_InPlaceAssignmentNodez+StatementWriter.visit_InPlaceAssignmentNode˜  sJ   € Ø�‰ÔØ�
‰
�4—8‘8ÔØ�‰�˜4Ÿ=™=Ñ(Ô)Ø�
‰
�4—8‘8ÔØ�‰�r   c                 óD  — | j                  «        | j                  d«       | j                  |j                  «       |j                  �,| j                  d«       | j                  |j                  «       | j                  d«       | j                  |j                  «       y )Nzwith rÅ   r‘   )r9   r   r+   Úmanagerré   r=   rN   r\   rL   s     r   Úvisit_WithStatNodez"StatementWriter.visit_WithStatNodeŸ  sl   € Ø�‰ÔØ�‰�ÔØ�
‰
�4—<‘<Ô Ø�;‰;Ð"Ø�H‰H�VÔØ�J‰J�t—{‘{Ô#Ø�‰�SÔØ×Ñ˜TŸY™YÕ'r   c                 ó´   — | j                  d«       | j                  |j                  «       | j                  d«       | j                  |j                  «       y )Nútry:zfinally:)r@   rN   r\   Úfinally_clauserL   s     r   Úvisit_TryFinallyStatNodez(StatementWriter.visit_TryFinallyStatNode©  s@   € Ø�	‰	�&ÔØ×Ñ˜TŸY™YÔ'Ø�	‰	�*ÔØ×Ñ˜T×0Ñ0Õ1r   c                 óð   — | j                  d«       | j                  |j                  «       |j                  D ]  }| j	                  |«       Œ |j
                  �| j	                  |j
                  «       y y )Nr
  )r@   rN   r\   Úexcept_clausesr+   rí   )r   rM   Úxs      r   Úvisit_TryExceptStatNodez'StatementWriter.visit_TryExceptStatNode¯  s^   € Ø�	‰	�&ÔØ×Ñ˜TŸY™YÔ'Ø×$Ô$ˆAØ�J‰J�q�Mð %à×ÑÐ'Ø�J‰J�t×'Ñ'Õ(ð (r   c                 ó^  — | j                  d«       |j                  �,| j                  d«       | j                  |j                  «       |j                  �,| j                  d«       | j                  |j                  «       | j                  d«       | j                  |j                  «       y )NÚexceptrŒ   rD   r‘   )r9   Úpatternr   r+   ré   r=   rN   r\   rL   s     r   Úvisit_ExceptClauseNodez&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                 ó¶   — | j                  d«       |j                  �,| j                  d«       | j                  |j                  «       | j	                  «        y )NÚreturnrŒ   )r9   r©   r   r+   r=   rL   s     r   Úvisit_ReturnStatNodez$StatementWriter.visit_ReturnStatNodeÂ  s<   € Ø�‰�xÔ Ø�:‰:Ð!Ø�H‰H�SŒMØ�J‰J�t—z‘zÔ"Ø�‰�r   c                 ó&   — | j                  d«       y )NÚraiserø   rL   s     r   Úvisit_ReraiseStatNodez%StatementWriter.visit_ReraiseStatNodeÉ  rý   r   c                 óT   — | j                  d|j                  j                  z  «       y )Nz(import %s))r   r¬   r©   rL   s     r   Úvisit_ImportNodez StatementWriter.visit_ImportNodeÌ  s   € Ø�‰� ×!1Ñ!1×!7Ñ!7Ñ7Õ8r   c                 óÐ   — d}|j                   D ]%  }d| j                  |fz  | j                  |<   |dz  }Œ' | xj                  dz  c_        | j                  |j                  «       y)zÌ
        Temporaries are output like $1_1', where the first number is
        an index of the TempsBlockNode and the second number is an index
        of the temporary which that block allocates.
        r"   z$%d_%dr   N)Útempsr'   r&   r+   r\   )r   rM   ÚidxÚhandles       r   Úvisit_TempsBlockNodez$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   — | j                  | j                  |j                     «       y r   )r   r&   r   rL   s     r   Úvisit_TempRefNodez!StatementWriter.visit_TempRefNodeÜ  s   € Ø�‰�—‘ §¡Ñ,Õ-r   N)r   r   r   rÔ   rÝ   rà   rå   rî   ró   rõ   rù   rü   rÿ   r  r  r  r  r  r  r  r  r  r!  r#  r   r   r   rØ   rØ   H  sk   „ ñòòòò3ò3ò 3òòò-òò
ò(ò2ò)ò	(òòò9òó.r   rØ   c            
       ó¶  ‡ — e Zd ZdZdLˆ fd„	Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdMd„Zd„ Zd„ Zd„ Zd„ Zd„ ZddddddœZi dd“dd“dd “d!d “d"d “d#d “d$d “d%d “d&d “d'd “d(d “d)d “d*d+“d,d-“d.d/“d0d1“d2d1“d3d3d4d4d4d4d4d5d6œ¥Zd7„ Zd8„ Zd9„ Zd:„ Zd;„ Z d<„ Z!d=„ Z"d>„ Z#d?„ Z$d@„ Z%dA„ Z&dB„ Z'dC„ Z(dD„ Z)dE„ Z*dF„ Z+	 dMdG„Z,dH„ Z-dI„ Z.dJ„ Z/dK„ Z0ˆ xZ1S )NÚExpressionWriterzL
    A Cython code writer that is intentionally limited to expressions.
    c                 óV   •— t         ‰| �  «        |€d}|| _        || _        dg| _        y )Nr
   r"   )r#   r   r$   Úallow_unknown_nodesÚ
precedence)r   r$   r'  r(   s      €r   r   zExpressionWriter.__init__å  s0   ø€ Ü‰ÑÔØˆ>ØˆFØˆŒØ#6ˆÔ Ø˜#ˆ�r   c                 ó<   — | j                  |«       | j                  S r   r*   r,   s     r   r.   zExpressionWriter.writeí  r/   r   c                 ó.   — | xj                   |z  c_         y r   )r$   r   s     r   r   zExpressionWriter.putñ  s   € Ø�Š�qÑŽr   c                 óx   — | j                   j                  |«      r| j                   d t        |«        | _         y y r   )r$   ÚendswithrE   r   s     r   ÚremovezExpressionWriter.removeô  s1   € Ø�;‰;×Ñ Ô"ØŸ+™+ h¬¨A« wÐ/ˆD�Kð #r   c                 ó¢   — t        |«      dkD  rA|d d D ]$  }| j                  |«       | j                  d«       Œ& | j                  |d   «       y y )Nr"   rB   rD   )rE   r+   r   )r   rG   rI   s      r   rJ   z%ExpressionWriter.comma_separated_listø  sK   € Üˆu‹:˜Š>Ø˜c˜r›
�Ø—
‘
˜4Ô Ø—‘˜•ð #ð �J‰J�u˜R‘yÕ!ð	 r   c                 óZ   — | j                   r| j                  d«       y t        d|z  «      ‚)Nú...rP   )r'  r   rQ   rL   s     r   rR   zExpressionWriter.visit_Nodeÿ  s'   € Ø×#Ò#Ø�H‰H�U�Oä Ð!EÈÑ!LÓMÐMr   c                 ó:   — | j                  |j                  «       y r   ©r   r©   rL   s     r   Úvisit_IntNodezExpressionWriter.visit_IntNode  ó   € Ø�‰�—‘Õr   c                 ó:   — | j                  |j                  «       y r   r2  rL   s     r   Úvisit_FloatNodez ExpressionWriter.visit_FloatNode
  r4  r   c                 ó&   — | j                  d«       y )NÚNone©r   rL   s     r   Úvisit_NoneNodezExpressionWriter.visit_NoneNode  s   € Ø�‰�Õr   c                 ó:   — | j                  |j                  «       y r   rt   rL   s     r   rÎ   zExpressionWriter.visit_NameNode  rw   r   c                 ó&   — | j                  d«       y )Nr0  r9  rL   s     r   Úvisit_EllipsisNodez#ExpressionWriter.visit_EllipsisNode  s   € Ø�‰��r   c                 óL   — | j                  t        |j                  «      «       y r   ©r   Ústrr©   rL   s     r   Úvisit_BoolNodezExpressionWriter.visit_BoolNode  ó   € Ø�‰”�T—Z‘Z“Õ!r   c                 óL   — | j                  t        |j                  «      «       y r   r?  rL   s     r   Úvisit_ConstNodez ExpressionWriter.visit_ConstNode  rB  r   c                 ó@   — | j                  |j                  › d�«       y )NÚjr2  rL   s     r   Úvisit_ImagNodezExpressionWriter.visit_ImagNode  s   € Ø�‰�D—J‘J�<˜qÐ!Õ"r   c                 óL   — | j                  t        |j                  «      «       y r   ©r   Úreprr©   rL   s     r   Úvisit_BytesNodez ExpressionWriter.visit_BytesNode  ó   € Ø�‰”�d—j‘jÓ!Õ"r   c                 óL   — | j                  t        |j                  «      «       y r   rI  rL   s     r   Úvisit_UnicodeNodez"ExpressionWriter.visit_UnicodeNode"  rL  r   c                 ó”   — |\  }}|j                  «       }| j                  |«       | j                  |«       | j                  |«       y r   )Úsubexpr_nodesr   rJ   )r   rM   ÚparensÚ
open_parenÚclose_parenrG   s         r   Úemit_sequencezExpressionWriter.emit_sequence%  s@   € Ø"(Ñˆ
�KØ×"Ñ"Ó$ˆØ�‰�ÔØ×!Ñ! %Ô(Ø�‰�Õr   c                 ó(   — | j                  |d«       y )Nú[]©rT  rL   s     r   Úvisit_ListNodezExpressionWriter.visit_ListNode,  ó   € Ø×Ñ˜4 Õ&r   c                 ó(   — | j                  |d«       y )Nú()rW  rL   s     r   Úvisit_TupleNodez ExpressionWriter.visit_TupleNode/  rY  r   c                 ó„   — t        |j                  «       «      dkD  r| j                  |d«       y | j                  d«       y )Nr"   ú{}zset())rE   rP  rT  r   rL   s     r   Úvisit_SetNodezExpressionWriter.visit_SetNode2  s4   € Üˆt×!Ñ!Ó#Ó$ qÒ(Ø×Ñ˜t TÕ*à�H‰H�WÕr   c                 ó(   — | j                  |d«       y )Nr^  rW  rL   s     r   Úvisit_DictNodezExpressionWriter.visit_DictNode8  rY  r   c                 ó’   — | j                  |j                  «       | j                  d«       | j                  |j                  «       y ©Nz: )r+   Úkeyr   r©   rL   s     r   Úvisit_DictItemNodez#ExpressionWriter.visit_DictItemNode;  s-   € Ø�
‰
�4—8‘8ÔØ�‰�ŒØ�
‰
�4—:‘:Õr   é   é   )ÚnotÚ!Ú+Ú-Ú~Úorr   Úandé   Úiné   Únot_inÚisÚis_notÚ<z<=Ú>z>=z!=z==Ú|é   Ú^é   re   é   z<<é   z>>é	   é
   é   )rj  rk  r   rÐ   Ú/z//Ú%ú**c                 ó„   — | j                   d   }||kD  r| j                  d«       | j                   j                  |«       y )NrB   ro   )r(  r   r   )r   Únew_precÚold_precs      r   Úoperator_enterzExpressionWriter.operator_enterS  s5   € Ø—?‘? 2Ñ&ˆØ�hÒØ�H‰H�SŒMØ�‰×Ñ˜xÕ(r   c                 óˆ   — | j                   dd  \  }}||kD  r| j                  d«       | j                   j                  «        y )Néþÿÿÿrp   )r(  r   Úpop)r   r…  r„  s      r   Úoperator_exitzExpressionWriter.operator_exitY  s:   € Ø!Ÿ_™_¨R¨SÐ1Ñˆ�(Ø�hÒØ�H‰H�SŒMØ�‰×ÑÕr   c                 óÀ   — d}| j                   |   }| j                  |«       | j                  d«       | j                  |j                  «       | j                  «        y )Nrh  znot )Úunop_precedencer†  r   r+   ÚoperandrŠ  ©r   rM   ÚopÚprecs       r   Úvisit_NotNodezExpressionWriter.visit_NotNode_  sM   € ØˆØ×#Ñ# BÑ'ˆØ×Ñ˜DÔ!Ø�‰�ÔØ�
‰
�4—<‘<Ô Ø×ÑÕr   c                 óî   — |j                   }| j                  |   }| j                  |«       | j                  d|j                   z  «       | j	                  |j
                  «       | j                  «        y )Nz%s)r  rŒ  r†  r   r+   r�  rŠ  rŽ  s       r   Úvisit_UnopNodezExpressionWriter.visit_UnopNodeg  sZ   € Ø�]‰]ˆØ×#Ñ# BÑ'ˆØ×Ñ˜DÔ!Ø�‰�˜Ÿ™Ñ%Ô&Ø�
‰
�4—<‘<Ô Ø×ÑÕr   c                 óJ  — |j                   }| j                  j                  |d«      }| j                  |«       | j	                  |j
                  «       | j                  d|j                  dd«      z  «       | j	                  |j                  «       | j                  «        y )Nr"   z %s Ú_rŒ   )
r  Úbinop_precedenceÚgetr†  r+   Úoperand1r   ÚreplaceÚoperand2rŠ  rŽ  s       r   Úvisit_BinopNodez ExpressionWriter.visit_BinopNodeo  sy   € Ø�]‰]ˆØ×$Ñ$×(Ñ(¨¨QÓ/ˆØ×Ñ˜DÔ!Ø�
‰
�4—=‘=Ô!Ø�‰�˜"Ÿ*™* S¨#Ó.Ñ.Ô/Ø�
‰
�4—=‘=Ô!Ø×ÑÕr   c                 ó&   — | j                  |«       y r   ©r›  rL   s     r   Úvisit_BoolBinopNodez$ExpressionWriter.visit_BoolBinopNodex  ó   € Ø×Ñ˜TÕ"r   c                 ó&   — | j                  |«       y r   r�  rL   s     r   Úvisit_PrimaryCmpNodez%ExpressionWriter.visit_PrimaryCmpNode{  rŸ  r   c                 óx  — | j                  |j                  «       | j                  d«       t        |j                  t
        «      rH|j                  j                  «       r| j                  |j                  «       n-| j                  d«       n| j                  |j                  «       | j                  d«       y )Nri   r[  rj   )r+   ra   r   rÁ   ÚindexÚ	TupleNoderP  rT  rL   s     r   Úvisit_IndexNodez ExpressionWriter.visit_IndexNode~  ss   € Ø�
‰
�4—9‘9ÔØ�‰�ŒÜ�d—j‘j¤)Ô,Ø�z‰z×'Ñ'Ô)Ø×"Ñ" 4§:¡:Õ.à—‘˜•à�J‰J�t—z‘zÔ"Ø�‰��r   c                 ó¬  — | j                  |j                  «       | j                  d«       |j                  r| j                  |j                  «       | j                  d«       |j                  r| j                  |j                  «       |j
                  r,| j                  d«       | j                  |j
                  «       | j                  d«       y )Nri   r‘   rj   )r+   ra   r   ÚstartÚstopÚslicerL   s     r   Úvisit_SliceIndexNodez%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                 óp  — |j                   j                  s| j                  |j                   «       | j                  d«       |j                  j                  s| j                  |j                  «       |j
                  j                  s-| j                  d«       | j                  |j
                  «       y y )Nr‘   )r§  Úis_noner+   r   r¨  ÚsteprL   s     r   Úvisit_SliceNodez 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                 óê   — | j                  |j                  «       | j                  d«       | j                  |j                  «       | j                  d«       | j                  |j                  «       y )Nú if z else )r+   Útrue_valr   ÚtestÚ	false_valrL   s     r   Úvisit_CondExprNodez#ExpressionWriter.visit_CondExprNode¡  sJ   € Ø�
‰
�4—=‘=Ô!Ø�‰�ÔØ�
‰
�4—9‘9ÔØ�‰�ÔØ�
‰
�4—>‘>Õ"r   c                 óv   — | j                  |j                  «       | j                  d|j                  z  «       y )Nz.%s)r+   Úobjr   r—   rL   s     r   Úvisit_AttributeNodez$ExpressionWriter.visit_AttributeNode¨  s'   € Ø�
‰
�4—8‘8ÔØ�‰�˜Ÿ™Ñ'Õ(r   c                 ó´   — | j                  |j                  «       | j                  d«       | j                  |j                  «       | j                  d«       y rn   )r+   Úfunctionr   rJ   rq   rL   s     r   Úvisit_SimpleCallNodez%ExpressionWriter.visit_SimpleCallNode¬  s:   € Ø�
‰
�4—=‘=Ô!Ø�‰�ŒØ×!Ñ! $§)¡)Ô,Ø�‰��r   c                 ó  — |€y t        |t        «      r7| j                  |j                  «       | j                  |j                  «       y t        |t
        «      r8|j                  «       D ]$  }| j                  |«       | j                  d«       Œ& y t        |t        «      r>| j                  d«       | j                  |j                  «       | j                  d«       y | j                  |«       | j                  d«       y )NrD   r   )rÁ   ÚAddNodeÚemit_pos_argsr˜  rš  r¤  rP  r+   r   ÚAsTupleNodeÚarg©r   rM   r  s      r   r½  z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                 óÒ  — |€y t        |t        «      r'|j                  «       D ]  }| j                  |«       Œ y t        |t        «      rj|j                  «       D ]V  }| j                  d|j                  j                  z  «       | j                  |j                  «       | j                  d«       ŒX y | j                  d«       | j                  |«       | j                  d«       y )Nz%s=rD   r‚  )	rÁ   ÚMergedDictNoderP  Úemit_kwd_argsÚDictNoder   rd  r©   r+   rÀ  s      r   rÃ  zExpressionWriter.emit_kwd_argsÄ  sª   € Øˆ<ØÜ�dœNÔ+Ø×*Ñ*Ö,�Ø×"Ñ" 4Õ(ñ -ä˜œhÔ'Ø×*Ñ*Ö,�Ø—‘˜ §¡§¡Ñ/Ô0Ø—
‘
˜4Ÿ:™:Ô&Ø—‘˜•ñ -ð
 �H‰H�TŒNØ�J‰J�tÔØ�H‰H�T�Nr   c                 ó  — | j                  |j                  «       | j                  d«       | j                  |j                  «       | j                  |j                  «       | j                  d«       | j                  d«       y )Nro   rD   rp   )r+   r¹  r   r½  r†   rÃ  r‡   r-  rL   s     r   Úvisit_GeneralCallNodez&ExpressionWriter.visit_GeneralCallNodeÔ  s\   € Ø�
‰
�4—=‘=Ô!Ø�‰�ŒØ×Ñ˜4×/Ñ/Ô0Ø×Ñ˜4×,Ñ,Ô-Ø�‰�DÔØ�‰��r   c                 óD  — |\  }}| j                  |«       | j                  |«       | j                  d«       | j                  |«       | j                  d«       | j                  |«       |r"| j                  d«       | j                  |«       | j                  |«       y )Nz for rç   r°  )r   r+   )r   r\   ré   rì   rñ   rQ  rR  rS  s           r   Úemit_comprehensionz#ExpressionWriter.emit_comprehensionÜ  s}   € ð #)Ñˆ
�KØ�‰�ÔØ�
‰
�4ÔØ�‰�ÔØ�
‰
�6ÔØ�‰�ÔØ�
‰
�8ÔÙØ�H‰H�VÔØ�J‰J�yÔ!Ø�‰�Õr   c                 ó:   — | j                  |j                  «       y r   )r+   r  rL   s     r   Úvisit_ComprehensionAppendNodez.ExpressionWriter.visit_ComprehensionAppendNodeë  s   € Ø�
‰
�4—9‘9Õr   c                 ó’   — | j                  |j                  «       | j                  d«       | j                  |j                  «       y rc  )r+   Úkey_exprr   Ú
value_exprrL   s     r   Ú!visit_DictComprehensionAppendNodez2ExpressionWriter.visit_DictComprehensionAppendNodeî  s-   € Ø�
‰
�4—=‘=Ô!Ø�‰�ŒØ�
‰
�4—?‘?Õ#r   c                 óŒ  — ddddœ}||j                   j                  «          }|j                  j                  }|j                  j                  }|j                  j
                  j                  }d }t        |d«      r2|j                  d   j                  }|j                  d   j                  }| j                  |||||«       y )NrV  r^  )ÚlistÚdictÚsetrð   r"   )ÚtypeÚpy_type_nameÚloopr\   ré   rë   rì   Úhasattrrð   rñ   rÈ  )r   rM   ÚtpmaprQ  r\   ré   rì   rñ   s           r   Úvisit_ComprehensionNodez(ExpressionWriter.visit_ComprehensionNodeó  s£   € Ø t°DÑ9ˆØ�t—y‘y×-Ñ-Ó/Ñ0ˆØ�y‰y�~‰~ˆØ—‘×!Ñ!ˆØ—9‘9×%Ñ%×.Ñ.ˆØˆ	Ü�4˜Ô&àŸ™¨Ñ*×4Ñ4ˆIØ—?‘? 1Ñ%×*Ñ*ˆDØ×Ñ  f¨h¸	À6ÕJr   c                 ó´  — |j                   j                  }|j                   j                  }|j                   j                  j                  }d }t        |d«      rG|j                  d   j                  }|j                  d   j                  j                  j                  }n"t        |d«      r|j                  j                  }| j                  ||||d«       y )Nrð   r"   r  r[  )rÕ  r\   ré   rë   rì   rÖ  rð   rñ   r  r¿  rÈ  )r   rM   r\   ré   rì   rñ   s         r   Úvisit_GeneratorExpressionNodez.ExpressionWriter.visit_GeneratorExpressionNode   s£   € Ø�y‰y�~‰~ˆØ—‘×!Ñ!ˆØ—9‘9×%Ñ%×.Ñ.ˆØˆ	Ü�4˜Ô&àŸ™¨Ñ*×4Ñ4ˆIØ—?‘? 1Ñ%×*Ñ*×/Ñ/×3Ñ3‰DÜ�T˜6Ô"à—9‘9—=‘=ˆDØ×Ñ  f¨h¸	À4ÕHr   )NF))r
   r
   )2r   r   r   rÔ   r   r.   r   r-  rJ   rR   r3  r6  r:  rÎ   r=  rA  rD  rG  rK  rN  rT  rX  r\  r_  ra  re  rŒ  r–  r†  rŠ  r‘  r“  r›  rž  r¡  r¥  rª  r®  r´  r·  rº  r½  rÃ  rÆ  rÈ  rÊ  rÎ  rØ  rÚ  rÕ   rÖ   s   @r   r%  r%  à  sò  ø„ ñõòòò0ò"ò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r   r%  c                   ó"   — e Zd ZdZd„ Zd„ Zd„ Zy)Ú	PxdWriterz\
    A Cython code writer for everything supported in pxd files.
    (currently unused)
    c                 ól   — t        dj                  | j                  |«      j                  «      «       |S )NÚ
)Úprintr£   r.   r   rL   s     r   Ú__call__zPxdWriter.__call__  s'   € Üˆd�i‰i˜Ÿ
™
 4Ó(×.Ñ.Ó/Ô0Øˆr   c                 óÖ  — |j                   r| j                  d«       n| j                  d«       |j                  r;| j                  dj	                  |j                  «      «       | j                  d«       |j
                  dk7  r,| j                  |j
                  «       | j                  d«       |j                  r| j                  d«       | j                  |j                  «       y )Nr¹   r‹   rŒ   rº   r»   )	r¼   r9   r½   r   r£   r�   r¾   r+   r   rL   s     r   r¿   z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                  ó   — y r   r   rL   s     r   Úvisit_StatNodezPxdWriter.visit_StatNode(  s   € Ør   N)r   r   r   rÔ   rà  r¿   rã  r   r   r   rÜ  rÜ    s   „ ñò
ò$ór   rÜ  c                   ó   — e Zd ZdZy)Ú
CodeWriterz(
    A complete Cython code writer.
    N)r   r   r   rÔ   r   r   r   rå  rå  ,  s   „ òr   rå  N)rÔ   ÚCompiler.Visitorr   ÚCompiler.ExprNodesÚCompiler.Nodesr   r   r    rØ   r%  rÜ  rå  r   r   r   Ú<module>ré     sn   ðñõ *Ü !Ý /÷ñ ô"f˜ô fôR	U.Ð'ô U.ôplI�{ô lIô^	Ð!Ð#3ô ô:�Ð"2õ r   