U
    9%e                     @   s   d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlm  m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edkre  dS )    N)
skipUnless)NonCallableMock)chain)datetime)redirect_stdout)StringIO)TestCasec                       sH   e Zd Z fddZ fddZdd Zdd Zd	d
 Zdd Z  Z	S )TestSysInfoc                    s   t t|   t | _ttjfttj	ft
tjtjtjtjtjtjtjtjtjtjf
ttjtjtjtjtjtjtjtjtjf	ttj tj!ft"tj#ft$tj%tj&fi| _'t(| j')  | _*d S N)+superr	   setUpnsiZget_sysinfoinfointZ
_cpu_countfloatZ_runtimestrZ_machineZ	_cpu_nameZ_platform_nameZ_os_nameZ_os_versionZ_python_compZ_python_implZ_python_versionZ_llvm_versionZ_numpy_versionboolZ_cu_dev_initZ_svml_stateZ_svml_loadedZ_svml_operationalZ_llvm_svml_patchedZ_tbb_threadZ_openmp_threadZ_wkq_threadZ_numpy_AVX512_SKX_detectedlist_errors	_warningsdictZ_numba_env_varsr   _startZ
_start_utcsafe_contentsr   values	safe_keysself	__class__ W/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/numba/tests/test_sysinfo.pyr      sX    
*zTestSysInfo.setUpc                    s   t t|   | `d S r
   )r   r	   tearDownr   r   r   r   r    r!   ?   s    zTestSysInfo.tearDownc              
   C   s6   | j D ]*}| j|d | || j W 5 Q R X qd S N)k)r   subTestassertInr   )r   r#   r   r   r    test_has_safe_keysD   s    
zTestSysInfo.test_has_safe_keysc                 C   sL   | j  D ]<\}}|D ].}| j|d | | j| | W 5 Q R X qq
d S r"   )r   itemsr$   assertIsInstancer   r   tkeysr#   r   r   r    test_safe_content_typeI   s    z"TestSysInfo.test_safe_content_typec                 C   s   |  | jtj  d S r
   )ZassertFalser   r   r   r   r   r   r    test_has_no_errorO   s    zTestSysInfo.test_has_no_errorc              	   C   s:   t  }t| ti }W 5 Q R X | | |  d S r
   )r   r   r   Zdisplay_sysinfoZassertIsNoneclose)r   outputresr   r   r    test_display_empty_infoR   s
    

z#TestSysInfo.test_display_empty_info)
__name__
__module____qualname__r   r!   r&   r,   r-   r1   __classcell__r   r   r   r    r	      s   /r	   c                       sb   e Zd ZdZdZddgZ fddZ fddZd	d
 Zdd Z	e
e dkddd Z  ZS )TestSysInfoWithPsutili    i         c                    s~   t t|   tj| _dt_t t_tjjj	}| j
|_| j|_t dkr`tjjj	}| j|j_	n
d tjj_	tt | _d S )NTLinuxWindows)r   r6   r   r   _psutil_importpsutil_orig_stater   ZpsutilZvirtual_memoryZreturn_value	mem_totaltotalmem_available	availableplatformsystemProcess	cpus_listZcpu_affinityget_os_spec_infor   )r   vmprocr   r   r    r   `   s    


zTestSysInfoWithPsutil.setUpc                    s   t t|   | jt_d S r
   )r   r6   r!   r=   r   r<   r   r   r   r    r!   r   s    zTestSysInfoWithPsutil.tearDownc              
   C   sV   t jt jf}|D ]@}| j|d* | || j  | | j| t W 5 Q R X qd S r"   	r   
_mem_total_mem_availabler$   r%   r   r+   r(   r   r   r+   r#   r   r   r    test_has_all_datav   s
    z'TestSysInfoWithPsutil.test_has_all_datac                 C   s0   |  | jtj | j |  | jtj | j d S r
   )assertEqualr   r   rJ   r>   rK   r@   r   r   r   r    test_has_correct_values}   s    z-TestSysInfoWithPsutil.test_has_correct_valuesr9   z5CPUs allowed info only available on Linux and Windowsc                 C   sD   |  | jtj t| j |  | jtj ddd | jD  d S )N c                 s   s   | ]}t |V  qd S r
   )r   ).0nr   r   r    	<genexpr>   s     z7TestSysInfoWithPsutil.test_cpus_list.<locals>.<genexpr>)rN   r   r   Z_cpus_allowedlenrE   Z
_cpus_listjoinr   r   r   r    test_cpus_list   s    z$TestSysInfoWithPsutil.test_cpus_list)r2   r3   r4   r>   r@   rE   r   r!   rM   rO   r   rB   rC   rV   r5   r   r   r   r    r6   Z   s   r6   c                       s0   e Zd Z fddZ fddZdd Z  ZS )TestSysInfoWithoutPsutilc                    s0   t t|   tj| _dt_tt | _	d S )NF)
r   rW   r   r   r<   r=   rF   rB   rC   r   r   r   r   r    r      s    zTestSysInfoWithoutPsutil.setUpc                    s   t t|   | jt_d S r
   )r   rW   r!   r=   r   r<   r   r   r   r    r!      s    z!TestSysInfoWithoutPsutil.tearDownc              
   C   sV   t jt jf}|D ]@}| j|d* | || j  | | j| t W 5 Q R X qd S r"   rI   rL   r   r   r    rM      s
    z*TestSysInfoWithoutPsutil.test_has_all_data)r2   r3   r4   r   r!   rM   r5   r   r   r   r    rW      s   rW   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestPlatformSpecificInfoc                 C   sT   t tjfit tjfit tjfid| _t | _| j| ji | _	t
| j| _d S )N)r:   r;   Darwin)r   r   Z_libc_versionZ_os_spec_versionZplat_spec_inforB   rC   os_namegetcontentsrF   r   r   r   r   r    r      s       
zTestPlatformSpecificInfo.setUpc              
   C   sF   t | j  }|D ].}| j|d | || j  W 5 Q R X qd S r"   )r   r\   r   r$   r%   r   r+   rL   r   r   r    rM      s    z*TestPlatformSpecificInfo.test_has_all_datac                 C   sL   | j  D ]<\}}|D ].}| j|d | | j| | W 5 Q R X qq
d S r"   )r\   r'   r$   r(   r   r)   r   r   r    test_content_type   s    z*TestPlatformSpecificInfo.test_content_typeN)r2   r3   r4   r   rM   r]   r   r   r   r    rX      s   rX   __main__)rB   Zunittestr   Zunittest.mockr   	itertoolsr   r   
contextlibr   ior   Znumba.tests.supportr   Znumba.misc.numba_sysinfomiscZnumba_sysinfor   r	   r6   rW   rX   r2   mainr   r   r   r    <module>   s   L/