o
    1Æ&iÙ  ã                   @   sL   d dl Z d dlmZmZ d dlmZ G dd„ deƒZedkr$e  ¡  dS dS )é    N)ÚTestCaseÚrun_in_subprocess)Úutilsc                   @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )ÚTestNumbaImportz,
    Test behaviour of importing Numba.
    c           	      C   sx   g d¢}|D ]}|dkpt jdk }|dvr|rt|ƒ qd}t|ƒ\}}tt| ¡ ƒƒ}t|ƒt|ƒ@ }|  |d¡ dS )zX
        Importing top-level numba features should not import too many modules.
        )	ÚcffiÚ	distutilsz
numba.cudaúnumba.cpython.mathimplúnumba.cpython.randomimplznumba.testsznumba.core.typing.collectionsznumba.core.typing.listdeclznumba.core.typing.npdatetimer   )é   é   )r   z¤if 1:
            from numba import jit, vectorize
            from numba.core import types
            import sys
            print(list(sys.modules))
            ú"some modules unexpectedly importedN)r   Z	PYVERSIONÚ
__import__r   ÚsetÚevalÚstripÚassertFalse)	ÚselfÚbanlistÚmodZdistutils_checkÚcodeÚoutÚ_ÚmodlistÚ
unexpected© r   úBC:\wamp64\www\opt\env\Lib\site-packages\numba/tests/test_import.pyÚtest_laziness   s   ÿ€zTestNumbaImport.test_lazinessc           	      C   sZ   g d¢}d}d}||fD ]}t |ƒ\}}tt| ¡ ƒƒ}t|ƒt|ƒ@ }|  |d¡ qdS )zé
        Tests that importing jit does not trigger import of modules containing
        lowering implementations that would likely install things in the
        builtins registry and have side effects impacting other targets
        )znumba.cpython.slicingznumba.cpython.tupleobjznumba.cpython.enumimplznumba.cpython.hashingznumba.cpython.heapqznumba.cpython.iteratorsznumba.cpython.numbersznumba.cpython.rangeobjznumba.cpython.cmathimplr   znumba.cpython.printimplr	   znumba.core.optionalznumba.misc.gdb_hookznumba.misc.literalznumba.misc.cffiimplznumba.np.linalgznumba.np.polynomialznumba.np.arraymathznumba.np.npdatetimeznumba.np.npyimplznumba.typed.typeddictznumba.typed.typedlistz numba.experimental.jitclass.basezgif 1:
            import sys
            import numba
            print(list(sys.modules))
            z¯if 1:
            import sys
            from numba import njit
            @njit
            def foo():
                pass
            print(list(sys.modules))
            r   N)r   r   r   r   r   )	r   r   Úcode1Úcode2r   r   r   r   r   r   r   r   Útest_no_impl_import.   s   	üz#TestNumbaImport.test_no_impl_importc                 C   s   d}ddg}t ||ƒ d S )Nzimport numbaz-Werrorz/-Wignore::DeprecationWarning:packaging.version:©r   )r   r   Úflagsr   r   r   Útest_no_accidental_warningsd   s   z+TestNumbaImport.test_no_accidental_warningsc                 C   s   d}t |ƒ d S )Nzfrom numba import *r    )r   r   r   r   r   Útest_import_starm   s   z TestNumbaImport.test_import_starN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r"   r#   r   r   r   r   r      s    #6	r   Ú__main__)	ZunittestZnumba.tests.supportr   r   Z
numba.corer   r   r$   Úmainr   r   r   r   Ú<module>   s    mÿ