U
    9%e>V                     @   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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   P/var/www/html/Darija-Ai-API/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)i386Zi586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)	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                       s4   e Zd ZdZ fddZedd Zdd Z  ZS )	_OptLevela  This class holds the "optimisation level" set in `NUMBA_OPT`. As this env
    var can be an int or a string, but is almost always interpreted as an int,
    this class subclasses int so as to get the common behaviour but stores the
    actual value as a `_raw_value` member. The value "max" is a special case
    and the property `is_opt_max` can be queried to find if the optimisation
    level (supplied value at construction time) is "max".c                    sR   t |dkst|\}|dkr"dnt|}t j| |f|}|dkrH|n||_|S )Nr   max   )lenAssertionErrorr   super__new__
_raw_value)clsargskwargsvalueZ
_int_valuenew	__class__r   r   r4   [   s    z_OptLevel.__new__c                 C   s
   | j dkS )zLReturns True if the the optimisation level is "max" False
        otherwise.r/   )r5   selfr   r   r   
is_opt_maxe   s    z_OptLevel.is_opt_maxc                 C   s.   t | jtrd| j d}n| j}d| dS )N'z
_OptLevel())
isinstancer5   r+   )r>   argr   r   r   __repr__k   s    z_OptLevel.__repr__)	__name__
__module____qualname____doc__r4   propertyr?   rD   __classcell__r   r   r;   r   r.   S   s
   

r.   c                 C   s*   | dkrd|  d}t |nt| S d S )N)0123r/   zAEnvironment variable `NUMBA_OPT` is set to an unsupported value 'z-', supported values are 0, 1, 2, 3, and 'max')r
   r.   )	opt_levelr,   r   r   r   _process_opt_levels   s    
rP   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)resetr=   r   r   r   __init__   s    z_EnvReloader.__init__c                 C   s   i | _ | jdd d S )NT)force)old_environupdater=   r   r   r   rS      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 )NzA 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   rV   process_environdictvalidate)
r>   rU   Znew_environr,   r#   Zy_confkvnamer9   r   r   r   rW      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: .FzPTDS 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>   rm   ier,   r   r   r   rg      s    
z_EnvReloader.validatec           _         s   fdd}d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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rtd"nd }|d)ttd*} |d+t |}!|d,t |}"|d-t |}#|d.t |p|}$|d/t d}%|d0t d}&|d1t d}'|d2t d}(|d3t d})|d4t |}*|d5t |}+|d6t |},|d7t d}-|d8t d}.|d9t |}/|d:t d}0|d;t d}1d<d= }2|d>|2d }3d?d@ }4|dAt |4}5|dBt t}6|dCt d}7|dDdEdF dGdHdIg}8|dJtdK}9|dLtdM}:|dNt d};|dOtd }<|dPtdQ}=|dRt t tdSk}>|dTt d}?|dUtd"}@|dVt d}A|dWt dX}B|dYt	dZ}C|d[t d}D|d\td"}E|d]t d^}F|d_t d}G|d`t d}H|dat d}It
rtjdb}J|Jrtj|Jdc}Kndd}Kntjtjdedfdgdc}K|dht|K}Ldidj }M|M }N|dkt |N}Odkt kr6t dk |Okr6ddllm}P |Pjr6tdm|Ot dk f |O}Q~Odntjk}R|dot t |R}S|dpt |S}T|dqt d}U|drt d}Vdsdt }W|du|Wdv}X|dwtdK}Y|dxt d}Z|dyt|Zrdznd"}[|d{t d}\t   D ]\}]}^|] r|^t |]< qd S )|Nc                    s~     | }|d kr$t|r | S |S z
||W S  tk
rx } z,td|  d| d| dt | W Y S d }~X Y nX d S )NzEnvironment variable 'z'' is defined but its associated value 'z8' could not be parsed.
The parse failed with exception: rk   )getcallable	Exceptionr_   r`   RuntimeWarning)rj   Zctordefaultr9   erd   r   r   _readenv   s    

z._EnvReloader.process_environ.<locals>._readenvc                 S   s   | d k	rt | S d S rR   )r+   )xr   r   r   optional_str   s    z2_EnvReloader.process_environ.<locals>.optional_strZNUMBA_USE_RVSDG_FRONTENDr   ZNUMBA_DEVELOPER_MODEZ"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_SIZEd   ZNUMBA_DEBUG_CACHEZNUMBA_CACHE_DIR ZNUMBA_TRACEZNUMBA_CHROME_TRACEZNUMBA_DEBUG_TYPEINFERZNUMBA_CPU_NAMEZNUMBA_CPU_FEATURESZgenericZ	NUMBA_OPTr0   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 rR   )rY   rZ   abspath)rZ   r   r   r   fmt_html_pathp  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_defaultz  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 rR   )r"   )stringr   r   r   <lambda>      z._EnvReloader.process_environ.<locals>.<lambda>ZtbbZompZ	workqueueZNUMBA_THREADING_LAYERru   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_foundusrlocalrm   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   )rY   sched_getaffinityAttributeErrorr/   r1   	cpu_count)r   r   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 rR   )shutilwhich)Zpath_or_bingdbr   r   r   	which_gdb  s    
z/_EnvReloader.process_environ.<locals>.which_gdbZNUMBA_GDB_BINARYr   ZNUMBA_CUDA_MEMORY_MANAGERZNUMBA_LLVM_REFPRUNE_PASSZNUMBA_LLVM_REFPRUNE_FLAGSallZNUMBA_LLVM_PASS_TIMINGS)r   r+   lowerrP   r.   	IS_32BITSr-   r   MACHINE_BITSfloatIS_WIN32rY   rd   rq   rZ   joinsepglobalsZnumba.np.ufuncr   Z_is_initializedRuntimeErrorlocalscopyrb   isupper)_r>   rd   rx   rz   ZUSE_RVSDG_FRONTENDZDEVELOPER_MODEZDISABLE_PERFORMANCE_WARNINGSZFULL_TRACEBACKSZ	SHOW_HELPZCOLOR_SCHEMEZBOUNDSCHECKZALWAYS_WARN_UNINIT_VARZCUDA_LOW_OCCUPANCY_WARNINGSrl   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   HTMLr   Z
ENABLE_AVXZ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_LOGro   Z'CUDA_ENABLE_MINOR_VERSION_COMPATIBILITYZ	cuda_pathZdefault_cuda_include_pathZCUDA_INCLUDE_PATHr   ZNUMBA_DEFAULT_NUM_THREADSZ_NUMBA_NUM_THREADSr   r   ZRUNNING_UNDER_PROFILERZENABLE_PROFILINGZDEBUGINFO_DEFAULTZCUDA_DEBUGINFO_DEFAULTZEXTEND_VARIABLE_LIFETIMESr   Z
GDB_BINARYZCUDA_MEMORY_MANAGERZLLVM_REFPRUNE_PASSZLLVM_REFPRUNE_FLAGSZLLVM_PASS_TIMINGSrj   r9   r   rw   r   re      s                  	   
        
        
z_EnvReloader.process_environN)F)rE   rF   rG   rT   rS   rW   rg   re   r   r   r   r   rQ   ~   s
   
!rQ   c                   C   s   t   dS )zL
    Reload the configuration from environment variables, if necessary.
    N)_env_reloaderrW   r   r   r   r   reload_config@  s    r   ) r   r   rY   r   r   r_   ra   r^   rn   Zllvmlite.bindingZbindingr   r   r   ZIS_OSXtuple__itemsize__r   r   version_infoZ	PYVERSIONr\   r   r(   r-   r   r.   rP   objectrQ   r   r   r   r   r   r   <module>   s8   


    B