o
    i                     @   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ree  dS 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nsiget_sysinfoinfoint
_cpu_countfloat_runtimestr_machine	_cpu_name_platform_name_os_name_os_version_python_comp_python_impl_python_version_llvm_version_numpy_versionbool_cu_dev_init_svml_state_svml_loaded_svml_operational_llvm_svml_patched_tbb_thread_openmp_thread_wkq_thread_numpy_AVX512_SKX_detectedlist_errors	_warningsdict_numba_env_varsr   _start
_start_utcsafe_contentsr   values	safe_keysself	__class__ V/home/ubuntu/transcripts/venv/lib/python3.10/site-packages/numba/tests/test_sysinfo.pyr      sX   
*zTestSysInfo.setUpc                    s   t t|   | `d S r
   )r   r	   tearDownr   r3   r5   r7   r8   r9   ?   s   zTestSysInfo.tearDownc              	   C   sJ   | j D ]}| j|d | || j W d    n1 sw   Y  qd S N)k)r2   subTestassertInr   )r4   r;   r7   r7   r8   test_has_safe_keysD   s   
zTestSysInfo.test_has_safe_keysc              
   C   `   | j  D ](\}}|D ]!}| j|d | | j| | W d    n1 s'w   Y  qqd S r:   )r0   itemsr<   assertIsInstancer   r4   tkeysr;   r7   r7   r8   test_safe_content_typeI      z"TestSysInfo.test_safe_content_typec                 C   s   |  | jtj  d S r
   )assertFalser   r   r*   r3   r7   r7   r8   test_has_no_errorO   s   zTestSysInfo.test_has_no_errorc                 C   sN   t  }t| ti }W d    n1 sw   Y  | | |  d S r
   )r   r   r   display_sysinfoassertIsNoneclose)r4   outputresr7   r7   r8   test_display_empty_infoR   s   

z#TestSysInfo.test_display_empty_info)
__name__
__module____qualname__r   r9   r>   rE   rH   rN   __classcell__r7   r7   r5   r8   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v 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v r0tjjj	}| j|j_	nd tjj_	tt | _d S )NTLinuxWindows)r   rS   r   r   _psutil_importpsutil_orig_stater   psutilvirtual_memoryreturn_value	mem_totaltotalmem_available	availableplatformsystemProcess	cpus_listcpu_affinityget_os_spec_infor   )r4   vmprocr5   r7   r8   r   `   s   


zTestSysInfoWithPsutil.setUpc                       t t|   | jt_d S r
   )r   rS   r9   rZ   r   rY   r3   r5   r7   r8   r9   r      zTestSysInfoWithPsutil.tearDownc              	   C   j   t jt jf}|D ]*}| j|d | || j  | | j| t W d    n1 s-w   Y  qd S r:   	r   
_mem_total_mem_availabler<   r=   r   rD   rA   r   r4   rD   r;   r7   r7   r8   test_has_all_datav      z'TestSysInfoWithPsutil.test_has_all_datac                 C   s0   |  | jtj | j |  | jtj | j d S r
   )assertEqualr   r   rn   r^   ro   r`   r3   r7   r7   r8   test_has_correct_values}   s   z-TestSysInfoWithPsutil.test_has_correct_valuesrV   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nr7   r7   r8   	<genexpr>   s    z7TestSysInfoWithPsutil.test_cpus_list.<locals>.<genexpr>)rs   r   r   _cpus_allowedlenre   
_cpus_listjoinr3   r7   r7   r8   test_cpus_list   s   z$TestSysInfoWithPsutil.test_cpus_list)rO   rP   rQ   r^   r`   re   r   r9   rq   rt   r   rb   rc   r}   rR   r7   r7   r5   r8   rS   Z   s    rS   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   r~   r   r   rY   rZ   rg   rb   rc   r   r3   r5   r7   r8   r      s   zTestSysInfoWithoutPsutil.setUpc                    rj   r
   )r   r~   r9   rZ   r   rY   r3   r5   r7   r8   r9      rk   z!TestSysInfoWithoutPsutil.tearDownc              	   C   rl   r:   rm   rp   r7   r7   r8   rq      rr   z*TestSysInfoWithoutPsutil.test_has_all_data)rO   rP   rQ   r   r9   rq   rR   r7   r7   r5   r8   r~      s    r~   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)rW   rX   Darwin)r   r   _libc_version_os_spec_versionplat_spec_inforb   rc   os_namegetcontentsrg   r   r3   r7   r7   r8   r      s   
zTestPlatformSpecificInfo.setUpc              	   C   sZ   t | j  }|D ]!}| j|d | || j  W d    n1 s%w   Y  q	d S r:   )r   r   r1   r<   r=   r   rD   rp   r7   r7   r8   rq      s   z*TestPlatformSpecificInfo.test_has_all_datac              
   C   r?   r:   )r   r@   r<   rA   r   rB   r7   r7   r8   test_content_type   rF   z*TestPlatformSpecificInfo.test_content_typeN)rO   rP   rQ   r   rq   r   r7   r7   r7   r8   r      s    r   __main__)rb   unittestr   unittest.mockr   	itertoolsr   r   
contextlibr   ior   numba.tests.supportr   numba.misc.numba_sysinfomiscnumba_sysinfor   r	   rS   r~   r   rO   mainr7   r7   r7   r8   <module>   s"    L/