# ------------------------------------------------------------------ # Copyright (c) 2020 PyInstaller Development Team. # # This file is distributed under the terms of the GNU General Public # License (version 2.0 or later). # # The full license is available in LICENSE, distributed with # this software. # # SPDX-License-Identifier: GPL-2.0-or-later # ------------------------------------------------------------------ # # NumPy aware dynamic Python compiler using LLVM # https://github.com/numba/numba # # Tested with: # numba 0.26 (Anaconda 4.1.1, Windows), numba 0.28 (Linux) from PyInstaller.utils.hooks import is_module_satisfies excludedimports = ["IPython", "scipy"] hiddenimports = ["llvmlite"] # numba 0.59.0 updated its vendored version of cloudpickle to 3.0.0; this version keeps `cloudpickle_fast` module # around for backward compatibility with existing pickled data, but does not import it directly anymore. if is_module_satisfies("numba >= 0.59.0"): hiddenimports += ["numba.cloudpickle.cloudpickle_fast"] # numba 0.61 introduced new type system with several dynamic redirects using `numba.core.utils._RedirectSubpackage`; # depending on the run-time value of `numba.config.USE_LEGACY_TYPE_SYSTEM`, either "old" or "new" module variant is # loaded. All of these seem to be loaded when `numba` is imported, so there is no need for finer granularity. Also, # as the config value might be manipulated at run-time (e.g., via environment variable), we need to collect both old # and new module variants. # numba 0.62 reverted the change, removing the new type system. if is_module_satisfies("numba >= 0.61.0rc1, < 0.62.0rc1"): # NOTE: `numba.core.typing` is also referenced indirectly via `_RedirectSubpackage`, but we do not need a # hidden import entry for it, because we have entries for its submodules. modules_old = [ 'numba.core.datamodel.old_models', 'numba.core.old_boxing', 'numba.core.types.old_scalars', 'numba.core.typing.old_builtins', 'numba.core.typing.old_cmathdecl', 'numba.core.typing.old_mathdecl', 'numba.cpython.old_builtins', 'numba.cpython.old_hashing', 'numba.cpython.old_mathimpl', 'numba.cpython.old_numbers', 'numba.cpython.old_tupleobj', 'numba.np.old_arraymath', 'numba.np.random.old_distributions', 'numba.np.random.old_random_methods', ] modules_new = [name.replace('.old_', '.new_') for name in modules_old] hiddenimports += modules_old + modules_new