U
    ð¾|esO  ã                   @   sÜ   d dl Z d dlZd dlZd dlZd dlZd dlZzd dlZdZW n ek
rX   dZY nX d dl	m
Z ej  d¡Zej  d¡Zejd ZedkZejdd… Zd	Zd
d„ Zdd„ Zdd„ ZG dd„ deƒZeƒ Zdd„ ZdS )é    NTFÚwin32Údarwiné   é    é   z.numba_config.yamlc                 C   sD   | sdS t  d| ¡}|s tdƒ‚| ¡ }t|d ƒt|d ƒfS dS )z7
    Parse CUDA compute capability version string.
    Nz(\d+)\.(\d+)zdCompute capability must be specified as a string of "major.minor" where major and minor are decimalsr   é   )ÚreÚmatchÚ
ValueErrorÚgroupsÚint)ÚtextÚmÚgrp© r   úN/var/www/website-v5/atlas_env/lib/python3.8/site-packages/numba/core/config.pyÚ	_parse_cc   s    r   c               	   C   s¢   t j d¡rt ¡ dkrdS ztddƒ} W n tk
r@   Y dS X | �R | D ]<}| d¡\}}}| ¡ dkrLd| ¡ krL W 5 Q R £ dS qLW 5 Q R £ d	S Q R X d
S )z¹
    Whether the current OS supports AVX, regardless of the CPU.

    This is necessary because the user may be running a very old Linux
    kernel (e.g. CentOS 5) on a recent CPU.
    Úlinux)Zi386Zi586Zi686Úx86_64Tz/proc/cpuinfoÚrú:ÚflagsZavxFN)	ÚsysÚplatformÚ
startswithÚmachineÚopenÚOSErrorÚ	partitionÚstripÚsplit)ÚfÚlineÚheadÚ_Úbodyr   r   r   Ú_os_supports_avx.   s    
ÿr&   c                 C   s,   t | ƒ}|dkr$d|› �}t|ƒ‚n|S d S )N)Z	new_styleÚ	old_stylez(Invalid style in NUMBA_CAPTURED_ERRORS: )Ústrr
   )Z	style_strZrendered_styleÚmsgr   r   r   Ú_validate_captured_errors_styleI   s
    

r*   c                   @   s6   e Zd Zdd„ Zdd„ Zddd„Zdd	„ Zd
d„ ZdS )Ú_EnvReloaderc                 C   s   |   ¡  d S ©N)Úreset©Úselfr   r   r   Ú__init__U   s    z_EnvReloader.__init__c                 C   s   i | _ | jdd� d S )NT)Úforce)Úold_environÚupdater.   r   r   r   r-   X   s    z_EnvReloader.resetFc           
   	   C   sÎ   i }t j t¡rzt j t¡rzts0d}t |¡ nJttdƒ�}t	 
|¡}W 5 Q R X |d k	rz| ¡ D ]\}}||d| ¡  < q`t j ¡ D ]\}}	| d¡r„|	||< q„|s®| j|krÂ|  |¡ t|ƒ| _|  ¡  d S )NzšA Numba config file is found but YAML parsing capabilities appear to be missing. To use this feature please install `pyyaml`. e.g. `conda install pyyaml`.ÚrtZNUMBA_)ÚosÚpathÚexistsÚ_config_fnameÚisfileÚ
_HAVE_YAMLÚwarningsÚwarnr   ÚyamlZ	safe_loadÚitemsÚupperÚenvironr   r2   Úprocess_environÚdictÚvalidate)
r/   r1   Únew_environr)   r!   Zy_confÚkÚvÚnameÚvaluer   r   r   r3   \   s"    



z_EnvReloader.updatec              
   C   sb   t r^zdd l}W n> tk
rN } z d|j› d�}t |¡ da W 5 d }~X Y nX tr^t d¡ d S )Nr   z}CUDA Python bindings requested (the environment variable NUMBA_CUDA_USE_NVIDIA_BINDING is set), but they are not importable: Ú.Fz¢PTDS support is handled by CUDA Python when using the NVIDIA binding. Please set the environment variable CUDA_PYTHON_CUDA_PER_THREAD_DEFAULT_STREAM to 1 instead.)ÚCUDA_USE_NVIDIA_BINDINGÚcudaÚImportErrorr)   r;   r<   ÚCUDA_PER_THREAD_DEFAULT_STREAM)r/   rK   Zier)   r   r   r   rC   }   s    
z_EnvReloader.validatec           ^         sò  ‡ fdd„}dd„ }|dt dƒ}|dt dƒ}|dt |ƒ}|d	t dƒ}|d
tdƒ}|dt d ƒ}	|dt dƒ}
|dt dƒ}|dt dƒ}|dt dƒ}|dtdƒ}|dtdƒ}|dtdƒ}|dt dƒ}|dt dƒ}|dt dƒ}|dt dƒ}|dt dƒ}|dt dƒ}|dt dƒ}|dt |ƒ}|d td!ƒ}|d"t dƒ}|d#td!ƒ}|d$t dƒ}|d%|d ƒ}|d&|t|ƒ ¡ d'k�rhd!nd ƒ}|d(t d)ƒ}|d*t |ƒ} |d+t |ƒ}!|d,t |ƒ}"|d-t |�p¬|ƒ}#|d.t dƒ}$|d/t dƒ}%|d0t dƒ}&|d1t dƒ}'|d2t dƒ}(|d3t |ƒ})|d4t |ƒ}*|d5t |ƒ}+|d6t t�ot ƒ},|d7t dƒ}-|d8t |ƒ}.|d9t dƒ}/|d:t dƒ}0d;d<„ }1|d=|1d ƒ}2d>d?„ }3|d@t |3ƒ}4|dAt tƒ}5|dBt dƒ}6|dCdDdE„ dFdGdHgƒ}7|dItdJƒ}8|dKtdLƒ}9|dMt dƒ}:|dNtd ƒ};|dOtdPƒ}<|dQt t tdRkƒƒ}=|dSt dƒ}>|dTtd!ƒ}?|dUt dƒ}@|dVt dWƒ}A|dXtdYƒ}B|dZt dƒ}C|d[td!ƒ}D|d\t d]ƒ}E|d^t dƒ}F|d_t dƒ}G|d`t dƒ}Ht�r¬t	j
 da¡}I|I�r¦t	j |Idb¡}Jndc}Jnt	j t	jdddedfdb¡}J|dgt|Jƒ}Kdhdi„ }L|Lƒ }M|djt |Mƒ}Ndjtƒ k�r.tƒ dj |Nk�r.ddklm}O |Oj�r.tdl|Ntƒ dj f ƒ‚|N}P~Ndmt	j
k}Q|dnt t |Qƒƒ}R|dot |Rƒ}S|dpt dƒ}T|dqt dƒ}Udrds„ }V|dt|Vduƒ}W|dvtdJƒ}X|dwt dƒ}Y|dxt|Y�r®dynd!ƒ}Z|dzt dƒ}[tƒ  ¡  ¡ D ]\}\}]|\ ¡ �rÎ|]tƒ |\< �qÎd S ){Nc                    s`   ˆ   | ¡}|d kr$t|ƒr |ƒ S |S z
||ƒW S  tk
rZ   t d| |f t¡ | Y S X d S )Nz+environ %s defined but failed to parse '%s')ÚgetÚcallableÚ	Exceptionr;   r<   ÚRuntimeWarning)rG   ZctorÚdefaultrH   ©r@   r   r   Ú_readenv“   s    

ÿÿz._EnvReloader.process_environ.<locals>._readenvc                 S   s   | d k	rt | ƒS d S r,   )r(   )Úxr   r   r   Úoptional_strž   s    z2_EnvReloader.process_environ.<locals>.optional_strZNUMBA_DEVELOPER_MODEr   Z"NUMBA_DISABLE_PERFORMANCE_WARNINGSZNUMBA_FULL_TRACEBACKSZNUMBA_SHOW_HELPZNUMBA_COLOR_SCHEMEÚno_colorZNUMBA_BOUNDSCHECKZNUMBA_ALWAYS_WARN_UNINIT_VARZ!NUMBA_CUDA_LOW_OCCUPANCY_WARNINGSr   ZNUMBA_CUDA_USE_NVIDIA_BINDINGZNUMBA_DEBUGZNUMBA_DEBUG_PRINT_AFTERÚnoneZNUMBA_DEBUG_PRINT_BEFOREZNUMBA_DEBUG_PRINT_WRAPZNUMBA_HIGHLIGHT_DUMPSZNUMBA_DEBUG_JITZNUMBA_DEBUG_FRONTENDZNUMBA_DEBUG_NRTZNUMBA_NRT_STATSZNUMBA_FUNCTION_CACHE_SIZEé€   ZNUMBA_PARFOR_MAX_TUPLE_SIZEéd   ZNUMBA_DEBUG_CACHEZNUMBA_CACHE_DIRÚ ZNUMBA_TRACEZNUMBA_CHROME_TRACEZNUMBA_DEBUG_TYPEINFERZNUMBA_CPU_NAMEZNUMBA_CPU_FEATURESÚgenericZ	NUMBA_OPTé   ZNUMBA_DUMP_BYTECODEZNUMBA_DUMP_CFGZNUMBA_DUMP_IRZNUMBA_DUMP_SSAZNUMBA_DEBUG_ARRAY_OPTZNUMBA_DEBUG_ARRAY_OPT_RUNTIMEZNUMBA_DEBUG_ARRAY_OPT_STATSZNUMBA_PARALLEL_DIAGNOSTICSZNUMBA_DEBUG_INLINE_CLOSUREZNUMBA_DUMP_LLVMZNUMBA_DUMP_FUNC_OPTZNUMBA_DUMP_OPTIMIZEDZNUMBA_LOOP_VECTORIZEZNUMBA_SLP_VECTORIZEZNUMBA_DUMP_ASSEMBLYZNUMBA_DUMP_ANNOTATIONZNUMBA_DIFF_IRc                 S   s   | d kr| S t j | ¡S d S r,   )r5   r6   Úabspath)r6   r   r   r   Úfmt_html_pathB  s    z3_EnvReloader.process_environ.<locals>.fmt_html_pathZNUMBA_DUMP_HTMLc                  S   s   t ƒ s
dS t ¡ } | dkS d S )NF)z
corei7-avxz
core-avx-iZsandybridgeZ	ivybridge)r&   ÚllZget_host_cpu_name)Zcpu_namer   r   r   Úavx_defaultL  s    z1_EnvReloader.process_environ.<locals>.avx_defaultZNUMBA_ENABLE_AVXZNUMBA_DISABLE_INTEL_SVMLZNUMBA_DISABLE_JITZNUMBA_THREADING_LAYER_PRIORITYc                 S   s   |   ¡ S r,   )r    )Ústringr   r   r   Ú<lambda>e  ó    z._EnvReloader.process_environ.<locals>.<lambda>ÚtbbÚompZ	workqueueZNUMBA_THREADING_LAYERrR   ZNUMBA_CAPTURED_ERRORSr'   Z NUMBA_CUDA_WARN_ON_IMPLICIT_COPYZNUMBA_FORCE_CUDA_CCZNUMBA_CUDA_DEFAULT_PTX_CC)é   r   ZNUMBA_DISABLE_CUDAr   ZNUMBA_ENABLE_CUDASIMZNUMBA_CUDA_LOG_LEVELZNUMBA_CUDA_LOG_API_ARGSZ%NUMBA_CUDA_MAX_PENDING_DEALLOCS_COUNTé
   Z%NUMBA_CUDA_MAX_PENDING_DEALLOCS_RATIOgš™™™™™É?ZNUMBA_CUDA_ARRAY_INTERFACE_SYNCZNUMBA_CUDA_DRIVERZNUMBA_CUDA_LOG_SIZEi   ZNUMBA_CUDA_VERBOSE_JIT_LOGZ$NUMBA_CUDA_PER_THREAD_DEFAULT_STREAMZ-NUMBA_CUDA_ENABLE_MINOR_VERSION_COMPATIBILITYZ	CUDA_PATHÚincludeZcuda_include_not_foundZusrÚlocalrK   ZNUMBA_CUDA_INCLUDE_PATHc                  S   sP   z
t j} W n tk
r   Y nX tdt| dƒƒƒS t  ¡ }|d k	rLtd|ƒS dS )Nr   r   )r5   Úsched_getaffinityÚAttributeErrorÚmaxÚlenÚ	cpu_count)rk   ro   r   r   r   Únum_threads_defaultº  s    

z9_EnvReloader.process_environ.<locals>.num_threads_defaultÚNUMBA_NUM_THREADS)Úparallelz{Cannot set NUMBA_NUM_THREADS to a different value once the threads have been launched (currently have %s, trying to set %s)ZVS_PROFILERZNUMBA_ENABLE_PROFILINGZNUMBA_DEBUGINFOZNUMBA_CUDA_DEBUGINFOZNUMBA_EXTEND_VARIABLE_LIFETIMESc                 S   s   t  | ¡}|d k	r|S | S r,   )ÚshutilÚwhich)Zpath_or_binÚgdbr   r   r   Ú	which_gdbï  s    
z/_EnvReloader.process_environ.<locals>.which_gdbZNUMBA_GDB_BINARYru   ZNUMBA_CUDA_MEMORY_MANAGERZNUMBA_LLVM_REFPRUNE_PASSZNUMBA_LLVM_REFPRUNE_FLAGSÚallZNUMBA_LLVM_PASS_TIMINGS)r   r(   ÚlowerÚIS_WIN32Ú	IS_32BITSr*   r   ÚMACHINE_BITSÚfloatr5   r@   rN   r6   ÚjoinÚsepÚglobalsÚnumba.np.ufuncrr   Z_is_initializedÚRuntimeErrorÚlocalsÚcopyr>   Úisupper)^r/   r@   rT   rV   ZDEVELOPER_MODEZDISABLE_PERFORMANCE_WARNINGSZFULL_TRACEBACKSZ	SHOW_HELPZCOLOR_SCHEMEZBOUNDSCHECKZALWAYS_WARN_UNINIT_VARZCUDA_LOW_OCCUPANCY_WARNINGSrJ   ÚDEBUGZDEBUG_PRINT_AFTERZDEBUG_PRINT_BEFOREZDEBUG_PRINT_WRAPZHIGHLIGHT_DUMPSZ	DEBUG_JITZDEBUG_FRONTENDZ	DEBUG_NRTZ	NRT_STATSZFUNCTION_CACHE_SIZEZPARFOR_MAX_TUPLE_SIZEZDEBUG_CACHEZ	CACHE_DIRÚTRACEZCHROME_TRACEZDEBUG_TYPEINFERZCPU_NAMEZCPU_FEATURESÚOPTZDUMP_BYTECODEZDUMP_CFGZDUMP_IRZDUMP_SSAZDEBUG_ARRAY_OPTZDEBUG_ARRAY_OPT_RUNTIMEZDEBUG_ARRAY_OPT_STATSZPARALLEL_DIAGNOSTICSZDEBUG_INLINE_CLOSUREZ	DUMP_LLVMZDUMP_FUNC_OPTZDUMP_OPTIMIZEDZLOOP_VECTORIZEZSLP_VECTORIZEZDUMP_ASSEMBLYZANNOTATEZDIFF_IRr_   ZHTMLra   Z
ENABLE_AVXÚDISABLE_INTEL_SVMLZDISABLE_JITZTHREADING_LAYER_PRIORITYZTHREADING_LAYERZCAPTURED_ERRORSZCUDA_WARN_ON_IMPLICIT_COPYZFORCE_CUDA_CCZCUDA_DEFAULT_PTX_CCZDISABLE_CUDAZENABLE_CUDASIMZCUDA_LOG_LEVELZCUDA_LOG_API_ARGSZCUDA_DEALLOCS_COUNTZCUDA_DEALLOCS_RATIOZCUDA_ARRAY_INTERFACE_SYNCZCUDA_DRIVERZCUDA_LOG_SIZEZCUDA_VERBOSE_JIT_LOGrM   Z'CUDA_ENABLE_MINOR_VERSION_COMPATIBILITYZ	cuda_pathZdefault_cuda_include_pathZCUDA_INCLUDE_PATHrp   ZNUMBA_DEFAULT_NUM_THREADSZ_NUMBA_NUM_THREADSrr   rq   ZRUNNING_UNDER_PROFILERZENABLE_PROFILINGZDEBUGINFO_DEFAULTZCUDA_DEBUGINFO_DEFAULTZEXTEND_VARIABLE_LIFETIMESrv   Z
GDB_BINARYZCUDA_MEMORY_MANAGERZLLVM_REFPRUNE_PASSZLLVM_REFPRUNE_FLAGSZLLVM_PASS_TIMINGSrG   rH   r   rS   r   rA   ’   s      ÿ  ÿ  ÿ  ÿ  ÿ ÿþÿÿ  ÿ
ÿ  ÿýþ	  ÿÿ 
ÿ ÿ ÿ ÿ  ÿ  ÿ ÿÿÿÿÿü
  ÿ ÿÿ  ÿ þ  ÿ
z_EnvReloader.process_environN)F)Ú__name__Ú
__module__Ú__qualname__r0   r-   r3   rC   rA   r   r   r   r   r+   S   s
   
!r+   c                   C   s   t  ¡  dS )zL
    Reload the configuration from environment variables, if necessary.
    N)Ú_env_reloaderr3   r   r   r   r   Úreload_config  s    r�   )r   r   r5   r   rs   r;   r=   r:   rL   Úllvmlite.bindingÚbindingr`   r   ry   ZIS_OSXÚtupleÚ__itemsize__r{   rz   Úversion_infoÚ	PYVERSIONr8   r   r&   r*   Úobjectr+   rŒ   r�   r   r   r   r   Ú<module>   s4   


   ?