ó
    „ñ:i‚)  ã                   ó
  • S SK Jr  S SKJr  S SKJr  S SKrS SKrS SK	r	S SK
r
S SKJrJr  S SKJr  S SKJrJr  S SKJr  S S	KJr  \R.                  r\R0                  r\R2                  " 5       r " S
 S\5      r " S S\5      rg)é    )Ú	distutils)Ú	build_ext)Ú	ExtensionN)ÚtypingÚsigutils)Úglobal_compiler_lock)ÚModuleCompilerÚExportEntry)Ú	Toolchain)Úcextc                   ó¤  • \ rS rSrSrS/\-   r0 r0 rSS jr	\
S 5       r\
S 5       r\R                  S 5       r\
S	 5       r\R                  S
 5       r\
S 5       r\R                  S 5       r\
S 5       r\R                  S 5       r\
S 5       r\R                  S 5       rS r\
S 5       rS rS rS rS rS r\S 5       r\S 5       rS rSrg)ÚCCé   zS
An ahead-of-time compiler to create extension modules that don't
depend on Numba.
zmodulemixin.cNc                 óV  • SU;   a  [        S5      eXl        SU-   U l        0 U l        [        R
                  " S5      nUc  UR                  nUS   nOG[        US5      (       a  UR                  nUR                  nO[        R                  U   R                  nUR                  SS5      U l        X l        [        5       U l        SU l        ["        R$                  R'                  U R                  5      U l        U R                  R+                  U5      U l        S	U l        SU l        g )
NÚ.z;basename should be a simple module name, not qualified nameÚ
pycc_init_é   Ú__name__Ú__file__Ú FT)Ú
ValueErrorÚ	_basenameÚ_init_functionÚ_exported_functionsÚsysÚ	_getframeÚ	f_globalsÚhasattrÚ__dict__r   ÚmodulesÚgetÚ_source_pathÚ_source_moduler   Ú
_toolchainÚ_verboseÚosÚpathÚdirnameÚ_output_dirÚget_ext_filenameÚ_output_fileÚ_use_nrtÚ_target_cpu)ÚselfÚextension_nameÚsource_moduleÚfÚdcts        ÚP/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/numba/pycc/cc.pyÚ__init__ÚCC.__init__/   sÿ   € Ø�.Ó Üð .ó /ð /ð (ŒØ*¨^Ñ;ˆÔØ#%ˆÔ ä�MŠM˜!ÓˆØÑ Ø—+‘+ˆCØ 
™O‰MÜ�] J×/Ñ/Ø×(Ñ(ˆCØ)×2Ñ2‰Mä—+‘+˜mÑ,×5Ñ5ˆCàŸG™G J°Ó3ˆÔØ+ÔÜ#›+ˆŒØˆŒäŸ7™7Ÿ?™?¨4×+<Ñ+<Ó=ˆÔØ ŸO™O×<Ñ<¸^ÓLˆÔØˆŒØˆÕó    c                 ó   • U R                   $ )z-
The name of the extension module to create.
)r   ©r.   s    r3   ÚnameÚCC.nameL   s   € ð
 �~‰~Ðr6   c                 ó   • U R                   $ )z:
The specific output file (a DLL) that will be generated.
©r+   r8   s    r3   Úoutput_fileÚCC.output_fileS   s   € ð
 × Ñ Ð r6   c                 ó   • Xl         g ©Nr<   ©r.   Úvalues     r3   r=   r>   Z   s   € à!Õr6   c                 ó   • U R                   $ )z/
The directory the output file will be put in.
©r)   r8   s    r3   Ú
output_dirÚCC.output_dir^   ó   € ð
 ×ÑÐr6   c                 ó   • Xl         g r@   rD   rA   s     r3   rE   rF   e   ó   € à Õr6   c                 ó   • U R                   $ r@   ©r,   r8   s    r3   Úuse_nrtÚ
CC.use_nrti   s   € à�}‰}Ðr6   c                 ó   • Xl         g r@   rK   rA   s     r3   rL   rM   m   ó   € à�r6   c                 ó   • U R                   $ )z+
The target CPU model for code generation.
©r-   r8   s    r3   Ú
target_cpuÚCC.target_cpuq   rG   r6   c                 ó   • Xl         g r@   rQ   rA   s     r3   rR   rS   x   rI   r6   c                 ó   • U R                   $ )z9
Whether to display detailed information when compiling.
©r%   r8   s    r3   ÚverboseÚ
CC.verbose|   s   € ð
 �}‰}Ðr6   c                 ó   • Xl         g r@   rV   rA   s     r3   rW   rX   ƒ   rO   r6   c                 ó¶   ^ ^^• [         R                  " T5      u  p4[        R                  " U/UQ76 mTT R                  ;   a  [        ST-  5      eUU U4S jnU$ )z8
Mark a function for exporting in the extension module.
zduplicated export symbol %sc                 ó@   >• [        TTU 5      nUTR                  T'   U $ r@   )r
   r   )ÚfuncÚentryÚexported_namer.   Úsigs     €€€r3   Ú	decoratorÚCC.export.<locals>.decorator�   s&   ø€ Ü ¨s°DÓ9ˆEØ6;ˆD×$Ñ$ ]Ñ3ØˆKr6   )r   Únormalize_signaturer   Ú	signaturer   ÚKeyError)r.   r^   r_   Úfn_argsÚfn_rettyr`   s   ```   r3   ÚexportÚ	CC.export‡   sY   ú€ ô %×8Ò8¸Ó=ÑˆÜ×Ò˜xÐ2¨'Ò2ˆØ˜D×4Ñ4Ó4ÜÐ8¸MÑJÓKÐK÷	ð
 Ðr6   c                 óH   • [        U R                  R                  5       S S9$ )Nc                 ó   • U R                   $ r@   )Úsymbol)r]   s    r3   Ú<lambda>Ú$CC._export_entries.<locals>.<lambda>š   s   € ¨¯ªr6   )Úkey)Úsortedr   Úvaluesr8   s    r3   Ú_export_entriesÚCC._export_entries—   s#   € ä�d×.Ñ.×5Ñ5Ó7Ù4ñ6ð 	6r6   c                 ó  • [         R                  R                  [        5      nU R                  S S  nU R
                  (       a  UR                  S5        U Vs/ s H"  n[         R                  R                  X5      PM$     sn$ s  snf )Nz../core/runtime/nrt.cpp)r&   r'   r(   r   Ú_mixin_sourcesr,   ÚappendÚjoin)r.   ÚhereÚmixin_sourcesr1   s       r3   Ú_get_mixin_sourcesÚCC._get_mixin_sourcesœ   s_   € Ü�w‰w�‰œxÓ(ˆØ×+Ñ+©AÐ.ˆØ�=�=Ø× Ñ Ð!:Ô;Ù/<Ó=ª}¨!”—‘—‘˜TÖ%©}Ñ=Ð=ùÒ=s   Á)Bc                 óL   • SU R                   4S[        U R                  5      4/$ )NÚPYCC_MODULE_NAMEÚPYCC_USE_NRT)r   Úintr,   r8   s    r3   Ú_get_mixin_definesÚCC._get_mixin_defines£   s+   € ð   §¡Ð0ØœS §¡Ó/Ð0ðð 	r6   c                 ó¼   • U R                   R                  [        R                  / 5      nU(       d*  U R                   R                  [        R
                  / 5      nU$ r@   )Ú_extra_cflagsr!   r   Úplatformr&   r9   )r.   Úextra_cflagss     r3   Ú_get_extra_cflagsÚCC._get_extra_cflagsª   sC   € Ø×)Ñ)×-Ñ-¬c¯l©l¸BÓ?ˆÞØ×-Ñ-×1Ñ1´"·'±'¸2Ó>ˆLØÐr6   c                 ó2  • U R                   R                  [        R                  / 5      nU(       d*  U R                   R                  [        R
                  / 5      n[        R                  R                  S5      (       a  SU;  a  UR                  S5        U$ )NÚlinuxz-pthread)Ú_extra_ldflagsr!   r   rƒ   r&   r9   Ú
startswithru   )r.   Úextra_ldflagss     r3   Ú_get_extra_ldflagsÚCC._get_extra_ldflags°   sn   € Ø×+Ñ+×/Ñ/´·±¸bÓAˆÞØ ×/Ñ/×3Ñ3´B·G±G¸RÓ@ˆMä�<‰<×"Ñ" 7×+Ñ+Ø Ó.Ø×$Ñ$ ZÔ0ØÐr6   c                 óÒ   • U R                  5       nU R                  5       nU R                  R                  5       nU R	                  5       nU R                  R                  X!UUUS9nU$ )N)Úinclude_dirsÚmacrosr„   )ry   r   r$   Úget_python_include_dirsr…   Úcompile_objects)r.   Ú	build_dirÚsourcesr�   r�   r„   Úobjectss          r3   Ú_compile_mixinsÚCC._compile_mixinsº   sl   € Ø×)Ñ)Ó+ˆØ×(Ñ(Ó*ˆØ—‘×>Ñ>Ó@ˆà×-Ñ-Ó/ˆð —/‘/×1Ñ1°'Ø?KØ9?Ø?Kð 2ð Mˆð ˆr6   c                 ó¦  • [        U R                  U R                  U R                  U R                  S9nU R
                  Ul        [        R                  R                  U[        R                  R                  U R                  5      S   S-   5      n[        R                  SU R                  U5        UR                  USS9  U/UR                  4$ )N)Úcpu_namer   z.oz%generating LLVM code for '%s' into %sT)Úwrap)r	   rq   r   r,   r-   r   Úexternal_init_functionr&   r'   rv   Úsplitextr+   ÚlogÚinfoÚwrite_native_objectÚdll_exports)r.   r“   ÚcompilerÚtemp_objs       r3   Ú_compile_object_filesÚCC._compile_object_filesÈ   s­   € ä! $×"6Ñ"6¸¿¹Ø $§¡¸×8HÑ8HñJˆà*.×*=Ñ*=ˆÔ'Ü—7‘7—<‘< 	Ü "§¡× 0Ñ 0°×1BÑ1BÓ CÀAÑ FÈÑ MóOˆä�‰Ð8Ø—‘ ô	*à×$Ñ$ X°DÐ$Ñ9Øˆz˜8×/Ñ/Ð/Ð/r6   c           	      ó  • U R                   U R                  l         [        R                  " SU R                  -  S9nU R                  U5      u  p#X R                  U5      -  nU R                  5       n[        R                  R                  U R                  U R                  5      nU R                  R                  5       nU R                  R                  5       nU R                  R                  XRXgUUS9  [         R"                  " U5        g)z
Compile the extension module.
zpycc-build-%s-)Úprefix)Úexport_symbolsr‹   N)rW   r$   ÚtempfileÚmkdtempr   r£   r–   rŒ   r&   r'   rv   r)   r+   Úget_python_librariesÚget_python_library_dirsÚlink_sharedÚshutilÚrmtree)r.   r“   r•   r    r‹   Ú
output_dllÚ	librariesÚlibrary_dirss           r3   ÚcompileÚ
CC.compileÔ   sÝ   € ð
 #'§,¡,ˆ�‰ÔÜ×$Ò$Ð,<¸t¿~¹~Ñ,MÑNˆ	ð  $×9Ñ9¸)ÓDÑˆð 	×'Ñ'¨	Ó2Ñ2ˆð ×/Ñ/Ó1ˆÜ—W‘W—\‘\ $×"2Ñ"2°D×4EÑ4EÓFˆ
Ø—O‘O×8Ñ8Ó:ˆ	Ø—‘×>Ñ>Ó@ˆØ�‰×#Ñ# JØ$-Ø3>Ø2?ð 	$ñ 	Aô
 	�Š�iÕ r6   c                 ó  • UR                  S/ 5      U R                  5       -   nUR                  S/ 5      U R                  /-   nUR                  S/ 5      U R                  5       -   nUR                  S/ 5      U R	                  5       -   nUR                  S/ 5      U R
                  R                  5       -   nUR                  S/ 5      U R
                  R                  5       -   nUR                  S/ 5      U R
                  R                  5       -   nU R                  SU R                  R                  S	5      S
-    n	[        SX�R                  -   U R                  5       UUUUUUUS.	UD6n
U
R                  5         X
l        U
$ )zH
Create a distutils extension object that can be used in your
setup.py.
r�   ÚdependsÚextra_compile_argsÚextra_link_argsr�   r°   r±   Nr   r   )	r9   r”   rµ   Údefine_macrosr�   r°   r±   r¶   r·   © )Úpopr   r"   r…   rŒ   r$   r‘   rª   r«   r#   ÚrfindÚ_CCExtensionr   ry   Úmonkey_patch_distutilsÚ_cc)r.   Úkwargsr�   rµ   r¶   r·   r�   r°   r±   Úpython_package_pathÚexts              r3   Údistutils_extensionÚCC.distutils_extensionî   s}  € ð
 —‘˜H bÓ)¨D×,CÑ,CÓ,EÑEˆØ—*‘*˜Y¨Ó+¨t×/@Ñ/@Ð.AÑAˆØ$Ÿj™jÐ)=¸rÓBØ $× 6Ñ 6Ó 8ñ9Ðà!Ÿ:™:Ð&7¸Ó<Ø!×4Ñ4Ó6ñ7ˆàŸ
™
 >°2Ó6ØŸ/™/×AÑAÓCñDˆà—Z‘Z ¨RÓ0Ø—‘×;Ñ;Ó=ñ>ˆ	àŸ
™
 >°2Ó6ØŸ/™/×AÑAÓCñDˆà"×1Ñ1Ð2S°4×3FÑ3F×3LÑ3LÈSÓ3QÐRSÑ3SÐTÐäð 	%Ð 3·n±nÑ DØ#'×#:Ñ#:Ó#<Ø#*Ø)/Ø(4Ø%.Ø(4Ø.@Ø+:ñ	%ð $ñ	%ˆð 	×"Ñ"Ô$ØŒØˆ
r6   )r   r   r   r)   r+   r#   r"   r-   r$   r,   r%   r@   )r   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Úextension_libsrt   r‚   r‰   r4   Úpropertyr9   r=   ÚsetterrE   rL   rR   rW   rg   rq   ry   r   r…   rŒ   r–   r   r£   r²   rÂ   Ú__static_attributes__r¹   r6   r3   r   r      s~  † ñð &Ð'¨>Ñ9€Nð
€Mð

€Nô
ð: ñó ðð ñ!ó ð!ð ×Ññ"ó ð"ð ñ ó ð ð ×Ññ!ó ð!ð ñó ðð ‡^�^ñó ðð ñ ó ð ð ×Ññ!ó ð!ð ñó ðð ‡^�^ñó ðòð  ñ6ó ð6ò>òòòòð ñ	0ó ð	0ð ñ!ó ð!õ2r6   r   c                   ó6   • \ rS rSrSrSrSrS r\S 5       r	Sr
g)r¼   i  z^
A Numba-specific Extension subclass to LLVM-compile pure Python code
to an extension module.
NFc                 ó  • U R                   n[        R                  [        R                  R
                  " UR                  /U R                  R                  S5      S S Q76 5        UR                  UR                  5      u  p4X0l
        g )Nr   éÿÿÿÿ)r¾   Údir_utilÚmkpathr&   r'   rv   Ú
build_tempr9   Úsplitr£   Úextra_objects)r.   r   Úccr•   Ú_s        r3   Ú_prepare_object_filesÚ"_CCExtension._prepare_object_files  sc   € Ø�X‰XˆÜ�‰œŸ™Ÿš Y×%9Ñ%9ÐV¸D¿I¹I¿O¹OÈCÓ<PÐQTÐRTÐ<UÒVÔWØ×-Ñ-¨i×.BÑ.BÓC‰
ˆà$Õr6   c                 óŠ   ^• U R                   (       a  g[        R                  m " U4S jST5      nU[        l        SU l         g)ze
Monkey-patch distutils with our own build_ext class knowing
about pycc-compiled extensions modules.
Nc                   ó"   >• \ rS rSrU 4S jrSrg)Ú:_CCExtension.monkey_patch_distutils.<locals>._CC_build_exti+  c                 ót   >• [        U[        5      (       a  UR                  U 5        TR                  X5        g r@   )Ú
isinstancer¼   rÖ   Úbuild_extension)r.   rÁ   Ú_orig_build_exts     €r3   rÝ   ÚJ_CCExtension.monkey_patch_distutils.<locals>._CC_build_ext.build_extension-  s,   ø€ Ü˜c¤<×0Ñ0Ø×-Ñ-¨dÔ3à×/Ñ/°Õ:r6   r¹   N)r   rÄ   rÅ   rÆ   rÝ   rË   )rÞ   s   €r3   Ú_CC_build_extrÚ   +  s   ø† ÷;ð ;r6   rà   T)Ú_distutils_monkey_patchedr   )Úclsrà   rÞ   s     @r3   r½   Ú#_CCExtension.monkey_patch_distutils   s:   ø€ ð ×(×(Øä#×-Ñ-ˆ÷	;˜Oô 	;ð ,Œ	Ôà(,ˆÕ%r6   )rÓ   )r   rÄ   rÅ   rÆ   rÇ   r¾   rá   rÖ   Úclassmethodr½   rË   r¹   r6   r3   r¼   r¼     s-   † ñð
 €CØ %Ðò%ð ñ-ó ó-r6   r¼   )Ú
setuptoolsr   ÚdutilsÚsetuptools.commandr   Úsetuptools.extensionr   r&   r­   r   r¨   Ú
numba.corer   r   Únumba.core.compiler_lockr   Únumba.pycc.compilerr	   r
   Únumba.pycc.platformr   Únumbar   rÏ   r�   Úget_extension_libsrÈ   Úobjectr   r¼   r¹   r6   r3   Ú<module>rð      sf   ðÝ *Ý (Ý *ã 	Û Û 
Û ç 'Ý 9ß ;Ý )Ý ð �?‰?€Ø‡j�j€Ø×(Ò(Ó*€ôwˆô wôt%-�9õ %-r6   