U
    ,‰dT  ã                   @   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'm(Z(m)Z)m*Z* ddl+m,Z,m-Z-m.Z. ddl/m0Z0 ddl1Z/ddl1m2Z3 ddl1m4Z4 ddl5Z/ddl6Z/dd„ Z7d 8¡ ej9 ej9 Z9dZ:dZ;dd„ Z<dd„ Z=dd„ Z>e<ƒ  e=ƒ  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Ú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runtests© r*   ú2/tmp/pip-unpacked-wheel-eu7e0c37/numba/__init__.pyÚtestA   s    r,   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 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/   r0   Ú_min_llvm_version)r1   r2   ÚregexÚmÚverÚmsgr/   r0   r*   r*   r+   Ú_ensure_llvmc   s&    

ý

ýrC   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k
rj   Y n0X 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.23 or lessNÚ.é   )r   r   z+Numba requires SciPy version 1.0 or greater)Únumba.np.numpy_supportrD   Znumba.core.utilsrE   r<   Úscipyr7   r8   r9   r6   Úsplit)rD   rE   rM   Z
sp_versionr*   r*   r+   Ú_ensure_critical_deps…   s    
rO   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 n8 t
k
r°   t ¡ d	kr¨t jr¨d
} t | ¡ Y W dS X tj dd¡ W dS    t ¡ d	krèt jrèt 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_SVMLÚsysÚplatformÚ
startswithr2   ZbindingZload_library_permanentlyÚgetattrÚtargetsÚAttributeErrorÚmachineÚDEBUGr1   r=   Z
set_option)rB   r*   r*   r+   Ú_try_enable_svmlž   s.    

r\   )AÚ__doc__rU   r3   rT   r1   Ú_versionr   Znumba.misc.init_utilsr   r6   Úversion_infoZ
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   r   r   r   r   r   r   r   rL   r    r!   r"   Znumbar#   Znumba.core.withcontextsr$   Zobjmoder%   Znumba.core.target_extensionZnumba.typedr,   rN   Ú__all__r;   r>   rC   rO   r\   r2   Z
USING_SVMLr*   r*   r*   r+   Ú<module>   sP   
( (êê"/