a
    XŠÝg,  ã                   @   sd  d dl Z d dlZd dlZd dlmZmZ d dlmZmZ d dl	Z
d dlmZ d dlmZmZmZ d dlmZmZ d dlmZmZmZ d dlmZ d d	lmZmZ d d
lmZ z"e
j d¡dkrÌejddd W n e
jjyä   Y n0 d#dd„Z da!t!a"dZ#dd„ Z$e$ƒ Z%G dd„ deƒZ&G dd„ de&ƒZ'G dd„ de&ƒZ(G dd„ de&ƒZ)G dd „ d ƒZ*d!d"„ Z+dS )$é    N)ÚmkstempÚmkdtemp)ÚPopenÚPIPE)ÚDistutilsError)Úassert_Úassert_equalÚassert_raises)Ú	ccompilerÚcustomized_ccompiler)Úsystem_infoÚConfigParserÚmkl_info)ÚAliasedOptionError)Údefault_lib_dirsÚdefault_include_dirs)Ú_shell_utilsÚ
setuptoolsZ60zsetuptools is too newT)Zallow_module_levelé   c                 C   s   t ttdœ |  ¡ t¡}|ƒ S )zg
    notfound_action:
      0 - do nothing
      1 - display warning message
      2 - raise error
    )Útemp1Útemp2Úduplicate_options)Ú	Temp1InfoÚ	Temp2InfoÚDuplicateOptionInfoÚgetÚlowerÚ_system_info)ÚnameZnotfound_actionÚcl© r    út/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/numpy/distutils/tests/test_system_info.pyÚ	get_class   s    þýr"   a¼  
[ALL]
library_dirs = {dir1:s}{pathsep:s}{dir2:s}
libraries = {lib1:s},{lib2:s}
extra_compile_args = -I/fake/directory -I"/path with/spaces" -Os
runtime_library_dirs = {dir1:s}

[temp1]
library_dirs = {dir1:s}
libraries = {lib1:s}
runtime_library_dirs = {dir1:s}

[temp2]
library_dirs = {dir2:s}
libraries = {lib2:s}
extra_link_args = -Wl,-rpath={lib2_escaped:s}
rpath = {dir2:s}

[duplicate_options]
mylib_libs = {lib1:s}
libraries = {lib2:s}
z·
/* This file is generated from numpy/distutils/testing/test_system_info.py */
#include<stdio.h>
void foo(void) {
   printf("Hello foo");
}
void bar(void) {
   printf("Hello bar");
}
c                  C   s¢   t ƒ } z
| j}W nH tyX   z| js.|  ¡  W n ttfyJ   Y Y dS 0 | jg}Y n0 z.t|t	t	d}|j
 ¡  |j ¡  | ¡  W n tyœ   Y dS 0 dS )z? Return True if there appears to be an executable compiler
    F)ÚstdoutÚstderrT)r   ÚcompilerÚAttributeErrorZinitializedZ
initializer   Ú
ValueErrorÚccr   r   r#   Úcloser$   ÚwaitÚOSError)r%   ÚcmdÚpr    r    r!   Úhave_compilerK   s$    



r.   c                   @   s$   e Zd Zeedfdd„Zdd„ ZdS )r   r   c              	   C   s2   i | j _g | _dddddddddœ}t|ƒ| _d S )NÚ Ú0)Úlibrary_dirsÚinclude_dirsÚruntime_library_dirsÚrpathZsrc_dirsZsearch_static_firstÚextra_compile_argsÚextra_link_args)Ú	__class__ÚinfoZlocal_prefixesr   Úcp)Úselfr   r   Ú	verbosityÚdefaultsr    r    r!   Ú__init__g   s    ùz_system_info.__init__c                 C   s   ||dœ}|S )z-Override _check_libs to return with all dirs )Ú	librariesr1   r    )r:   Úlib_dirsZlibsZopt_libsÚextsr8   r    r    r!   Ú_check_libsz   s    
z_system_info._check_libsN)Ú__name__Ú
__module__Ú__qualname__r   r   r=   rA   r    r    r    r!   r   e   s
   ý
r   c                   @   s   e Zd ZdZdZdS )r   úFor testing purposesr   N©rB   rC   rD   Ú__doc__Úsectionr    r    r    r!   r   €   s   r   c                   @   s   e Zd ZdZdZdS )r   rE   r   NrF   r    r    r    r!   r   …   s   r   c                   @   s   e Zd ZdZdZdS )r   rE   r   NrF   r    r    r    r!   r   ‰   s   r   c                   @   sº   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Ze	j
je dddd„ ƒZe	j
je dde	j
jdee ¡ ƒv dddd„ ƒƒZdeƒ  ¡  dg ¡v Ze	j
jedddd„ ƒZdS )ÚTestSystemInfoReadingc                 C   sœ  t ƒ | _tj | jd¡| _tj | jd¡| _t ƒ | _tj | jd¡| _tj | jd¡| _	t
jf i | j| j| j| j	tjtj | j	g¡dœ¤Žatƒ \}| _t |¡ t| jdƒ}| t¡ W d  ƒ n1 sÎ0    Y  t| jdƒ}| t¡ W d  ƒ n1 s0    Y  t| jdƒ}| t¡ W d  ƒ n1 s>0    Y  dd	„ }|td
ƒ| jƒ| _|tdƒ| jƒ| _|tdƒ| jƒ| _|tdƒ| jƒ| _dS )z Create the libraries zfoo.cz	libfoo.sozbar.cz	libbar.so)Zdir1Zlib1Zdir2Zlib2ÚpathsepZlib2_escapedÚwNc                 S   s   |g| _ |  ¡  | S ©N)ÚfilesÚparse_config_files)ÚcÚsite_cfgr    r    r!   Úsite_and_parse¯   s    z:TestSystemInfoReading.setup_method.<locals>.site_and_parseÚdefaultr   r   r   )r   Ú_dir1ÚosÚpathÚjoinÚ_src1Ú_lib1Ú_dir2Ú_src2Ú_lib2Úsimple_siteÚformatrJ   r   ZNativeParserrP   r   Ú_sitecfgr)   ÚopenÚwriteÚfakelib_c_textr"   Ú	c_defaultÚc_temp1Úc_temp2Úc_dup_options)r:   ÚfdrQ   r    r    r!   Úsetup_method   s:    ú
	
(**ÿz"TestSystemInfoReading.setup_methodc                 C   sp   zt  | j¡ W n ty"   Y n0 zt  | j¡ W n tyF   Y n0 zt | j¡ W n tyj   Y n0 d S rL   )ÚshutilÚrmtreerS   Ú	ExceptionrY   rT   Úremover^   )r:   r    r    r!   Úteardown_method¹   s    z%TestSystemInfoReading.teardown_methodc                 C   sb   | j }t| ¡ | j| jgƒ t| ¡ | j| jgƒ t| ¡ | jgƒ | 	¡ }t|d g d¢ƒ d S )Nr5   )z-I/fake/directoryz-I/path with/spacesz-Os)
rb   r   Úget_lib_dirsrS   rY   Úget_librariesrX   r[   Úget_runtime_lib_dirsÚcalc_extra_info©r:   ÚtsiÚextrar    r    r!   Útest_allÈ   s    zTestSystemInfoReading.test_allc                 C   s@   | j }t| ¡ | jgƒ t| ¡ | jgƒ t| ¡ | jgƒ d S rL   )rc   r   rm   rS   rn   rX   ro   ©r:   rr   r    r    r!   Ú
test_temp1Ñ   s    z TestSystemInfoReading.test_temp1c                 C   sb   | j }t| ¡ | jgƒ t| ¡ | jgƒ t|jdd| jgƒ | ¡ }t|d d| j gƒ d S )Nr4   )Úkeyr6   z-Wl,-rpath=)rd   r   rm   rY   rn   r[   ro   rp   rq   r    r    r!   Ú
test_temp2Ø   s    z TestSystemInfoReading.test_temp2c                 C   sN   | j }tt|jddƒ t| d| jg¡| jgƒ t| d| jg¡| jgƒ d S )NZ
mylib_libsr>   )re   r	   r   Zget_option_singler   Zget_libsrX   r[   ru   r    r    r!   Útest_duplicate_optionsâ   s    z,TestSystemInfoReading.test_duplicate_optionszMissing compiler)Úreasonc              	   C   s†   t ƒ }t ¡ }zft | j¡ |jtj | j¡g| jd t	tj 
| j dd¡¡pdtj 
| j dd¡¡ƒ W t |¡ nt |¡ 0 d S )N)Ú
output_dirú.cú.oz.obj)r   rT   ÚgetcwdÚchdirrS   ÚcompilerU   ÚbasenamerW   r   ÚisfileÚreplace)r:   rO   ÚpreviousDirr    r    r!   Útest_compile1é   s    ÿz#TestSystemInfoReading.test_compile1ZmsvczFails with MSVC compiler c              	   C   s„   | j }tƒ }| ¡ d }t ¡ }zRt | j¡ |jtj 	| j
¡g| j|d ttj | j
 dd¡¡ƒ W t |¡ nt |¡ 0 d S )Nr6   )r{   Zextra_postargsr|   r}   )rd   r   rp   rT   r~   r   rY   r€   rU   r   rZ   r   r‚   rƒ   )r:   rr   rO   r6   r„   r    r    r!   Útest_compile2ø   s    ÿz#TestSystemInfoReading.test_compile2Zmkl_rtr>   zD`[DEFAULT]` override doesn't work if numpy is built with MKL supportc              	   C   sŽ  t  ¡ }t j | jd¡}t | j|¡ zTt  | j¡ t	ƒ }|j
d d  t j¡}| ¡ |ksbJ ‚t|ƒ"}| ¡  ddd¡}W d   ƒ n1 s’0    Y  t|dƒ}| |¡ W d   ƒ n1 sÆ0    Y  t	ƒ }| ¡ |ksæJ ‚t|ƒ"}| ¡  ddd¡}W d   ƒ n1 s0    Y  t|dƒ}| |¡ W d   ƒ n1 sN0    Y  t	ƒ }| ¡ |kspJ ‚W t  |¡ nt  |¡ 0 d S )	Nzsite.cfgÚALLr1   z[ALL]z[mkl]r   rK   z	[DEFAULT])rT   r~   rU   rV   rS   rh   Úcopyr^   r   r   r9   ÚsplitrJ   rm   r_   Úreadrƒ   r`   )r:   r„   Úcfgr8   r?   ZfidZmklZdfltr    r    r!   Útest_overrides  s*    
0(
2*z$TestSystemInfoReading.test_overridesN)rB   rC   rD   rg   rl   rt   rv   rx   ry   ÚpytestÚmarkZskipifÚHAVE_COMPILERr…   Úreprr
   Znew_compilerr†   r   Zcalc_libraries_infor   ZHAS_MKLZxfailrŒ   r    r    r    r!   rI   Ž   s    )	

ÿrI   c                 C   s~  ddl m} d}tdƒ}|  |d¡ |||ƒ\}}t|ƒdksBJ ‚|tdƒksRJ ‚t|ƒdksbJ ‚|  |d	¡ |||ƒ\}}t|ƒdksŒJ ‚t|ƒdksœJ ‚d
D ]T}|  ||› d¡ |||ƒ\}}t|ƒdksÔJ ‚|tdƒksäJ ‚t|ƒdks J ‚q t t¡& |  |d¡ |||ƒ W d   ƒ n1 s.0    Y  t t¡& |  |d¡ |||ƒ W d   ƒ n1 sp0    Y  d S )Nr   )Ú_parse_env_orderZ#NPY_TESTS_DISTUTILS_PARSE_ENV_ORDERZabcdefzb,i,e,fé   Zbefr   r/   z^!zb,i,eé   Zacdfzb,^e,iz!b,^e,i)Únumpy.distutils.system_infor‘   ÚlistZsetenvÚlenr   Zraisesr'   )Zmonkeypatchr‘   ÚenvZ
base_orderÚorderÚunknownÚprefixr    r    r!   Útest_distutils_parse_env_order/  s0    *r›   )r   ),rT   rh   r   Útempfiler   r   Ú
subprocessr   r   Úimportlib.metadataÚ	importlibÚdistutils.errorsr   Znumpy.testingr   r   r	   Znumpy.distutilsr
   r   r”   r   r   r   r   r   r   r   ÚmetadataÚversionÚskipZPackageNotFoundErrorr"   r\   rP   ra   r.   r   r   r   r   r   rI   r›   r    r    r    r!   Ú<module>   s<   
 "