a
    ò.;bY  ã                   @   s”  d Z ddlZddlZddlZddlZ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' ddl(m)Z)m*Z*m+Z+ ddl,m-Z- ddl.Z,ddl.m/Z0 ddl1Z,ddl2Z,dd„ Z3d 4¡ ej5 ej5 Z5dZ6dZ7dd„ Z8dd„ Z9dd„ Z:e8ƒ  e9ƒ  ddl;Z;e:ƒ e_<dS )z5
Expose top-level symbols that are safe for import *
é    Né   )Ú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)ÚcarrayÚfarrayÚ
from_dtype)Úexperimental)Úobjmode_contextc                 K   s   ddl m} |j| fi |¤ŽS )Nr   )Ú	_runtests)Znumba.testingr"   Úmain)ÚargvÚkwdsZruntests© r&   ú-lib/python3.9/site-packages/numba/__init__.pyÚtest>   s    r(   zþ
    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
    )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 r”d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ÚmatchÚ__version__ÚtupleÚmapÚintÚgroupsÚ_min_llvmlite_versionÚImportErrorÚwarnZllvmlite.bindingr+   r,   Ú_min_llvm_version)r-   r.   ZregexÚmZverÚmsgr+   r,   r&   r&   r'   Ú_ensure_llvm]   s&    

ý

ýr=   c                  C   sœ   ddl m}  ddlm} |dk r(tdƒ‚| dk r:tdƒ‚n| dkrJtd	ƒ‚zdd
l}W n tyh   Y n00 ttt|j	 
d¡d
d… ƒƒ}|dk r˜tdƒ‚d
S )zD
    Make sure Python, NumPy and SciPy have supported versions.
    r   )Únumpy_version)Ú	PYVERSION)é   é   z!Numba needs Python 3.7 or greater)r   é   z!Numba needs NumPy 1.18 or greater)r   é   zNumba needs NumPy 1.21 or lessNÚ.é   )r   r   z+Numba requires SciPy version 1.0 or greater)Únumba.np.numpy_supportr>   Znumba.core.utilsr?   r8   Úscipyr3   r4   r5   r2   Úsplit)r>   r?   rG   Z
sp_versionr&   r&   r'   Ú_ensure_critical_deps   s    
rI   c                  C   sð   t jsìz¼t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 n6 t
y®   t ¡ d	kr¦t jr¦d
} t | ¡ Y W dS 0 tj dd¡ W dS    t ¡ d	kræt jræt d¡ Y n0 dS )zU
    Tries to enable SVML if configuration permits use and the library is found.
    Zlinuxz
libsvml.soÚdarwinzlibsvml.dylibÚwinZsvml_dispmdFZhas_svmlZ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_SVMLÚsysÚplatformÚ
startswithr.   ZbindingZload_library_permanentlyÚgetattrÚtargetsÚAttributeErrorÚmachineÚDEBUGr-   r9   Z
set_option)r<   r&   r&   r'   Ú_try_enable_svml˜   s.    

rT   )=Ú__doc__rM   r/   rL   r-   Z_versionr   Znumba.misc.init_utilsr   r2   Úversion_infoZ
numba.corer   r   r   Znumba.misc.specialr	   r
   r   r   r   r   r   r   Znumba.core.errorsZnumba.core.typesZcoreZnumba.core.decoratorsr   r   r   r   r   r   Znumba.np.ufuncr   r   r   r   r   rF   r   r   r   Znumbar    Znumba.core.withcontextsr!   ZobjmodeZnumba.core.target_extensionZnumba.typedr(   rH   Ú__all__r7   r:   r=   rI   rT   r.   Z
USING_SVMLr&   r&   r&   r'   Ú<module>   sN   
( íí"/