U
    -eT!                     @   s  d Z ddlZddlZddlZddlZdd Ze  ddlmZ ddlm	Z	 e d Z
e	e
Z[[	dd	lmZ dd
lmZmZ ddlmZmZmZmZmZmZmZmZ ddlT ddlm  mZ ddlT ddlmZmZmZm Z m!Z!m"Z" ddl#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+ ddl,m-Z-m.Z.m/Z/ ddl0m1Z1 ddl2Z0ddl2m3Z4 ddl2m5Z5 ddl6Z0ddl7Z0dd Z8d9 ej: ej: Z:dZ;dZ<dd Z=dd Z>e=  ddl?Z?e> e_@dS )z5
Expose top-level symbols that are safe for import *
    Nc                  C   s   dd } t jdd }|dk r@d|d  d|d	  d}t|ddl}| |}|d
k r|d|d  d|d	  d}t|n|dkrtdzddl}W n tk
r   Y n(X | |}|dk rd|j d}t|dS )a  
    Make sure the Python, NumPy and SciPy present are supported versions.
    This has to be done _before_ importing anything from Numba such that
    incompatible versions can be reported to the user. If this occurs _after_
    importing things from Numba and there's an issue in e.g. a Numba c-ext, a
    SystemError might have occurred which prevents reporting the likely cause of
    the problem (incompatible versions of critical dependencies).
    c                 S   s   t tt| jdd d S )N.   )tuplemapint__version__split)mod r
   O/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/numba/__init__.pyextract_version   s    z._ensure_critical_deps.<locals>.extract_versionNr   )      z.Numba needs Python 3.8 or greater. Got Python r   r      )r      z-Numba needs NumPy 1.22 or greater. Got NumPy )r      zNumba needs NumPy 1.25 or less)r   r   z7Numba requires SciPy version 1.0 or greater. Got SciPy )sysversion_infoImportErrornumpyscipyr   )r   Z	PYVERSIONmsgnpZnumpy_versionr   Z
sp_versionr
   r
   r   _ensure_critical_deps   s(    
r   r   )get_versions)generate_version_infoversion)config)typeserrors)typeofprangepndindexgdbgdb_breakpointgdb_init	literallyliteral_unroll)*)cfuncgenerated_jitjitnjitstencil
jit_module)	vectorizeguvectorizethreading_layerget_num_threadsset_num_threadsset_parallel_chunksizeget_parallel_chunksizeget_thread_id)carrayfarray
from_dtype)experimental)objmode_context)parallel_chunksizec                 K   s   ddl m} |j| f|S )Nr   )	_runtests)Znumba.testingr=   main)argvkwdsZruntestsr
   r
   r   tests   s    rA   aK  
    cfunc
    from_dtype
    guvectorize
    jit
    experimental
    njit
    stencil
    jit_module
    typeof
    prange
    gdb
    gdb_breakpoint
    gdb_init
    vectorize
    objmode
    literal_unroll
    get_num_threads
    set_num_threads
    set_parallel_chunksize
    get_parallel_chunksize
    parallel_chunksize
    )r   )   r   )   r   r   c                  C   s   ddl } ddl}td}||j}|r^ttt|	 }|t
k rhdt
|jf  }t|n
| d ddlm}m} |tk rdt|  }t||  dS )z,
    Make sure llvmlite is operational.
    r   Nz(\d+)\.(\d+).(\d+)zfNumba requires at least version %d.%d.%d of llvmlite.
Installed version is %s.
Please update llvmlite.z'llvmlite version format not recognized!)llvm_version_infocheck_jit_executionzNumba requires at least version %d.%d.%d of LLVM.
Installed llvmlite is built against version %d.%d.%d.
Please update llvmlite.)warningsllvmliterecompilematchr   r   r   r   groups_min_llvmlite_versionr   warnZllvmlite.bindingrD   rE   _min_llvm_version)rF   rG   regexmverr   rD   rE   r
   r
   r   _ensure_llvm   s&    



rR   c                  C   s   t jsztjdr"tjd n:tjdr<tjd n tjdrVtjd nW dS zttjj	d svW W dS W n8 t
k
r   t d	krt jrd
} t|  Y W dS X tjdd W dS    t d	krt jrtd Y nX dS )zU
    Tries to enable SVML if configuration permits use and the library is found.
    linuxz
libsvml.sodarwinzlibsvml.dylibwinZsvml_dispmdFZhas_svmlx86_64z>SVML was found but llvmlite >= 0.23.2 is needed to support it.ZSVMLz-vector-library=SVMLTz'SVML was not found/could not be loaded.)r   ZDISABLE_INTEL_SVMLr   platform
startswithrG   ZbindingZload_library_permanentlygetattrtargetsAttributeErrormachineDEBUGrF   rM   Z
set_option)r   r
   r
   r   _try_enable_svml   s.    

r^   )A__doc__rW   rH   r   rF   r   _versionr   Znumba.misc.init_utilsr   r   r   Z
numba.corer   r   r   Znumba.misc.specialr    r!   r"   r#   r$   r%   r&   r'   Znumba.core.errorsZnumba.core.typescoreZnumba.core.decoratorsr)   r*   r+   r,   r-   r.   Znumba.np.ufuncr/   r0   r1   r2   r3   r4   r5   r6   Znumba.np.numpy_supportr7   r8   r9   Znumbar:   Znumba.core.withcontextsr;   Zobjmoder<   Znumba.core.target_extensionZnumba.typedrA   r   __all__rL   rN   rR   r^   rG   Z
USING_SVMLr
   r
   r
   r   <module>   sP   *
( (#/