
    h                    2   S SK r \ R                  " \\\\\\\\\\S9
  S SKJr  S SKrS SKrS SKrS SKrS SK	r	S SK
r
SSKJr  SSKJr  SSKJr  SSKJr  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJrJrJrJr  SSKJrJr  SSKJrJrJ r J!r!J"r"  SSKJ#r#J$r$J%r%  SSK&J'r'J(r(  SSKJ)r)  S r*S r+S r,S r-S r.SSSSSSSSSSSSS .r/ " S! S"\R`                  \Rb                  5      r2 " S# S$5      r3S% r4\#Rj                  " S&S'5      r6\#" S(S)S*S+9r7g),    N)
NamingOptions
PyrexTypes	TypeSlotserrorwarningpy_object_typeUtilityCodeEncodedStringre)defaultdict   )CPtrType)Future)Annotate)Code)r   )Nodes)r   )r   )r   )Pythran)r   r   CompileErrorformat_position)r	   get_all_subtypes   )open_new_filereplace_suffixdecode_filenamebuild_hex_versionis_cython_generated_file)r
   IncludeCodeTempitaUtilityCode)r   encoded_string_or_bytes_literal)has_np_pythranc                 .    [        X5      n[        U5      $ N)r   as_encoded_filename)pathnewsufnewpaths      T/var/www/fran/franai/venv/lib/python3.13/site-packages/Cython/Compiler/ModuleNode.pyreplace_suffix_encodedr)   &   s    T*Gw''    c                 @    [        U [        R                  " 5       5      $ r#   )r    sysgetfilesystemencoding)r%   s    r(   r$   r$   +   s     +41J1J1LMMr*   c                 :    U R                   R                  5         U $ r#   )scopecheck_c_classes_pxdmodule_nodes    r(   check_c_declarations_pxdr3   1   s    ))+r*   c                 n    U R                   R                  5         U R                   R                  5         U $ r#   )r/   check_c_classescheck_c_functionsr1   s    r(   check_c_declarationsr7   6   s,    %%''')r*   c                     [         R                  (       d  UR                  (       a  SnOUR                  n[        US5      (       a  [	        S5        [
        R                  " UU R                  S   UR                  S9$ )NFemit_code_commentszeWarning: option emit_code_comments is deprecated. Instead, use compiler directive emit_code_comments.)emit_linenumsr9   c_line_in_traceback)	r   annotater:   hasattrprintr   CCodeConfig
directivesr;   )envoptionsr:   s      r(   generate_c_code_configrC   <   sn    7++--w,-- D 	E #>>*>?#779 9r*   )T&&T)F||F)T N)TrE   F)FrD   T))__lt____gt__)rG   __le__)rG   __ge__)rI   rJ   )rI   rG   )rI   rH   )rH   rG   )rH   rJ   )rH   rI   )rJ   rI   )rJ   rH   )rJ   rG   c                      \ rS rSrS/rSrSrSr\S 5       r	S r
SrS jrS rS rS	 rS
 rS rSsS 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 5       r"S r#S r$S r%StS  jr&S! r'S" r(S# r)S$ r*S% r+S& r,S' r-S( r.S) r/S* r0S+ r1S, r2S- r3S. r4S/ r5S0 r6S1 r7S2 r8S3 r9S4 r:S5 r;S6 r<S7 r=S8 r>S9 r?S: r@S; rAS< rBS= rCS> rDS? rES@ rFSA rGSB rHSC rISD rJSE rKSF rLSG rMSH rNSI rOSJ rPSK rQSL rRSM rSSN rTSO rUSP rVSQ rWSR rXSS rYST rZSU r[SV r\SW r]SX r^SY r_SZ r`S[ raS\ rbS] rcS^ rdS_ reS` rfSa rgSb rhSc riSd rjSe rkSf rlSg rmSh rnSi roSj rpSk rqSl rrSuSm jrsSn rtSo ruSp rvSqrwg)v
ModuleNodeo   bodyNc                     U R                   $ r#   )r/   selfs    r(   local_scopeModuleNode.local_scope   s     zzr*   c                    [        U R                  [        R                  5      (       d   eUS;   d   eU R                  c  [        R                  " U R                  R
                  / S9U l        [        R                  " U R                  R
                  / S9U l        U R                  R                  R                  SU R                  5        U R                  R                  R                  SU R                  5        UR                  U R                  R                  :w  a)  [        R                  " UR
                  XR                  S9nUS:X  a  U R                  OU R                  n[        U[        R                  5      (       a&  UR                  R                  UR                  5        OUR                  R                  U5        U R                  R                  R                  UR                  5        UR                  R!                  5        H  nU R                  R#                  U5        M      S nU" U R                  R$                  UR$                  5        g )N)pxdutility)statsr   )rN   r@   rU   c                 F    U H  nX ;  d  M
  U R                  U5        M     g r#   )append)L1L2xs      r(   extend_if_not_in-ModuleNode.merge_in.<locals>.extend_if_not_in   s    ;IIaL r*   )
isinstancerN   r   StatListNode	pxd_statsposutility_code_statsrW   insertr@   r/   CompilerDirectivesNodeextendrY   utility_code_list
c_includesvaluesprocess_includeincluded_files)rQ   treer/   stagetarget_statsincr]   s          r(   merge_inModuleNode.merge_in   s    $))U%7%78888****>>!"//		RHDN&+&8&8b&QD#IIOO""1dnn5IIOO""1d&=&=>tzz444 //tP`P`aD).%t~~T=T=TdE..//%%djj1%%d+

$$++E,C,CD##**,CJJ&&s+ -	!
 	22E4H4HIr*   c                     UR                    H@  nU R                  UR                  l        X#R                  R                  R
                  S'   MB     U R                  R                  U5        g )Ninternal)c_class_entriesfull_module_nametypemodule_namer/   r@   rp   )rQ   r/   internalise_c_class_entriesentrys       r(   merge_scopeModuleNode.merge_scope   sP    **E%)%:%:EJJ"6QJJ''
3 + 	

E"r*   c                 n    [         R                  " U R                  U R                  U R                  S9nU$ )N)r@   rN   )r   re   rb   r@   rN   )rQ   rN   s     r(   with_compiler_directives#ModuleNode.with_compiler_directives   s,     ++DHHW[W`W`ar*   c                 2   [        U5      (       a  [        R                  " U5        U R                  (       a  U R                  S   Ul        [
        R                  (       d  S =Ul        U l        O[
        R                  (       a  [        S[        R                  " U R                  5      -  5      Ul        U R                  bO  [        UR                  S-   U R                  -   5      Ul        U R                  R                  UR                  l        OU R                  Ul        U R                  Ul        U R                  R                  U5        UR!                  S 5      (       a1  U R"                  R%                  [&        R(                  " SS5      5        g g )Nold_style_globalszFile: %s (starting at line %s)
c                 &    U [         R                  L $ r#   )r   cy_pymutex_type)tps    r(   <lambda>1ModuleNode.analyse_declarations.<locals>.<lambda>   s    R:;U;U5Ur*   CythonPyMutexPublicCheckzSynchronization.c)r!   r   include_pythran_genericr@   r   r   
docstringsdocembed_pos_in_docstringr   r   relative_positionrb   encodingrN   analyse_declarationsfind_shared_usages_of_typer/   use_utility_coder
   load_cachedrQ   rA   s     r(   r   ModuleNode.analyse_declarations   s   #++C0??$(OO4G$HC!!!!%%CGdh++#$DuG^G^_c_g_gGh$hiCGxx#'$(AB#'88#4#4 hhCG		&&s+))*UVV JJ''''.0C Wr*   c                    U R                   nUR                  (       a  U R                  U5        [        UR                  R                  5       5       H  u  p#UR                  (       d  M  UR                   UL d  M)  UR                  (       d  M<  UR                  R                  (       d  UR                  R                  (       d  Mt  UR                  R                  U5        M     g r#   )r/   has_import_star*create_import_star_conversion_utility_codesortedentriesitemscreate_wrapperis_typerv   is_enumis_cpp_enumcreate_type_wrapperrQ   rA   namery   s       r(   prepare_utility_codeModuleNode.prepare_utility_code   s     jj;;C@!#++"3"3"56KD$$$);5::+=+=AWAWAW

..s3 7r*   c                    U R                   n[        R                  Ul        / U l        U R                  X0R                  0 5        U R                  U5        U R                  X1U5        U R                  X1U5        U R                  X1U5        g r#   )
r/   r   c_void_typereturn_typereferenced_modulesfind_referenced_modulessort_cdef_classesgenerate_c_codegenerate_h_codegenerate_api_code)rQ   rB   resultrA   s       r(   process_implementation!ModuleNode.process_implementation   st    jj$00"$$$S*A*A2Fs#S62S62sV4r*   c                 x    U R                    H*  nUR                   H  nUR                  (       d  M      g   M,     g)Nr   r   )r   cfunc_entriesdefined_in_pxd)rQ   modulery   s      r(   has_imported_c_functions#ModuleNode.has_imported_c_functions   s6    --F--''' . . r*   c                     [        XSS9(       d6  [        U R                  S[        R                  R                  U5      -  5      eg )NT)allow_failedif_not_foundzVThe output file already exists and does not look like it was generated by Cython: "%s")r   r   rb   osr%   basename)rQ   r%   r   s      r(   assure_safe_targetModuleNode.assure_safe_target   sA    'VZ[r''**4012 2 \r*   c           	         S&S jnU" UR                   SS9nU" UR                  5      nU" UR                  5      nU" UR                  5      nU(       d  U(       d  U(       d  U(       GaX  [	        UR
                  S5      Ul        U R                  UR                  5        [        R                  " 5       n	[        X5      n
[        R                  " XU
5      nUR                  5         UR                  S   nUR                  S   nUR                  S   nUR                  (       a<  [	        UR
                  S5      Ul        [        R                   " UR                  5      nOS nUR#                  5         U R%                  [&        R(                  U5      nUR+                  U5        UR-                  S	5        UR-                  S
5        U R/                  X\5        UR0                  (       a  U R3                  U/ U5        UR-                  S	5        U R%                  [&        R4                  U5      nUR-                  SU-  5        UR-                  S	5        U R7                  XR9                  5       5        UR-                  S	5        U R;                  U5        U(       a[  UR-                  S	5        U HD  nU R=                  UR>                  U5        U(       d  M(  U RA                  UR>                  U5        MF     U(       a,  UR-                  S	5        U H  nU RC                  UX5        M     U(       a,  UR-                  S	5        U H  nU RC                  UX5        M     UR-                  S	5        UR-                  SU-  5        UR-                  S	5        UR-                  S5        UR-                  S5        UR-                  S	5        U RE                  SU5      n[G        SURH                  RK                  5       < SU< SU< S35      nUR-                  SURM                  S5      -  5        UR-                  SU-  5        UR-                  S	5        UR-                  S5        UR-                  S5        UR-                  SURK                  5       -  5        UR-                  S5        UR-                  SURK                  5       -  5        UR-                  S5        UR-                  SURK                  5       -  5        UR-                  S5        UR-                  SU-  5        UR-                  S 5        UR-                  S!5        UR-                  S"U< S#U< S$U< S%35        UR-                  S5        UR-                  S	5        UR-                  SU-  5        [O        UR                  5       nU	RQ                  U5        S S S 5        g g ! , (       d  f       g = f)'Nc                     U  Vs/ s HI  nUR                   S:X  d4  U(       a  UR                  (       d  U(       d  M4  UR                  (       d  MG  UPMK     sn$ s  snf )Npublic)
visibilityapir   )r   r   rU   ry   s       r(   	h_entries-ModuleNode.generate_h_code.<locals>.h_entries   sO    '. 9we))X5  "'!5!5 w 9 9 9s   3AAAr   )r   z.hh_codetype_declarationsendz.pxirF   #include "Python.h"z
#ifndef %s#endif /* !%s */zP/* WARNING: the interface of the module init function changed in CPython 3.5. */zK/* It now returns a PyModuleDef instance instead of a PyModule instance. */PyInitzUse PyImport_AppendInittab(, z) instead of calling z
 directly.z!/* WARNING: %s from Python 3.5 */.zPyMODINIT_FUNC %s(void);z#if PY_VERSION_HEX >= 0x03050000 && (defined(__GNUC__) || defined(__clang__) || defined(_MSC_VER) || (defined(__cplusplus) && __cplusplus >= 201402L))z2#if defined(__cplusplus) && __cplusplus >= 201402Lz[[deprecated(%s)]] inlinez-#elif defined(__GNUC__) || defined(__clang__)z;__attribute__ ((__deprecated__(%s), __unused__)) __inline__#elif defined(_MSC_VER)z#__declspec(deprecated(%s)) __inline#endifz>static PyObject* __PYX_WARN_IF_%s_INIT_CALLED(PyObject* res) {zreturn res;}#define z() __PYX_WARN_IF_z_INIT_CALLED(z()))r   r   ))type_entriesvar_entriesr   rt   r)   c_fileh_filer   r   CCodeWriterrC   GlobalStateinitialize_main_h_codepartsgenerate_pxii_filePyrexCodeWriterput_generated_byapi_namer   h_guard_prefixput_h_guardputlngenerate_type_header_codecapi_reexport_cincludesgenerate_includesapi_guard_prefix"generate_extern_c_macro_definitionis_cppgenerate_dl_import_macrogenerate_cclass_header_coderv   generate_cclass_include_codegenerate_public_declarationmod_init_func_cnamer   rw   as_c_string_literalrstripr   copyto)rQ   rA   rB   r   r   h_typesh_varsh_funcsh_extension_typesh_code_writerc_code_configglobalstateh_code_starth_code_main
h_code_endi_codeh_guard	api_guardry   py3_mod_func_namewarning_stringfs                         r(   r   ModuleNode.generate_h_code   s   	9
 C,,!43??+C--.%c&9&9:f+<26==$GFM##FMM2 ,,.M23@M**=NK..0&,,X6L%++,?@K$**51J## 6v}}f M--fmm<))+mmF$9$93?G$$W-r"45**7A..&&sB=r"f&=&=sCI|i78r"33L**,Or")),7 !!"%.E44UZZMv99%**fM / !!"%$E44UKP %!!"%#E44UKP $b!09<=b!pqklb! $ 8 83 G*3357HJ[,] ^NANDYDYZ]D^^_8;LLMb! G H RS9N<^<^<``aMN[2246 778C2246 7h'^arrsm,c"!#46GI Jh'R /'9:v}}-$$Q' .-c ,=b .-s   'W
Wc                    UR                  [        R                  < SUR                  R	                  UR
                  5      < S35        U(       a7  UR                  SUR                  R	                  UR
                  SS9-  5        g g )N ;zcdef extern %sr   pyrex)r   r   extern_c_macrorv   declaration_codecname)rQ   ry   r   r   s       r(   r   &ModuleNode.generate_public_declaration\  sm    !!JJ''46 	7 LL)

++EKKq+AC D r*   c                 \    U R                  XR                  5      nUR                  SS5      $ Nr   __)punycode_module_namequalified_namereplace)rQ   prefixrA   r   s       r(   r   ModuleNode.api_named  s+    ,,V5G5GHT**r*   c                 
  ^ S,S jnU" UR                   5      nU" UR                  5      nU" UR                  5      nU(       d  U(       d  U(       d  g [        UR                  S5      Ul        U R                  UR
                  5        [        R                  " 5       m[        X5      n[        R                  " TX5        TR                  5         U R                  [        R                  U5      n	TR                  U	5        TR!                  S5        TR!                  S5        TR!                  S5        S-U4S jjn
TR!                  S5        UR"                  (       aV  [$        R&                  R)                  UR"                  5      n[+        U5      nTR!                  S	UR-                  5       -  5        U(       ar  TR!                  S
5        U H[  nUR.                  nTR!                  SUR0                  -  5        TR!                  SUR2                  < SUR0                  < S35        M]     U(       a  TR!                  S
5        U H  n[5        UR.                  5      nUR7                  [        R8                  UR:                  5      nTR!                  SUR=                  U5      -  5        TR!                  SUR:                  < SU< 35        M     U(       a  TR!                  S
5        U H  n[5        UR.                  5      nUR7                  [        R>                  UR:                  5      nTR!                  SUR=                  U5      -  5        TR!                  SUR:                  < SU< S35        M     U(       a	  U
" SS5        U(       a	  U
" SS5        U(       a	  U
" SS5        TR!                  S
5        TR!                  SU R                  SU5      -  5        TR!                  S5        TR!                  SUR@                  R-                  5       -  5        TR!                  S5        U H  nUR7                  [        R8                  UR:                  5      nUR.                  RC                  5       nTR!                  S[        RD                  < SUR:                  R-                  5       < SU< SU< S3	5        M     U H  nUR7                  [        R>                  UR:                  5      nUR.                  RG                  5       nTR!                  S[        RD                  < SUR:                  R-                  5       < S U< SU< S3	5        M     [I        TUR@                  S!0S"9 nU H   nU RK                  UR.                  TUS#SS$9  M"     S S S 5        TR!                  S%5        TR!                  S&5        TR!                  S'5        TR!                  S(5        TR!                  S)5        TR!                  S*5        TR!                  S
5        TR!                  S+U	-  5        [M        UR
                  5      n TRO                  U5        URQ                  5         g ! , (       d  f       N= f! URQ                  5         f = f).Nc                     U  Vs/ s H2  nUR                   (       d  U(       d  M  UR                  (       d  M0  UPM4     sn$ s  snf r#   )r   r   )r   rU   ry   s      r(   api_entries1ModuleNode.generate_api_code.<locals>.api_entriesi  s@    '. DweyyS -2-A-A w D D Ds   AAAz_api.hz#ifdef __MINGW64__z#define MS_WIN64r   Tc                    > [         R                  " XUS9u  p4U(       a  TR                  U5        U(       a  TR                  U5        g g )N)include_requires)r
   load_as_stringput)r   src_filer  protoimplr   s        r(   put_utility_code6ModuleNode.generate_api_code.<locals>.put_utility_code  s;    %44TVfgKE

5!

4  r*   r   z#include %srF   zstatic PyTypeObject *%s = 0;r    (*)zstatic %s = 0;r   VoidPtrImportImportExport.cFunctionImport
TypeImportzstatic int %s(void) {importzPyObject *module = 0;z#module = PyImport_ImportModule(%s);zif (!module) goto bad;if (__Pyx_ImportFunction_z	(module, , (void (**)(void))&, "z") < 0) goto bad;if (__Pyx_ImportVoidPtr_z, (void **)&r   )imported_modules	goto bad;)
error_codeis_apizPy_DECREF(module); module = 0;	return 0;bad:zPy_XDECREF(module);
return -1;r   r   )r   T))r   r   rt   r)   r   api_filer   r   r   rC   r   r   r   r   r   r   r   r   r   r%   r   r$   r   rv   typeptr_cnametypeobj_cnamer   manglefunc_prefix_apir   r  varptr_prefix_apir  signature_string	cyversionempty_declaration_codeModuleImportGeneratorgenerate_type_import_callr   r   close)rQ   rA   rB   r   r  api_vars	api_funcsapi_extension_typesr   r   r  
h_filenamery   rv   r  sigimport_generatorr   r   s                     @r(   r   ModuleNode.generate_api_codeh  s   	D s/ 1 12	)#*=*=>I)<0I0!!#.s<5!MM&"9"93?	9%)*'(X	! 	*+==))&--8J,Z8JLL)G)G)IIJLL,zz;d>P>PPQ&&(:(:< = -
 LL"

+

6#9#95::F-0E0Ee0LLM

EBC	 #
 LL!

+

6#;#;UZZH-0E0Ee0LLM5::uEF	 "
 _.>?-/?@\+;<R,t}}Xs/KKL,-:S=O=O=c=c=eef-.EJJv55uzzBE**--/CLL##UZZ%C%C%EucST  EJJv77DE**335CLL##UZZ%C%C%EucST  #6S=O=OQY<Z[_o,..uzz6CS`ktx.y - \ 	56[!V*+\"SR')34&//*	MM!GGI! \[  GGIs   -'Y=Y0 
Y-0Zc                     UR                  [        R                  < S[        R                  " SS5      < SUR
                  < S35        g )Nr   PyTypeObject	DL_IMPORTr   )r   r   r  r   public_declr1  )rQ   rv   r   s      r(   r   &ModuleNode.generate_cclass_header_code  s5    !!"">;?  	!r*   c           	      |   UR                  SUR                  < SUR                  < S35        UR                  5         UR                  R
                  nU(       a@  U H9  nUR                  SUR                  R                  UR                  SS9-  5        M;     OUR                  S5        UR                  5         g )Nzcdef extern class r   :zcdef %sr   r  pass)
r   rw   r   indentr/   r   rv   r  r  dedent)rQ   rv   r   r   ry   s        r(   r   'ModuleNode.generate_cclass_include_code  s    dii) 	*jj,,$YJJ//1/EG H % LL r*   c                 	   U R                  UR                  SS9  U R                  n[        R                  (       d  UR                  (       aS  [        R                  S:H  =(       d    UR                  S:H  n[
        R                  " UU R                  R                  S9nO[        R                  " 5       n[        X5      n[        R                  " X`UUR                  S9nUR                  5         US   n	U R                  Ul        U R"                  Ul        U R%                  XXCR&                  U	5        UR)                  [*        5        US   n
U
R-                  SU R.                  R1                  5       -  5        U R3                  5       nU
R-                  S	U-  5        U
R-                  S
U-  5        U
R-                  S5        U
R-                  SUR4                  R1                  5       -  5        US   n
U R7                  XU
SS9  US   n
U R9                  X5        U R;                  X5        U R=                  X5        U R>                  RA                  X5        US   n
U RC                  X5        U RE                  X5        URF                  (       a  U RI                  X5        US   RK                  [L        RN                  " SS5      5        U RQ                  XS   5        U RS                  XS   5        U RU                  XS   5        U RW                  US S XS   5        U RY                  XS   5        [        RZ                  (       a  U R]                  XS   5        U R_                  US   5        U Ra                  XU5        U	Rc                  S5        URd                  S S   H  nUR)                  U5        M     URg                  5         U Ri                  XU5        [k        UR                  5      n URm                  U5        URo                  5         SUl8        URr                  (       a  U Ru                  X5        [        R                  (       d  UR                  (       a  U Rw                  XcU5        g g ! URo                  5         f = f)NT)r   fullc)show_entire_c_codesource_desc)code_configcommon_utility_include_dirr   before_global_varz#define __Pyx_MODULE_NAME %szextern int %s;zint %s = 0;rF   z/* Implementation of %s */late_includesF)earlymodule_codemodule_exttypesmodule_stateSmallCodeConfigModuleSetupCode.cmodule_state_clearmodule_state_traverseinit_modulecleanup_modulemain_methodfilename_tabler   r   )<r   r   r   r   r<   r   AnnotationCCodeWritercompilation_sourcerP  r   r   rC   r   rR  initialize_main_c_coderb   
module_posr@   generate_module_preambleembedded_metadatar   refnanny_utility_coder   ru   r   is_main_module_flag_cnamer  r   generate_cached_builtins_declsgenerate_lambda_definitionsgenerate_variable_definitionsrN   generate_function_definitionsgenerate_typeobj_definitionsgenerate_method_tabler   generate_import_starput_code_herer
   loadgenerate_module_state_startgenerate_module_state_cleargenerate_module_state_traversegenerate_module_init_funcgenerate_module_cleanup_funcembedgenerate_main_methodgenerate_filename_table!generate_declarations_for_moduleswriterg   finalize_main_c_codegenerate_module_state_endr   r   r:  c_file_generated	gdb_debug_serialize_lineno_map_generate_annotations)rQ   rA   rB   r   modulesrO  
rootwriterr   r   r   codemodule_is_mainutilcoder   s                 r(   r   ModuleNode.generate_c_code  s   DA))w//!(!1!1W!<![@P@PT[@[!77#5 33??J
 ))+J.s<&&%'.'I'I

 	**,X&!%!%%%cG=U=UW]^$$%:;./

1((<<>? 	@779

#n45

=>12

2

/#2D2D2X2X2ZZ[?+sT?=)++C6 	((3**35		//: ,-))#4""3-%%c0 	N#11.0CD	F 	((..IJ((:N.OP++C=T1UV 	&&ws|Sm:TU))#;K/LM==%%c}+EF$$[1A%BC..s[IT--a0H((2 1((*&&s[A&--(	a GGI"#&&s7w//&&z7C  0	 GGIs   1Q5 5Rc                    U R                  U5        [        R                  =(       d    UR                  nU(       ak  [        R                  R                  U5      (       aG  SS KJs  Jn  UR                  U5      R                  5       nUR                  5        H
  nS Ul        M     OS nUR                  UR                  UR                  US9  U R                   R"                  (       d  g U R                   R$                  R&                  n[        R                  R)                  [        R                  R+                  UR                  5      5      n	U R                   R"                   H  n
[        R                  R)                  [        R                  R-                  X5      5      n[        R                  R+                  U5      nUR/                  U	5      (       d  Mv  U" XR0                  SS9nU(       d  M  X:w  a;  [        R                  R                  U5      (       d   [        R2                  " U5        UR                  XUS9  M     g ! [4         a)  nSS KnUR6                  UR8                  :w  a  e  S nANCS nAff = f)Nr   )coverage_xmlT)
source_posinclude)r<   r   annotate_coverage_xmlr   r%   existsxml.etree.ElementTreeetreeElementTreeparsegetrootitertailsave_annotationmain_source_filer   r/   rk   contextsearch_include_directoriesabspathdirnamejoin
startswithrb   makedirsOSErrorerrnoEEXIST)rQ   r  r   rB   coverage_xml_filenameETr  elsearch_include_file
target_dirincluded_filetarget_filetarget_file_dirsource_fileer  s                   r(   r   ModuleNode._generate_annotations;  s   j! ' = = ^A^A^ RWW^^4I%J%J..88$9:BBDL"'') *  L""6#:#:FMMXd"e zz(("jj00KKWW__RWW__V]]%CD
!ZZ66M''//"'',,z*QRK ggook:O"--j99-mZ^_K,RWW^^O5T5TKK0
 &&{l&[! 7   ww%,,. /s    I
I>I99I>c           
      ^   UR                   R                  nUR                  R                  5       n[	        [
        5      n[        U5       H7  u  nu  pxUS:  d  M  UR                  c  M  XWU4   R                  US-   5        M9     UR                  S5        [        UR                  5       5       HY  u  u  pxn	UR                  c   eUR                  SSR                  [        [        U	5      5      UR                  [        U5      S9  M[     UR!                  S5        UR#                  5         g )Nr   r   LineNumberMapping
LineNumberr   )	c_linenossrc_path
src_lineno)r  gdb_debug_outputwriterbuffer
allmarkersr   list	enumeratefilenamerY   startr   r   	add_entryr  mapstrr   	serialize)
rQ   rA   ccodewritertbmarkersdc_linenosrc_descr  r  s
             r(   r   ModuleNode._serialize_lineno_mapa  s   [[//$$//109'0B,H,xA~("3"3"?J&'..x!|< 1C 	$%17	1B-"XI$$000LL((3sI#67!**z?	   2C 	"#
r*   c                     X;  a;  SX1'   UR                    H  nU R                  XBU5        M     UR                  U5        g g )Nr   )cimported_modulesr   rY   )rQ   rA   module_listmodules_seenimported_modules        r(   r   "ModuleNode.find_referenced_modulesv  sC    " !L#&#8#8,,_<X $9s#	 #r*   c                   ^^^	^
^^ [        [        5      mU Hx  nTU   nUR                  R                  nU(       d  M'  T" U5      nTU   R	                  U5        TR                  U5      nUc  MY  UR                  R                  nU(       a  MQ  Mz     [        5       m/ m
U	UU
UUU4S jm	[        U5       H  nT	" TU   5        M     T
R                  5         T
$ )Nc                    > U T;   a  g TR                  U 5        TT" U R                  5          H  nT" TU   5        M     TR                  U 5        g r#   )addrv   rY   )uvdfsgetkeyr   seen
subclasses	type_dicts     r(   r  1ModuleNode.sort_types_by_inheritance.<locals>.dfs  sG    DyHHQKqvv/IaL! 0MM!r*   )	r   r  rv   	base_typerY   getsetreversedreverse)rQ   r  
type_orderr  key	new_entrybasebase_key
base_entryr  r   r  r  s    ` `     @@@@r(   sort_types_by_inheritance$ModuleNode.sort_types_by_inheritance}  s     &
C!#I>>++D$!$<8$++C0&]]84
%!00 $	  u	 	 J'C	# ( 	r*   c                    0 / pC0 / peU GH  nUR                    H  nUR                  (       d  M  UR                  (       a  M)  UR                  n	U	R                  n
U
(       d  MJ  X;   av  SSKJn  [        UR                  U5      (       d   [        UR                  5      5       e[        X:   R                  U5      (       d   [        X:   R                  5      5       eM  XU
'   UR                  U
5        M     XrL nUR                   H  nUR                  (       d  M  U(       d  UR                  (       d  M0  UR                  n	U	R                  (       d  MO  UR                  (       a  Mb  UR                  n	U	R                  n
X;  d   U
5       eXU
'   UR                  U
5        M     GM     S nU R                  X4U5      nS nU R                  XVU5      nUU4$ )Nr   )NonManglingModuleScopec                     U R                   $ r#   )vtabstruct_cname
entry_types    r(   r  8ModuleNode.sort_type_hierarchy.<locals>.vtabstruct_cname  s    ...r*   c                     U R                   $ r#   )objstruct_cnamer  s    r(   r  7ModuleNode.sort_type_hierarchy.<locals>.objstruct_cname  s    ---r*   )rt   usedin_cincluderv   r  r
   r  r_   r/   r  rY   r   r   is_extension_typer  r  )rQ   r  rA   	vtab_dictvtab_dict_ordervtabslot_dictvtabslot_dict_orderr   ry   rv   r  r  all_defined_herer  	vtab_listr  vtabslot_lists                    r(   sort_type_hierarchyModuleNode.sort_type_hierarchy  s   %'?-/*!F//:::e&7&7&7 ::D//C ' H)%++7MNN`PSTYT_T_P``N)).*>*>@VWWrY\]f]k]q]qYrrW).#'..s3 0  &},,:::#3u7K7K7K ::D---e6G6G6G$zz"22"7<<7-2c*+2237 -# "6	/22(8:		.66A =))r*   c                     [         R                  " S5      n0 / pCUR                   H6  nU" UR                  5      nXc;  d   U5       eXSU'   UR	                  U5        M8     U R                  X4U5      UR                  S S & g )Nr  )operator
attrgetterrt   rv   rY   r  )rQ   rA   key_func
entry_dictentry_orderry   r  s          r(   r   ModuleNode.sort_cdef_classes  s    &&'89"$bK((E5::&C(-#-(#sOs#	 )
 "&!?!?X"/Ar*   c                 L   U H  nU R                  UR                  U5        M!     [        U5      n[        5       nU H  n	XL n
/ nU	R                   H  nUR                  R                  (       aQ  UR
                  (       a@  UR                  U;  a.  UR                  UR                  5        UR                  U5        Mm  Mo  U
(       d  UR                  (       d  M  UR                  U5        M     U Vs/ s H  oU;  d  M
  UPM     nnU R                  X5        M     U H0  nU R                  UR                  U5        U R                  Xe5        M2     U HG  nU R                  Xe5        U R                  Xe5        U R                  Xe5        U R                  Xe5        MI     g s  snf r#   )!generate_objstruct_predeclarationrv   r  r   	is_ctupler  r   r  rY   r   r   generate_objstruct_definitiongenerate_typeobj_predeclarationgenerate_exttype_vtable_struct$generate_exttype_vtabptr_declaration*generate_exttype_final_methods_declaration)rQ   rA   r  r  r  r  ry   vtabslot_entriesctuple_namesr   
definitionr   ts                r(   generate_type_definitions$ModuleNode.generate_type_definitions  s\   "E225::tD #}-uFJL,,::''EJJzz5$((4$++E2 6  5#7#7#7 ''. - (4Q|!@P7PA|LQ**<>  #E..uzz4@00= # E00=//<55eB;;EH	  Rs   3	F! F!c                 x   US   nUR                  S5        UR                  S5        SU Vs/ s H  oUR                  PM     sn;   aD  UR                  S5        UR                  S5        UR                  S5        UR                  S5        U R                  X!5      u  pgU R                  XXgU5        US	   nU Hy  n	XL n
UR                  S5        UR                  S
U	R                  R	                  5       -  5        U R                  XX5        U R                  XU
5        U R                  XU
5        M{     g s  snf )Nr   rF   z/*--- Type declarations ---*/zcpython.arrayz#ifndef _ARRAYARRAY_Hzstruct arrayobject;z'typedef struct arrayobject arrayobject;r   module_declarationsz!/* Module declarations from %s */)r   r  r  r  r   generate_c_class_declarationsgenerate_cvariable_declarationsgenerate_cfunction_declarations)rQ   rA   r  r   typecodemr  r  
modulecoder   defined_heres              r(   r{  ,ModuleNode.generate_declarations_for_modules  s!   23r67 AA//AANN23NN01NNDENN8$#'#;#;G#I 	&&)H	> !67
F!=LR @6CXCXClClCnno..v<]00\R00\R  Bs   D7c                 P    U R                  [        R                  " US5      5        g )NrZ  )rq  r
   rr  )r  r   s     r(   _put_setup_codeModuleNode._put_setup_code  s    ;++D2EFGr*   c                 8   UR                  5         U(       aX  UR                  S5        UR                  [        R                  " USSS95        UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S	5        U R	                  US
5        [        UR                  R                  5       [        R                  S9 H0  nUR                  UR                  :X  d  M  UR                  U5        M2     UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S   R                  S5        SSKJn  UR                  SUR!                  SS5       S35        UR                  S[#        U5      -  5        UR                  S[$        R&                  UR(                  R*                  ;   -  5        UR                  R-                  [.        R0                  " SS5      5        U R	                  US5        UR(                  R2                  R4                  (       a  U R	                  US5        OU R	                  US5        U R	                  US 5        U R	                  US!5        S"[6        R8                   S#[6        R:                   S$[6        R8                   S%[6        R<                   S&[6        R<                   S'[6        R>                   S(3nS)[6        R>                   S#[6        R@                   S*3n	S+n
URB                  b  [E        URB                  5      n
UR                  S,5        UR                  S-U
 35        UR                  S.5        UR                  S/5        UR                  S05        UR                  S.5        UR                  S15        UR                  X-  5        UR                  S5        UR                  US-  5        UR                  S.5        UR                  S25        UR                  S35        UR                  S5        U RG                  XQRI                  5       5        UR                  S5        UR                  S4U RK                  [6        RL                  U5      -  5        UR                  S4U RK                  [6        RN                  U5      -  5        UR                  S55        U RQ                  XUS6S79  UR                  S5        UR                  S85        UR                  S95        UR                  S.5        UR                  S5        URR                  S:   (       aU  UR                  S5        UR                  S;5        UR                  S<5        UR                  S.5        UR                  S5        URR                  S=   nURR                  S>   nUS?;  a  U(       d  [U        U RV                  S@5        UR                  SA[E        USB:H  5       35        UR                  SC[E        USD:H  5       35        USE;  a  UR                  SFU S35        USG:X  a  SHnOUSI:X  a  SJnOURY                  5       nUR                  SKU SL35        UR                  SMU SN35        UR[                  [.        R\                  " SOSP5      S+   5        UR-                  [.        R^                  " SQSR5      5        [`        Rb                  Re                  U5        [`        Rb                  Rg                  U5        [`        Rh                  Rg                  U5        UR[                  [j        Rl                  5        U R	                  USS5        UR                  S5        UR                  ST5        UR                  SUURn                  -  5        [p        Rr                  b"  UR                  SV[6        Rt                  -  5        UR                  S.5        UR                  SW[6        R<                  -  5        UR                  SX[6        R>                  -  5        UR                  SY[6        Rv                  < S#[6        Rx                  < S*35        UR                  SZ[6        R8                  -  5        UR-                  [.        R^                  " S[S5      5        [{        U5      (       a'  UR-                  [.        R^                  " S\S]5      5        g g )^Nz/* BEGIN: Cython Metadata   T)rJ  	sort_keyszEND: Cython Metadata */rF   z#ifndef PY_SSIZE_T_CLEANz#define PY_SSIZE_T_CLEANz#endif /* PY_SSIZE_T_CLEAN */InitLimitedAPIr  z#ifndef Py_PYTHON_Hzg    #error Python headers needed to compile C extensions, please install development version of Python.z!#elif PY_VERSION_HEX < 0x03080000z'    #error Cython requires Python 3.8+.#elser   z#endif /* Py_PYTHON_H */r   )__version__z#define __PYX_ABI_VERSION "r   _"z#define CYTHON_HEX_VERSION %sz!#define CYTHON_FUTURE_DIVISION %dCythonABIVersionrZ  CModulePreambleCppInitCode	CInitCodePythonCompatibilityMathInitCodez/#define __PYX_MARK_ERR_POS(f_index, lineno)  {  = z[f_index]; (void) z; z = lineno; (void) z;%s (void) z; }r   r   r   z)#ifndef CYTHON_CLINE_IN_TRACEBACK_RUNTIMEz*#define CYTHON_CLINE_IN_TRACEBACK_RUNTIME r   z!#ifndef CYTHON_CLINE_IN_TRACEBACKzC#define CYTHON_CLINE_IN_TRACEBACK CYTHON_CLINE_IN_TRACEBACK_RUNTIMEz#if CYTHON_CLINE_IN_TRACEBACKz.#define __PYX_ERR(f_index, lineno, Ln_error) \z:    { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; }z
#define %sz/* Early includes */F)latezL#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS)z!#define CYTHON_WITHOUT_ASSERTIONSccomplexz#if !defined(CYTHON_CCOMPLEX)z#define CYTHON_CCOMPLEX 1c_string_typec_string_encoding)bytes	bytearrayzGa default encoding must be provided if c_string_type is not a byte typez/#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII asciiz.#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 utf8)r1  r2  z'#define __PYX_DEFAULT_STRING_ENCODING "r0  	ByteArrayr  Unicodez*#define __Pyx_PyObject_FromString __Pyx_Py_FromStringz1#define __Pyx_PyObject_FromStringAndSize __Pyx_Py_FromStringAndSizeTypeConversionszTypeConversion.cFormatTypeNamezObjectHandling.cPretendToInitialize#if !CYTHON_USE_MODULE_STATEzstatic PyObject *%s = NULL;zstatic PyObject *%s;zstatic int %s;zstatic int %s = 0;zstatic const char * const zstatic const char *%s;FastTypeChecksPythranConversionzCppSupport.cpp)>r   r   jsondumpsr  r   rh   ri   r   sortkeylocationINITIALr|  r   rF   r!  r  r   r   divisionr  future_directivesr   r
   rr  rB   cplusr   filename_cnamefiletable_cnamelineno_cnameclineno_cnameline_c_macror;   intr   r   r   r   r   r   r@   r   rb   titler  r  r   r   c_long_typecreate_to_py_utility_codecreate_from_py_utility_code
c_int_typer   branch_prediction_macrosmodule_cnamer   
pre_importpreimport_cnamecfilenm_cnamefile_c_macror!   )rQ   rA   rB   r  metadatar  ro   r!  mark_errpos_code
cline_infodefault_cline_runtimer-  r.  c_string_func_names                 r(   rf  #ModuleNode.generate_module_preamble
  sP   JJ23JJtzz(1EFJJ01JJrN

-.

-.

23T#34#..//1{7J7JKC||s{{*		$ L 	

()

 C 	D

67

<=

7%%&@A"

01D1DS#1N0OqQR

25F{5SST

6OOs{{<<<> 	? 	))/1DE	G 	T#45;;$$  }5  {3T#89T>2
%%&c&*@*@)A B,,- .##$ %**+ ,++, - 	 --.c&2E2E1FaH
 !"&&2$'(C(C$D!

>?

?@U?VWX

8

67

XY

8

23

#01

7

#b()

8

DE

OP

2//jjlC

2

<$--0E0Es"KKL

<$--0G0G"MMN

)*st%H

2

ab

67

8

2>>*%JJrNJJ67JJ23JJx JJrN7NN+>? 66?P$((ef

DSIZ^eIeEfDghi

CCHY]cHcDdCefg$55JJ@AR@SSTUVK'!,e#!*!.!4!4!6

?@R?SS^_`

FGYFZZlmn++,=?QRSTUV[445EGYZ[ 	88=::3?99#>//0T#89

2

12

033C3CCD)JJ-0F0FFG

8

#f&9&99:

'&*>*>>?

6;O;OQWQdQdef

+f.C.CCD[445EGZ[\#  !8!89LN^!_` r*   c                    [         R                  nUR                  S5        UR                  SU-  5        UR                  SU-  5        UR                  SU-  5        UR                  S5        UR                  SU-  5        UR                  S5        UR                  SU-  5        UR                  S	5        UR                  S
5        U(       a  UR                  SU-  5        O[UR                  S5        UR                  SU-  5        UR                  S5        UR                  SU-  5        UR                  S5        UR                  S5        g )Nz#ifdef CYTHON_EXTERN_Cz    #undef %sz    #define %s CYTHON_EXTERN_Cz#elif defined(%s)z    #ifdef _MSC_VERzf    #pragma message ("Please do not define the '%s' macro externally. Use 'CYTHON_EXTERN_C' instead.")z	    #elsez[    #warning Please do not define the '%s' macro externally. Use 'CYTHON_EXTERN_C' instead.z
    #endifr   z    #define %s extern "C++"z  #ifdef __cplusplusz    #define %s extern "C"z  #elsez    #define %s externz  #endifr   )r   r  r   )rQ   r  r   r   s       r(   r   -ModuleNode.generate_extern_c_macro_definition  s   $$

+,

?T)*

3d:;

&-.

()

}  AE  E  	F

;

pswwx

< 

7JJ4t;<JJ-.JJ2T9:JJy!JJ.56JJz"

8r*   c                 j    UR                  S5        UR                  S5        UR                  S5        g )Nz#ifndef DL_IMPORTz  #define DL_IMPORT(_T) _Tr   )r   )rQ   r  s     r(   r   #ModuleNode.generate_dl_import_macro  s(    

&'

/0

8r*   c                 |   [        UR                  R                  5       [        R                  S9 Ho  nUR
                  UR                  :X  a  U(       a  UR                  U5        M7  M9  UR
                  UR                  :X  d  MU  U(       d  M^  UR                  U5        Mq     U(       a  UR                  S5        g g )Nr  z#include <omp.h>)
r   rh   ri   r   r?  r@  EARLYr|  LATEputln_openmp)rQ   rA   r  r  rU  r+  ro   s          r(   r   ModuleNode.generate_includes  s    #..//1{7J7JKC||syy(IIdO )4IIdO L 01 r*   c                 ,   SSK JnJn  UR                  S5        UR                  S[        R
                  -  5        UR                  R                  (       a  UR                  R                   H  nUR                  5       nU" U5      (       a  UR                  5       n[        R                  " U5      R                  5       n[        U5      nUR                  SUR                  5       -  5        M     OUR                  S5        UR                  S5        g )Nr   )isabsr   rF   z!static const char* const %s[] = {%s,0};)os.pathrf  r   r   r   rF  r   filename_listget_filenametable_entryget_descriptionpathlibPathas_posixr$   r   )rQ   r  rf  r   rP  	file_pathescaped_filenames          r(   rz  "ModuleNode.generate_filename_table  s    +

2

69O9OOP))#//=='??A	## + ; ; =I#LL3<<>	#6y#A 

5#3#G#G#IIJ  > JJsO

4r*   c                     g r#    rQ   rA   r  s      r(   generate_type_predeclarations(ModuleNode.generate_type_predeclarations  s    r*   c                 z   U H  nUR                   (       a  M  UR                  nUR                  (       a  M5  UR                  (       d  UR                  (       a  U R                  X25        Mj  UR                  (       aJ  UR                  (       d9  UR                  (       a(  U R                  UR                  R                  U5        M  UR                  (       d  M  U R                  XB5        M     U GHE  nUR                   (       a  M  UR                  nUR                  (       a  U R                  X25        MG  UR                  (       d  UR                  (       a  U R                  X25        M|  UR                  (       a  U R!                  X25        M  UR                  (       aJ  UR                  (       d9  UR                  (       a(  U R!                  UR                  R                  U5        M  UR                  (       a  U R#                  X25        GM   UR                  (       d  GM4  U R%                  XB5        GMH     g r#   )r  rv   
is_typedefis_struct_or_unionis_cpp_class$generate_struct_union_predeclarationr  is_fusedr  struct_entryr  r  generate_typedefr   r   generate_enum_definition generate_struct_union_definitiongenerate_cpp_class_definitionr  )rQ   r   r  ry   rv   s        r(   r   $ModuleNode.generate_type_header_code  s]    "E$$$zz??,,0A0A==eJ^^DMMejj==ejj>U>UW[\+++::4F " "E$$$zz??))%6\\T%5%511%>,,99%F^^DMMejj99%**:Q:QSWX&&66uC+++66tB "r*   c                    UR                  S5        UR                   Hf  nUR                  nUR                  (       a  M"  UR                  nUR                  S5      (       a  USS  nOUnUR                  SU< SU< S35        Mh     g )NrF   __pyx_   typedef struct z __pyx_gcc33_r   )r   rt   rv   typedef_flagr  r  )rQ   rA   r  ry   rv   r   r  s          r(   generate_gcc33_hackModuleNode.generate_gcc33_hack  sr    

2((E::D$$$++??8,,8DD

$  ! )r*   c                 f   UR                   R                  nUR                  nUR                  (       a"  UR                  (       d   UR
                  S   nOUnUR                  UR                  5        UR                  SUR                  UR                  5      -  5        g ! [         a    Un NWf = f)Nnumeric_typedefsztypedef %s;)rv   typedef_base_typer/   
is_numericis_cpp_class_scoper   KeyErrormark_posrb   r   r  r  )rQ   ry   r  r  enclosing_scopewriters         r(   r  ModuleNode.generate_typedef  s    JJ00	++(J(J))*<= F		"]Y%?%?%LLM  s   B! !B0/B0c           
      d    UR                   (       a  U< SU< SU< SU< SU< S3
$ U< SU< S3$ )Nr   z
;
typedef r   )r  )rQ   rv   kindr   s       r(   sue_predeclarationModuleNode.sue_predeclaration  s.    ddD" "  $T**r*   c           
      j   UR                   nUR                  (       a\  UR                  (       aK  UR                  SSR	                  UR                   Vs/ s H  oDR                  5       PM     sn5      -  5        UR                  U R                  X3R                  UR                  5      5        g s  snf )Nztemplate <typename %s>z, typename )	rv   r|  	templatesr   r  r7  r  r  r  )rQ   ry   r  rv   Ts        r(   r}  /ModuleNode.generate_struct_union_predeclaration!  s    zzJJ/-2D2D59^^D^))+^D3F F G

4**4DJJGH Es   B0c                      U< SU< S3nSnXE4$ )Nr    {ri  ru  )rQ   rv   r  r   headerfooters         r(   sue_header_footerModuleNode.sue_header_footer(  s    "D)~r*   c                    UR                  UR                  5        UR                  nUR                  nU(       Ga  UR                  nUR
                  =(       a    UR                  nU(       a2  UR                  < SS< 3nUR                  R                  [        5        U R                  X5UR                  5      u  pxU(       aU  UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  U5        UR                  n	U	 H:  n
UR                  SU
R                  R                  U
R                  5      -  5        M<     UR                  U5        U(       aV  UR                  S5        UR                  S	5        UR                  S5        UR                  S
5        UR                  S5        g g g )Nr   __Pyx_PACKEDz#if defined(__SUNPRO_C)z  #pragma pack(1)z#elif !defined(__GNUC__)z  #pragma pack(push, 1)r   %s;z  #pragma pack()z  #pragma pack(pop))r  rb   rv   r/   r  	is_structpackedr   r   packed_struct_utility_coder  r  r   r   r  )rQ   ry   r  rv   r/   r  r  r  r  r   attrs              r(   r  +ModuleNode.generate_struct_union_definition-  sj   eii zz

99D^^3F"&))^<  112LM&&t4::> F

45

./

56

45

8$JJv++K#

DII66tzzBBD $ JJv

45

-.

56

01

8$ ) r*   c                 f   U(       a  UR                  UR                  < SSR                  U5      < S35        U=(       d$    U=(       a    UR                  R                  (       + nU(       a  UR                  5         U(       a  U H  n	UR                  U	SS9  M     U(       a2  UR                  UR                  < SSR                  U5      < S35        U(       a  UR                  5         UR                  S5        g UR                  UR                  < SSR                  U5      < S35        g )N(r   z) {Fnanny);r   )r   r  r  rv   nogilput_ensure_gilput_init_var_to_py_noneput_release_ensured_gil)
rQ   	arg_decls	arg_namesis_implementingpy_attrsconstructorrv   r  	needs_gilr  s
             r(   generate_cpp_constructor_code(ModuleNode.generate_cpp_constructor_codeL  s    JJTZZ91EFG P[%O9I9I9O9O5OI##%$D00U0C %

(9(9499Y;OPQ,,.JJsOJJDJJ		)0DEFr*   c           
         UR                  UR                  5        UR                  nUR                  nU(       Ga/  UR                  (       aK  UR                  SSR                  UR                   Vs/ s H  oUR                  5       PM     sn5      -  5        UR                  SUR                  -  5        UR                  (       aM  SR                  UR                   Vs/ s H  ofR                  5       PM     sn5      nUR                  SU-  5        UR                  S5        U R                  UR                  U5        UR                  R                  5        Vs/ s H5  nUR                  R                  (       d  M   UR                   (       a  M3  UPM7     n	nSn
S nS nUR"                   H  nUR                  R$                  (       a-  UR                  R&                  (       a  UR                  S5        OcUR(                  S	:X  a  UR+                  S	5      nOAUR(                  S
:X  a  UnO.UR                  R$                  (       a  UR                  S5        Sn
UR                  SUR                  R-                  UR                  5      -  5        M     SUR.                  R0                  ;   nU(       d  U	(       Gai  U(       GaH  UR3                  5        GH2  n/ n/ nUR                  R4                  S [7        UR                  R8                  5      UR                  R:                  -
    H=  nUR=                  UR-                  5       5        UR=                  UR                  5        M?     UR                  R:                  (       aa  UR=                  UR                  R>                  R-                  [@        RB                  5      5        UR=                  [@        RB                  5        U(       d  Sn/ nU RE                  UUXXU5        GM5     O/ n/ nU RE                  UUXXU5        U(       d  U	(       d  U
(       a  U
(       a  UR                  S5        U(       a  UR                  SUR                  -  5        U	(       a  URG                  5         U(       a  UR                  SUR                  -  5        U	(       a)  U	 H  nURI                  USS9  M     URK                  5         UR                  S5        OUR                  SUR                  -  5        U	(       Ga<  U(       Ga  UR                  UR                  < SUR                  < S35        URG                  5         UR"                   H]  nUR                  R$                  (       a  M   UR                  UR                  < SUR                  < S35        URM                  USS9  M_     URK                  5         UR                  S5        UR                  UR                  < SUR                  < S35        UR                  S5        URG                  5         UR"                   Hm  nUR                  R$                  (       a  M   URI                  USS9  UR                  UR                  < SUR                  < S35        URM                  USS9  Mo     URK                  5         UR                  S5        UR                  S5        UR                  S5        OZUR                  UR                  < SUR                  < S35        UR                  UR                  < SUR                  < S35        UR                  S5        g g s  snf s  snf s  snf )Nztemplate <class %s>z, class 	struct %sz	, public z : public %sr  Fstatic z<init>z<del>zvirtual Tr  r^  z~%s() {z%s();r  r   z~%s();z(const z& __Pyx_other) {z = __Pyx_other.r   z& operator=(const zif (this != &__Pyx_other) {zreturn *this;z& __Pyx_other);ri  )'r  rb   rv   r/   r  r   r  r7  r  r  base_classesr   r   r   ri   is_pyobjectis_inheritedr   is_cfunctionis_static_methodr   lookup_herer  r   r   all_alternativesoriginal_argslenargsoptional_arg_countrY   op_arg_structr   optional_args_cnamer  r  put_var_xdecrefr  put_var_incref)rQ   ry   r  rv   r/   r  
base_classbase_class_declr  r  has_virtual_methodsr  
destructorr  r  constructor_alternativer  r  argdefault_constructors                       r(   r  (ModuleNode.generate_cpp_class_definition]  s   eii zz

~~

0:??9=HA--/H4J J K HH[4::-.  "-"2"2KOK\K\]K\Z668K\]#_/9:JJt**5+=+=tD#(==#7#7#9 F#9a66-- 67nn #9H F"'KJ))99))dii.H.HHHY'YY(*"'"3"3H"=KYY')!%JYY++HHZ(*.'

5499#=#=djj#IIJ * ,t/?/?/E/EEOh3>3O3O3Q/$&	$&	#:#?#?#M#M w%<%A%A%F%F!GH_HdHdHwHw!w$yC%,,S-A-A-CD%,,SYY7$y 377JJ%,,-D-I-I-W-W-h-hio  jD  jD  .E  F%,,V-G-GH(26/(*I::9iQ`  mD  LP  Q 4R !#I "I66y)_hs{  AX)<&HHZ("JJy4::56++-!

7Z-=-=#=>$,D 00U0C %-446JJsOJJx$**45"JJ

DJJWX'') % 1 1#yy555 JJTZZ'XY //E/B !2 002JJsOJJ4::W[WaWabcJJ<='') % 1 1#yy555 00U0C JJTZZ'XY //E/B	 !2
 002JJsOJJ/JJsOJJtzz4::VWJJ$**VZV`V`abJJt{  I
 ^Fs   2], ]1]6 ]6]6c                    UR                  UR                  5        UR                  nUR                  =(       d    UR                  =(       d    SnUR                  R
                  (       a  SOSnU R                  X5U5      u  pgUR                  U5        UR                  nU(       d  [        UR                  S5        OUS   n	U H-  n
U
R                  c  M  U
R                  R                  U5        M/     U H  n
U
R                  c  U
R                  R                  S5      S   nO=U
R                  R                  S5      S   < SU
R                  R                  5       < 3nXLa  US-  nUR                  U5        M     UR                  U5        UR                  R                  (       a7  UR                  R                  (       a  UR                  S	U< S
U< S35        g g g )NrF   z
enum classenumzDEmpty enum definition not allowed outside a 'cdef extern from' blockr]  z::r*  ,ztypedef enum r   r   )r  rb   rv   r  r   r   r  r   enum_valuesr   
value_nodegenerate_evaluation_codesplitr   r   r  )rQ   ry   r  rv   r   r  r  r  r  
last_entryvalue_entry
value_codes               r(   r  #ModuleNode.generate_enum_definition  s}   eii zz{{.ejj.B$zz55|6//DA

6''%))cd$RJ*))5**CCDI  +  +))1!,!2!2!8!8!>r!BJ $))//5b9#..557#9J 0#%J

:&  + 	

6::zz&&

D$?@ ' r*   c                    UR                  S5        UR                  R                  nU(       a  UR                  S:X  aR  UR                  (       dA  UR                  [
        R                  < S[        R                  " SS5      < SU< S35        g UR                  S:X  aA  UR                  [
        R                  < S[        R                  " SS5      < SU< S35        g g g )	NrF   externr   rC  rD  r   r   	DL_EXPORT)	r   rv   r1  r   r  r   r  r   rE  )rQ   ry   r  r   s       r(   r  *ModuleNode.generate_typeobj_predeclaration  s    

2zz''8+E4E4E

))**>;G  !!X-

))**>;G  . r*   c                    UR                   (       d  g UR                  UR                  5        UR                  nUR                  nU R                  U5        UR                  (       Ga	  UR                  S5        UR                  SUR                  -  5        UR                  (       aW  UR                  R                  (       a<  UR                  SUR                  R                  < S[        R                  < S35        UR                   HP  nUR                  (       a  M  UR                  SUR                  R                  SUR                  -  5      -  5        MR     UR                  S5        g g )	NrF   zstruct %s {struct r   r   r  z(*%s)ri  )r  r  rb   rv   r/   specialize_fused_typesr  r   r  r   obj_base_cnamer   r  r  r  )rQ   ry   r  rv   r/   method_entrys         r(   r  )ModuleNode.generate_exttype_vtable_struct  s   zzeii zz

##E*   JJrNJJ}t'<'<<=~~$.."A"A

NN33))+ , !& 3 3#000JJu|'8'8'I'I'T`TfTfJf'ggh !4 JJt !r*   c                     UR                   (       d  g UR                  UR                  5        UR                  nUR                  (       a/  UR                  SUR                  < SUR                  < S35        g g )Nstatic struct  *r   )r  r  rb   rv   vtabptr_cnamer   r  )rQ   ry   r  rv   s       r(   r  /ModuleNode.generate_exttype_vtabptr_declaration  sV    zzeii zzJJ%%""$ % r*   c                    UR                   (       d  g UR                  UR                  5        UR                  R                  R
                   H  nUR                  (       a  M  UR                  (       d  M)  UR                  R                  UR                  5      nUR                  UR                  5      nUR                  SU< U< S35        M     g )Nr  r   )r  r  rb   rv   r/   r   r  final_func_cnamer  build_function_modifiersfunc_modifiersr   )rQ   ry   r  r  declaration	modifierss         r(   r  5ModuleNode.generate_exttype_final_methods_declaration  s    zzeii !JJ,,::L,,,1N1N1N*//@@ 113 99,:U:UV	

YDE ;r*   c                     UR                   (       d  g UR                  U R                  USUR                  5      5        g )Nstruct)r/   r   r  r  )rQ   rv   r  s      r(   r  ,ModuleNode.generate_objstruct_predeclaration%  s-    zz

4**44;O;OPQr*   c                 ~   UR                  UR                  5        UR                  (       d  g U R                  USUR                  5      u  p4UR                  U5        UR                  nU(       aL  UR                  nUS:X  a  SnUR                  SUR                     < U< S[        R                  < S35        OUR                  S5        UR                  (       aZ  UR                  (       a  UR                  R                  (       d.  UR                  SUR                  < S	UR                  < S35        UR                  R                   H  nUR                  (       a  [        nOUR                  nUR                   (       a  UR#                  UR$                  5      n	OUR'                  UR$                  5      n	UR                  R)                  U5        UR                  S
U	-  5        M     UR                  U5        UR*                  b/  UR                  SUR                  < SUR*                  < S35        g g )Nr  rC  PyHeapTypeObject)r  rF   r   r   PyObject_HEADr  r  r  r  )r  rb   r/   r  r  r   r  r  r   r  vtabslot_cnamer  r   is_declared_genericr	   rv   is_cpp_optionalcpp_optional_declaration_coder  r  use_entry_utility_codeobjtypedef_cname)
rQ   rv   r  r  r  r  basestruct_cnamer  	attr_typedecls
             r(   r  (ModuleNode.generate_objstruct_definition*  s   dhh zz""443G3GH 	

6NN	(88>1#5 JJ#I$:$:;$))+, JJ!4>>;X;XJJ))'')* JJ**D''*	 II	## >>tzzJ 11$**=JJ--d3JJut|$ + 	

6  ,JJ$2F2FH]H]^_ -r*   c                    US   nUS   nUS   nUR                  5       nUR                   GH'  n	U(       d  U	R                  (       d  M  UR                  SU	R                  R
                  -  5        UR                  SU	R                  R
                  -  5        UR                  SU	R                  R
                  -  5        U	R                  R                  c  M  UR                  SU	R                  R                  -  5        UR                  SU	R                  R                  -  5        UR                  SU	R                  R                  -  5        GM*     g )NrX  r[  r\  PyTypeObject *%s;!Py_CLEAR(clear_module_state->%s);z$Py_VISIT(traverse_module_state->%s);PyObject *%s;)insertion_pointrt   r   r   rv   r0  r1  )
rQ   rA   r  r
  r   rX  r[  r\  module_state_typeobjry   s
             r(   r  (ModuleNode.generate_c_class_declarationsV  s.   ">2()=> +,C D+;;=((EU111""#69Q9Q#QR"((7JJ,,-. &++:JJ,,-. ::++7(..AYAY/YZ&,,;

0023 *//>

0023 )r*   c                    UR                   (       a  g UR                   GH7  nUR                  (       dC  UR                  (       d2  UR                  S:X  a$  UR
                  (       d  UR                  (       d  MZ  S nS nS nUR                  S:X  a  [        R                  nSnOsUR                  S:X  a  [        R                  nU(       a  SnOISnOFUR                  S:X  a6  SnS nUR                  b%  UR                  R                  UR                  5      nUR                  nUR                  n	UR
                  (       aB  U(       d;  SnS n[        U5      nUR                  [        R                  UR                   5      n	SnU(       a  UR#                  SU-  5        UR$                  (       a  UR#                  UR'                  XS	95        OUR#                  UR)                  XS	95        Ub  UR+                  S
U-  5        UR-                  S5        UR                  U	:w  a$  UR-                  SUR                  < SU	< S35        UR/                  U5        GM:     g )Nprivater  rD  r   r  staticr   z%s dll_linkage = %sr   r   r  r  )is_cython_builtinr   r  
in_closurer   r   r  r   r  initrv   literal_coder  r   r2  varptr_prefixr   r  r   r  r  put_safer   r  )
rQ   rA   r  r
  ry   storage_classr  r  rv   r  s
             r(   r  *ModuleNode.generate_cvariable_declarationsm  s     __E!!U%5%5%%2E<P<PTYT^T^ MKD8+ & 5 5)!!X- & 5 5"-K"-K!!Y. ("::) ::225::>D::DKKE##J ("~

6#7#7D./$$;; < 4 5 .. / 4 5gn-JJsO{{e#

eDE&&u-] %r*   c                    UR                    Hq  n[        R                  =(       a    UR                  S:X  + nUR                  (       d*  UR                  S:X  d  UR
                  (       d	  U(       d  Me  [        XAX#5        Ms     g )Nr  r   )r   r   cimport_from_pyxr   r  r   generate_cfunction_declaration)rQ   rA   r  r
  ry   from_pyxs         r(   r  *ModuleNode.generate_cfunction_declarations  sX    &&E//T8H8HH4TH

''83yyx.u4L 'r*   c                    UR                    H  nUR                  (       a  M  UR                  S:X  d  M(  UR                  UR                  R                  UR                  5      5        UR                  b9  UR                  R                  UR                  5      nUR                  SU-  5        UR                  S5        M     g )Nr   r  r   )r   r  r   r  rv   r  r  r  r  r  r   )rQ   rA   r  ry   r  s        r(   rl  (ModuleNode.generate_variable_definitions  s    __E$$$)9)9X)E44U[[AB::) ::225::>DMM'D.1

3 %r*   c                    UR                   nUR                   GH  nUR                  S:w  d  M  UR                  nUR                  nU(       d  M7  U R                  Xb5        U R                  XbU5        U R                  Xb5        U R                  Xb5        UR                  5       (       a9  U R                  XbU5        UR                  5       (       a  U R                  XbU5        UR                  S/5      (       a  U R                  Xb5        UR                  SS/5      (       a  U R                  Xb5        UR                  / SQ5      (       a(  [!        U R"                  SS5        UR%                  S5        UR                  S	S
/5      (       a  U R'                  Xb5        UR                  SS/5      (       a  U R)                  Xb5        UR                  SS/5      (       a  U R+                  Xb5        UR                  S/5      (       a  U R-                  Xb5        UR                  SS/5      (       a  U R/                  Xb5        UR0                  (       d9  UR2                  (       d(  UR5                  S/5      (       a  U R7                  Xb5        UR                  [8        R:                  5      (       a  U R=                  Xb5        O0SUR>                  ;   a   [!        UR@                  R"                  S5        [8        RB                  " URD                  R>                  5      RF                   HT  nURH                  (       d  M  UR                  URJ                  5      (       d  M8  U RM                  XgX$R"                  5        MV     U RO                  Xb5        U RQ                  Xb5        U RS                  Xb5        UR%                  S5        U RU                  XB5        UR%                  S5        U RW                  X4U5        UR%                  S5        GM     g )Nr  __getitem____setitem____delitem__)__getslice____setslice____delslice__z__getslice__, __setslice__, and __delslice__ are not supported by Python 3, use __getitem__, __setitem__, and __delitem__ insteadr   zN#error __getslice__, __setslice__, and __delslice__ not supported in Python 3.r)  r*  __getattr____getattribute____setattr____delattr____get____set__
__delete____dict__total_orderingMtotal_ordering directive used, but no comparison and equality methods definedz#if CYTHON_USE_TYPE_SPECSr   r   ),r  rt   r   rv   r/   generate_exttype_vtablegenerate_new_functiongenerate_del_functiongenerate_dealloc_functionneeds_gcgenerate_traverse_functionneeds_tp_cleargenerate_clear_functiondefines_any_specialgenerate_getitem_int_functiongenerate_ass_subscript_functionr   rb   r   generate_ass_slice_functiongenerate_getattro_functiongenerate_setattro_functiongenerate_descr_get_functiongenerate_descr_set_functionis_closure_class_scopeis_defaults_class_scopedefines_anygenerate_dict_getter_functionr   richcmp_special_methodsgenerate_richcmp_functionr@   parent_typeget_slot_tabler   PyNumberMethodsis_binopuser_methodsgenerate_binop_functiongenerate_property_accessorsro  generate_getset_tablegenerate_typeobj_specgenerate_typeobj_definition)rQ   rA   r  ru   ry   rv   r/   slots           r(   rn  'ModuleNode.generate_typeobj_definitions  s:   --((E 8+zz

500=..uEB..u;225?~~''77UK //11 88eL00-AA::5G00-1OPP<<UI001abb!XYZ\ 

#st00..1QRR88E00-AS1TUU77D00-1OPP77D00)==88E00)\1JKK88E!88E<Y<Y_d_p_pr|q}_~_~::5G001R1RSS66uC)U-=-== 1 1 5 5 oq !* 8 89I9I9T9T U e e===U-F-FtGXGX-Y-Y 88dIIV !f 44UA..u;..u;JJ:;..u;JJw'445EdSJJx(q )r*   c                     UR                   nUR                  (       a/  UR                  SUR                  < SUR                  < S35        g g )Nr  r   r   )rK  vtable_cnamer   r  rQ   r/   r  rv   s       r(   r5  "ModuleNode.generate_exttype_vtable  s>      JJ%%!!# $ r*   c                     UR                   nUR                  UR                  S5      < SUR                  5       < S35        g )Npz = (z)o;)rK  r   r  r7  rY  s       r(   generate_self_castModuleNode.generate_self_cast  s8      

%%c*++-/	0r*   c           
         [         R                  " SS5      nUR                  S5      nUR                  U5      U:w  a  g UR                  nUR
                  nUR                  5       u  nu  pnUR                  R                  nUR                  (       a  / n	UR                   Vs/ s H'  nUR                  R                  U5      (       d  M%  UPM)     nnUR                  S5      nU(       a  UR                  (       d  S nU(       d  U(       a  UR                  (       d  SnOSnU(       a  SnOUR                  R!                  SS5      nUR                  ["        R$                  5      nUR                  ["        R&                  5      nU(       a  UR(                  S   nUR+                  S5        UR+                  S5        UR+                  S	UR                  R-                  U5      U4-  5        UR+                  S
U-  5        UR+                  S5        UR/                  U[0        R2                  SSU SU S3SS9  UR4                  =(       d    U
=(       d    U=(       d    U	=(       d    UnU(       a-  UR+                  SUR                  R-                  S5      -  5        U(       ac  [         R6                  " X5      nUR8                  nUR:                  (       d  UR=                  U5      nUc  SU S3nUR+                  SU-  5        GO%UR+                  S5        UR+                  S5        UR+                  S5        UR+                  S5        UR+                  S5        U(       Ga@  UR(                  R?                  [@        RB                  " SS5      5        U(       a  SnOSnUR-                  SSS9nUR+                  S5        UR+                  SUR=                  U5      < S U< S!U< S"35        UR+                  S#UR=                  U5      < S$UR=                  U5      < S%35        UR+                  S&U-  5        UR+                  S'5        URE                  5       (       a  UR+                  S(5        UR+                  S)5        UR+                  S5        UR+                  S*5        U(       d  UR+                  S+5        UR+                  S,5        U(       dX  UR+                  S-5        UR+                  S.["        RF                  < S/["        RH                  < S035        UR+                  S15        UR+                  S25        U(       a  U(       d  UR+                  S15        U(       d  UR+                  S5        U(       a#  UR+                  S3URK                  S45      -  5        S5nUR4                  (       a  UnUR
                  (       aU  UR
                  RL                  (       a:  UR
                  nUR
                  (       a  UR
                  RL                  (       a  M:  UULa  S6URL                  -  nOSnUR+                  S7UR4                  < S8U< URN                  < S935        U H  nUR                  RQ                  X-S7S:9  M     U	 HV  nURR                  S;:X  a2  SnURU                  S7URV                  < S<URV                  < S=35        ME  URY                  US>S5S?9  MX     U H?  nUR+                  S@URV                  -  5        UR+                  SAURV                  -  5        MA     U
 H!  nUR+                  SBURV                  -  5        M#     URV                  SC:X  a  UR+                  SD5        U(       a_  UR                  (       a&  SE["        RF                   S/["        RH                   SF3nOSGnSnUR+                  SHURZ                  < SIU< SJ35        UR+                  SK5        U(       a7  UR+                  SL5        UR]                  S4[^        S5S?9  UR+                  SM5        UR+                  S15        URa                  5         g s  snf )NNtp_new	__cinit__rF   CYTHON_UNUSED r   freelistmodule_state_contents#if CYTHON_USE_FREELISTSz%s[%d];zint %s;r   zPyTypeObject *t, zPyObject *a, zPyObject *kT)needs_prototyper  r\  z__Pyx_PyType_GetSlot(z, tp_new, newfunc)zPyObject *o = %s(t, a, k);zPyObject *o;z##if CYTHON_COMPILING_IN_LIMITED_APIzAallocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);zo = alloc_func(t, 0);r   IncludeStringHStringTools.czU & (int)(!__Pyx_PyType_HasFeature(t, (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))derefzif (likely((int)(z( > 0) & (int)(t->tp_basicsize == sizeof())z)) {zo = (PyObject*)[--];zmemset(o, 0, sizeof(%s));z(void) PyObject_INIT(o, t);PyObject_GC_Track(o);} else{zBif (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {zo = (*t->tp_alloc)(t, 0);} else {z-o = (PyObject *) PyBaseObject_Type.tp_new(t, z->z, 0);r   zif (unlikely(!o)) return 0;zp = %s;oFz(struct %s*)p->r*  r   extra_access_coder2  z" = PyDict_New(); if (unlikely(!p->z)) goto bad;p->%sr  zp->%s.data = NULL;zp->%s.memview = NULL;zp->%s.obj = NULL;__pyx_memoryviewslicezp->from_slice.memview = NULL;zo, z, NULLzo, a, kzif (unlikely(r  z) < 0)) goto bad;z	return o;r,  zreturn NULL;)1r   ConstructorSlotmangle_internal	slot_coderK  r  get_refcounted_entriesis_final_typeis_internalr   rv   needs_explicit_constructionr  
is_specialtrivial_signaturer@   r  r   freelist_namefreecount_namer   r   r  start_slotfuncr   py_objptr_typer  get_base_slot_functionr0  is_builtin_typename_in_slot_module_stater   r
   r   r9  modulestateglobal_cnameempty_tuple	cast_coder  r  generate_explicit_constructionr   r  r  r  
func_cnameput_decref_clearr	   exit_cfunc_scope)rQ   r/   r  cclass_entrytp_slot	slot_funcrv   r  have_entriesr  
py_buffersmemoryview_slicesr|  ry   explicitly_constructable_attrscinit_func_entryunused_markerfreelist_sizer  r  rX  need_self_castr`  base_type_typeptr_cnametype_safety_check
obj_structneeds_error_cleanupvtab_base_typestruct_type_cast
cinit_argss                                 r(   r6   ModuleNode.generate_new_function  s   ++HkB))(3	U#y0  NN	 446 	@?x->))77H$00*
0ezz55e< 0 	' *

 !,,[9$4$?$?#)2B2T2TM,MM!,,00Q?M--f.B.BC..v/D/DE++,CDLr"9:y!!22=A,     y>9:x(:,,hmM?+Vhl 	 	n -- 9%F):Fh98 	 JJuu00AA#FFG55eEF&/&=&=#,,*.*H*HI`*a'~01H0II[\JJ3f<=JJ~&JJ<=JJZ[JJ./JJw  11++,<oNP (*%(%!222T2B


56

66~F
Tegh 

22=A22>BD E 

6CD

89>>##JJ67

8$

8$

3 

_`JJ23 

:&

22F4F4FH I

3

01JJsOJJx JJy4>>##667
 $!N **~/G/G/X/X!/!9!9 !**~/G/G/X/X/XT)#1N4S4S#S #% JJ## $"4"46 7 4EJJ55u 6 6 4 EzzZ'&*#KK. / ,,UG5,I  'EJJ+ekk9:JJ.<= '  EJJ*U[[89   !88JJ6711"6#A#A"B"VEWEWDXX^_
&
"&JJ ++Z9 : 	

	JJv!!#~U!CJJ~&

	i*
s   $$aac                    [         R                  " SUR                  5      nUR                  S5      nUR	                  U5      U:w  a  g UR                  S5      nUb  UR                  (       d  g UR                  S5        UR                  (       a  UR                  SUR                  -  5        UR                  U[        R                  SSSS9  UR                  S5        UR                  S	5        UR                  S
UR                  -  5        UR                  S5        UR                  S5        UR                  5         UR                  (       a  UR                  S5        g g )Ntp_finalize__del__rF   z#if %sPyObject *oFneeds_funcstatePyObject *etype, *eval, *etb;!PyErr_Fetch(&etype, &eval, &etb);%s(o); PyErr_Restore(etype, eval, etb);r   r   )r   get_slot_by_namer@   ry  rz  r  r  r   
used_ifdefr  r   r   r  r  )rQ   r/   r  r  slot_func_cnamery   s         r(   r7   ModuleNode.generate_del_function  s   ,,]E<L<LM//>U#6!!),= 0 0

2JJx'"4"445E:#9#9=-ino

23

67

8e.../

56

3JJx  r*   c           
         [         R                  " SS5      nUR                  S5      nUR                  R                  nUR                  U5      U:w  a  g UR                  S5      nUR                  U[        R                  SS5        UR                  R                  nUR                  5       nUR                  5       n	UR                  (       d"  UR                  (       d  UR                  S5      OS n
XR                  ;  a  S n
UR                  (       d"  UR                  (       d  UR                  S5      OS nXR                  ;  a  S nUR!                  5       u  nu  pnUR                   Vs/ s H'  nUR"                  R%                  U5      (       d  M%  UPM)     nnU(       d  U(       d  U(       d  U
(       d  U(       a  U R'                  X5        U(       a  UR)                  5       (       a  UR+                  S5        U(       a  SnOSnUR+                  S	U-  5        UR+                  S
U-  5        UR+                  S5        UR+                  S5        UR+                  S5        UR+                  S5        U(       a  UR+                  S5        U	(       aD  UR,                  R/                  [0        R2                  " SS5      5        UR+                  SU-  5        U
(       a  UR+                  S5        U R5                  X5        U(       a  UR+                  S5        U H  nUR"                  R7                  X/SS9  M     X-    H-  nUR9                  SUR:                  -  UR"                  SSSS9  M/     U(       Ga  UR<                  nUR>                  (       d  URA                  U5      n[         RB                  " X5      nUb^  U(       aA  URD                  (       a0  URD                  R                  5       (       a  UR+                  S5        UR+                  SU-  5        GOUR>                  (       a^  U(       aA  URD                  (       a0  URD                  R                  5       (       a  UR+                  S5        UR+                  SU-  5        GOzU(       a  UR+                  SU-  5        UR+                  S5        UR+                  SU< S U< S!35        UR+                  S5        UR+                  S"U-  5        UR,                  R/                  [0        R2                  " S#S5      5        GOURF                  RI                  S$S%5      nU(       Ga  UR                  [J        RL                  5      nUR                  [J        RN                  5      nU(       a  S&nOS'nUR                  nUR+                  S(5        UR+                  S)URA                  U5      UURQ                  S&SS*9U4-  5        UR+                  URA                  U5      < S+URA                  U5      < S,URS                  S-5      < S.35        UR+                  S/5        UR+                  S5        UR+                  S05        UR+                  S15        UR+                  S25        UR+                  S35        UR+                  S05        UR+                  S45        UR+                  S55        UR+                  S5        UR+                  S5        U(       a  UR+                  S5        U	(       a  UR+                  S65        UR+                  S5        URU                  5         g s  snf )7N
tp_dealloc__dealloc__r  __weakref__r2  z#if CYTHON_USE_TP_FINALIZEz!!__Pyx_PyObject_GC_IsFinalized(o)z@(!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))zif (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && %s) {z>if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == %s) {z1if (PyObject_CallFinalizerFromDealloc(o)) return;r   r   zPyObject_GC_UnTrack(o);
PyTrashcanExtensionTypes.cz__Pyx_TRASHCAN_BEGIN(o, %s)z.if (p->__weakref__) PyObject_ClearWeakRefs(o);z+if (p->__dict__) PyDict_Clear(p->__dict__);rs  rt  rv  FT)r  clear_before_decrefhave_gilrn  r  z4__Pyx_PyType_GetSlot(%s, tp_dealloc, destructor)(o);z+if (PyType_IS_GC(%s)) PyObject_GC_Track(o);r:  if (likely(z)) __Pyx_PyType_GetSlot(z", tp_dealloc, destructor)(o); elsez"__Pyx_call_next_tp_dealloc(o, %s);CallNextTpDeallocrc  r   rF   z^ & (int)(!__Pyx_PyType_HasFeature(Py_TYPE(o), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))re  zIif (((int)(%s < %d) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(%s))%s)) {ri  [z++] = rr  r   ro  rp  #if CYTHON_USE_TYPE_SLOTS(*Py_TYPE(o)->tp_free)(o);r   Dfreefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);if (tp_free) tp_free(o);__Pyx_TRASHCAN_END)+r   rx  ry  rK  r  rz  r  r   r   r|  r9  needs_trashcanrE  rF  r  r   r{  rv   needs_explicit_destructionr]  may_have_finalizer   r   r   r
   r   generate_usr_dealloc_callgenerate_explicit_destructionput_xdecref_clearr  r0  r  r  r  r/   r@   r  r   r  r  r  r  r  )rQ   r/   r  r  r  r  r  r|  r9  r  weakref_slot	dict_slotr"  r  r  ry   explicitly_destructable_attrsfinalised_check
base_cnamer  r  r  r  r  rv   s                            r(   r8  $ModuleNode.generate_dealloc_function  s   ++L-H)),7	%%//	U#y0//=E:#9#9<W))77>>#--/@E@\@\`e`}`}u((7  EI000L:?:V:VZ_ZwZwE%%j1  C	---I.3.J.J.L++H*$00)
0ezz44U; 0 	& )

 48I\]f##E0 7 7 9 9JJ34"E W  JJSUdef
 JJWZiijJJJKJJsOJJsOJJx  JJ01--''6HIKJJ4FG
 JJGH 	&&u3JJDE2EJJ44TTY4Z 3 2E""7U[[#8%**E7;d # L 3 "00J,,!;;JG
"99%IJ%	IOO4L4L4N4N JJ67

8j01**	IOO4L4L4N4N JJ67

QT^^_ JJLzYZ 

9:


, -

8$

?/QR  11++,?ASTV ",,00Q?M % 5 5f6J6J K!&!6!6v7L7L!M (*% y & ((

56

_66~F%--b-=)	c+ +, 

22=A22>BNN3') * 

8$

8$

3JJ23JJ34JJwJJsOJJ]^JJ12JJsOJJx 

3JJ+,

	Y)
s   .$]]c                    UR                  S5      nU(       a  UR                  (       d  g UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  SUR                  -  5        UR                  S5        UR                  S5        UR                  S	5        g )
Nr  rp  r  r  z&__Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);r  z&__Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);r  r   )r  r  r   r  )rQ   r/   r  ry   s       r(   r  $ModuleNode.generate_usr_dealloc_call`  s    !!-0E,,

3

23

67 	

;<

8e.../

;<

56

3r*   c                    [         R                  " S5      nUR                  S5      nUR                  R                  nUR                  U5      U:w  a  g UR                  U[        R                  SS5        UR                  SS9u  nu  pn
U(       + nSnUR                  S5        U(       d  U	(       a  U R                  X5        U(       Ga  [         R                  " X5      nU(       a  UR                  SU-  5        GOXUR                  (       aW  UR                  nUR                  S5        UR                  SU S	35        UR                  S
5        UR                  S5        SnOUR                  UR                  5      nUR                  S5        UR                  S5        UR                  SU-  5        UR                  SU S	35        UR                  S5        UR                  S5        UR                  S5        UR                  SU-  5        UR                  S5        UR                   R#                  [$        R&                  " SS5      5        SnU(       d  U(       a  UR                  S5        UR                  S[)        U(       + 5       S35        UR                  S5        UR                  S5        UR                   R#                  [$        R&                  " SS5      5        U Hq  nSUR*                  -  n[        R,                  " [.        UR0                  U5      nUR                  SU-  5        UR                  SU-  5        UR                  S5        Ms     U	 HK  nUR*                  S-   nUR                  SU-  5        UR                  SU-  5        UR                  S5        MM     UR                  S 5        UR                  S5        UR3                  5         g )!Ntp_traversez!PyObject *o, visitproc v, void *aFinclude_gc_simplezint e;z!e = %s(o, v, a); if (e) return e;rp  z-traverseproc traverse = __Pyx_PyType_GetSlot(z, tp_traverse, traverseproc);z>if (!traverse); else { e = traverse(o,v,a); if (e) return e; }r   Tr:  ze = 0;if (likely(%s)) {z(if (traverse) { e = traverse(o, v, a); }ro  r   z1{ e = __Pyx_call_next_tp_traverse(o, v, a, %s); }zif (e) return e;CallNextTpTraverser  z e = __Pyx_call_type_traverse(o, z, v, a);CallTypeTraverserv  	if (%s) {z!e = (*v)(%s, a); if (e) return e;z.objzif (p->%s) {z$e = (*v)(p->%s, a); if (e) return e;r+  )r   GCDependentSlotry  rK  r  rz  r  r   c_returncode_typer{  r   r]  r  r  r0  r  r   r   r
   r   rJ  r  typecastr	   rv   r  )rQ   r/   r  r  r  r  r  r  r  r  r  needs_type_traversemaybe_needs_type_traversestatic_callr  ry   var_codevar_as_pyobjectr  s                      r(   r:  %ModuleNode.generate_traverse_functionp  sB   ++M:))-8	%%//	U#y0E:#?#?Pst ((5(A 	@?x-> #,m$)!

8z##E0#::5JK

>LM**&44


3

CJ<Olmo

[\

3,0) ";;I<S<ST


9:

8$

.;<

CJ<Olmo

EF

8$

8$

NQZZ[

-.  11++,@BTUW,0)";JJsOJJ9#B[>[:\9]]efgJJ)*JJsO--''(:<NOQ E,H(11.%**hWOJJ{X-.JJ:_LMJJsO   EKK&(EJJ~-.JJ=EFJJsO	   	

;

3r*   c                 D   [         R                  " SUR                  5      nUR                  S5      nUR                  R
                  nUR                  U5      U:w  a  g UR                  SS9u  nu  pn
U(       d  U	(       d  U(       a  SnOSnUR                  U[        R                  SU S35        U(       a&  [        R                  (       a  UR                  S5        U(       d  U	(       a  U R                  X5        U(       Gae  [         R                  " X5      nU(       a  UR                  SU-  5        GO2UR                   (       aU  UR"                  nUR                  S	5        UR                  S
U S35        UR                  S5        UR                  S5        OUR%                  UR"                  5      nUR                  S5        UR                  SU-  5        UR                  S
U S35        UR                  S5        UR                  S5        UR                  S5        UR                  SU-  5        UR&                  R)                  [*        R,                  " SS5      5        [        R                  (       a  U Hx  nSUR.                  -  nUR                  SU-  5        UR0                  (       a  UR3                  U[4        SS9  OUR3                  XR6                  SS9  UR                  S5        Mz     O'U H!  nUR                  SUR.                  -  5        M#     U	 H!  nUR                  SUR.                  -  5        M#     UR.                  S:X  a  UR                  S5        UR                  S5        UR                  S5        UR9                  5         g )Ntp_clearFr  rF   rb  r  zPyObject* tmp;r  rp  z%inquiry clear = __Pyx_PyType_GetSlot(z, tp_clear, inquiry);zif (clear) clear(o);r   r:  r  ro  r   z${ __Pyx_call_next_tp_clear(o, %s); }CallNextTpClearr  rv  ztmp = ((PyObject*)%s);r  zPy_XDECREF(tmp);zPy_CLEAR(p->%s);zPy_CLEAR(p->%s.obj);rw  z(__PYX_XCLEAR_MEMVIEW(&p->from_slice, 1);r+  )r   r  r@   ry  rK  r  rz  r{  r  r   r  r   clear_to_noner   r]  r  r  r0  r  r   r   r
   r   r  r  put_init_to_py_noner	   rv   r  )rQ   r/   r  r  r  r  r  r  r  r  r  unusedr  r  ry   r   s                   r(   r<  "ModuleNode.generate_clear_function  s   ,,Z9I9IJ))*5	%%//	U#y0 ((5(A 	@?x-> zYF%FE:#?#?PVxWbMcd--JJ'(z##E0#::5JK

8k12**&44


3

B:,Ncde

12

3 ";;I<S<ST


9:

.;<

B:,Ncde

12

8$

8$

AIMN  11++,=?QRT   !,

3d:;,,,,T>,O,,T::U,K

-. " "

-;< "  EJJ-;<   !88JJAB

;

3r*   c                    UR                  U[        R                  SSSS9  UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S	5        UR                  S
5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR	                  5         g )Nsq_itemzPyObject *o, Py_ssize_t iFr  zPyObject *r;z5PyObject *x = PyLong_FromSsize_t(i); if(!x) return 0;z_#if CYTHON_USE_TYPE_SLOTS || (!CYTHON_USE_TYPE_SPECS && __PYX_LIMITED_VERSION_HEX < 0x030A0000)z2r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);r   zDr = ((binaryfunc)PyType_GetSlot(Py_TYPE(o), Py_mp_subscript))(o, x);r   zPy_DECREF(x);	return r;r   )r  r   r  r   r  )rQ   r/   r  s      r(   r>  (ModuleNode.generate_getitem_int_function  s     	E:#<#<iIdv{|

	

C	E 	

tu

@	B

7

YZ

8

	

	

	r*   c                 
   UR                   R                  nUR                  S5      nUR                  S5      nUR                  U[        R
                  SS5        UR                  S5        U(       a  UR                  SUR                  -  5        O|UR                  S5        U R                  USSS	S
U5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        U(       a  UR                  SUR                  -  5        O|UR                  S5        U R                  USSS	S
U5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  5         g )Nr&  r'  mp_ass_subscript%PyObject *o, PyObject *i, PyObject *vif (v) {return %s(o, i, v);z__Pyx_TypeName o_type_name;tp_as_mappingobjobjargproco, i, vz=o_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(o));z'PyErr_Format(PyExc_NotImplementedError,zL  "Subscript assignment not supported by " __Pyx_FMT_TYPENAME, o_type_name);z#__Pyx_DECREF_TypeName(o_type_name);r-  r   else {return %s(o, i);zJ  "Subscript deletion not supported by " __Pyx_FMT_TYPENAME, o_type_name);
rK  r  r  r  r   r  r   r  generate_guarded_basetype_callr  rQ   r/   r  r  	set_entry	del_entrys         r(   r?  *ModuleNode.generate_ass_subscript_function.  s    %%//	%%m4	%%m4	E:#?#?ASU|}

	JJ,y/C/CCDJJ-///?,>QZ\`bJJOQJJ9;JJ^`JJ57JJ

	

	JJ"((*+ JJ-///?,>QZ\`bJJOQJJ9;JJ\^JJ57JJ

	

	r*   c                    U(       a}  UR                  U5      nU(       a!  UR                  U SU SU SU SU S3
5        OUR                  U SU SU SU S35        UR                  S5        UR                  SU S35        g g )Nz  f = __Pyx_PyType_TryGetSubSlot(r   r  z f = __Pyx_PyType_TryGetSlot(zif (f)z	return f()typeptr_cname_in_module_stater   )rQ   r  substructurerU  functyper  r  base_tpnames           r(   r  )ModuleNode.generate_guarded_basetype_callf  s    <<YGK 

j @RP\~]_`d_eeghpgqqstv 

j =k]"TFRTU]T^^`acJJx JJ4&+, r*   c                    UR                  S5      (       a  g UR                  U[        R                  SS5        UR	                  S5        / nUR
                  nUbt  UR                  R                  S:X  dZ  UR                  UR                  5        UR                  R
                  R                  nUb  UR                  R                  S:X  d  MZ  X;   d   eS nU(       aC  UR                  R                  S:X  a)  UR                  (       a  UOUR
                  R                  nSUR                  ;   n0 n[        R                   H'  nU H  n	U	R                  U5      n
U
c  M  XU'     M%     M)     U(       a  [         VVs/ s H  u  pX;   d  M  UPM     nnnU(       dP  SU;  a'  SU;  a!  [!        UR
                  R"                  S	5        O [!        UR
                  R"                  S
5        SnO9SU;  a(  SU;  a"  [!        UR
                  R"                  S5        Sn[%        U5      n[        R                   GH  nUR'                  S5      R)                  5       nUR+                  U5      n
U
c  U(       a  US;   a  MF  UR	                  SU-  5        U
Gc_  U(       d   e[        WU4   u  nnnUR	                  S5        UR	                  SX~   R,                  -  5        UR	                  S5        UR	                  S5        UR	                  S5        UR	                  S5        UGbp  US:X  a@  UR	                  SU(       a  SOS-  5        UR	                  S5        UR	                  S5        OUUS:X  a@  UR	                  SU(       a  SOS-  5        UR	                  S5        UR	                  S5        O[/        SU< 35      eSU;   a  SnO	SnU(       + nUR	                  SUU   R,                  -  5        UR	                  S5        UR	                  S 5        UR	                  S5        UR	                  S!5        U(       a  UR	                  S"5        OUR	                  S#5        UR	                  S$5        UR	                  S%5        UR	                  S%5        O;U(       a  UR	                  S&5        OUR	                  S'5        UR	                  S$5        UR	                  S%5        UR	                  S(5        OUR	                  S)U
R,                  -  5        UR	                  S%5        GM     SU;   a  SU;  a  U(       d  UR	                  S*5        UR	                  S5        UR	                  SUS   R,                  -  5        UR	                  S5        UR	                  S+5        UR	                  S5        UR	                  S,5        UR	                  S-5        UR	                  S$5        UR	                  S%5        UR	                  S(5        UR	                  S%5        UR	                  S.5        U(       a?  UR                  (       a.  UR	                  S/UR                  < S0UR                  < S135        UR	                  S25        UR	                  S%5        UR	                  S%5        UR	                  S%5        UR1                  5         g s  snnf )3N__richcmp__tp_richcomparez"PyObject *o1, PyObject *o2, int opzswitch (op) {r  r3  __eq____ne__r4  z@total_ordering directive used, but no comparison methods definedFz=total_ordering directive used, but no equality method definedr"  )NEEQzcase Py_%s: {zPyObject *ret;zret = %s(o1, o2);z.if (likely(ret && ret != Py_NotImplemented)) {z+int order_res = __Pyx_PyObject_IsTrue(ret);zPy_DECREF(ret);z)if (unlikely(order_res < 0)) return NULL;rD   zif (%s order_res) {z!!!zret = __Pyx_NewRef(Py_False);rq  rE   rF   zret = __Pyx_NewRef(Py_True);zUnknown op z(int eq_res = __Pyx_PyObject_IsTrue(ret);z&if (unlikely(eq_res < 0)) return NULL;z"ret = eq_res ? Py_False : Py_True;z"ret = eq_res ? Py_True : Py_False;zPy_INCREF(ret);r   z%ret = order_res ? Py_False : Py_True;z%ret = order_res ? Py_True : Py_False;zreturn ret;zreturn %s(o1, o2);zcase Py_NE: {z#int b = __Pyx_PyObject_IsTrue(ret);z!if (unlikely(b < 0)) return NULL;zret = (b) ? Py_False : Py_True;z
default: {r  z->tp_richcompare)) return z->tp_richcompare(o1, o2, op);z'return __Pyx_NewRef(Py_NotImplemented);)r  r  r   r  r   rK  ry   r   rY   r/   r  r0  r@   r   rI  TOTAL_ORDERINGr   rb   maxstripupperr  r  AssertionErrorr  )rQ   r/   r  class_scopesclsextern_parentr3  
comp_entry
cmp_methodclass_scopery   	from_nameto_name
comp_namesordering_sourcecmp_typeinvert_compcomp_opinvert_equalseq_funcs                       r(   rJ  $ModuleNode.generate_richcmp_functionu  s   ]++E:#<#<>NPtu

?#ocii&:&:h&F		*))''11C ocii&:&:h&F $$$399''83#&#4#4C%:K:K:U:UM)U-=-==
#;;J+#//
;$-2z*	  , < >Lhn(:	PYPg)nJh:-(:2ME--11km E--11\^!&:-(*2LE--113rs%*N #&j/#;;J!'',224HNN:.E}nL8P JJ12}%%~6D_V`E`6a3Wm 

+,

.1L1W1WWX

KL

HI

,-

FG ,$

#8KDUX#YZ

#BC

:. D

#8;CTV#WX

#AB

:.,-JKK:-"* #+,9(9JJ2Z5H5S5SSTJJOPJJIJJJ01JJGH$

#GH

#GHJJ01JJsOJJsO #

#JK

#JKJJ01

3

=)

/%2B2BBCJJsOA <D z!hj&@JJ'JJ'( JJ*Z-A-L-LLMJJGHJJ<=JJ()JJ:;JJ89JJ()JJsOJJ}%JJsO

< ]88JJ++]-H-HJ K

<=

3

3

3[ is   ?[[c                 
  ^^^^^ TR                  UR                  5      mTR                  S   (       a3  TR                  ST< SUR                  R                  T5      < 35        g UR                  R                  [        R                  [        R                  4;   a  SnS=mnOOUR                  R                  [        R                  [        R                  4;   a  SnSmSnO[        US	U-  5        g U4S
 jmUUUUU4S jnT" UR                  R                  5      (       a^  T" UR                  R                  5      (       d=  [        USUR                  R                  < SUR                  R                  < S35        TR                  5         UR!                  5       nU(       a  TR                  U5        TR#                  T5        [%        ['        T" UR                  R                  5      5      5      n	[%        ['        T" UR                  R                  5      5      5      n
TR(                  R*                  nTR(                  R,                  (       a  TR/                  U5      nTR                  [0        R2                  " SSTUR                  U	U
U" UR                  R                  SS9U" UR                  R                  SS9UUTUS.
S9S   5        TR5                  5         U(       a  TR                  S5        g g )Nc_api_binop_methodsr   r   
binaryfuncrF   ternaryfuncz, extra_argz, PyObject* extra_argz"Unexpected type slot signature: %sc                 r   > TR                  U 5      nU(       a  UR                  (       a  UR                  $ S $ r#   )lookupr  r  )method_namery   r/   s     r(   get_slot_method_cnameAModuleNode.generate_binop_function.<locals>.get_slot_method_cname	  s,    LL-E',1A1A5##KtKr*   c                    > T" U 5      nU(       a  U< SU(       a  SOS< T< S3$ T< STR                  TR                  R                  5      < ST< S3$ )Nr  zright, leftzleft, rightr  z&_maybe_call_slot(__Pyx_PyType_GetSlot(z', tp_base, PyTypeObject*), left, right )name_in_module_staterK  r0  )r#  r  r  r  	extra_arg	func_namer$  r/   s      r(   call_slot_method<ModuleNode.generate_binop_function.<locals>.call_slot_method	  sV    .{;J%,M-?  --e.?.?.M.MN r*   zExtension type implements z() but not z(). The behaviour has changed from previous Cython versions to match Python semantics. You can implement both special methods in a backwards compatible way.	BinopSlotr  F)r  T)
r)  	slot_nameoverloads_leftoverloads_right	call_left
call_right
type_cname	slot_typer(  extra_arg_decl)r  r   r   )ry  r-  r@   r   	left_slotrz  	signaturer   r  ibinaryfuncpowternaryfuncipowternaryfuncr   r#  
right_slotr   preprocessor_guard_codeenter_cfunc_scoperJ  boolrK  r0  r  r'  r   r  r  )rQ   r/   rU  r  rb   r3  r4  r*  preprocessor_guardr.  r/  parent_type_cnamer(  r)  r$  s    ` `        @@@r(   rP  "ModuleNode.generate_binop_function	  sj   ))$..9	12JJ)T^^5M5Me5TUV>>##	(<(<i>S>S'TT$I)++I^^%%)*B*BID]D])^^%I%I4N#;dBC	L	 	 !!;!;<<EZ[_[j[j[v[vEwEwC **++	  	

!99;JJ)*u%T"78R8R"STUd#89T9T#UVW!--;;.. $ 9 9:K L

--/!*!%&4'6!1$..2L2LV[!\"24??3N3NX\"]"3!*!*&4 	  	JJx  r*   c                   ^^ SUU4S jjmT" S5      nT" S5      nUR                  T[        R                  SSSS9  Ub  UR                  SUR                  -  5        OUR                  S	5        UbQ  UR                  S
5        UR                  S5        UR                  SUR                  -  5        UR                  S5        UR                  S5        UR                  S5        UR                  5         g )Nc                    > Uc  TR                   nUR                  R                  U 5      nUc5  UR                  (       a  Ub  U$ UR                  b  T" XR                  5      $ U$ r#   )rK  r/   r  is_externalr  )nr   extern_returnrlookup_here_or_baser/   s       r(   rG  BModuleNode.generate_getattro_function.<locals>.lookup_here_or_baseU	  s\    z&&$$Q'Ay>>m&?((<<+.q,,??Hr*   r+  r,  tp_getattrozPyObject *o, PyObject *nFr  zPyObject *v = %s(o, n);z,PyObject *v = PyObject_GenericGetAttr(o, n);z9if (!v && PyErr_ExceptionMatches(PyExc_AttributeError)) {zPyErr_Clear();zv = %s(o, n);r   z	return v;)NN)r  r   r  r   r  r  )rQ   r/   r  getattr_entrygetattribute_entryrG  s    `   @r(   rA  %ModuleNode.generate_getattro_functionN	  s    
	 
	 ,M:01CDE:#<#<mMgy~)JJ)&1134 JJ>@$JJKMJJ "JJ!,,./ JJ

	

	r*   c                    UR                   R                  nUR                  S5      nUR                  S5      nUR                  U[        R
                  SS5        UR                  S5        U(       a  UR                  SUR                  -  5        O'U R                  US SSSU5        UR                  S	5        UR                  S
5        UR                  S5        U(       a  UR                  SUR                  -  5        O'U R                  US SSSU5        UR                  S5        UR                  S
5        UR                  S
5        UR                  5         g )Nr-  r.  tp_setattroz%PyObject *o, PyObject *n, PyObject *vr  zreturn %s(o, n, v);setattrofunczo, n, vz(return PyObject_GenericSetAttr(o, n, v);r   r  zreturn %s(o, n);z(return PyObject_GenericSetAttr(o, n, 0);r  r  s         r(   rB  %ModuleNode.generate_setattro_function|	  sA    %%//	%%m4	%%m4	E:#?#?Pwx

	JJ%((*+ //4	4QJJ:<

	

	JJ"((*+ //4	4QJJ:<

	

	r*   c                 n   UR                  S5      nUR                  U[        R                  SSSS9  UR	                  S5        UR	                  S5        UR	                  S5        UR	                  S	UR
                  -  5        UR	                  S
5        UR	                  S5        UR                  5         g )Nr/  tp_descr_getz%PyObject *o, PyObject *i, PyObject *cFr  zPyObject *r = 0;zif (!i) i = Py_None;zif (!c) c = Py_None;zr = %s(o, i, c);r  r   )r  r  r   r  r   r  r  )rQ   r/   r  user_get_entrys       r(   rC  &ModuleNode.generate_descr_get_function	  s    
 **95E:#<#<nNu  HM  	N

	 

"	$

"	$ 	

))+	,
 	

	

	r*   c                    UR                   R                  nUR                  S5      nUR                  S5      nUR                  U[        R
                  SS5        UR                  S5        U(       a  UR                  SUR                  -  5        O8U R                  US SSSU5        UR                  S	5        UR                  S
5        UR                  S5        UR                  S5        U(       a  UR                  SUR                  -  5        O8U R                  US SSSU5        UR                  S5        UR                  S
5        UR                  S5        UR                  S5        UR                  5         g )Nr0  r1  tp_descr_setr  r  r  descrsetfuncr  6PyErr_SetString(PyExc_NotImplementedError, "__set__");r-  r   r  r  z9PyErr_SetString(PyExc_NotImplementedError, "__delete__");r  )rQ   r/   r  r  user_set_entryuser_del_entrys         r(   rD  &ModuleNode.generate_descr_set_function	  sa    %%//	**95**<8E:#?#?Qxy

	JJ%"--/0 //4DRJJHJJJ

	

	JJ""--/0 //4DRJJKMJJ

	

	r*   c                     UR                    Hb  nUR                  nUR                  S/5      (       a  U R                  X25        UR                  SS/5      (       d  MQ  U R	                  X25        Md     g )Nr/  r0  r  )property_entriesr/   rG  generate_property_get_functiongenerate_property_set_function)rQ   cclass_scoper  ry   property_scopes        r(   rQ  &ModuleNode.generate_property_accessors	  s`    !22E"[[N))9+6633E@))9i*@AA33E@ 3r*   c                 l   UR                   nUR                  R                  [        R                  UR
                  5      Ul        UR                  S5      nUR                  S5        UR                  SUR                  -  5        UR                  SUR                  -  5        UR                  S5        g )Nr/  rF   9static PyObject *%s(PyObject *o, CYTHON_UNUSED void *x) {return %s(o);r   )
r/   parent_scoper2  r   prop_get_prefixr   getter_cnamer  r   r  )rQ   property_entryr  ra  	get_entrys        r(   r^  )ModuleNode.generate_property_get_function	  s    '--&4&A&A&H&H""N$7$7'9#"..y9	

2

G++-	. 	

$$&	' 	

	r*   c                    UR                   nUR                  R                  [        R                  UR
                  5      Ul        UR                  S5      nUR                  S5      nUR                  S5        UR                  SUR                  -  5        UR                  S5        U(       a  UR                  SUR                  -  5        O"UR                  S5        UR                  S5        UR                  S	5        UR                  S
5        U(       a  UR                  SUR                  -  5        O"UR                  S5        UR                  S5        UR                  S	5        UR                  S	5        g )Nr0  r  rF   z@static int %s(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {r  zreturn %s(o, v);rX  r-  r   r  re  z6PyErr_SetString(PyExc_NotImplementedError, "__del__");)
r/   rf  r2  r   prop_set_prefixr   setter_cnamer  r   r  )rQ   ri  r  ra  r  r  s         r(   r_  )ModuleNode.generate_property_set_function
  sN   '--&4&A&A&H&H""N$7$7'9#"..y9	"..y9	

2

N++-	. 	

	JJ"((*+ JJHJJJ

	

	JJ((*+ JJHJJJ

	

	r*   c           	         UR                   nUR                  n[        R                  " SUR                  R
                  5      nUR                  XB5        [        R                  " SUR                  R
                  5      nUR                  U5      (       d3  UR                  S5        UR                  XB5        UR                  S5        UR                  (       a  UR                  nOSUR                  -  nUR                  (       d  UR                  S5      OS nU(       a  UR                  (       a  S n[        U5      n	U	(       Ga]  UR                  R!                  ["        R$                  " SS5      5        UR                  S	UR&                  -  5        UR                  S
5        U(       a$  UR                  SU< SUR(                  < S35        UR                  S5        UR                  S5        UR                  S5        U(       a  [+        UR,                  5      n
U
 S3nUR                  S5        UR                  S5        UR                  SU S35        UR                  S5        UR                  SU S35        UR                  S5        UR                  S5        UR                  SUR&                  -  5        [        R.                  " UR                  R
                  5       H  nUR1                  XB5        M     U	(       a  UR                  SUR&                  -  5        UR                  S5        UR                  S5        UR2                  R5                  5       nUR                  SUR&                  -  5        UR                  SU R6                  < SUR9                  SS5      < S35        UR                  SU-  5        UR                  S 5        UR                  S![        R                  " S"UR
                  5      R;                  U5      -  5        UR                  S#UR&                  -  5        UR                  S5        g )$N
tp_memberstp_as_bufferz$#if !CYTHON_COMPILING_IN_LIMITED_APIr   r  r  IncludeStructmemberHrZ  z#static PyMemberDef %s_members[] = {z#if !CYTHON_USE_TYPE_SLOTSz,{"__weaklistoffset__", T_PYSSIZET, offsetof(r   z), READONLY, 0},{0, 0, 0, 0, 0}ri  zL: __weakref__ is unsupported in the Limited API when running on Python <3.9.zM#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x03090000z+#if defined(__GNUC__) || defined(__clang__)z
#warning "r#  r   z#pragma message("z")z!static PyType_Slot %s_slots[] = {z#{Py_tp_members, (void*)%s_members},z{0, 0},zstatic PyType_Spec %s_spec = {r   rF   z",zsizeof(%s),z0,rg  tp_flagsz	%s_slots,)rv   r/   r   r  r   r@   generate_substructure_specis_emptyr   generate_substructurer  r  rE  r  r  r=  r   r
   r   r1  r  r   rb   rL  generate_spec
class_namer   ru   r  rz  )rQ   ry   r  ext_typer/   members_slotbuffer_slot	objstructweakref_entrygenerate_memberspositionweakref_warn_mesagerU  	classnames                 r(   rS   ModuleNode.generate_typeobj_spec)
  sY   :: 11,@P@P@[@[\//<00AQAQA\A\]##E**JJ=>--e:JJx    00I#h&>&>>I@E@\@\))-8bf]77 M.--''(>@STVJJ<x?U?UUVJJ34
 

')<)<> ?JJx JJ()JJt*=+<+<=j !. . $
 

jk

HI

Z(;'<A>?

45

./B.C2FG

8$

8$ 	

69O9OOP,,T-=-=-H-HIDu+ JJJ<x?U?UUV

9

4$$88:	

3h6L6LLM

!6!6	8I8I#r8RST

=9,-

4

5955j%BRBRS]]^cdde

;!7!778

4r*   c                 :   UR                   nUR                  n[        R                  " UR                  R
                  5      R                   H  nUR                  XS5        M     UR                  S5        UR                  S:X  a  SnOSnUR                  XtR                  -  5        UR                  S5        UR                  R                  5       nUR                  SU R                  < SU< S35        UR                  (       a  UR                  n	OS	UR                  -  n	UR                  S
U	-  5        UR                  S5        [        R                  " UR                  R
                  5       H  n
U
R!                  XS5        M     UR                  S5        g )NrF   r   zDL_EXPORT(PyTypeObject) %s = {zstatic PyTypeObject %s = {zPyVarObject_HEAD_INIT(0, 0)r#  z."z, /*tp_name*/r  zsizeof(%s), /*tp_basicsize*/z0, /*tp_itemsize*/ri  )rv   r/   r   rL  r   r@   substructuresrx  r   r   r1  rz  r   ru   r  r  generate)rQ   modnamery   r  rv   r/   suiter  r  r~  rU  s              r(   rT  &ModuleNode.generate_typeobj_definitionp
  sH   zz

--d.>.>.I.IJXXE''4 Y

2x'5F1F

6.../

)	+$$88:	

%%	 ,,I#d&:&::I

*Y6	8

 	",,T-=-=-H-HIDMM%& J

	r*   c                    UR                   (       a  UR                  (       d  g UR                  S   nUR                  S5        UR	                  5       nUR                  SUR
                  -  5        UR                   HA  nUR                  (       a  M  U(       a  UR                  (       a  M0  UR                  USUS9  MC     UR                  S5        UR                  S5        UR                  5       (       a  UR                  S5        g g )NbindingrF   zstatic PyMethodDef %s[] = {r  )wrapper_code_writerz{0, 0, 0, 0}ri  )
is_c_class_scopepyfunc_entriesr@   r   r  method_table_cnamefused_cfunctionis_overridableput_pymethoddefgetvalue)rQ   rA   r  r  r  ry   s         r(   ro   ModuleNode.generate_method_table
  s    (:(:..+

2"224

)&&(	) ''E((('e>R>R>R$$UCEX$Y ( 	

	

	 ''))%%b) *r*   c                 r   UR                  S5      nU(       a  UR                  (       d  g UR                  S5      nUR                  nUR	                  S5        UR	                  S5        UR	                  SU-  5        U R                  X5        UR	                  SU-  5        UR	                  SU-  5        UR	                  S5        UR	                  S	U-  5        UR	                  S
U-  5        UR	                  S5        UR	                  S5        UR	                  SU S35        UR	                  S5        g )Nr2  __dict__getterrF   zM#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000rd  zif (unlikely(!p->%s)){zp->%s = PyDict_New();r   zPy_XINCREF(p->%s);zreturn p->%s;r   r   z PyObject_GenericGetDictr   )r  is_variablery  r  r   r]  )rQ   r/   r  	dict_attrr)  	dict_names         r(   rH  (ModuleNode.generate_dict_getter_function
  s    %%j1		 5 5))*:;	OO	

2

bc

NQZZ[,

+i78

*Y67

3

')34

?Y./

3

7 	

Xi[(@AB

8r*   c                 F   UR                   (       Ga  UR                  S5        UR                  SUR                  -  5        UR                    H  nUR                  nU(       a5  UR                  (       a  UR                  5       nSUR                  5       -  nOSnUR                  SUR                  R                  5       < SUR                  =(       d    S< SUR                  =(       d    S< SU< S3	5        M     UR                  S5        UR                  S	5        g g )
NrF   z"static struct PyGetSetDef %s[] = {zPyDoc_STR(%s)rh  rp  r   z, 0},rt  ri  )
r]  r   getset_table_cnamer   
is_unicodeas_utf8_stringr   r   rh  rn  )rQ   rA   r  ry   r   doc_codes         r(   rR   ModuleNode.generate_getset_table
  s    JJrNJJ4&&'( --ii~~!002.1H1H1JJH"H



668**1c1**1c1 	"# . JJ!#JJ+  r*   c                    [        UR                  R                  5       5       Hc  u  p#UR                  (       d  M  UR                  (       d  M+  UR
                  R                  (       a  MH  UR
                  R                  U5        Me     g r#   )r   r   r   
is_cglobalr  rv   r  rN  r   s       r(   r   5ModuleNode.create_import_star_conversion_utility_code
  sX     "#++"3"3"56KDEJJJzz---JJ::3? 7r*   c           
      
   UR                  [        R                  " SS5      5        UR                  S[        R
                   S[        R                   S[        R                   S35        UR                  S5        [        UR                  R                  5       5       H,  u  p4UR                  (       d  M  UR                  SU-  5        M.     UR                  S	5        UR                  S
5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  5       nUR                  S5        Sn[        UR                  R                  5       5       GH~  u  p4UR                  (       d  M  UR                  (       d  M,  UR                   R"                  (       a  MI  US-  nUS-  S:X  a3  UR                  S5        UR                  S5        UR                  S5        UR                  SU-  5        UR                   R$                  (       Ga  UR                   R&                  (       d  UR                   R(                  (       aO  UR                   R+                  US5      nUR                  SU< SUR-                  UR.                  5      < S35        UR                  S5        UR1                  UR2                  UR                   SS 9  UR                  UR2                  < S![4        R6                  " UR                   [8        S5      < S35        OUR                   R;                  U5      (       aB  UR                  UR                   R=                  SUR2                  UR.                  U5      5        ONUR                  S"U< S#UR                   < S$35        UR                  UR-                  UR.                  5      5        UR                  S5        GM     UR                  S%5        UR                  S&[        R>                  -  5        UR                  S5        UR                  S'5        URA                  URB                  5      (       a?  URE                  URB                  5        URG                  [I        U RJ                  5      5        XRl!        UR                  S(5        UR                  S)5        UR                  S5        UR                  S*5        URM                  [        RN                  " S+S,5      5        URQ                  5         g )-NCStringEqualsrh  int r  r  z2,PyObject *o, PyObject* py_name, const char *name)z,static const char* internal_type_names[] = {z"%s",rh  ri  z-const char** type_name = internal_type_names;zwhile (*type_name) {z$if (__Pyx_StrEq(name, *type_name)) {zBPyErr_Format(PyExc_TypeError, "Cannot overwrite C type %s", name);r(  r   ztype_name++;zif (0);r   r   d   z#ifdef _MSC_VERz)if (0);  /* Workaround for MSVC C1061. */r   z#else if (__Pyx_StrEq(name, "%s")) {rr  zif (!()) r   zPy_INCREF(o);Fr  r*  z<PyErr_Format(PyExc_TypeError, "Cannot convert Python object  to z");r  z3if (PyObject_SetAttr(%s, py_name, o) < 0) goto bad;r+  r,  r-  rF   
ImportStarr  ))r   r
   r   start_initcfuncr   import_star_setmodulestatetype_cnamemodulestatevalue_cnamer   r   r   r   r   new_error_labelr  r  rv   is_constr  r  r  type_test_code
error_gotorb   
put_decrefr  r   r  r	   rN  from_py_call_coderQ  
label_usederror_label	put_labelput_add_tracebackr   ru   rq  rr  r  )rQ   rA   r  r   ry   old_error_label
msvc_count	type_tests           r(   rp  ModuleNode.generate_import_star
  s   [44_oVW6))*!++,Bv/L/L.M N@@	A
 	

AB!#++"3"3"56KD}}}

7T>* 7 	

3

4

BC

)*

9:

WX

;

3

>"

3..0

9
!#++"3"3"56KDEJJJuzz7J7J7Ja
#q(JJ01JJJKJJx(

@4GH::)))zz33uzz7Q7Q$)JJ$=$=%&	

% OOEII6$8 9 JJ/OOEKK5OIJJ"++EJJL N O ZZ;;C@@JJuzz;;U[[%))T ; < JJejj * +JJtuyy9:

39 7: 	

8

H6K^K^^_

3

;??4++,,NN4++,""=1F1F#GH*

6

< 

3

2;++L:JKLr*   c                    UR                  S5        UR                  SUR                  -  5        UR                  S[        R                  -  5        UR                  S[        R                  -  5        UR                  S[        R
                  -  5        UR                  S[        R                  -  5        UR                  S[        R                  -  5        [        R                  b"  UR                  S[        R                  -  5        [        R                   H>  u  p4UR                  SU-  5        UR                  SU-  5        UR                  S5        M@     g )Nztypedef struct {r  z	#ifdef %sr	  r   )r   module_dict_cnamer   builtins_cnamecython_runtime_cnamer  empty_bytesempty_unicoder   rR  rS  used_types_and_macros)rQ   rA   r  r2  	used_names        r(   rs  &ModuleNode.generate_module_state_start&  s    

%&

?S%:%::;

?V%:%::;

?V%@%@@A

?V%7%778

?V%7%778

?V%9%99:)JJ)?)??@%+%A%A!JJJ{Y./JJ*Z78JJx  &Br*   c           	         US   nUS   nUS   nUR                  S[        R                  -  5        UR                  S5        UR                  [        R
                  " SS5      5        UR                  S5        UR                  S	5        UR                  S
5        UR                  S[        R                  -  5        UR                  S5        UR                  S5        UR                  S[        R                  -  5        UR                  S5        UR                  S5        UR                  S[        R                  < S[        R                  < S35        UR                  S5        UR                  SUR                  < S[        R                  < S35        UR                  S5        UR                  S[        R                  < S[        R                  < S35        UR                  S	5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S[        R                  < S[        R                  < S[        R                  < S35        UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        g )Nmodule_state_endr[  r\  z} %s;rF   MultiPhaseInitModuleStaterZ  #if CYTHON_USE_MODULE_STATE#ifdef __cplusplusnamespace {zextern struct PyModuleDef %s;} /* anonymous namespace */r   zstatic struct PyModuleDef %s;r   r   z2 (__Pyx_PyModule_GetState(__Pyx_State_FindModule(&z)))z (__Pyx_State_FindModule(&rk  r  r   z	_static =z    {};z    {0};z	 * const  = &z_static;r+  r   )	r   r   r  r   r
   rr  pymoduledef_cnamer  rQ  )rQ   rA   r  r   rX  r[  r\  s          r(   r~  $ModuleNode.generate_module_state_end6  ss   "#56()=> +,C D7V%A%AAB2$$8:MN	
 	89/0=):V=U=UUV897#:V=U=UUV8$2**$$& 	' 	2$$& 	' 	7#((**
 	 	/0 	9%7#:&8$((****
 	
 	8$  -  %  *##K0##C(##H-r*   c                    UR                  S5        UR                  S[        R                  -  5        UR                  [        R                   S35        UR                  S5        UR                  SUR                  -  5        UR                  S[        R
                  -  5        UR                  S[        R                  -  5        UR                  S[        R                  -  5        UR                  S[        R                  -  5        UR                  S[        R                  -  5        UR                  S5        UR                  S[        R                  -  5        UR                  S5        UR                  S5        UR                  S[        R                  -  5        UR                  S5        UR                  S	5        UR                  S
5        UR                  S5        g )Nr  z4static CYTHON_SMALL_CODE int %s_clear(PyObject *m) {z2 *clear_module_state = __Pyx_PyModule_GetState(m);z"if (!clear_module_state) return 0;r
  #ifdef __Pyx_CyFunction_USEDr   #ifdef __Pyx_FusedFunction_USED"#if CYTHON_PEP489_MULTI_PHASE_INITz__Pyx_State_RemoveModule(NULL);r   r   rQ  r  r  r  r  r  r  r  cyfunction_type_cnamefusedfunction_type_cnamerv  s      r(   rt  &ModuleNode.generate_module_state_cleari  s   

01

IFL_L__`

f2233efg

78

6!!" 	#

6!!" 	#

6''( 	)

6 	 

6 	 

6  ! 	"

12

6(() 	*

8

45

6++, 	-

8

78 	

45

8r*   c                    UR                  S5        UR                  S[        R                  -  5        UR                  [        R                   S35        UR                  S5        UR                  SUR                   S35        UR                  S[        R
                   S35        UR                  S[        R                   S35        UR                  S[        R                   S35        UR                  S[        R                   S35        UR                  S[        R                   S35        UR                  S5        UR                  S[        R                   S35        UR                  S	5        UR                  S
5        UR                  S[        R                   S35        UR                  S	5        g )Nr  zSstatic CYTHON_SMALL_CODE int %s_traverse(PyObject *m, visitproc visit, void *arg) {z5 *traverse_module_state = __Pyx_PyModule_GetState(m);z%if (!traverse_module_state) return 0;z Py_VISIT(traverse_module_state->r  z)__Pyx_VISIT_CONST(traverse_module_state->r  r   r  r  rv  s      r(   ru  )ModuleNode.generate_module_state_traverse  sp   

01

hkqk~k~~

f2233hij

:;

5c6K6K5LBOP

5f6K6K5LBOP

5f6Q6Q5RRTUV

>v?Q?Q>RRTUV

>v?Q?Q>RRTUV

>v?S?S>TTVWX

12

5f6R6R5SSUVW

8

45

5f6U6U5VVXYZ

8r*   c                 *!   U R                  U R                  U R                  U5      nU R                  X#5        UR	                  U R                  5        UR                  S5        UR                  [        R                  " SS5      5        [        SUR                   35      nSU R                  SU5      -  nUR                  SU-  5        U R                  R                  (       aF  UR                  S5        UR                  S	U R                  SU5      -  5        UR                  S
5        U R                  UR                  5      nU(       a6  UR                  S5        UR                  SU-  5        UR                  S
5        UR                  U5        UR                  S5        UR                  S5        UR                  S[        R                  -  5        UR                  S5        [        R                  " SS5      nUR                  U5        UR                  S5        UR                  SU R!                  5       < S[        R"                  < S35        UR                  S
5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S
5        UR                  [        R$                   S[        R&                   S35        UR)                  5       n	UR*                  R,                  S   n
UR*                  R,                  S   nU
(       d  U(       aG  U(       a  UR/                  5         UR*                  R1                  [        R2                  " SS5      5        UR5                  5         UR                  S5        UR                  S[        R6                  -  5        UR                  S[        R6                  < S[        R"                  < S 35        UR                  S!UR                  R9                  5       S"S# -  5        UR                  S$5        UR                  S5        UR                  S%5        UR                  S[        R6                  < S&[        R6                  < S'35        UR                  S
5        UR                  S(5        U R;                  X#5        U
(       d  U(       a   U	R=                  5         UR?                  5         [        R                  " S)S5      nUR                  U5        URA                  U5        UR1                  [        R                  " S*S5      5        UR1                  [        R                  " S+S5      5        URC                  U R                  S,5        UR                  S-5        UR                  S.5        UR                  S
5        URE                  [        RF                  5      nUR                  U< S/URI                  XR                  5      < 35        URE                  [        RJ                  5      nUR                  U< S0URI                  XR                  5      < 35        URE                  [        RL                  5      nUR                  U< S1URI                  XR                  5      < 35        UR                  S25        URC                  U R                  S3[        R&                   S35        UR                  S45        URC                  U R                  S55        S6nURO                  S75        U H  nURO                  S8U S935        M     UR                  S5        URC                  U R                  S:UR6                   S35        UR                  S
5        U HW  nUR                  S;U-  5        URC                  U R                  S<U< S=UR6                  < S35        UR                  S
5        MY     UR                  S>5        UR,                  S?   (       a  URC                  U R                  S@5        UR                  SU RQ                  5       -  5        URC                  U R                  SAUR6                  < SBURS                  [        SC5      5      < SBURS                  [        SD5      5      < S35        UR                  S5        U RU                  X#5        [V        RX                  (       a?  UR                  SE5        URC                  U R                  SF[        R&                   S35        UR                  SG5        URC                  U R                  SH[        R&                   S35        URC                  U R                  SI[        R&                   S35        UR                  SJ5        U" SK5       nU R[                  UU5        S S S 5        U" SL5       nU R]                  UU5        S S S 5        U" SM5       nU R_                  UU5        S S S 5        U" SN5       nU Ra                  UU5        S S S 5        U" SO5       nU H  nU Rc                  UUU5        M     S S S 5        U" SP5       nU H  nU Re                  UUU5        M     S S S 5        U" SQ5       nU H'  nU Rg                  U5        U Ri                  UUU5        M)     S S S 5        UR                  SR5        URk                  S 5        U
(       d  U(       aI  URl                  Rn                  (       d   eURq                  XPR                  5        SSURl                  l9        URk                  S 5        U Rt                  Rw                  U5        URk                  S 5        U
(       d  U(       aX  STURl                  l9        URl                  Rn                  (       d   eURy                  SUU R                  SV9  UR{                  5         UR                  5         UR                  SW5        U R}                  X#5        UR                  5         [V        R~                  (       a]  UR*                  R1                  [        R2                  " SXS5      5        UR                  SYUR                  U R                  5      -  5        UR                  UR                  5        UR                  UR                  5        URl                  R                  5        H  u  nnUR                  UU5        M     U
(       d  U(       a+  UR                  5         UR                  U R                  5        UR                  SUR6                  -  5        UR                  SURE                  UR                  5       SZ35        UR                  [        S[UR                  -  5      5        UR*                  R1                  [        R                  5        UR                  S5        UR                  S\5        UR                  UR6                  [        STSSS]9  UR                  S%5        UR                  UR6                  [        STS^9  UR                  S_5        UR                  S`5        UR                  Sa5        UR                  Sb[        R                  -  5        UR                  Sc5        UR                  S5        UR                  S
5        UR                  Sd5        UR                  SeUR                  R9                  5       S"S# -  5        UR                  S5        UR                  UR                  5        UR                  5         UR                  S5        UR                  SfUR6                  -  5        UR                  S%5        UR                  SgUR6                  -  5        UR                  S
5        UR                  S5        U	R                  URl                  5        UR                  5         g ! , (       d  f       GNC= f! , (       d  f       GN2= f! , (       d  f       GN!= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f)hNrF   PyModInitFuncTyperZ  PyInit_z__Pyx_PyMODINIT_FUNC %s(void)r   z%s CYTHON_SMALL_CODE; /*proto*/zc#if !defined(CYTHON_NO_PYINIT_EXPORT) && (defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS))z;__Pyx_PyMODINIT_FUNC PyInit___init__(void) { return %s(); }r   zHvoid %s(void) {} /* workaround for https://bugs.python.org/issue39432 */r  rp  zreturn PyModuleDef_Init(&%s);r   ModuleCreationPEP489zstatic CYTHON_SMALL_CODE int z(PyObject *r  zint stringtab_initialized = 0;r  zint pystate_addmodule_run = 0;r  z = NULL;profile	linetraceProfilez	Profile.cr  zif (z == z) return 0;zrPyErr_SetString(PyExc_RuntimeError, "Module '%s' has already been imported. Re-initialisation is not supported.");r   r]  r-  r   z) return __Pyx_NewRef(r  z /*--- Module creation code ---*/ImportRefnannyAPIGetRuntimeVersionCheckBinaryVersionzs__Pyx_check_binary_version(__PYX_LIMITED_VERSION_HEX, __Pyx_get_runtime_version(), CYTHON_COMPILING_IN_LIMITED_API)z'#ifdef __Pxy_PyFrame_Initialize_Offsetsz#__Pxy_PyFrame_Initialize_Offsets();z = PyTuple_New(0); z% = PyBytes_FromStringAndSize("", 0); z' = PyUnicode_FromStringAndSize("", 0); z4/*--- Initialize various global constants etc. ---*/z__Pyx_InitConstants(zstringtab_initialized = 1;z__Pyx_InitGlobals())
CyFunctionFusedFunction	Coroutine	GeneratorAsyncGenz#if 0z || defined(__Pyx_z_USED)z __pyx_CommonTypesMetaclass_init(z#ifdef __Pyx_%s_USEDr  z_init(z)/*--- Library function declarations ---*/
np_pythranz_import_array()zPyObject_SetAttr(r   __name____main__z/*--- Builtin init code ---*/z__Pyx_InitCachedBuiltins(z/*--- Constants init code ---*/z__Pyx_InitCachedConstants(z__Pyx_CreateCodeObjects(z*/*--- Global type/function init code ---*/zGlobal init codezVariable export codezFunction export codezType init codezType import codezVariable import codezFunction import codez/*--- Execution code ---*/TFPy_None)rb   z/*--- Wrapped vars code ---*/RegisterModuleCleanupzif (__Pyx_RegisterCleanup()) %sz && stringtab_initialized) {zinit %sr:  r  r  r  zif (pystate_addmodule_run) {zPyObject *tp, *value, *tb;zPyErr_Fetch(&tp, &value, &tb);zPyState_RemoveModule(&%s);zPyErr_Restore(tp, value, tb);z} else if (!PyErr_Occurred()) {z.PyErr_SetString(PyExc_ImportError, "init %s");zreturn (%s != NULL) ? 0 : -1;z
return %s;)Tmod_init_subfunctionrb   r/   generate_pymoduledef_structr<  r   rq  r
   rr  r   rw   r   
is_packagewrong_punycode_module_namer   r  module_init_func_cnamepymodinit_module_argr  r  r  r   r@   use_fast_gil_utility_coder   r   put_declare_refcount_contextrQ  r   generate_module_creation_codeput_trace_declarationsput_trace_frame_initput_setup_refcount_contextput_error_if_neg name_in_main_c_code_module_stater  error_goto_if_nullr  r  r  ri  intern_identifiergenerate_module_import_setupr   cache_builtinsgenerate_global_init_codegenerate_c_variable_export_codegenerate_c_function_export_codegenerate_type_init_code$generate_type_import_code_for_module*generate_c_variable_import_code_for_moduler  *generate_c_function_import_code_for_moduler  	funcstate	gil_ownedput_trace_start	can_tracerN   generate_execution_codeput_trace_returnput_trace_exitgenerate_wrapped_entries_codegenerate_cleanup_coder  put_gotoreturn_labelr  r  all_managed_tempsput_xdecrefput_trace_exception_propagatingput_trace_unwindr  r  r  r   traceback_utility_coder  r	   r  put_finish_refcount_contextput_temp_declarationsr  )rQ   r'  rA   r  subfunctionmodinit_func_nameheader3r  mod_create_functempdecl_coder  r  refnanny_import_coder  r  r  shared_typesr{  
inner_coder   r  rv   s                         r(   rv  $ModuleNode.generate_module_init_func  s   //$**dK((3tzz*

2;++,?ATUV)GCOO3D*EF1D4L4LXWZ4[[

4w>?::  JJ|}JJT((379 :JJx  &*%D%DS__%U"%JJ|}JJad~~JJx 

7 	

78

3

2V5M5MMN

3%**+ACVW?+

2

'')'') 	* 	

8 	

3

34

01

34

8

f2232f6S6S5TT\]^,,.""--i8$$//<	i..0--k.E.EiQ\.]^))+

78 	

;!4!445

''
 	 	

 g??6682>? 	@ 	

< 

3

7


 	 	

8

56**35i002%%'*//0CEXY/0''(9:[--.ACVWX[--.BDWXYdhh )K 	
 	

<=

89

8;;F<N<NO

00hhGI 	J;;F<N<NO

00hhGI 	J==f>R>RS

422=((KM 	N 	

IJdhh*>v?\?\>]]^(_`

/0dhh(=>\$HHH)(6:; %

2dhh*J3K[K[J\\](^_

8$HJJ-89!!$((8SM]M],^_JJx  %
 	

>?>>,'!!$((,=>

;!?!?!AABdhh""=#<=""=#<=)? 	@ 	

3 	))#4!!JJ67!!+F,I,I+J!LN 	

45HH()F)F(GqI	K 	HH&v'D'D&EQG	I 	

?@+,
**3
; - /0J00jA 1 /0J00jA 1 )*j((j9 + +,
*99&#zR + - /0J*??ZX + 1 /0J*++F3??ZX + 1
 	

/0di>>++++  !2HH='+DNN$d		))$/di',DNN$>>++++!!)!:!



23**35

((--''(?ATUWJJ84??488;TTUd''(t''(>>;;=KE4UD) > i002!!$((+

;!1!112

4889N9NOPPmn	p 	}Y9K9K-KLM))%*F*FG 	

3

12c..eaef

7 	((.F 	

12

/0

34

/&2J2JJK

23

3

8

45

C%%99;AbAB 	C

3t(()((*

78

2S5E5EEF

7

<#"2"223

8

3++DNN;W -, 10 10 +* -, 10 10si   A@+A@)A@;1AAAAAA1..AB@
A@&@)
A@8@;
AA
A
AAA
AA.A1
AB B
ABc                 N   ^^^^ TR                  5       m " UUUU4S jS5      nU$ )aY  
Return a context manager that allows deviating the module init code generation
into a separate function and instead inserts a call to it.

Can be reused sequentially to create multiple functions.
The functions get inserted at the point where the context manager was created.
The call gets inserted where the context manager is used (on entry).
c                   :   > \ rS rSrS rU UU4S jrU U4S jrSrg);ModuleNode.mod_init_subfunction.<locals>.ModInitSubfunctioni  c                     SR                  UR                  5       R                  5       5      n[        R                  " SU5      (       d   eSU-  U l        Xl        S U l        S U l        g )Nr"  z^[a-z0-9_]+$z__Pyx_modinit_%s)	r  lowerr  r   match
cfunc_namedescriptionr  	call_code)rQ   	code_typer  s      r(   __init__DModuleNode.mod_init_subfunction.<locals>.ModInitSubfunction.__init__  sX    !2!8!8!:;xx6666"4u"<#, %)"!%r*   c           	        > TR                  5       U l        TnUR                  SU R                   S[        R
                   S[        R                   S3TSS9  UR                  S[        R                   S35        UR                  5       U l        UR                  [        U R                  5      5        UR                  S	U R                  -  5        U$ )
Nr  r  r  r  T)refnannyzCYTHON_UNUSED_VAR(r  z/*--- %s ---*/)r  r,  r  r*  r   r  r  r   r  r  r   r+  )rQ   r  function_code	orig_coder/   s     r(   	__enter__EModuleNode.mod_init_subfunction.<locals>.ModInitSubfunction.__enter__  s    !*!:!:!<$$$4??+1V-I-I,J"VMjMjLkklmD % * 

/0M0M/NbQR%)%9%9%;"//doo0NO

+d.>.>>?r*   c                 F  > TnUR                  5         UR                  S5        U R                  R                  UR                  5        S U l        UR                  UR                  5      nU(       ap  UR                  UR                  5        UR                  R                  5        H  u  pEUR                  XE5        M     UR                  5         UR                  S5        UR                  S5        UR                  5         U(       aV  U R                  R                  U R                  R                  U R                  < S[        R                  < S3T5      5        O:U R                  R                  SU R                   S[        R                   S35        S U l        g )Nr+  r-  r   r  r  z(void)r  )r  r   r  r  r	  r  r  r  r  r  r  r,  error_goto_if_negr*  r   r  )rQ   r  r  needs_error_handlingr  rv   r2  rb   s         r(   __exit__DModuleNode.mod_init_subfunction.<locals>.ModInitSubfunction.__exit__  s=   $002

;'""88H%)"'+t7G7G'H$'NN4#3#34'+~~'G'G'I((5 (J446JJ|,

3%%''NN((88 OOV-J-J:LMPRS NN((  163P3P2QQSTV!%r*   )r,  r*  r+  r  N)r  
__module____qualname____firstlineno__r.  r4  r9  __static_attributes__)r2  r3  rb   r/   s   r(   ModInitSubfunctionr&    s    && &r*   r?  )r  )rQ   rb   r/   r3  r?  r2  s    ``` @r(   r  ModuleNode.mod_init_subfunction  s&     "113/	& /	&b "!r*   c                 x   UR                   S   nUS:X  a  U R                  S   R                  nU(       Ga  UR                  S5        UR                  SUR                  < SUR                  [        [        U5      5      5      < SUR                  U R                  5      < S35        UR                  S	5        UR                  (       Ga=  UR                  S5        UR                  R                  [        S
5      nUR                  U< SUR                  [        [        [        R                  R                  U5      5      5      5      < SUR!                  X@R                  5      < 35        UR#                  U[        5        UR                  SUR                  < SU< SUR                  U R                  5      < S35        UR%                  U[        5        UR                  R'                  U5        UR                  S	5        OUR                  (       a  UR                  S5        UR(                  R+                  [,        R.                  " SS5      5        UR                  UR1                  SUR                  [        U R2                  5      5      -  U R                  5      5        UR                  S	5        U R2                  nUR5                  S5      (       a  [        US [7        S5      *  5      nUR9                  5       nUR                  S5        UR                  SUR!                  SU R                  5      -  5        UR                  SU-  5        UR                  UR1                  SU< SUR                  < S3U R                  5      5        UR                  S	5        UR                  S	5        g )Nset_initial_path
SOURCEFILEr   z&if (!CYTHON_PEP489_MULTI_PHASE_INIT) {if (PyObject_SetAttrString(z, "__file__", ) < 0) r   r   Tz = Py_BuildValue("[O]", ); z, "__path__", SetPackagePathFromImportLibr  z%__Pyx_SetPackagePathFromImportLib(%s)z	.__init__rp  z0PyObject *modules = PyImport_GetModuleDict(); %sr  z)if (!PyDict_GetItemString(modules, %s)) {zPyDict_SetItemString(modules, r   r  )r@   rb   r  r   rQ  get_py_string_constr   r   r  r  r	  allocate_tempr	   r   r%   r  r  
put_gotrefr  release_tempr   r   r
   rr  r7  ru   endswithr  r   )rQ   rA   r  module_pathtempfq_module_namefq_module_name_cstrings          r(   r   'ModuleNode.generate_module_import_setup  s   nn%78,&((1+..KJJ?@JJ  ((!/+">?A)	+ ,
 JJsO~~~

CD~~33NDI

,,%oGGOOK8': ;< ++D((;= > n5

(($0IKL %%dN;++D1

3^^ JJ?@--k.>.>-/?/A BJJt--7,,%d&;&;<>? 	 
 JJsO .."";//*>:LC<L;L+MNN!/!C!C!E

3

E**9dhh?@ 	A

>AWWX

4))"C$4$4+67;xxA 	B

3

3r*   c                 `   [         R                  (       d  g UR                  S[        R                  -  5        UR                  U5        UR                  [        R                   S[        R                   S35        UR                  S5        UR                  S[        R                   S35        UR                  S5        UR                  [        R                   S35        [         R                  S	:  Ga  UR                  S
5        [        UR                  5      nUR                  5         U H  nUR                  S:w  d  M  UR                  R                  (       ae  UR                  (       aT  UR                   (       a  UR"                  nOUR%                  UR"                  5      nUR'                  XTR                  SSS9  UR                  R)                  U5      (       d  M  UR                  R+                  X$5        M     UR                  S[        R                   S35        [         R                  S:  al  UR                  S5        [-        UR.                  [0        R2                  " S5      S9 H/  nUR5                  UR6                  5      nUR'                  XvSSS9  M1     [         R8                  (       aN  UR                  S5        UR:                   H-  nUR'                  UR"                  [<        R>                  SSS9  M/     UR                  S5        URA                  UR5                  [        RB                  5       [<        R>                  SSS9  URD                   GH  nUR                  nURF                  (       d  URH                  (       a  M4  URJ                  RL                  RO                  SS5      (       d  Ma  URJ                  n	UR5                  U	RQ                  [        RR                  5      5      n
UR5                  U	RQ                  [        RT                  5      5      nUR                  S5        UR                  SU-  5        UR                  SU
< SU< S35        UR                  S5        UR                  S5        UR                  S 5        UR                  S!5        UR                  S"5        UR                  S5        UR                  S#5        UR                  S5        GM     [         RV                  b$  URA                  [        RX                  [>        SSS$9  [        RZ                  [        R\                  4 H*  nUR5                  U5      nURA                  U[>        SSS$9  M,     URA                  UR5                  UR^                  5      [>        SSS$9  g )%Nz.static void %s(CYTHON_UNUSED PyObject *self) {r  r   r  zif (!__Pyx_State_FindModule(&z
)) return;r   z! = __Pyx_PyModule_GetState(self);r   z/*--- Global cleanup code ---*/r  TF)r  r  z__Pyx_CleanupGlobals(r     z$/*--- Type import cleanup code ---*/r0  r  z /*--- Builtin cleanup code ---*/z/*--- Intern cleanup code ---*/rc  r   re  zwhile (%s > 0) {zPyObject* o = (PyObject*)rl  rm  r  r  r   r  r  r   r  )0r   r  r   r   cleanup_cnamer<  r  r  r  r  r   r  r   rv   r  r  r  r  r'  r  r  r  r   types_importedr  r  r  r0  r  cached_builtinsr   r	   r  r  rt   rC  r  r/   r@   r  ry  r  r  rR  rS  r  r  r  )rQ   rA   r  rev_entriesry   entry_cnamer{  r0  cclass_typer/   r  r  r  s                r(   rw  'ModuleNode.generate_module_cleanup_func%  s   ,,

C''( 	)s#

f2232f6S6S5TTUVW 	

01

263K3K2LJWX

8

f3344UVW((A-JJ89s/K!$##x/zz--%** ++*/++K*.*C*CEKK*PK..'04"' / ) zz<<SAA

@@M % 	

*6+H+H*ILM((A-JJ=>"3#5#58;N;N;_` $ E EhF\F\ ]&&!(, ' ! a !!JJ9:,,&&KK!:!:(, ' ! -
 	

45!F!FvGYGY!Z [(7726$) 	 	+ ((E**K&&+*?*?  ++//
A>>#)) $ E E))&*>*>?!A!%!F!F))&*?*?@"B

56

->?

!>3 4

67

78

7#

ab

56

8$

3

8$- )H )!!&"8"8.(-4 " I1163H3HIE99%@E!!%uZ^!_ J 	11#2G2GH%T 	 	Cr*   c           	      &   U R                  5       n[        R                  S:X  a  SnO[        R                  n[        R                  " SS5      nUR
                  R                  UR                  UR                  U[        R                  US95        g )NmainwmainMainFunctionzEmbed.c)rw   r  r`  wmain_method)	ri  r   rx  r
   r   r   r   
specializerw   )rQ   rA   r  r  r]  r`  s         r(   ry  ModuleNode.generate_main_method  sw    779==F"EMME!--niH))""OO-#MM"	 # $	%r*   c                     UR                  5       (       a  SU-   nO3SUR                  S5      R                  SS5      R                  S5      -   nU< U< 3$ )Nr"  U_punycode   -   _r1  isasciiencoder  decode)rQ   r  r   s      r(   r
  ModuleNode.punycode_module_name  sL    <<>>:D$++j199$ELLWUUD&&r*   c                     UR                  5       (       a  g SSU-   R                  S5      R                  SS5      R                  S5      -   $ )NPyInitUr"  rd  re  rf  r1  rg  )rQ   r   s     r(   r  %ModuleNode.wrong_punycode_module_name  sC    <<>>CH,,Z8@@tLSST[\\\r*   c                 8    U R                  XR                  5      $ r#   )r
  rw   )rQ   r  rA   s      r(   r   ModuleNode.mod_init_func_cname  s    ((AAr*   c                 Z    U R                   nU R                  [        R                  U5      $ r#   )r/   r   r   pymodule_exec_func_cnamer   s     r(   r  !ModuleNode.module_init_func_cname  s$    jj''(G(GMMr*   c                 H
   UR                   (       a  SUR                  UR                   5      -  nOSn[        R                  (       a  S[        R
                  -  nOSnUR                  S5        UR                  S5        U R                  5       nUR                  S[        R                  -  5        UR                  SU-  5        UR                  S	[        R                  -  5        UR                  S
[        R                  -  5        UR                  SU-  5        UR                  S5        UR                  S   (       a  SOSnUR                  SU-  5        UR                  S5        UR                  S5        SSSS.R                  UR                  S   5      nUR                  SU-  5        UR                  S5        UR                  S5        UR                  S5        UR                  R                  5       (       d"  UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S[        R                  -  5        UR                  S 5        UR                  S![        R                  -  5        UR                  S5        UR                  S"5        UR                  S#5        UR                  S$UR                  R                  5       -  5        UR                  S%U-  5        UR                  S&5        UR                  S'[        R                    S(35        UR                  S 5        UR                  S)5        UR                  S5        UR                  S*UR"                  -  5        UR                  S5        UR                  S+[        R                  -  5        UR                  S 5        UR                  S,5        UR                  S5        UR                  S&5        UR                  S-[        R$                  -  5        UR                  S.[        R$                  -  5        UR                  S/U-  5        UR                  S 5        UR                  S05        UR                  S15        UR                  S/U-  5        UR                  S5        UR                  S5        UR                  S5        UR                  S25        UR                  S5        g )3N%srh  z(freefunc)%sNULLrF   r  z@static PyObject* %s(PyObject *spec, PyModuleDef *def); /*proto*/z*static int %s(PyObject* module); /*proto*/z static PyModuleDef_Slot %s[] = {z{Py_mod_create, (void*)%s},z{Py_mod_exec, (void*)%s},-#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADINGfreethreading_compatiblePy_MOD_GIL_NOT_USEDPy_MOD_GIL_USEDz{Py_mod_gil, %s},r   z;#if PY_VERSION_HEX >= 0x030C0000 && CYTHON_USE_MODULE_STATE*Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED&Py_MOD_MULTIPLE_INTERPRETERS_SUPPORTED$Py_MOD_PER_INTERPRETER_GIL_SUPPORTED)no
shared_gilown_gilsubinterpreters_compatiblez#{Py_mod_multiple_interpreters, %s},z	{0, NULL}ri  z*#else /* CYTHON_PEP489_MULTI_PHASE_INIT */zT#error "Unicode module names are only supported with multi-phase init as per PEP489"r  r  zstruct PyModuleDef %s =r   zstatic struct PyModuleDef %s =rp  z  PyModuleDef_HEAD_INIT,z  %s,z  %s, /* m_doc */r  z	  sizeof(z), /* m_size */z9  (CYTHON_PEP489_MULTI_PHASE_INIT) ? 0 : -1, /* m_size */z  %s /* m_methods */,z  %s, /* m_slots */z  NULL, /* m_reload */z  %s_traverse, /* m_traverse */z  %s_clear, /* m_clear */z  %s /* m_free */z  NULL, /* m_traverse */z  NULL, /* m_clear */r  )r   get_string_constr   r  r   rT  r   r  pymodule_create_func_cnamepymoduledef_slots_cnamer@   r  rw   rh  r  r   r  r  rQ  )rQ   rA   r  r   cleanup_funcexec_func_cname
gil_optionsubinterp_options           r(   r  &ModuleNode.generate_pymoduledef_struct  s   77..sww77CC(()F,@,@@L!L

2

78557

U445 	6

?/QR

58V8VVW

063T3TTU

.@A

BC(BC ,, 	 	

&34

8

PQ>B=
 #cnn9:
;	 	
 	

8;KKL

8

;

4&&((JJCDJJ ) *

8

2

'(

=!

,v/G/GGH

7

3f6N6NNO

8

3

-.

7S__@@BBC

&,-

01

Yv;;<OLM

7

NO

8

*S-C-CCD

78

(6+I+IIJ

7

+,

8

01

4v7J7JJK

.1D1DDE

&56

7

-.

*+

&56

8

4

'(

01

8r*   c           
      $	   UR                   (       a  SUR                  UR                   5      -  nOSnUR                  R                  [        SS9nUR                  S5        UR                  U< S[        R                  < S35        UR                  U[        SS9  UR                  S	5        UR                  U< S
[        R                  < SUR                  X@R                  5      < 35        UR                  S5        UR                  S5        UR                  S5        UR                  SU< S[        R                  < S35        UR                  U< SU< SUR                  R                  5       < S35        UR                  UR                  SU R                  5      5        UR                  S5        UR                  S5        UR                  S	5        UR                  UR                   SU S35        UR                  S5        UR                  R!                  U5        UR                  S5        UR"                  S   (       a  SOSnUR                  SUR                   SU S35        UR                  S5        UR                  [        R$                   S[        R&                   S35        UR                  SU-  5        UR)                  UR*                  5      nUR                  U< SUR                  < SUR                  X`R                  5      < 35        UR                  U[        SS9  UR)                  [        R,                  5      nUR                  U< S UR                  XpR                  5      < 35        UR)                  [        R.                  5      nUR                  U< S!UR                  XR                  5      < 35        UR                  S"UR                  < S#U< S$UR1                  U R                  5      < 35        [2        R4                  ba  UR                  [        R6                  < S%[2        R4                  < S&UR                  [        R6                  U R                  5      < 35        g g )'Nru  rh  F
manage_refr  r*  r   r  r   z = PyModule_Create(&rF  r   r  rp  z.int add_module_result = __Pyx_State_AddModule(z, &r  z! = 0; /* transfer ownership from r  z pseudovariable */add_module_resultzpystate_addmodule_run = 1;r   rw  rx  ry  rz  zPyUnstable_Module_SetGIL(r   zCYTHON_UNUSED_VAR(%s);z = PyModule_GetDict(z; = __Pyx_PyImport_AddModuleRef(__Pyx_BUILTIN_MODULE_NAME); z2 = __Pyx_PyImport_AddModuleRef("cython_runtime"); rD  z, "__builtins__", rE  z  = __Pyx_PyImport_AddModuleRef("z"); )r   r  r	  rI  r	   r   r   r  
put_increfr  r  rb   rw   r   r7  rQ  rK  r@   r  r  r  r  r  r  r  r   rR  rS  )	rQ   rA   r  r   module_tempr  
dict_cnamer  runtime_cnames	            r(   r  (ModuleNode.generate_module_creation_code  s    77..sww77CC nn22>e2T

78

'') 	* 	^5A

7

((''XX>@	A
 	

8

01

3

113 	4

coo&I&I&K
 	 	

4))*=txxHI

/0

3

7

c&&'s;-q9:

8##K0

BC(BC ,, 	 	

.s/?/?.@:,bQR

8

f334C8V8V7WWXYZ

+k9:::3;P;PQ


C,,''
HH=?	@ 	
N%@>>v?T?TU

''AC	D ==f>Y>YZ

''xx@B	C 	

  )+	,
 )JJ**&&++F,B,BDHHMOP *r*   c                     UR                    H~  nUR                  S:w  d  M  UR                  (       a  UR                  R	                  X25        UR                  R                  U5      (       d  Mc  UR                  R                  X#5        M     g Nr  )r   r   r  rv   global_init_coder~  r  )rQ   rA   r  ry   s       r(   r  $ModuleNode.generate_global_init_codeU  s`     __E8+::JJ//<::99#>>JJ==dJ %r*   c                    [        UR                  R                  5       5       GHF  u  p4UR                  (       d  M  UR                  (       a  M,  UR
                  UL d  M=  UR                  R                  U5      (       d#  [        UR                  SUR                  -  5        UR                  S5        UR                  SUR                  R                  < SUR                  < S35        UR                  UR                  SUR                  5      5        UR                  SUR                  < SU< S	UR                  UR                  5      < S
35        UR                  S5        GMI     g )Nz$Cannot convert '%s' to Python objectrp  zPyObject* wrapped = r  r  wrappedrD  r%  z", wrapped) < 0) r   r   )r   r   r   r   r   r/   rv   rM  r   rb   r   to_py_functionr  r  rQ  r  )rQ   rA   r  r   ry   s        r(   r  (ModuleNode.generate_wrapped_entries_code`  s    !#++"3"3"56KD$$$!MMMs*zz;;C@@%))%Kejj%XY

3

JJ--KK! " 

4229eiiHI

((		245
 

3! 7r*   c                 F   / nUR                    H_  nUR                  (       d:  UR                  (       d)  [        R                  (       d  M<  UR
                  S:X  a  MN  UR                  U5        Ma     U(       a  UR                  [        R                  " SS5      5        U H|  nUR                  R                  5       nUR                  UR                  5      nUR                  SU< SUR                  < SU< SUR!                  U R"                  5      < 35        M~     g g )Nr  VoidPtrExportr  zif (__Pyx_ExportVoidPtr(z, (void *)&r%  ") < 0) )r   r   r   r   r  r   rY   r   r
   r   rv   r7  r  r   r   r  r  rb   )rQ   rA   r  r   ry   r6  r   s          r(   r  *ModuleNode.generate_c_variable_export_codes  s    __E		++0009I9IX9Uu%	 %
   !8!8JZ![\ !JJ==?	--ejj9

%++yOODHH-/ 0 ! r*   c                 @   / nUR                    H_  nUR                  (       d:  UR                  (       d)  [        R                  (       d  M<  UR
                  S:X  a  MN  UR                  U5        Ma     U(       a  UR                  [        R                  " SS5      5        U Hy  nUR                  R                  5       nUR                  SUR                  R                  5       < SUR                  < SU< SUR!                  U R"                  5      < 35        M{     g g )Nr  FunctionExportr  zif (__Pyx_ExportFunction(z, (void (*)(void))r%  r  )r   r   r   r   r  r   rY   r   r
   r   rv   r5  r   r   r   r  r  rb   )rQ   rA   r  r   ry   r6  s         r(   r  *ModuleNode.generate_c_function_export_code  s    &&E		++0009I9IX9Uu%	 '
   ''(8:JKM !!JJ779	

JJ224KKOODHH-	/ 0 ! r*   c           	          [        U5       nUR                   H=  nUR                  (       d  M  U R                  X%R                  UR
                  X45        M?     S S S 5        g ! , (       d  f       g = fr#   )r8  rt   r   generate_type_import_coderv   rb   )rQ   r   rA   r  r@  ry   s         r(   r  /ModuleNode.generate_type_import_code_for_module  sQ     #4(,<//'''223

EIItf 0 )((s   A#+A##
A1c                     UR                   SS  H:  nUR                  R                  (       d  M   UR                  R                  5         M<     g)z
If fused c(p)def functions are defined in an imported pxd, but not
used in this implementation file, we still have fused entries and
not specialized ones. This method replaces any fused entries with their
specialized ones.
N)r   rv   r~  "get_all_specialized_function_types)rQ   pxd_envry   s      r(   r  !ModuleNode.specialize_fused_types  s9     **1-Ezz"""

==? .r*   c                    / nUR                    H'  nUR                  (       d  M  UR                  U5        M)     U(       Ga  UR                  [        R
                  " SS5      5        UR                  R                  [        SS9nUR                  U< SUR                  < SU< SUR                  U R                  5      < 35        UR                  U[        5        U H  nX!L a  UR                  nO*UR                  [         R"                  UR$                  5      nUR&                  R)                  5       nUR                  S[         R*                  < S	U< S
UR$                  < SU< S
U< SUR                  U R                  5      < 35        M     UR-                  U[        5        UR                  R/                  U5        g g )Nr  r  Tr   = PyImport_ImportModule("	"); if (!) r&  r  r%  z", (void **)&r  )r   r   rY   r   r
   r   r	  rI  r	   r   r  r  rb   rJ  r  r2  r   r  r   rv   r7  r6  r  rK  )	rQ   r   rA   r  r   ry   rN  r  r6  s	            r(   r  5ModuleNode.generate_c_variable_import_code_for_module  sQ   ''E###u% (   ''9IJL>>//4/PDJJ))OODHH-	/0 OOD.1 =!KKE"MM&*>*>

KE!JJ==?	

((ejj%134 ! !!$7NN''-/ r*   c                 p   / nUR                    H:  nUR                  (       d  M  UR                  (       d  M)  UR                  U5        M<     U(       Gab  UR	                  [
        R                  " SS5      5        UR                  R                  [        SS9nUR                  U< SUR                  < SU< SUR                  U R                  5      < 35        UR                  U[        5        U H  nUR                  S[        R                   < S	U< S
UR"                  R%                  5       < SUR&                  < SUR(                  R+                  5       < SUR                  U R                  5      < 35        M     UR-                  U[        5        UR                  R/                  U5        g g )Nr   r  Tr  r  r  r  r#  r  r   r$  r%  r  )r   r   r  rY   r   r
   r   r	  rI  r	   r   r  r  rb   rJ  r   r6  r   r   r  rv   r5  r  rK  )rQ   r   rA   r  r   ry   rN  s          r(   r  5ModuleNode.generate_c_function_import_code_for_module  s=   ))E###


u% *   ''(8:JKM>>//4/PDJJ))OODHH-	/0 OOD.1 

((

668

335134 ! !!$7NN''-+ r*   c           	         [        U5       nUR                   H  nUR                  S:X  a:  UR                  (       d)  U R	                  XR
                  UR                  X#5        MM  U R                  XX#5        U R                  XB5        UR
                  R                  (       d  M  U R                  XB5        M     S S S 5        g ! , (       d  f       g = fr  )r8  rt   r   utility_code_definitionr  rv   rb   generate_base_type_import_code!generate_exttype_vtable_init_code
early_initgenerate_type_ready_code)rQ   rA   r  r@  ry   s        r(   r  "ModuleNode.generate_type_init_code  s     #4(,<,,##x/8U8U223

EIItf77D[::5Gzz,,,55eB - )((s   BC&C
Cc                    UR                   R                  nU(       ao  UR                  UR                  :w  aT  UR                  (       dB  UR
                  (       d0  UR                  (       d  U R                  XU R                  X45        g g g g g g r#   )	rv   r  rw   r  r  is_cython_builtin_typer  r  rb   )rQ   rA   ry   r  r@  r  s         r(   r  )ModuleNode.generate_base_type_import_code  sm    JJ((	)//33E3EE**i.N.N66**3488T\ 7 /O* FIr*   c                 f   X!R                   ;   a  g UR                  [        R                  ;  a0  UR                  R                  [        R                  " SS5      5        U R                  X$XSS9  UR                  (       a  UR                  R                  [        R                  " SS5      5        UR                  UR                  < SUR                  < SUR                  UR                  5      < SUR                  UR                  U5      < 35        UR                   R                  U5        g )Nr!  r  )	error_pos	GetVTablez = (struct z*)__Pyx_GetVtable(rF  )rU  r   r   ctypedef_builtins_mapr   r   r
   r   r9  r  r   r  r  r0  r  r  )rQ   rA   rv   rb   r  r@  s         r(   r  $ModuleNode.generate_type_import_code  s     %%%99D666--''6FGI&&t3C&S--''5EFHJJ""%%55d6H6HI''(:(:C@	B C
 	t$r*   c                 >   UR                   (       a  UR                  OSUR                   3=pxUR                  n	UR                  n
U	S;   nU(       d  SU	 S3n	OU
[        R
                  ;   aB  UR                  UR                  UR                  5       S[        R
                  U
    S35        g Sn	U
[        R                  ;   a  [        R                  U
   n
U[        R                  ;   a  [        R                  U   nU(       d  Uc   eUR                  U5      nUR                  X5      nUR                  nU(       d  UR                  U5      nUR                  U S[        R                   SU S	U	 S	UR                  R!                  5        S
3
5        S[        R                   3nUR                  S5        UR                  SU SU SU S35        UR                  S5        U(       a  UR                  S5        OUR                  SU SU SU S35        UR                  S5        UR                  SU SU SU S35        UR                  S5        UR"                  (       a  UR"                  S;   a  UR"                  nOMUR$                  (       a  UR&                  (       a  SnO([)        SUR"                   SU	 SUR                   35      eUR+                  SUR-                  5        S[        R                   S35        UR                  SU SU 35        g )Nr  )__builtin__builtinsr#  r*  r   __Pyx_BUILTIN_MODULE_NAMEz = __Pyx_ImportType_r  r   r  __PYX_GET_STRUCT_ALIGNMENT_z>#if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000zsizeof(z), z),z%#elif CYTHON_COMPILING_IN_LIMITED_APIz0, 0,r   r   )r   warnignorer   zinvalid value for check_size 'z' when compiling r   __Pyx_ImportType_CheckSize_r"  r  z if (!r  )r  r  rw   r   r   r  r   r'  r0  renamed_py2_builtins_mapbasicsize_builtins_mapr  r  r  r   r6  r   
check_sizerC  is_subclassedRuntimeErrorr  rK  )rQ   rv   r  r@  r)  r  r*  sizeof_objstructr~  rw   	type_name
is_builtinr   r0  alignment_funcr  s                   r(   r9  $ModuleNode.generate_type_import_call  s   ?C?P?Pt';';X_`d`t`t_uVvv&&II	 $??
k]!,K$444JJ,,T-?-?@ATE_E_`iEjDkklmo5KD999 99)D	D777#'#>#>y#I (((3J!11+J** AA-PM

o1&2B2B1C1hbR		(E(E(G'HK	

 7v7G7G6HI

ST

WYKs>*:!I;bIJ

:;
 JJwJJ3~.>a	{"MN

7

W-.c.1ACSBTTVWX

8 ??t2MMJ!!T%7%7 J00AARS^R__`aeajaj`kln n.z/?/?/A.B!FDTDTCUUWXY

VM?"ZL9:r*   c                 B    [         R                  R                  X5        g r#   )r   CClassDefNoder  )rQ   ry   r  s      r(   r  #ModuleNode.generate_type_ready_codeP  s    44UAr*   c                 z    U R                   R                  SS5      nU R                  [        R                  U5      $ r  )ru   r  r
  r   r  )rQ   ru   s     r(   ri  $ModuleNode.is_main_module_flag_cnameS  s5    0088dC(()>)>@PQQr*   c           
         UR                   nUR                  (       GaZ  UR                  UR                  < SUR                  < S35        UR                  (       ad  UR                  R                  (       aI  UR                  UR                  < S[
        R                  < SUR                  R                  < S35        UR                  R                   Vs/ s H  nUR                  (       d  M  UPM     nnU(       aw  U Hp  nUR                  =(       d    UR                   nUR                  5       nUR                  UR                  < SUR                  < SU< UR                  < S35        Mr     g g g s  snf )Nr  r   r   z = *r*  )rv   rX  r   r  r  r   r  r/   r   r  vtable_typesignature_cast_stringr  )rQ   ry   r  rv   c_method_entries
meth_entryr  casts           r(   r  ,ModuleNode.generate_exttype_vtable_init_codeW  s%    zzJJ&&%%'( ~~$..">">

))--4467 $(::#;#; %#;%## #;   %  "2J","8"8"KJOOK&<<>DJJ --&,, &11	34 #3    %s   E:2E:)r   ra   r   rc   r.  )F)TT)NNF)xr  r;  r<  r=  child_attrsr@   ra   rc   propertyrR   rp   rz   r}   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r   r  r  r   r  r{  staticmethodr  rf  r   r   r   rz  rw  r   r  r  r  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rl  rn  r5  r]  r6  r7  r8  r  r:  r<  r>  r?  r  rJ  rP  rA  rB  rC  rD  rQ  r^  r_  rS  rT  ro  rH  rR  r   rp  rs  r~  rt  ru  rv  r  r   rw  ry  r
  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r9  r  ri  r  r>  ru  r*   r(   rL   rL   o   s    (KJI )JV#4	452](~D+aF![Dz$\L*$@**X	/I6S. H HSaj.
	2& CD!N+I
%>G"aF!AF$.
%FR
*`X3.1.fM :)x$0c J!2c J U nL \ 26 p-N `G!R, \% N 6) VA &PEN@*,02@E N! 0.f>$P d<"|9vgCR%']BNL\OPb	K &0"0*g
@.>.:C]%*<;zBR4r*   rL   c                   4    \ rS rSrSrS	S jrS rS rS rSr	g)
r8  iv  z
Helper to generate module import while importing external types.
This is used to avoid excessive re-imports of external modules when multiple types are looked up.
Nc                     Xl         0 U l        U(       a*  UR                  5        H  u  p4X@R                  SU-  '   M     / U l        g )Nz"%s")r  importedr   temps)rQ   r  r'  r   r  s        r(   r.  ModuleImportGenerator.__init__{  s=    	/557/4ftm,  8
r*   c           	      T   XR                   ;   a  U R                   U   $ U R                  nUR                  R                  [        SS9nU R
                  R                  U5        UR                  U< SU< SU< SU< 35        UR                  U[        5        X@R                   U'   U$ )NTr  z = PyImport_ImportModule(z); if (unlikely(!r  )	r  r  r	  rI  r	   r  rY   r   rJ  )rQ   module_name_stringr)  r  rN  s        r(   r  %ModuleImportGenerator.imported_module  s    .==!344yy~~++Nt+L

$

$dJ8 	9n-,0()r*   c                     U $ r#   ru  rP   s    r(   r4  ModuleImportGenerator.__enter__  s    r*   c                     U R                   nU R                   H4  nUR                  U[        5        UR                  R                  U5        M6     g r#   )r  r  r  r	   r	  rK  )rQ   excr  rN  s       r(   r9  ModuleImportGenerator.__exit__  s;    yyJJD!!$7NN''- r*   )r  r  r  r#   )
r  r;  r<  r=  __doc__r.  r  r4  r9  r>  ru  r*   r(   r8  r8  v  s    .r*   r8  c                    U R                   =(       a    U R                  nU R                   (       a  U R                  (       dA  U R                  (       Gd  U(       d(  U R                  (       d  U R
                  S:X  d  U(       a  U R
                  S:X  a  [        R                  nSnO<U R
                  S:X  a  [        R                  nS nOU R
                  S:X  a  SnS nOSnS nU R                  nU R                  (       a  U(       d  SnS n[        U5      nUR                  U R                  US9nUR                  U R                  5      n	UR                  U< SU	< U< S35        g g g )	Nr  rD  r   r  r  r  r   z; /*proto*/)r  r  inline_func_in_pxdr  r   r   r   r  rv   r   r  r  r  r  r   )
ry   rA   r  r
  from_cy_utilityr  r  rv   r  r  s
             r(   r  r    s+   jjBU%B%BOzze..u7H7H7H%..%2B2Bh2NRax'"11M%K)"11MK*$MK$MKzz
$MKD>D&&KK[ ' 211%2F2FG	

 	/ Sb 8Ir*   RefnannyrZ  zj
#if defined(__GNUC__)
#define __Pyx_PACKED __attribute__((__packed__))
#else
#define __Pyx_PACKED
#endif
rF   utility_code_proto_before_types)r  r  proto_block)8cythondeclareobjectcollectionsr   r=  r  r   rn  r   r,   r   r   rF   r   r   r   r   r   r   r   r   Errorsr   r   r   r   r	   r   Utilsr   r   r   r   r   r
   r   r   StringEncodingr   r    r!   r)   r$   r3   r7   rC   r  Node	BlockNoderL   r8  r  rr  rh  r  ru  r*   r(   <module>r     s#    ff6VFPV#0 $   	  	 
            A A 8 o o > > J #(
N
9, -.* .-* -.* .-*7>D<4U__ D<4Nx!. !.HJ $((5HI ( 0 ;= r*   