o
    i                     @   sT   d dl Z d dlmZmZ d dlmZ d dl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   zif 1:
            from numba import jit, vectorize
            from numba.core import types
            import sys
            print(list(sys.modules))
            "some modules unexpectedly importedN)r   	PYVERSION
__import__r   setevalstripassertFalse)	selfbanlistmoddistutils_checkcodeout_modlist
unexpected r   U/home/ubuntu/transcripts/venv/lib/python3.10/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))
            zif 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 ||tj d d S )Nzimport numbaz-Werrorz/-Wignore::DeprecationWarning:packaging.version:)env)r   osenvironcopy)r   r   flagsr   r   r   test_no_accidental_warningse   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_starn   s   z TestNumbaImport.test_import_starN)__name__
__module____qualname____doc__r   r!   r'   r(   r   r   r   r   r      s    #6	r   __main__)
unittestnumba.tests.supportr   r   
numba.corer   r#   r   r)   mainr   r   r   r   <module>   s    m