|
""" |
|
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 |
|
differentiate --- Finite difference differentiation tools |
|
fft --- Discrete Fourier transforms |
|
fftpack --- Legacy discrete Fourier transforms |
|
integrate --- Integration routines |
|
interpolate --- Interpolation Tools |
|
io --- Data input and output |
|
linalg --- Linear algebra routines |
|
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__ |
|
|
|
|
|
|
|
from . import _distributor_init |
|
del _distributor_init |
|
|
|
|
|
from scipy._lib import _pep440 |
|
|
|
np_minversion = '1.23.5' |
|
np_maxversion = '2.5.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 |
|
|
|
|
|
|
|
|
|
|
|
|
|
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', |
|
'differentiate', |
|
'fft', |
|
'fftpack', |
|
'integrate', |
|
'interpolate', |
|
'io', |
|
'linalg', |
|
'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}'" |
|
) |
|
|