U
    iâËd  ã                   @   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rÆe ¡  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__© úQ/home/sam/Atlas/atlas_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/