154 lines
4.4 KiB
Python
154 lines
4.4 KiB
Python
|
"""
|
||
|
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 os
|
||
|
libs_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir, 'scipy.libs'))
|
||
|
if os.path.isdir(libs_dir):
|
||
|
os.add_dll_directory(libs_dir)
|
||
|
|
||
|
|
||
|
_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}'"
|
||
|
)
|