""" SciPy: A scientific computing package for Python ================================================ Documentation is available in the docstrings and online at https://docs.scipy.org. Subpackages ----------- Using any of these subpackages requires an explicit import. For example, ``import scipy.cluster``. :: cluster --- Vector Quantization / Kmeans constants --- Physical and mathematical constants and units datasets --- Dataset methods fft --- Discrete Fourier transforms fftpack --- Legacy discrete Fourier transforms integrate --- Integration routines interpolate --- Interpolation Tools io --- Data input and output linalg --- Linear algebra routines misc --- Utilities that don't have another home. ndimage --- N-D image package odr --- Orthogonal Distance Regression optimize --- Optimization Tools signal --- Signal Processing Tools sparse --- Sparse Matrices spatial --- Spatial data structures and algorithms special --- Special functions stats --- Statistical Functions Public API in the main SciPy namespace -------------------------------------- :: __version__ --- SciPy version string LowLevelCallable --- Low-level callback function show_config --- Show scipy build configuration test --- Run scipy unittests """ import importlib as _importlib from numpy import __version__ as __numpy_version__ try: from scipy.__config__ import show as show_config except ImportError as e: msg = """Error importing SciPy: you cannot import SciPy while being in scipy source directory; please exit the SciPy source tree first and relaunch your Python interpreter.""" raise ImportError(msg) from e from scipy.version import version as __version__ # Allow distributors to run custom init code from . import _distributor_init del _distributor_init from scipy._lib import _pep440 # In maintenance branch, change to np_maxversion N+3 if numpy is at N np_minversion = '1.22.4' np_maxversion = '2.3.0' if (_pep440.parse(__numpy_version__) < _pep440.Version(np_minversion) or _pep440.parse(__numpy_version__) >= _pep440.Version(np_maxversion)): import warnings warnings.warn(f"A NumPy version >={np_minversion} and <{np_maxversion}" f" is required for this version of SciPy (detected " f"version {__numpy_version__})", UserWarning, stacklevel=2) del _pep440 # This is the first import of an extension module within SciPy. If there's # a general issue with the install, such that extension modules are missing # or cannot be imported, this is where we'll get a failure - so give an # informative error message. try: from scipy._lib._ccallback import LowLevelCallable except ImportError as e: msg = "The `scipy` install you are using seems to be broken, " + \ "(extension modules cannot be imported), " + \ "please try reinstalling." raise ImportError(msg) from e from scipy._lib._testutils import PytestTester test = PytestTester(__name__) del PytestTester submodules = [ 'cluster', 'constants', 'datasets', 'fft', 'fftpack', 'integrate', 'interpolate', 'io', 'linalg', 'misc', 'ndimage', 'odr', 'optimize', 'signal', 'sparse', 'spatial', 'special', 'stats' ] __all__ = submodules + [ 'LowLevelCallable', 'test', 'show_config', '__version__', ] def __dir__(): return __all__ def __getattr__(name): if name in submodules: return _importlib.import_module(f'scipy.{name}') else: try: return globals()[name] except KeyError: raise AttributeError( f"Module 'scipy' has no attribute '{name}'" )