B
      ›\r  ã               @   sf  d Z ddlmZmZmZ ddlZddlZddlZddlZddl	m
Z
mZmZmZ ddlmZmZmZmZmZmZ ddlT ddlT ddlmZ dd	lmZmZmZmZmZmZ dd
l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*Z+ ej,Z-d .¡ ej/ ej/ Z/dZ0dZ1dd„ Z2dd„ Z3dd„ Z4e2ƒ  e3ƒ  ddl5Z5e4ƒ e
_6ddl7m8Z8 e8ƒ d Z9[8dS )z5
Expose top-level symbols that are safe for import *
é    )Úprint_functionÚdivisionÚabsolute_importNé   )ÚconfigÚerrorsÚ	_runtestsÚtypes)ÚtypeofÚprangeÚpndindexÚgdbÚgdb_breakpointÚgdb_init)Ú*)Ú
SmartArray)ÚautojitÚcfuncÚgenerated_jitÚjitÚnjitÚstencil)Ú	vectorizeÚguvectorizeÚthreading_layer)ÚcarrayÚfarrayÚ
from_dtype)Újitclass)Úobjmode_contextzÈ
    autojit
    cfunc
    from_dtype
    guvectorize
    jit
    jitclass
    njit
    stencil
    typeof
    prange
    gdb
    gdb_breakpoint
    gdb_init
    stencil
    vectorize
    objmode
    )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#   © r4   ú-lib/python3.7/site-packages/numba/__init__.pyÚ_ensure_llvmC   s"    



r6   c              C   sl   ddl } ddlm} tjdd… }|dk sBd|  kr>dk rJn ntd	ƒ‚|jdd… }|d
k rhtdƒ‚dS )z=
    Make sure Python and Numpy have supported versions.
    r   Nr   )Únumpy_supporté   )r8   r!   )é   )r9   é   z4Numba needs Python 2.7 or greater, or 3.4 or greater)r   r!   z Numba needs Numpy 1.7 or greater)r$   Ú r7   ÚsysÚversion_infor/   Úversion)r$   r7   ZpyverZ
np_versionr4   r4   r5   Ú_ensure_pynumpye   s     r?   c              C   sæ   t jsây²tj d¡r"tj d¡ n8tj d¡r<tj d¡ ntj d¡rVtj d¡ ndS yttjj	dƒƒ spdS W n4 t
k
r¦   t ¡ d	kr¢t jr¢d
} t | ¡ dS X tj dd¡ 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.
    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_SVMLr<   ÚplatformÚ
startswithr%   ZbindingZload_library_permanentlyÚgetattrZtargetsÚAttributeErrorÚmachineÚDEBUGr$   r0   Z
set_option)r3   r4   r4   r5   Ú_try_enable_svmlt   s.    
rH   )Úget_versionsr>   ):Ú__doc__Z
__future__r   r   r   rB   r&   r<   r$   r;   r   r   r   Zruntestsr	   Zspecialr
   r   r   r   r   r   Z
smartarrayr   Z
decoratorsr   r   r   r   r   r   Znpyufuncr   r   r   r7   r   r   r   r   Znumba.withcontextsZnumbar   ZobjmodeÚmainZtestÚsplitÚ__all__r.   r1   r6   r?   rH   r%   Z
USING_SVMLZ_versionrI   r)   r4   r4   r4   r5   Ú<module>   s<     "/
