""" 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 """ # start delvewheel patch def _delvewheel_patch_1_6_0(): import ctypes import os import platform import sys libs_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir, 'scipy.libs')) is_conda_cpython = platform.python_implementation() == 'CPython' and (hasattr(ctypes.pythonapi, 'Anaconda_GetVersion') or 'packaged by conda-forge' in sys.version) if sys.version_info[:2] >= (3, 8) and not is_conda_cpython or sys.version_info[:2] >= (3, 10): if os.path.isdir(libs_dir): os.add_dll_directory(libs_dir) else: load_order_filepath = os.path.join(libs_dir, '.load-order-scipy-1.13.1') if os.path.isfile(load_order_filepath): with open(os.path.join(libs_dir, '.load-order-scipy-1.13.1')) as file: load_order = file.read().split() for lib in load_order: lib_path = os.path.join(os.path.join(libs_dir, lib)) kernel32 = ctypes.WinDLL('kernel32', use_last_error=True) if os.path.isfile(lib_path) and not kernel32.LoadLibraryExW(ctypes.c_wchar_p(lib_path), None, 0x00000008): raise OSError('Error loading {}; {}'.format(lib, ctypes.FormatError(ctypes.get_last_error()))) _delvewheel_patch_1_6_0() del _delvewheel_patch_1_6_0 # end delvewheel patch 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}'" )