update
This commit is contained in:
162
.CondaPkg/env/Lib/site-packages/numpy/__config__.py
vendored
Normal file
162
.CondaPkg/env/Lib/site-packages/numpy/__config__.py
vendored
Normal file
@@ -0,0 +1,162 @@
|
||||
# This file is generated by numpy's build process
|
||||
# It contains system_info results at the time of building this package.
|
||||
from enum import Enum
|
||||
from numpy._core._multiarray_umath import (
|
||||
__cpu_features__,
|
||||
__cpu_baseline__,
|
||||
__cpu_dispatch__,
|
||||
)
|
||||
|
||||
__all__ = ["show"]
|
||||
_built_with_meson = True
|
||||
|
||||
|
||||
class DisplayModes(Enum):
|
||||
stdout = "stdout"
|
||||
dicts = "dicts"
|
||||
|
||||
|
||||
def _cleanup(d):
|
||||
"""
|
||||
Removes empty values in a `dict` recursively
|
||||
This ensures we remove values that Meson could not provide to CONFIG
|
||||
"""
|
||||
if isinstance(d, dict):
|
||||
return {k: _cleanup(v) for k, v in d.items() if v and _cleanup(v)}
|
||||
else:
|
||||
return d
|
||||
|
||||
|
||||
CONFIG = _cleanup(
|
||||
{
|
||||
"Compilers": {
|
||||
"c": {
|
||||
"name": "msvc",
|
||||
"linker": r"link",
|
||||
"version": "19.29.30154",
|
||||
"commands": r"cl",
|
||||
"args": r"",
|
||||
"linker args": r"",
|
||||
},
|
||||
"cython": {
|
||||
"name": "cython",
|
||||
"linker": r"cython",
|
||||
"version": "3.0.11",
|
||||
"commands": r"cython",
|
||||
"args": r"",
|
||||
"linker args": r"",
|
||||
},
|
||||
"c++": {
|
||||
"name": "msvc",
|
||||
"linker": r"link",
|
||||
"version": "19.29.30154",
|
||||
"commands": r"cl",
|
||||
"args": r"",
|
||||
"linker args": r"",
|
||||
},
|
||||
},
|
||||
"Machine Information": {
|
||||
"host": {
|
||||
"cpu": "x86_64",
|
||||
"family": "x86_64",
|
||||
"endian": "little",
|
||||
"system": "windows",
|
||||
},
|
||||
"build": {
|
||||
"cpu": "x86_64",
|
||||
"family": "x86_64",
|
||||
"endian": "little",
|
||||
"system": "windows",
|
||||
},
|
||||
"cross-compiled": bool("False".lower().replace("false", "")),
|
||||
},
|
||||
"Build Dependencies": {
|
||||
"blas": {
|
||||
"name": "scipy-openblas",
|
||||
"found": bool("True".lower().replace("false", "")),
|
||||
"version": "0.3.27",
|
||||
"detection method": "pkgconfig",
|
||||
"include directory": r"C:/Users/runneradmin/AppData/Local/Temp/cibw-run-4yyn90e0/cp312-win_amd64/build/venv/Lib/site-packages/scipy_openblas64/include",
|
||||
"lib directory": r"C:/Users/runneradmin/AppData/Local/Temp/cibw-run-4yyn90e0/cp312-win_amd64/build/venv/Lib/site-packages/scipy_openblas64/lib",
|
||||
"openblas configuration": r"OpenBLAS 0.3.27 USE64BITINT DYNAMIC_ARCH NO_AFFINITY Haswell MAX_THREADS=24",
|
||||
"pc file directory": r"D:/a/numpy/numpy/.openblas",
|
||||
},
|
||||
"lapack": {
|
||||
"name": "scipy-openblas",
|
||||
"found": bool("True".lower().replace("false", "")),
|
||||
"version": "0.3.27",
|
||||
"detection method": "pkgconfig",
|
||||
"include directory": r"C:/Users/runneradmin/AppData/Local/Temp/cibw-run-4yyn90e0/cp312-win_amd64/build/venv/Lib/site-packages/scipy_openblas64/include",
|
||||
"lib directory": r"C:/Users/runneradmin/AppData/Local/Temp/cibw-run-4yyn90e0/cp312-win_amd64/build/venv/Lib/site-packages/scipy_openblas64/lib",
|
||||
"openblas configuration": r"OpenBLAS 0.3.27 USE64BITINT DYNAMIC_ARCH NO_AFFINITY Haswell MAX_THREADS=24",
|
||||
"pc file directory": r"D:/a/numpy/numpy/.openblas",
|
||||
},
|
||||
},
|
||||
"Python Information": {
|
||||
"path": r"C:\Users\runneradmin\AppData\Local\Temp\build-env-3q5ctiia\Scripts\python.exe",
|
||||
"version": "3.12",
|
||||
},
|
||||
"SIMD Extensions": {
|
||||
"baseline": __cpu_baseline__,
|
||||
"found": [
|
||||
feature for feature in __cpu_dispatch__ if __cpu_features__[feature]
|
||||
],
|
||||
"not found": [
|
||||
feature for feature in __cpu_dispatch__ if not __cpu_features__[feature]
|
||||
],
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
def _check_pyyaml():
|
||||
import yaml
|
||||
|
||||
return yaml
|
||||
|
||||
|
||||
def show(mode=DisplayModes.stdout.value):
|
||||
"""
|
||||
Show libraries and system information on which NumPy was built
|
||||
and is being used
|
||||
|
||||
Parameters
|
||||
----------
|
||||
mode : {`'stdout'`, `'dicts'`}, optional.
|
||||
Indicates how to display the config information.
|
||||
`'stdout'` prints to console, `'dicts'` returns a dictionary
|
||||
of the configuration.
|
||||
|
||||
Returns
|
||||
-------
|
||||
out : {`dict`, `None`}
|
||||
If mode is `'dicts'`, a dict is returned, else None
|
||||
|
||||
See Also
|
||||
--------
|
||||
get_include : Returns the directory containing NumPy C
|
||||
header files.
|
||||
|
||||
Notes
|
||||
-----
|
||||
1. The `'stdout'` mode will give more readable
|
||||
output if ``pyyaml`` is installed
|
||||
|
||||
"""
|
||||
if mode == DisplayModes.stdout.value:
|
||||
try: # Non-standard library, check import
|
||||
yaml = _check_pyyaml()
|
||||
|
||||
print(yaml.dump(CONFIG))
|
||||
except ModuleNotFoundError:
|
||||
import warnings
|
||||
import json
|
||||
|
||||
warnings.warn("Install `pyyaml` for better output", stacklevel=1)
|
||||
print(json.dumps(CONFIG, indent=2))
|
||||
elif mode == DisplayModes.dicts.value:
|
||||
return CONFIG
|
||||
else:
|
||||
raise AttributeError(
|
||||
f"Invalid `mode`, use one of: {', '.join([e.value for e in DisplayModes])}"
|
||||
)
|
||||
1225
.CondaPkg/env/Lib/site-packages/numpy/__init__.cython-30.pxd
vendored
Normal file
1225
.CondaPkg/env/Lib/site-packages/numpy/__init__.cython-30.pxd
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1140
.CondaPkg/env/Lib/site-packages/numpy/__init__.pxd
vendored
Normal file
1140
.CondaPkg/env/Lib/site-packages/numpy/__init__.pxd
vendored
Normal file
File diff suppressed because it is too large
Load Diff
556
.CondaPkg/env/Lib/site-packages/numpy/__init__.py
vendored
Normal file
556
.CondaPkg/env/Lib/site-packages/numpy/__init__.py
vendored
Normal file
@@ -0,0 +1,556 @@
|
||||
"""
|
||||
NumPy
|
||||
=====
|
||||
|
||||
Provides
|
||||
1. An array object of arbitrary homogeneous items
|
||||
2. Fast mathematical operations over arrays
|
||||
3. Linear Algebra, Fourier Transforms, Random Number Generation
|
||||
|
||||
How to use the documentation
|
||||
----------------------------
|
||||
Documentation is available in two forms: docstrings provided
|
||||
with the code, and a loose standing reference guide, available from
|
||||
`the NumPy homepage <https://numpy.org>`_.
|
||||
|
||||
We recommend exploring the docstrings using
|
||||
`IPython <https://ipython.org>`_, an advanced Python shell with
|
||||
TAB-completion and introspection capabilities. See below for further
|
||||
instructions.
|
||||
|
||||
The docstring examples assume that `numpy` has been imported as ``np``::
|
||||
|
||||
>>> import numpy as np
|
||||
|
||||
Code snippets are indicated by three greater-than signs::
|
||||
|
||||
>>> x = 42
|
||||
>>> x = x + 1
|
||||
|
||||
Use the built-in ``help`` function to view a function's docstring::
|
||||
|
||||
>>> help(np.sort)
|
||||
... # doctest: +SKIP
|
||||
|
||||
For some objects, ``np.info(obj)`` may provide additional help. This is
|
||||
particularly true if you see the line "Help on ufunc object:" at the top
|
||||
of the help() page. Ufuncs are implemented in C, not Python, for speed.
|
||||
The native Python help() does not know how to view their help, but our
|
||||
np.info() function does.
|
||||
|
||||
Available subpackages
|
||||
---------------------
|
||||
lib
|
||||
Basic functions used by several sub-packages.
|
||||
random
|
||||
Core Random Tools
|
||||
linalg
|
||||
Core Linear Algebra Tools
|
||||
fft
|
||||
Core FFT routines
|
||||
polynomial
|
||||
Polynomial tools
|
||||
testing
|
||||
NumPy testing tools
|
||||
distutils
|
||||
Enhancements to distutils with support for
|
||||
Fortran compilers support and more (for Python <= 3.11)
|
||||
|
||||
Utilities
|
||||
---------
|
||||
test
|
||||
Run numpy unittests
|
||||
show_config
|
||||
Show numpy build configuration
|
||||
__version__
|
||||
NumPy version string
|
||||
|
||||
Viewing documentation using IPython
|
||||
-----------------------------------
|
||||
|
||||
Start IPython and import `numpy` usually under the alias ``np``: `import
|
||||
numpy as np`. Then, directly past or use the ``%cpaste`` magic to paste
|
||||
examples into the shell. To see which functions are available in `numpy`,
|
||||
type ``np.<TAB>`` (where ``<TAB>`` refers to the TAB key), or use
|
||||
``np.*cos*?<ENTER>`` (where ``<ENTER>`` refers to the ENTER key) to narrow
|
||||
down the list. To view the docstring for a function, use
|
||||
``np.cos?<ENTER>`` (to view the docstring) and ``np.cos??<ENTER>`` (to view
|
||||
the source code).
|
||||
|
||||
Copies vs. in-place operation
|
||||
-----------------------------
|
||||
Most of the functions in `numpy` return a copy of the array argument
|
||||
(e.g., `np.sort`). In-place versions of these functions are often
|
||||
available as array methods, i.e. ``x = np.array([1,2,3]); x.sort()``.
|
||||
Exceptions to this rule are documented.
|
||||
|
||||
"""
|
||||
|
||||
|
||||
# start delvewheel patch
|
||||
def _delvewheel_patch_1_8_2():
|
||||
import os
|
||||
libs_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir, 'numpy.libs'))
|
||||
if os.path.isdir(libs_dir):
|
||||
os.add_dll_directory(libs_dir)
|
||||
|
||||
|
||||
_delvewheel_patch_1_8_2()
|
||||
del _delvewheel_patch_1_8_2
|
||||
# end delvewheel patch
|
||||
|
||||
import os
|
||||
import sys
|
||||
import warnings
|
||||
|
||||
from ._globals import _NoValue, _CopyMode
|
||||
from ._expired_attrs_2_0 import __expired_attributes__
|
||||
|
||||
|
||||
# If a version with git hash was stored, use that instead
|
||||
from . import version
|
||||
from .version import __version__
|
||||
|
||||
# We first need to detect if we're being called as part of the numpy setup
|
||||
# procedure itself in a reliable manner.
|
||||
try:
|
||||
__NUMPY_SETUP__
|
||||
except NameError:
|
||||
__NUMPY_SETUP__ = False
|
||||
|
||||
if __NUMPY_SETUP__:
|
||||
sys.stderr.write('Running from numpy source directory.\n')
|
||||
else:
|
||||
# Allow distributors to run custom init code before importing numpy._core
|
||||
from . import _distributor_init
|
||||
|
||||
try:
|
||||
from numpy.__config__ import show as show_config
|
||||
except ImportError as e:
|
||||
msg = """Error importing numpy: you should not try to import numpy from
|
||||
its source directory; please exit the numpy source tree, and relaunch
|
||||
your python interpreter from there."""
|
||||
raise ImportError(msg) from e
|
||||
|
||||
from . import _core
|
||||
from ._core import (
|
||||
False_, ScalarType, True_, _get_promotion_state, _no_nep50_warning,
|
||||
_set_promotion_state, abs, absolute, acos, acosh, add, all, allclose,
|
||||
amax, amin, any, arange, arccos, arccosh, arcsin, arcsinh,
|
||||
arctan, arctan2, arctanh, argmax, argmin, argpartition, argsort,
|
||||
argwhere, around, array, array2string, array_equal, array_equiv,
|
||||
array_repr, array_str, asanyarray, asarray, ascontiguousarray,
|
||||
asfortranarray, asin, asinh, atan, atanh, atan2, astype, atleast_1d,
|
||||
atleast_2d, atleast_3d, base_repr, binary_repr, bitwise_and,
|
||||
bitwise_count, bitwise_invert, bitwise_left_shift, bitwise_not,
|
||||
bitwise_or, bitwise_right_shift, bitwise_xor, block, bool, bool_,
|
||||
broadcast, busday_count, busday_offset, busdaycalendar, byte, bytes_,
|
||||
can_cast, cbrt, cdouble, ceil, character, choose, clip, clongdouble,
|
||||
complex128, complex64, complexfloating, compress, concat, concatenate,
|
||||
conj, conjugate, convolve, copysign, copyto, correlate, cos, cosh,
|
||||
count_nonzero, cross, csingle, cumprod, cumsum, cumulative_prod,
|
||||
cumulative_sum, datetime64, datetime_as_string, datetime_data,
|
||||
deg2rad, degrees, diagonal, divide, divmod, dot, double, dtype, e,
|
||||
einsum, einsum_path, empty, empty_like, equal, errstate, euler_gamma,
|
||||
exp, exp2, expm1, fabs, finfo, flatiter, flatnonzero, flexible,
|
||||
float16, float32, float64, float_power, floating, floor, floor_divide,
|
||||
fmax, fmin, fmod, format_float_positional, format_float_scientific,
|
||||
frexp, from_dlpack, frombuffer, fromfile, fromfunction, fromiter,
|
||||
frompyfunc, fromstring, full, full_like, gcd, generic, geomspace,
|
||||
get_printoptions, getbufsize, geterr, geterrcall, greater,
|
||||
greater_equal, half, heaviside, hstack, hypot, identity, iinfo, iinfo,
|
||||
indices, inexact, inf, inner, int16, int32, int64, int8, int_, intc,
|
||||
integer, intp, invert, is_busday, isclose, isdtype, isfinite,
|
||||
isfortran, isinf, isnan, isnat, isscalar, issubdtype, lcm, ldexp,
|
||||
left_shift, less, less_equal, lexsort, linspace, little_endian, log,
|
||||
log10, log1p, log2, logaddexp, logaddexp2, logical_and, logical_not,
|
||||
logical_or, logical_xor, logspace, long, longdouble, longlong, matmul,
|
||||
matrix_transpose, max, maximum, may_share_memory, mean, memmap, min,
|
||||
min_scalar_type, minimum, mod, modf, moveaxis, multiply, nan, ndarray,
|
||||
ndim, nditer, negative, nested_iters, newaxis, nextafter, nonzero,
|
||||
not_equal, number, object_, ones, ones_like, outer, partition,
|
||||
permute_dims, pi, positive, pow, power, printoptions, prod,
|
||||
promote_types, ptp, put, putmask, rad2deg, radians, ravel, recarray,
|
||||
reciprocal, record, remainder, repeat, require, reshape, resize,
|
||||
result_type, right_shift, rint, roll, rollaxis, round, sctypeDict,
|
||||
searchsorted, set_printoptions, setbufsize, seterr, seterrcall, shape,
|
||||
shares_memory, short, sign, signbit, signedinteger, sin, single, sinh,
|
||||
size, sort, spacing, sqrt, square, squeeze, stack, std,
|
||||
str_, subtract, sum, swapaxes, take, tan, tanh, tensordot,
|
||||
timedelta64, trace, transpose, true_divide, trunc, typecodes, ubyte,
|
||||
ufunc, uint, uint16, uint32, uint64, uint8, uintc, uintp, ulong,
|
||||
ulonglong, unsignedinteger, unstack, ushort, var, vdot, vecdot, void,
|
||||
vstack, where, zeros, zeros_like
|
||||
)
|
||||
|
||||
# NOTE: It's still under discussion whether these aliases
|
||||
# should be removed.
|
||||
for ta in ["float96", "float128", "complex192", "complex256"]:
|
||||
try:
|
||||
globals()[ta] = getattr(_core, ta)
|
||||
except AttributeError:
|
||||
pass
|
||||
del ta
|
||||
|
||||
from . import lib
|
||||
from .lib import scimath as emath
|
||||
from .lib._histograms_impl import (
|
||||
histogram, histogram_bin_edges, histogramdd
|
||||
)
|
||||
from .lib._nanfunctions_impl import (
|
||||
nanargmax, nanargmin, nancumprod, nancumsum, nanmax, nanmean,
|
||||
nanmedian, nanmin, nanpercentile, nanprod, nanquantile, nanstd,
|
||||
nansum, nanvar
|
||||
)
|
||||
from .lib._function_base_impl import (
|
||||
select, piecewise, trim_zeros, copy, iterable, percentile, diff,
|
||||
gradient, angle, unwrap, sort_complex, flip, rot90, extract, place,
|
||||
vectorize, asarray_chkfinite, average, bincount, digitize, cov,
|
||||
corrcoef, median, sinc, hamming, hanning, bartlett, blackman,
|
||||
kaiser, trapezoid, trapz, i0, meshgrid, delete, insert, append,
|
||||
interp, quantile
|
||||
)
|
||||
from .lib._twodim_base_impl import (
|
||||
diag, diagflat, eye, fliplr, flipud, tri, triu, tril, vander,
|
||||
histogram2d, mask_indices, tril_indices, tril_indices_from,
|
||||
triu_indices, triu_indices_from
|
||||
)
|
||||
from .lib._shape_base_impl import (
|
||||
apply_over_axes, apply_along_axis, array_split, column_stack, dsplit,
|
||||
dstack, expand_dims, hsplit, kron, put_along_axis, row_stack, split,
|
||||
take_along_axis, tile, vsplit
|
||||
)
|
||||
from .lib._type_check_impl import (
|
||||
iscomplexobj, isrealobj, imag, iscomplex, isreal, nan_to_num, real,
|
||||
real_if_close, typename, mintypecode, common_type
|
||||
)
|
||||
from .lib._arraysetops_impl import (
|
||||
ediff1d, in1d, intersect1d, isin, setdiff1d, setxor1d, union1d,
|
||||
unique, unique_all, unique_counts, unique_inverse, unique_values
|
||||
)
|
||||
from .lib._ufunclike_impl import fix, isneginf, isposinf
|
||||
from .lib._arraypad_impl import pad
|
||||
from .lib._utils_impl import (
|
||||
show_runtime, get_include, info
|
||||
)
|
||||
from .lib._stride_tricks_impl import (
|
||||
broadcast_arrays, broadcast_shapes, broadcast_to
|
||||
)
|
||||
from .lib._polynomial_impl import (
|
||||
poly, polyint, polyder, polyadd, polysub, polymul, polydiv, polyval,
|
||||
polyfit, poly1d, roots
|
||||
)
|
||||
from .lib._npyio_impl import (
|
||||
savetxt, loadtxt, genfromtxt, load, save, savez, packbits,
|
||||
savez_compressed, unpackbits, fromregex
|
||||
)
|
||||
from .lib._index_tricks_impl import (
|
||||
diag_indices_from, diag_indices, fill_diagonal, ndindex, ndenumerate,
|
||||
ix_, c_, r_, s_, ogrid, mgrid, unravel_index, ravel_multi_index,
|
||||
index_exp
|
||||
)
|
||||
|
||||
from . import matrixlib as _mat
|
||||
from .matrixlib import (
|
||||
asmatrix, bmat, matrix
|
||||
)
|
||||
|
||||
# public submodules are imported lazily, therefore are accessible from
|
||||
# __getattr__. Note that `distutils` (deprecated) and `array_api`
|
||||
# (experimental label) are not added here, because `from numpy import *`
|
||||
# must not raise any warnings - that's too disruptive.
|
||||
__numpy_submodules__ = {
|
||||
"linalg", "fft", "dtypes", "random", "polynomial", "ma",
|
||||
"exceptions", "lib", "ctypeslib", "testing", "typing",
|
||||
"f2py", "test", "rec", "char", "core", "strings",
|
||||
}
|
||||
|
||||
# We build warning messages for former attributes
|
||||
_msg = (
|
||||
"module 'numpy' has no attribute '{n}'.\n"
|
||||
"`np.{n}` was a deprecated alias for the builtin `{n}`. "
|
||||
"To avoid this error in existing code, use `{n}` by itself. "
|
||||
"Doing this will not modify any behavior and is safe. {extended_msg}\n"
|
||||
"The aliases was originally deprecated in NumPy 1.20; for more "
|
||||
"details and guidance see the original release note at:\n"
|
||||
" https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations")
|
||||
|
||||
_specific_msg = (
|
||||
"If you specifically wanted the numpy scalar type, use `np.{}` here.")
|
||||
|
||||
_int_extended_msg = (
|
||||
"When replacing `np.{}`, you may wish to use e.g. `np.int64` "
|
||||
"or `np.int32` to specify the precision. If you wish to review "
|
||||
"your current use, check the release note link for "
|
||||
"additional information.")
|
||||
|
||||
_type_info = [
|
||||
("object", ""), # The NumPy scalar only exists by name.
|
||||
("float", _specific_msg.format("float64")),
|
||||
("complex", _specific_msg.format("complex128")),
|
||||
("str", _specific_msg.format("str_")),
|
||||
("int", _int_extended_msg.format("int"))]
|
||||
|
||||
__former_attrs__ = {
|
||||
n: _msg.format(n=n, extended_msg=extended_msg)
|
||||
for n, extended_msg in _type_info
|
||||
}
|
||||
|
||||
|
||||
# Some of these could be defined right away, but most were aliases to
|
||||
# the Python objects and only removed in NumPy 1.24. Defining them should
|
||||
# probably wait for NumPy 1.26 or 2.0.
|
||||
# When defined, these should possibly not be added to `__all__` to avoid
|
||||
# import with `from numpy import *`.
|
||||
__future_scalars__ = {"str", "bytes", "object"}
|
||||
|
||||
__array_api_version__ = "2023.12"
|
||||
|
||||
from ._array_api_info import __array_namespace_info__
|
||||
|
||||
# now that numpy core module is imported, can initialize limits
|
||||
_core.getlimits._register_known_types()
|
||||
|
||||
__all__ = list(
|
||||
__numpy_submodules__ |
|
||||
set(_core.__all__) |
|
||||
set(_mat.__all__) |
|
||||
set(lib._histograms_impl.__all__) |
|
||||
set(lib._nanfunctions_impl.__all__) |
|
||||
set(lib._function_base_impl.__all__) |
|
||||
set(lib._twodim_base_impl.__all__) |
|
||||
set(lib._shape_base_impl.__all__) |
|
||||
set(lib._type_check_impl.__all__) |
|
||||
set(lib._arraysetops_impl.__all__) |
|
||||
set(lib._ufunclike_impl.__all__) |
|
||||
set(lib._arraypad_impl.__all__) |
|
||||
set(lib._utils_impl.__all__) |
|
||||
set(lib._stride_tricks_impl.__all__) |
|
||||
set(lib._polynomial_impl.__all__) |
|
||||
set(lib._npyio_impl.__all__) |
|
||||
set(lib._index_tricks_impl.__all__) |
|
||||
{"emath", "show_config", "__version__", "__array_namespace_info__"}
|
||||
)
|
||||
|
||||
# Filter out Cython harmless warnings
|
||||
warnings.filterwarnings("ignore", message="numpy.dtype size changed")
|
||||
warnings.filterwarnings("ignore", message="numpy.ufunc size changed")
|
||||
warnings.filterwarnings("ignore", message="numpy.ndarray size changed")
|
||||
|
||||
def __getattr__(attr):
|
||||
# Warn for expired attributes
|
||||
import warnings
|
||||
|
||||
if attr == "linalg":
|
||||
import numpy.linalg as linalg
|
||||
return linalg
|
||||
elif attr == "fft":
|
||||
import numpy.fft as fft
|
||||
return fft
|
||||
elif attr == "dtypes":
|
||||
import numpy.dtypes as dtypes
|
||||
return dtypes
|
||||
elif attr == "random":
|
||||
import numpy.random as random
|
||||
return random
|
||||
elif attr == "polynomial":
|
||||
import numpy.polynomial as polynomial
|
||||
return polynomial
|
||||
elif attr == "ma":
|
||||
import numpy.ma as ma
|
||||
return ma
|
||||
elif attr == "ctypeslib":
|
||||
import numpy.ctypeslib as ctypeslib
|
||||
return ctypeslib
|
||||
elif attr == "exceptions":
|
||||
import numpy.exceptions as exceptions
|
||||
return exceptions
|
||||
elif attr == "testing":
|
||||
import numpy.testing as testing
|
||||
return testing
|
||||
elif attr == "matlib":
|
||||
import numpy.matlib as matlib
|
||||
return matlib
|
||||
elif attr == "f2py":
|
||||
import numpy.f2py as f2py
|
||||
return f2py
|
||||
elif attr == "typing":
|
||||
import numpy.typing as typing
|
||||
return typing
|
||||
elif attr == "rec":
|
||||
import numpy.rec as rec
|
||||
return rec
|
||||
elif attr == "char":
|
||||
import numpy.char as char
|
||||
return char
|
||||
elif attr == "array_api":
|
||||
raise AttributeError("`numpy.array_api` is not available from "
|
||||
"numpy 2.0 onwards", name=None)
|
||||
elif attr == "core":
|
||||
import numpy.core as core
|
||||
return core
|
||||
elif attr == "strings":
|
||||
import numpy.strings as strings
|
||||
return strings
|
||||
elif attr == "distutils":
|
||||
if 'distutils' in __numpy_submodules__:
|
||||
import numpy.distutils as distutils
|
||||
return distutils
|
||||
else:
|
||||
raise AttributeError("`numpy.distutils` is not available from "
|
||||
"Python 3.12 onwards", name=None)
|
||||
|
||||
if attr in __future_scalars__:
|
||||
# And future warnings for those that will change, but also give
|
||||
# the AttributeError
|
||||
warnings.warn(
|
||||
f"In the future `np.{attr}` will be defined as the "
|
||||
"corresponding NumPy scalar.", FutureWarning, stacklevel=2)
|
||||
|
||||
if attr in __former_attrs__:
|
||||
raise AttributeError(__former_attrs__[attr], name=None)
|
||||
|
||||
if attr in __expired_attributes__:
|
||||
raise AttributeError(
|
||||
f"`np.{attr}` was removed in the NumPy 2.0 release. "
|
||||
f"{__expired_attributes__[attr]}",
|
||||
name=None
|
||||
)
|
||||
|
||||
if attr == "chararray":
|
||||
warnings.warn(
|
||||
"`np.chararray` is deprecated and will be removed from "
|
||||
"the main namespace in the future. Use an array with a string "
|
||||
"or bytes dtype instead.", DeprecationWarning, stacklevel=2)
|
||||
import numpy.char as char
|
||||
return char.chararray
|
||||
|
||||
raise AttributeError("module {!r} has no attribute "
|
||||
"{!r}".format(__name__, attr))
|
||||
|
||||
def __dir__():
|
||||
public_symbols = (
|
||||
globals().keys() | __numpy_submodules__
|
||||
)
|
||||
public_symbols -= {
|
||||
"matrixlib", "matlib", "tests", "conftest", "version",
|
||||
"compat", "distutils", "array_api"
|
||||
}
|
||||
return list(public_symbols)
|
||||
|
||||
# Pytest testing
|
||||
from numpy._pytesttester import PytestTester
|
||||
test = PytestTester(__name__)
|
||||
del PytestTester
|
||||
|
||||
def _sanity_check():
|
||||
"""
|
||||
Quick sanity checks for common bugs caused by environment.
|
||||
There are some cases e.g. with wrong BLAS ABI that cause wrong
|
||||
results under specific runtime conditions that are not necessarily
|
||||
achieved during test suite runs, and it is useful to catch those early.
|
||||
|
||||
See https://github.com/numpy/numpy/issues/8577 and other
|
||||
similar bug reports.
|
||||
|
||||
"""
|
||||
try:
|
||||
x = ones(2, dtype=float32)
|
||||
if not abs(x.dot(x) - float32(2.0)) < 1e-5:
|
||||
raise AssertionError()
|
||||
except AssertionError:
|
||||
msg = ("The current Numpy installation ({!r}) fails to "
|
||||
"pass simple sanity checks. This can be caused for example "
|
||||
"by incorrect BLAS library being linked in, or by mixing "
|
||||
"package managers (pip, conda, apt, ...). Search closed "
|
||||
"numpy issues for similar problems.")
|
||||
raise RuntimeError(msg.format(__file__)) from None
|
||||
|
||||
_sanity_check()
|
||||
del _sanity_check
|
||||
|
||||
def _mac_os_check():
|
||||
"""
|
||||
Quick Sanity check for Mac OS look for accelerate build bugs.
|
||||
Testing numpy polyfit calls init_dgelsd(LAPACK)
|
||||
"""
|
||||
try:
|
||||
c = array([3., 2., 1.])
|
||||
x = linspace(0, 2, 5)
|
||||
y = polyval(c, x)
|
||||
_ = polyfit(x, y, 2, cov=True)
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
if sys.platform == "darwin":
|
||||
from . import exceptions
|
||||
with warnings.catch_warnings(record=True) as w:
|
||||
_mac_os_check()
|
||||
# Throw runtime error, if the test failed Check for warning and error_message
|
||||
if len(w) > 0:
|
||||
for _wn in w:
|
||||
if _wn.category is exceptions.RankWarning:
|
||||
# Ignore other warnings, they may not be relevant (see gh-25433).
|
||||
error_message = f"{_wn.category.__name__}: {str(_wn.message)}"
|
||||
msg = (
|
||||
"Polyfit sanity test emitted a warning, most likely due "
|
||||
"to using a buggy Accelerate backend."
|
||||
"\nIf you compiled yourself, more information is available at:"
|
||||
"\nhttps://numpy.org/devdocs/building/index.html"
|
||||
"\nOtherwise report this to the vendor "
|
||||
"that provided NumPy.\n\n{}\n".format(error_message))
|
||||
raise RuntimeError(msg)
|
||||
del _wn
|
||||
del w
|
||||
del _mac_os_check
|
||||
|
||||
def hugepage_setup():
|
||||
"""
|
||||
We usually use madvise hugepages support, but on some old kernels it
|
||||
is slow and thus better avoided. Specifically kernel version 4.6
|
||||
had a bug fix which probably fixed this:
|
||||
https://github.com/torvalds/linux/commit/7cf91a98e607c2f935dbcc177d70011e95b8faff
|
||||
"""
|
||||
use_hugepage = os.environ.get("NUMPY_MADVISE_HUGEPAGE", None)
|
||||
if sys.platform == "linux" and use_hugepage is None:
|
||||
# If there is an issue with parsing the kernel version,
|
||||
# set use_hugepage to 0. Usage of LooseVersion will handle
|
||||
# the kernel version parsing better, but avoided since it
|
||||
# will increase the import time.
|
||||
# See: #16679 for related discussion.
|
||||
try:
|
||||
use_hugepage = 1
|
||||
kernel_version = os.uname().release.split(".")[:2]
|
||||
kernel_version = tuple(int(v) for v in kernel_version)
|
||||
if kernel_version < (4, 6):
|
||||
use_hugepage = 0
|
||||
except ValueError:
|
||||
use_hugepage = 0
|
||||
elif use_hugepage is None:
|
||||
# This is not Linux, so it should not matter, just enable anyway
|
||||
use_hugepage = 1
|
||||
else:
|
||||
use_hugepage = int(use_hugepage)
|
||||
return use_hugepage
|
||||
|
||||
# Note that this will currently only make a difference on Linux
|
||||
_core.multiarray._set_madvise_hugepage(hugepage_setup())
|
||||
del hugepage_setup
|
||||
|
||||
# Give a warning if NumPy is reloaded or imported on a sub-interpreter
|
||||
# We do this from python, since the C-module may not be reloaded and
|
||||
# it is tidier organized.
|
||||
_core.multiarray._multiarray_umath._reload_guard()
|
||||
|
||||
# TODO: Remove the environment variable entirely now that it is "weak"
|
||||
_core._set_promotion_state(
|
||||
os.environ.get("NPY_PROMOTION_STATE", "weak"))
|
||||
|
||||
# Tell PyInstaller where to find hook-numpy.py
|
||||
def _pyinstaller_hooks_dir():
|
||||
from pathlib import Path
|
||||
return [str(Path(__file__).with_name("_pyinstaller").resolve())]
|
||||
|
||||
|
||||
# Remove symbols imported for internal use
|
||||
del os, sys, warnings
|
||||
4095
.CondaPkg/env/Lib/site-packages/numpy/__init__.pyi
vendored
Normal file
4095
.CondaPkg/env/Lib/site-packages/numpy/__init__.pyi
vendored
Normal file
File diff suppressed because it is too large
Load Diff
BIN
.CondaPkg/env/Lib/site-packages/numpy/__pycache__/__config__.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/__pycache__/__config__.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/__pycache__/__init__.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/__pycache__/__init__.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/__pycache__/_array_api_info.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/__pycache__/_array_api_info.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/__pycache__/_configtool.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/__pycache__/_configtool.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/__pycache__/_distributor_init.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/__pycache__/_distributor_init.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/__pycache__/_expired_attrs_2_0.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/__pycache__/_expired_attrs_2_0.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/__pycache__/_globals.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/__pycache__/_globals.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/__pycache__/_pytesttester.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/__pycache__/_pytesttester.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/__pycache__/conftest.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/__pycache__/conftest.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/__pycache__/ctypeslib.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/__pycache__/ctypeslib.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/__pycache__/dtypes.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/__pycache__/dtypes.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/__pycache__/exceptions.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/__pycache__/exceptions.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/__pycache__/matlib.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/__pycache__/matlib.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/__pycache__/version.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/__pycache__/version.cpython-312.pyc
vendored
Normal file
Binary file not shown.
346
.CondaPkg/env/Lib/site-packages/numpy/_array_api_info.py
vendored
Normal file
346
.CondaPkg/env/Lib/site-packages/numpy/_array_api_info.py
vendored
Normal file
@@ -0,0 +1,346 @@
|
||||
"""
|
||||
Array API Inspection namespace
|
||||
|
||||
This is the namespace for inspection functions as defined by the array API
|
||||
standard. See
|
||||
https://data-apis.org/array-api/latest/API_specification/inspection.html for
|
||||
more details.
|
||||
|
||||
"""
|
||||
from numpy._core import (
|
||||
dtype,
|
||||
bool,
|
||||
intp,
|
||||
int8,
|
||||
int16,
|
||||
int32,
|
||||
int64,
|
||||
uint8,
|
||||
uint16,
|
||||
uint32,
|
||||
uint64,
|
||||
float32,
|
||||
float64,
|
||||
complex64,
|
||||
complex128,
|
||||
)
|
||||
|
||||
|
||||
class __array_namespace_info__:
|
||||
"""
|
||||
Get the array API inspection namespace for NumPy.
|
||||
|
||||
The array API inspection namespace defines the following functions:
|
||||
|
||||
- capabilities()
|
||||
- default_device()
|
||||
- default_dtypes()
|
||||
- dtypes()
|
||||
- devices()
|
||||
|
||||
See
|
||||
https://data-apis.org/array-api/latest/API_specification/inspection.html
|
||||
for more details.
|
||||
|
||||
Returns
|
||||
-------
|
||||
info : ModuleType
|
||||
The array API inspection namespace for NumPy.
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> info = np.__array_namespace_info__()
|
||||
>>> info.default_dtypes()
|
||||
{'real floating': numpy.float64,
|
||||
'complex floating': numpy.complex128,
|
||||
'integral': numpy.int64,
|
||||
'indexing': numpy.int64}
|
||||
|
||||
"""
|
||||
|
||||
__module__ = 'numpy'
|
||||
|
||||
def capabilities(self):
|
||||
"""
|
||||
Return a dictionary of array API library capabilities.
|
||||
|
||||
The resulting dictionary has the following keys:
|
||||
|
||||
- **"boolean indexing"**: boolean indicating whether an array library
|
||||
supports boolean indexing. Always ``True`` for NumPy.
|
||||
|
||||
- **"data-dependent shapes"**: boolean indicating whether an array
|
||||
library supports data-dependent output shapes. Always ``True`` for
|
||||
NumPy.
|
||||
|
||||
See
|
||||
https://data-apis.org/array-api/latest/API_specification/generated/array_api.info.capabilities.html
|
||||
for more details.
|
||||
|
||||
See Also
|
||||
--------
|
||||
__array_namespace_info__.default_device,
|
||||
__array_namespace_info__.default_dtypes,
|
||||
__array_namespace_info__.dtypes,
|
||||
__array_namespace_info__.devices
|
||||
|
||||
Returns
|
||||
-------
|
||||
capabilities : dict
|
||||
A dictionary of array API library capabilities.
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> info = np.__array_namespace_info__()
|
||||
>>> info.capabilities()
|
||||
{'boolean indexing': True,
|
||||
'data-dependent shapes': True}
|
||||
|
||||
"""
|
||||
return {
|
||||
"boolean indexing": True,
|
||||
"data-dependent shapes": True,
|
||||
# 'max rank' will be part of the 2024.12 standard
|
||||
# "max rank": 64,
|
||||
}
|
||||
|
||||
def default_device(self):
|
||||
"""
|
||||
The default device used for new NumPy arrays.
|
||||
|
||||
For NumPy, this always returns ``'cpu'``.
|
||||
|
||||
See Also
|
||||
--------
|
||||
__array_namespace_info__.capabilities,
|
||||
__array_namespace_info__.default_dtypes,
|
||||
__array_namespace_info__.dtypes,
|
||||
__array_namespace_info__.devices
|
||||
|
||||
Returns
|
||||
-------
|
||||
device : str
|
||||
The default device used for new NumPy arrays.
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> info = np.__array_namespace_info__()
|
||||
>>> info.default_device()
|
||||
'cpu'
|
||||
|
||||
"""
|
||||
return "cpu"
|
||||
|
||||
def default_dtypes(self, *, device=None):
|
||||
"""
|
||||
The default data types used for new NumPy arrays.
|
||||
|
||||
For NumPy, this always returns the following dictionary:
|
||||
|
||||
- **"real floating"**: ``numpy.float64``
|
||||
- **"complex floating"**: ``numpy.complex128``
|
||||
- **"integral"**: ``numpy.intp``
|
||||
- **"indexing"**: ``numpy.intp``
|
||||
|
||||
Parameters
|
||||
----------
|
||||
device : str, optional
|
||||
The device to get the default data types for. For NumPy, only
|
||||
``'cpu'`` is allowed.
|
||||
|
||||
Returns
|
||||
-------
|
||||
dtypes : dict
|
||||
A dictionary describing the default data types used for new NumPy
|
||||
arrays.
|
||||
|
||||
See Also
|
||||
--------
|
||||
__array_namespace_info__.capabilities,
|
||||
__array_namespace_info__.default_device,
|
||||
__array_namespace_info__.dtypes,
|
||||
__array_namespace_info__.devices
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> info = np.__array_namespace_info__()
|
||||
>>> info.default_dtypes()
|
||||
{'real floating': numpy.float64,
|
||||
'complex floating': numpy.complex128,
|
||||
'integral': numpy.int64,
|
||||
'indexing': numpy.int64}
|
||||
|
||||
"""
|
||||
if device not in ["cpu", None]:
|
||||
raise ValueError(
|
||||
'Device not understood. Only "cpu" is allowed, but received:'
|
||||
f' {device}'
|
||||
)
|
||||
return {
|
||||
"real floating": dtype(float64),
|
||||
"complex floating": dtype(complex128),
|
||||
"integral": dtype(intp),
|
||||
"indexing": dtype(intp),
|
||||
}
|
||||
|
||||
def dtypes(self, *, device=None, kind=None):
|
||||
"""
|
||||
The array API data types supported by NumPy.
|
||||
|
||||
Note that this function only returns data types that are defined by
|
||||
the array API.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
device : str, optional
|
||||
The device to get the data types for. For NumPy, only ``'cpu'`` is
|
||||
allowed.
|
||||
kind : str or tuple of str, optional
|
||||
The kind of data types to return. If ``None``, all data types are
|
||||
returned. If a string, only data types of that kind are returned.
|
||||
If a tuple, a dictionary containing the union of the given kinds
|
||||
is returned. The following kinds are supported:
|
||||
|
||||
- ``'bool'``: boolean data types (i.e., ``bool``).
|
||||
- ``'signed integer'``: signed integer data types (i.e., ``int8``,
|
||||
``int16``, ``int32``, ``int64``).
|
||||
- ``'unsigned integer'``: unsigned integer data types (i.e.,
|
||||
``uint8``, ``uint16``, ``uint32``, ``uint64``).
|
||||
- ``'integral'``: integer data types. Shorthand for ``('signed
|
||||
integer', 'unsigned integer')``.
|
||||
- ``'real floating'``: real-valued floating-point data types
|
||||
(i.e., ``float32``, ``float64``).
|
||||
- ``'complex floating'``: complex floating-point data types (i.e.,
|
||||
``complex64``, ``complex128``).
|
||||
- ``'numeric'``: numeric data types. Shorthand for ``('integral',
|
||||
'real floating', 'complex floating')``.
|
||||
|
||||
Returns
|
||||
-------
|
||||
dtypes : dict
|
||||
A dictionary mapping the names of data types to the corresponding
|
||||
NumPy data types.
|
||||
|
||||
See Also
|
||||
--------
|
||||
__array_namespace_info__.capabilities,
|
||||
__array_namespace_info__.default_device,
|
||||
__array_namespace_info__.default_dtypes,
|
||||
__array_namespace_info__.devices
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> info = np.__array_namespace_info__()
|
||||
>>> info.dtypes(kind='signed integer')
|
||||
{'int8': numpy.int8,
|
||||
'int16': numpy.int16,
|
||||
'int32': numpy.int32,
|
||||
'int64': numpy.int64}
|
||||
|
||||
"""
|
||||
if device not in ["cpu", None]:
|
||||
raise ValueError(
|
||||
'Device not understood. Only "cpu" is allowed, but received:'
|
||||
f' {device}'
|
||||
)
|
||||
if kind is None:
|
||||
return {
|
||||
"bool": dtype(bool),
|
||||
"int8": dtype(int8),
|
||||
"int16": dtype(int16),
|
||||
"int32": dtype(int32),
|
||||
"int64": dtype(int64),
|
||||
"uint8": dtype(uint8),
|
||||
"uint16": dtype(uint16),
|
||||
"uint32": dtype(uint32),
|
||||
"uint64": dtype(uint64),
|
||||
"float32": dtype(float32),
|
||||
"float64": dtype(float64),
|
||||
"complex64": dtype(complex64),
|
||||
"complex128": dtype(complex128),
|
||||
}
|
||||
if kind == "bool":
|
||||
return {"bool": bool}
|
||||
if kind == "signed integer":
|
||||
return {
|
||||
"int8": dtype(int8),
|
||||
"int16": dtype(int16),
|
||||
"int32": dtype(int32),
|
||||
"int64": dtype(int64),
|
||||
}
|
||||
if kind == "unsigned integer":
|
||||
return {
|
||||
"uint8": dtype(uint8),
|
||||
"uint16": dtype(uint16),
|
||||
"uint32": dtype(uint32),
|
||||
"uint64": dtype(uint64),
|
||||
}
|
||||
if kind == "integral":
|
||||
return {
|
||||
"int8": dtype(int8),
|
||||
"int16": dtype(int16),
|
||||
"int32": dtype(int32),
|
||||
"int64": dtype(int64),
|
||||
"uint8": dtype(uint8),
|
||||
"uint16": dtype(uint16),
|
||||
"uint32": dtype(uint32),
|
||||
"uint64": dtype(uint64),
|
||||
}
|
||||
if kind == "real floating":
|
||||
return {
|
||||
"float32": dtype(float32),
|
||||
"float64": dtype(float64),
|
||||
}
|
||||
if kind == "complex floating":
|
||||
return {
|
||||
"complex64": dtype(complex64),
|
||||
"complex128": dtype(complex128),
|
||||
}
|
||||
if kind == "numeric":
|
||||
return {
|
||||
"int8": dtype(int8),
|
||||
"int16": dtype(int16),
|
||||
"int32": dtype(int32),
|
||||
"int64": dtype(int64),
|
||||
"uint8": dtype(uint8),
|
||||
"uint16": dtype(uint16),
|
||||
"uint32": dtype(uint32),
|
||||
"uint64": dtype(uint64),
|
||||
"float32": dtype(float32),
|
||||
"float64": dtype(float64),
|
||||
"complex64": dtype(complex64),
|
||||
"complex128": dtype(complex128),
|
||||
}
|
||||
if isinstance(kind, tuple):
|
||||
res = {}
|
||||
for k in kind:
|
||||
res.update(self.dtypes(kind=k))
|
||||
return res
|
||||
raise ValueError(f"unsupported kind: {kind!r}")
|
||||
|
||||
def devices(self):
|
||||
"""
|
||||
The devices supported by NumPy.
|
||||
|
||||
For NumPy, this always returns ``['cpu']``.
|
||||
|
||||
Returns
|
||||
-------
|
||||
devices : list of str
|
||||
The devices supported by NumPy.
|
||||
|
||||
See Also
|
||||
--------
|
||||
__array_namespace_info__.capabilities,
|
||||
__array_namespace_info__.default_device,
|
||||
__array_namespace_info__.default_dtypes,
|
||||
__array_namespace_info__.dtypes
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> info = np.__array_namespace_info__()
|
||||
>>> info.devices()
|
||||
['cpu']
|
||||
|
||||
"""
|
||||
return ["cpu"]
|
||||
213
.CondaPkg/env/Lib/site-packages/numpy/_array_api_info.pyi
vendored
Normal file
213
.CondaPkg/env/Lib/site-packages/numpy/_array_api_info.pyi
vendored
Normal file
@@ -0,0 +1,213 @@
|
||||
import sys
|
||||
from typing import (
|
||||
TYPE_CHECKING,
|
||||
ClassVar,
|
||||
Literal,
|
||||
TypeAlias,
|
||||
TypedDict,
|
||||
TypeVar,
|
||||
final,
|
||||
overload,
|
||||
)
|
||||
|
||||
import numpy as np
|
||||
|
||||
if sys.version_info >= (3, 11):
|
||||
from typing import Never
|
||||
elif TYPE_CHECKING:
|
||||
from typing_extensions import Never
|
||||
else:
|
||||
# `NoReturn` and `Never` are equivalent (but not equal) for type-checkers,
|
||||
# but are used in different places by convention
|
||||
from typing import NoReturn as Never
|
||||
|
||||
_Device: TypeAlias = Literal["cpu"]
|
||||
_DeviceLike: TypeAlias = None | _Device
|
||||
|
||||
_Capabilities = TypedDict(
|
||||
"_Capabilities",
|
||||
{
|
||||
"boolean indexing": Literal[True],
|
||||
"data-dependent shapes": Literal[True],
|
||||
},
|
||||
)
|
||||
|
||||
_DefaultDTypes = TypedDict(
|
||||
"_DefaultDTypes",
|
||||
{
|
||||
"real floating": np.dtype[np.float64],
|
||||
"complex floating": np.dtype[np.complex128],
|
||||
"integral": np.dtype[np.intp],
|
||||
"indexing": np.dtype[np.intp],
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
_KindBool: TypeAlias = Literal["bool"]
|
||||
_KindInt: TypeAlias = Literal["signed integer"]
|
||||
_KindUInt: TypeAlias = Literal["unsigned integer"]
|
||||
_KindInteger: TypeAlias = Literal["integral"]
|
||||
_KindFloat: TypeAlias = Literal["real floating"]
|
||||
_KindComplex: TypeAlias = Literal["complex floating"]
|
||||
_KindNumber: TypeAlias = Literal["numeric"]
|
||||
_Kind: TypeAlias = (
|
||||
_KindBool
|
||||
| _KindInt
|
||||
| _KindUInt
|
||||
| _KindInteger
|
||||
| _KindFloat
|
||||
| _KindComplex
|
||||
| _KindNumber
|
||||
)
|
||||
|
||||
|
||||
_T1 = TypeVar("_T1")
|
||||
_T2 = TypeVar("_T2")
|
||||
_T3 = TypeVar("_T3")
|
||||
_Permute1: TypeAlias = _T1 | tuple[_T1]
|
||||
_Permute2: TypeAlias = tuple[_T1, _T2] | tuple[_T2, _T1]
|
||||
_Permute3: TypeAlias = (
|
||||
tuple[_T1, _T2, _T3] | tuple[_T1, _T3, _T2]
|
||||
| tuple[_T2, _T1, _T3] | tuple[_T2, _T3, _T1]
|
||||
| tuple[_T3, _T1, _T2] | tuple[_T3, _T2, _T1]
|
||||
)
|
||||
|
||||
class _DTypesBool(TypedDict):
|
||||
bool: np.dtype[np.bool]
|
||||
|
||||
class _DTypesInt(TypedDict):
|
||||
int8: np.dtype[np.int8]
|
||||
int16: np.dtype[np.int16]
|
||||
int32: np.dtype[np.int32]
|
||||
int64: np.dtype[np.int64]
|
||||
|
||||
class _DTypesUInt(TypedDict):
|
||||
uint8: np.dtype[np.uint8]
|
||||
uint16: np.dtype[np.uint16]
|
||||
uint32: np.dtype[np.uint32]
|
||||
uint64: np.dtype[np.uint64]
|
||||
|
||||
class _DTypesInteger(_DTypesInt, _DTypesUInt):
|
||||
...
|
||||
|
||||
class _DTypesFloat(TypedDict):
|
||||
float32: np.dtype[np.float32]
|
||||
float64: np.dtype[np.float64]
|
||||
|
||||
class _DTypesComplex(TypedDict):
|
||||
complex64: np.dtype[np.complex64]
|
||||
complex128: np.dtype[np.complex128]
|
||||
|
||||
class _DTypesNumber(_DTypesInteger, _DTypesFloat, _DTypesComplex):
|
||||
...
|
||||
|
||||
class _DTypes(_DTypesBool, _DTypesNumber):
|
||||
...
|
||||
|
||||
class _DTypesUnion(TypedDict, total=False):
|
||||
bool: np.dtype[np.bool]
|
||||
int8: np.dtype[np.int8]
|
||||
int16: np.dtype[np.int16]
|
||||
int32: np.dtype[np.int32]
|
||||
int64: np.dtype[np.int64]
|
||||
uint8: np.dtype[np.uint8]
|
||||
uint16: np.dtype[np.uint16]
|
||||
uint32: np.dtype[np.uint32]
|
||||
uint64: np.dtype[np.uint64]
|
||||
float32: np.dtype[np.float32]
|
||||
float64: np.dtype[np.float64]
|
||||
complex64: np.dtype[np.complex64]
|
||||
complex128: np.dtype[np.complex128]
|
||||
|
||||
_EmptyDict: TypeAlias = dict[Never, Never]
|
||||
|
||||
|
||||
@final
|
||||
class __array_namespace_info__:
|
||||
__module__: ClassVar[Literal['numpy']]
|
||||
|
||||
def capabilities(self) -> _Capabilities: ...
|
||||
def default_device(self) -> _Device: ...
|
||||
def default_dtypes(
|
||||
self,
|
||||
*,
|
||||
device: _DeviceLike = ...,
|
||||
) -> _DefaultDTypes: ...
|
||||
def devices(self) -> list[_Device]: ...
|
||||
|
||||
@overload
|
||||
def dtypes(
|
||||
self,
|
||||
*,
|
||||
device: _DeviceLike = ...,
|
||||
kind: None = ...,
|
||||
) -> _DTypes: ...
|
||||
@overload
|
||||
def dtypes(
|
||||
self,
|
||||
*,
|
||||
device: _DeviceLike = ...,
|
||||
kind: _Permute1[_KindBool],
|
||||
) -> _DTypesBool: ...
|
||||
@overload
|
||||
def dtypes(
|
||||
self,
|
||||
*,
|
||||
device: _DeviceLike = ...,
|
||||
kind: _Permute1[_KindInt],
|
||||
) -> _DTypesInt: ...
|
||||
@overload
|
||||
def dtypes(
|
||||
self,
|
||||
*,
|
||||
device: _DeviceLike = ...,
|
||||
kind: _Permute1[_KindUInt],
|
||||
) -> _DTypesUInt: ...
|
||||
@overload
|
||||
def dtypes(
|
||||
self,
|
||||
*,
|
||||
device: _DeviceLike = ...,
|
||||
kind: _Permute1[_KindFloat],
|
||||
) -> _DTypesFloat: ...
|
||||
@overload
|
||||
def dtypes(
|
||||
self,
|
||||
*,
|
||||
device: _DeviceLike = ...,
|
||||
kind: _Permute1[_KindComplex],
|
||||
) -> _DTypesComplex: ...
|
||||
@overload
|
||||
def dtypes(
|
||||
self,
|
||||
*,
|
||||
device: _DeviceLike = ...,
|
||||
kind: (
|
||||
_Permute1[_KindInteger]
|
||||
| _Permute2[_KindInt, _KindUInt]
|
||||
),
|
||||
) -> _DTypesInteger: ...
|
||||
@overload
|
||||
def dtypes(
|
||||
self,
|
||||
*,
|
||||
device: _DeviceLike = ...,
|
||||
kind: (
|
||||
_Permute1[_KindNumber]
|
||||
| _Permute3[_KindInteger, _KindFloat, _KindComplex]
|
||||
),
|
||||
) -> _DTypesNumber: ...
|
||||
@overload
|
||||
def dtypes(
|
||||
self,
|
||||
*,
|
||||
device: _DeviceLike = ...,
|
||||
kind: tuple[()],
|
||||
) -> _EmptyDict: ...
|
||||
@overload
|
||||
def dtypes(
|
||||
self,
|
||||
*,
|
||||
device: _DeviceLike = ...,
|
||||
kind: tuple[_Kind, ...],
|
||||
) -> _DTypesUnion: ...
|
||||
39
.CondaPkg/env/Lib/site-packages/numpy/_configtool.py
vendored
Normal file
39
.CondaPkg/env/Lib/site-packages/numpy/_configtool.py
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
import argparse
|
||||
from pathlib import Path
|
||||
import sys
|
||||
|
||||
from .version import __version__
|
||||
from .lib._utils_impl import get_include
|
||||
|
||||
|
||||
def main() -> None:
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument(
|
||||
"--version",
|
||||
action="version",
|
||||
version=__version__,
|
||||
help="Print the version and exit.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--cflags",
|
||||
action="store_true",
|
||||
help="Compile flag needed when using the NumPy headers.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--pkgconfigdir",
|
||||
action="store_true",
|
||||
help=("Print the pkgconfig directory in which `numpy.pc` is stored "
|
||||
"(useful for setting $PKG_CONFIG_PATH)."),
|
||||
)
|
||||
args = parser.parse_args()
|
||||
if not sys.argv[1:]:
|
||||
parser.print_help()
|
||||
if args.cflags:
|
||||
print("-I" + get_include())
|
||||
if args.pkgconfigdir:
|
||||
_path = Path(get_include()) / '..' / 'lib' / 'pkgconfig'
|
||||
print(_path.resolve())
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
180
.CondaPkg/env/Lib/site-packages/numpy/_core/__init__.py
vendored
Normal file
180
.CondaPkg/env/Lib/site-packages/numpy/_core/__init__.py
vendored
Normal file
@@ -0,0 +1,180 @@
|
||||
"""
|
||||
Contains the core of NumPy: ndarray, ufuncs, dtypes, etc.
|
||||
|
||||
Please note that this module is private. All functions and objects
|
||||
are available in the main ``numpy`` namespace - use that instead.
|
||||
|
||||
"""
|
||||
|
||||
import os
|
||||
|
||||
from numpy.version import version as __version__
|
||||
|
||||
|
||||
# disables OpenBLAS affinity setting of the main thread that limits
|
||||
# python threads or processes to one core
|
||||
env_added = []
|
||||
for envkey in ['OPENBLAS_MAIN_FREE', 'GOTOBLAS_MAIN_FREE']:
|
||||
if envkey not in os.environ:
|
||||
os.environ[envkey] = '1'
|
||||
env_added.append(envkey)
|
||||
|
||||
try:
|
||||
from . import multiarray
|
||||
except ImportError as exc:
|
||||
import sys
|
||||
msg = """
|
||||
|
||||
IMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!
|
||||
|
||||
Importing the numpy C-extensions failed. This error can happen for
|
||||
many reasons, often due to issues with your setup or how NumPy was
|
||||
installed.
|
||||
|
||||
We have compiled some common reasons and troubleshooting tips at:
|
||||
|
||||
https://numpy.org/devdocs/user/troubleshooting-importerror.html
|
||||
|
||||
Please note and check the following:
|
||||
|
||||
* The Python version is: Python%d.%d from "%s"
|
||||
* The NumPy version is: "%s"
|
||||
|
||||
and make sure that they are the versions you expect.
|
||||
Please carefully study the documentation linked above for further help.
|
||||
|
||||
Original error was: %s
|
||||
""" % (sys.version_info[0], sys.version_info[1], sys.executable,
|
||||
__version__, exc)
|
||||
raise ImportError(msg)
|
||||
finally:
|
||||
for envkey in env_added:
|
||||
del os.environ[envkey]
|
||||
del envkey
|
||||
del env_added
|
||||
del os
|
||||
|
||||
from . import umath
|
||||
|
||||
# Check that multiarray,umath are pure python modules wrapping
|
||||
# _multiarray_umath and not either of the old c-extension modules
|
||||
if not (hasattr(multiarray, '_multiarray_umath') and
|
||||
hasattr(umath, '_multiarray_umath')):
|
||||
import sys
|
||||
path = sys.modules['numpy'].__path__
|
||||
msg = ("Something is wrong with the numpy installation. "
|
||||
"While importing we detected an older version of "
|
||||
"numpy in {}. One method of fixing this is to repeatedly uninstall "
|
||||
"numpy until none is found, then reinstall this version.")
|
||||
raise ImportError(msg.format(path))
|
||||
|
||||
from . import numerictypes as nt
|
||||
from .numerictypes import sctypes, sctypeDict
|
||||
multiarray.set_typeDict(nt.sctypeDict)
|
||||
from . import numeric
|
||||
from .numeric import *
|
||||
from . import fromnumeric
|
||||
from .fromnumeric import *
|
||||
from .records import record, recarray
|
||||
# Note: module name memmap is overwritten by a class with same name
|
||||
from .memmap import *
|
||||
from . import function_base
|
||||
from .function_base import *
|
||||
from . import _machar
|
||||
from . import getlimits
|
||||
from .getlimits import *
|
||||
from . import shape_base
|
||||
from .shape_base import *
|
||||
from . import einsumfunc
|
||||
from .einsumfunc import *
|
||||
del nt
|
||||
|
||||
from .numeric import absolute as abs
|
||||
|
||||
# do this after everything else, to minimize the chance of this misleadingly
|
||||
# appearing in an import-time traceback
|
||||
from . import _add_newdocs
|
||||
from . import _add_newdocs_scalars
|
||||
# add these for module-freeze analysis (like PyInstaller)
|
||||
from . import _dtype_ctypes
|
||||
from . import _internal
|
||||
from . import _dtype
|
||||
from . import _methods
|
||||
|
||||
acos = numeric.arccos
|
||||
acosh = numeric.arccosh
|
||||
asin = numeric.arcsin
|
||||
asinh = numeric.arcsinh
|
||||
atan = numeric.arctan
|
||||
atanh = numeric.arctanh
|
||||
atan2 = numeric.arctan2
|
||||
concat = numeric.concatenate
|
||||
bitwise_left_shift = numeric.left_shift
|
||||
bitwise_invert = numeric.invert
|
||||
bitwise_right_shift = numeric.right_shift
|
||||
permute_dims = numeric.transpose
|
||||
pow = numeric.power
|
||||
|
||||
__all__ = [
|
||||
"abs", "acos", "acosh", "asin", "asinh", "atan", "atanh", "atan2",
|
||||
"bitwise_invert", "bitwise_left_shift", "bitwise_right_shift", "concat",
|
||||
"pow", "permute_dims", "memmap", "sctypeDict", "record", "recarray"
|
||||
]
|
||||
__all__ += numeric.__all__
|
||||
__all__ += function_base.__all__
|
||||
__all__ += getlimits.__all__
|
||||
__all__ += shape_base.__all__
|
||||
__all__ += einsumfunc.__all__
|
||||
|
||||
|
||||
def _ufunc_reduce(func):
|
||||
# Report the `__name__`. pickle will try to find the module. Note that
|
||||
# pickle supports for this `__name__` to be a `__qualname__`. It may
|
||||
# make sense to add a `__qualname__` to ufuncs, to allow this more
|
||||
# explicitly (Numba has ufuncs as attributes).
|
||||
# See also: https://github.com/dask/distributed/issues/3450
|
||||
return func.__name__
|
||||
|
||||
|
||||
def _DType_reconstruct(scalar_type):
|
||||
# This is a work-around to pickle type(np.dtype(np.float64)), etc.
|
||||
# and it should eventually be replaced with a better solution, e.g. when
|
||||
# DTypes become HeapTypes.
|
||||
return type(dtype(scalar_type))
|
||||
|
||||
|
||||
def _DType_reduce(DType):
|
||||
# As types/classes, most DTypes can simply be pickled by their name:
|
||||
if not DType._legacy or DType.__module__ == "numpy.dtypes":
|
||||
return DType.__name__
|
||||
|
||||
# However, user defined legacy dtypes (like rational) do not end up in
|
||||
# `numpy.dtypes` as module and do not have a public class at all.
|
||||
# For these, we pickle them by reconstructing them from the scalar type:
|
||||
scalar_type = DType.type
|
||||
return _DType_reconstruct, (scalar_type,)
|
||||
|
||||
|
||||
def __getattr__(name):
|
||||
# Deprecated 2022-11-22, NumPy 1.25.
|
||||
if name == "MachAr":
|
||||
import warnings
|
||||
warnings.warn(
|
||||
"The `np._core.MachAr` is considered private API (NumPy 1.24)",
|
||||
DeprecationWarning, stacklevel=2,
|
||||
)
|
||||
return _machar.MachAr
|
||||
raise AttributeError(f"Module {__name__!r} has no attribute {name!r}")
|
||||
|
||||
|
||||
import copyreg
|
||||
|
||||
copyreg.pickle(ufunc, _ufunc_reduce)
|
||||
copyreg.pickle(type(dtype), _DType_reduce, _DType_reconstruct)
|
||||
|
||||
# Unclutter namespace (must keep _*_reconstruct for unpickling)
|
||||
del copyreg, _ufunc_reduce, _DType_reduce
|
||||
|
||||
from numpy._pytesttester import PytestTester
|
||||
test = PytestTester(__name__)
|
||||
del PytestTester
|
||||
2
.CondaPkg/env/Lib/site-packages/numpy/_core/__init__.pyi
vendored
Normal file
2
.CondaPkg/env/Lib/site-packages/numpy/_core/__init__.pyi
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
# NOTE: The `np._core` namespace is deliberately kept empty due to it
|
||||
# being private
|
||||
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/__init__.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/__init__.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/_add_newdocs.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/_add_newdocs.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/_add_newdocs_scalars.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/_add_newdocs_scalars.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/_asarray.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/_asarray.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/_dtype.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/_dtype.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/_dtype_ctypes.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/_dtype_ctypes.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/_exceptions.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/_exceptions.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/_internal.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/_internal.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/_machar.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/_machar.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/_methods.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/_methods.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/_string_helpers.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/_string_helpers.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/_type_aliases.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/_type_aliases.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/_ufunc_config.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/_ufunc_config.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/arrayprint.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/arrayprint.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/cversions.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/cversions.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/defchararray.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/defchararray.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/einsumfunc.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/einsumfunc.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/fromnumeric.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/fromnumeric.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/function_base.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/function_base.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/getlimits.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/getlimits.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/memmap.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/memmap.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/multiarray.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/multiarray.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/numeric.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/numeric.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/numerictypes.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/numerictypes.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/overrides.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/overrides.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/printoptions.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/printoptions.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/records.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/records.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/shape_base.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/shape_base.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/strings.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/strings.cpython-312.pyc
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/umath.cpython-312.pyc
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/__pycache__/umath.cpython-312.pyc
vendored
Normal file
Binary file not shown.
7089
.CondaPkg/env/Lib/site-packages/numpy/_core/_add_newdocs.py
vendored
Normal file
7089
.CondaPkg/env/Lib/site-packages/numpy/_core/_add_newdocs.py
vendored
Normal file
File diff suppressed because it is too large
Load Diff
389
.CondaPkg/env/Lib/site-packages/numpy/_core/_add_newdocs_scalars.py
vendored
Normal file
389
.CondaPkg/env/Lib/site-packages/numpy/_core/_add_newdocs_scalars.py
vendored
Normal file
@@ -0,0 +1,389 @@
|
||||
"""
|
||||
This file is separate from ``_add_newdocs.py`` so that it can be mocked out by
|
||||
our sphinx ``conf.py`` during doc builds, where we want to avoid showing
|
||||
platform-dependent information.
|
||||
"""
|
||||
import sys
|
||||
import os
|
||||
from numpy._core import dtype
|
||||
from numpy._core import numerictypes as _numerictypes
|
||||
from numpy._core.function_base import add_newdoc
|
||||
|
||||
##############################################################################
|
||||
#
|
||||
# Documentation for concrete scalar classes
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
def numeric_type_aliases(aliases):
|
||||
def type_aliases_gen():
|
||||
for alias, doc in aliases:
|
||||
try:
|
||||
alias_type = getattr(_numerictypes, alias)
|
||||
except AttributeError:
|
||||
# The set of aliases that actually exist varies between platforms
|
||||
pass
|
||||
else:
|
||||
yield (alias_type, alias, doc)
|
||||
return list(type_aliases_gen())
|
||||
|
||||
|
||||
possible_aliases = numeric_type_aliases([
|
||||
('int8', '8-bit signed integer (``-128`` to ``127``)'),
|
||||
('int16', '16-bit signed integer (``-32_768`` to ``32_767``)'),
|
||||
('int32', '32-bit signed integer (``-2_147_483_648`` to ``2_147_483_647``)'),
|
||||
('int64', '64-bit signed integer (``-9_223_372_036_854_775_808`` to ``9_223_372_036_854_775_807``)'),
|
||||
('intp', 'Signed integer large enough to fit pointer, compatible with C ``intptr_t``'),
|
||||
('uint8', '8-bit unsigned integer (``0`` to ``255``)'),
|
||||
('uint16', '16-bit unsigned integer (``0`` to ``65_535``)'),
|
||||
('uint32', '32-bit unsigned integer (``0`` to ``4_294_967_295``)'),
|
||||
('uint64', '64-bit unsigned integer (``0`` to ``18_446_744_073_709_551_615``)'),
|
||||
('uintp', 'Unsigned integer large enough to fit pointer, compatible with C ``uintptr_t``'),
|
||||
('float16', '16-bit-precision floating-point number type: sign bit, 5 bits exponent, 10 bits mantissa'),
|
||||
('float32', '32-bit-precision floating-point number type: sign bit, 8 bits exponent, 23 bits mantissa'),
|
||||
('float64', '64-bit precision floating-point number type: sign bit, 11 bits exponent, 52 bits mantissa'),
|
||||
('float96', '96-bit extended-precision floating-point number type'),
|
||||
('float128', '128-bit extended-precision floating-point number type'),
|
||||
('complex64', 'Complex number type composed of 2 32-bit-precision floating-point numbers'),
|
||||
('complex128', 'Complex number type composed of 2 64-bit-precision floating-point numbers'),
|
||||
('complex192', 'Complex number type composed of 2 96-bit extended-precision floating-point numbers'),
|
||||
('complex256', 'Complex number type composed of 2 128-bit extended-precision floating-point numbers'),
|
||||
])
|
||||
|
||||
|
||||
def _get_platform_and_machine():
|
||||
try:
|
||||
system, _, _, _, machine = os.uname()
|
||||
except AttributeError:
|
||||
system = sys.platform
|
||||
if system == 'win32':
|
||||
machine = os.environ.get('PROCESSOR_ARCHITEW6432', '') \
|
||||
or os.environ.get('PROCESSOR_ARCHITECTURE', '')
|
||||
else:
|
||||
machine = 'unknown'
|
||||
return system, machine
|
||||
|
||||
|
||||
_system, _machine = _get_platform_and_machine()
|
||||
_doc_alias_string = f":Alias on this platform ({_system} {_machine}):"
|
||||
|
||||
|
||||
def add_newdoc_for_scalar_type(obj, fixed_aliases, doc):
|
||||
# note: `:field: value` is rST syntax which renders as field lists.
|
||||
o = getattr(_numerictypes, obj)
|
||||
|
||||
character_code = dtype(o).char
|
||||
canonical_name_doc = "" if obj == o.__name__ else \
|
||||
f":Canonical name: `numpy.{obj}`\n "
|
||||
if fixed_aliases:
|
||||
alias_doc = ''.join(f":Alias: `numpy.{alias}`\n "
|
||||
for alias in fixed_aliases)
|
||||
else:
|
||||
alias_doc = ''
|
||||
alias_doc += ''.join(f"{_doc_alias_string} `numpy.{alias}`: {doc}.\n "
|
||||
for (alias_type, alias, doc) in possible_aliases if alias_type is o)
|
||||
|
||||
docstring = f"""
|
||||
{doc.strip()}
|
||||
|
||||
:Character code: ``'{character_code}'``
|
||||
{canonical_name_doc}{alias_doc}
|
||||
"""
|
||||
|
||||
add_newdoc('numpy._core.numerictypes', obj, docstring)
|
||||
|
||||
|
||||
_bool_docstring = (
|
||||
"""
|
||||
Boolean type (True or False), stored as a byte.
|
||||
|
||||
.. warning::
|
||||
|
||||
The :class:`bool` type is not a subclass of the :class:`int_` type
|
||||
(the :class:`bool` is not even a number type). This is different
|
||||
than Python's default implementation of :class:`bool` as a
|
||||
sub-class of :class:`int`.
|
||||
"""
|
||||
)
|
||||
|
||||
add_newdoc_for_scalar_type('bool', [], _bool_docstring)
|
||||
|
||||
add_newdoc_for_scalar_type('bool_', [], _bool_docstring)
|
||||
|
||||
add_newdoc_for_scalar_type('byte', [],
|
||||
"""
|
||||
Signed integer type, compatible with C ``char``.
|
||||
""")
|
||||
|
||||
add_newdoc_for_scalar_type('short', [],
|
||||
"""
|
||||
Signed integer type, compatible with C ``short``.
|
||||
""")
|
||||
|
||||
add_newdoc_for_scalar_type('intc', [],
|
||||
"""
|
||||
Signed integer type, compatible with C ``int``.
|
||||
""")
|
||||
|
||||
# TODO: These docs probably need an if to highlight the default rather than
|
||||
# the C-types (and be correct).
|
||||
add_newdoc_for_scalar_type('int_', [],
|
||||
"""
|
||||
Default signed integer type, 64bit on 64bit systems and 32bit on 32bit
|
||||
systems.
|
||||
""")
|
||||
|
||||
add_newdoc_for_scalar_type('longlong', [],
|
||||
"""
|
||||
Signed integer type, compatible with C ``long long``.
|
||||
""")
|
||||
|
||||
add_newdoc_for_scalar_type('ubyte', [],
|
||||
"""
|
||||
Unsigned integer type, compatible with C ``unsigned char``.
|
||||
""")
|
||||
|
||||
add_newdoc_for_scalar_type('ushort', [],
|
||||
"""
|
||||
Unsigned integer type, compatible with C ``unsigned short``.
|
||||
""")
|
||||
|
||||
add_newdoc_for_scalar_type('uintc', [],
|
||||
"""
|
||||
Unsigned integer type, compatible with C ``unsigned int``.
|
||||
""")
|
||||
|
||||
add_newdoc_for_scalar_type('uint', [],
|
||||
"""
|
||||
Unsigned signed integer type, 64bit on 64bit systems and 32bit on 32bit
|
||||
systems.
|
||||
""")
|
||||
|
||||
add_newdoc_for_scalar_type('ulonglong', [],
|
||||
"""
|
||||
Signed integer type, compatible with C ``unsigned long long``.
|
||||
""")
|
||||
|
||||
add_newdoc_for_scalar_type('half', [],
|
||||
"""
|
||||
Half-precision floating-point number type.
|
||||
""")
|
||||
|
||||
add_newdoc_for_scalar_type('single', [],
|
||||
"""
|
||||
Single-precision floating-point number type, compatible with C ``float``.
|
||||
""")
|
||||
|
||||
add_newdoc_for_scalar_type('double', [],
|
||||
"""
|
||||
Double-precision floating-point number type, compatible with Python
|
||||
:class:`float` and C ``double``.
|
||||
""")
|
||||
|
||||
add_newdoc_for_scalar_type('longdouble', [],
|
||||
"""
|
||||
Extended-precision floating-point number type, compatible with C
|
||||
``long double`` but not necessarily with IEEE 754 quadruple-precision.
|
||||
""")
|
||||
|
||||
add_newdoc_for_scalar_type('csingle', [],
|
||||
"""
|
||||
Complex number type composed of two single-precision floating-point
|
||||
numbers.
|
||||
""")
|
||||
|
||||
add_newdoc_for_scalar_type('cdouble', [],
|
||||
"""
|
||||
Complex number type composed of two double-precision floating-point
|
||||
numbers, compatible with Python :class:`complex`.
|
||||
""")
|
||||
|
||||
add_newdoc_for_scalar_type('clongdouble', [],
|
||||
"""
|
||||
Complex number type composed of two extended-precision floating-point
|
||||
numbers.
|
||||
""")
|
||||
|
||||
add_newdoc_for_scalar_type('object_', [],
|
||||
"""
|
||||
Any Python object.
|
||||
""")
|
||||
|
||||
add_newdoc_for_scalar_type('str_', [],
|
||||
r"""
|
||||
A unicode string.
|
||||
|
||||
This type strips trailing null codepoints.
|
||||
|
||||
>>> s = np.str_("abc\x00")
|
||||
>>> s
|
||||
'abc'
|
||||
|
||||
Unlike the builtin :class:`str`, this supports the
|
||||
:ref:`python:bufferobjects`, exposing its contents as UCS4:
|
||||
|
||||
>>> m = memoryview(np.str_("abc"))
|
||||
>>> m.format
|
||||
'3w'
|
||||
>>> m.tobytes()
|
||||
b'a\x00\x00\x00b\x00\x00\x00c\x00\x00\x00'
|
||||
""")
|
||||
|
||||
add_newdoc_for_scalar_type('bytes_', [],
|
||||
r"""
|
||||
A byte string.
|
||||
|
||||
When used in arrays, this type strips trailing null bytes.
|
||||
""")
|
||||
|
||||
add_newdoc_for_scalar_type('void', [],
|
||||
r"""
|
||||
np.void(length_or_data, /, dtype=None)
|
||||
|
||||
Create a new structured or unstructured void scalar.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
length_or_data : int, array-like, bytes-like, object
|
||||
One of multiple meanings (see notes). The length or
|
||||
bytes data of an unstructured void. Or alternatively,
|
||||
the data to be stored in the new scalar when `dtype`
|
||||
is provided.
|
||||
This can be an array-like, in which case an array may
|
||||
be returned.
|
||||
dtype : dtype, optional
|
||||
If provided the dtype of the new scalar. This dtype must
|
||||
be "void" dtype (i.e. a structured or unstructured void,
|
||||
see also :ref:`defining-structured-types`).
|
||||
|
||||
.. versionadded:: 1.24
|
||||
|
||||
Notes
|
||||
-----
|
||||
For historical reasons and because void scalars can represent both
|
||||
arbitrary byte data and structured dtypes, the void constructor
|
||||
has three calling conventions:
|
||||
|
||||
1. ``np.void(5)`` creates a ``dtype="V5"`` scalar filled with five
|
||||
``\0`` bytes. The 5 can be a Python or NumPy integer.
|
||||
2. ``np.void(b"bytes-like")`` creates a void scalar from the byte string.
|
||||
The dtype itemsize will match the byte string length, here ``"V10"``.
|
||||
3. When a ``dtype=`` is passed the call is roughly the same as an
|
||||
array creation. However, a void scalar rather than array is returned.
|
||||
|
||||
Please see the examples which show all three different conventions.
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> np.void(5)
|
||||
np.void(b'\x00\x00\x00\x00\x00')
|
||||
>>> np.void(b'abcd')
|
||||
np.void(b'\x61\x62\x63\x64')
|
||||
>>> np.void((3.2, b'eggs'), dtype="d,S5")
|
||||
np.void((3.2, b'eggs'), dtype=[('f0', '<f8'), ('f1', 'S5')])
|
||||
>>> np.void(3, dtype=[('x', np.int8), ('y', np.int8)])
|
||||
np.void((3, 3), dtype=[('x', 'i1'), ('y', 'i1')])
|
||||
|
||||
""")
|
||||
|
||||
add_newdoc_for_scalar_type('datetime64', [],
|
||||
"""
|
||||
If created from a 64-bit integer, it represents an offset from
|
||||
``1970-01-01T00:00:00``.
|
||||
If created from string, the string can be in ISO 8601 date
|
||||
or datetime format.
|
||||
|
||||
When parsing a string to create a datetime object, if the string contains
|
||||
a trailing timezone (A 'Z' or a timezone offset), the timezone will be
|
||||
dropped and a User Warning is given.
|
||||
|
||||
Datetime64 objects should be considered to be UTC and therefore have an
|
||||
offset of +0000.
|
||||
|
||||
>>> np.datetime64(10, 'Y')
|
||||
np.datetime64('1980')
|
||||
>>> np.datetime64('1980', 'Y')
|
||||
np.datetime64('1980')
|
||||
>>> np.datetime64(10, 'D')
|
||||
np.datetime64('1970-01-11')
|
||||
|
||||
See :ref:`arrays.datetime` for more information.
|
||||
""")
|
||||
|
||||
add_newdoc_for_scalar_type('timedelta64', [],
|
||||
"""
|
||||
A timedelta stored as a 64-bit integer.
|
||||
|
||||
See :ref:`arrays.datetime` for more information.
|
||||
""")
|
||||
|
||||
add_newdoc('numpy._core.numerictypes', "integer", ('is_integer',
|
||||
"""
|
||||
integer.is_integer() -> bool
|
||||
|
||||
Return ``True`` if the number is finite with integral value.
|
||||
|
||||
.. versionadded:: 1.22
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> import numpy as np
|
||||
>>> np.int64(-2).is_integer()
|
||||
True
|
||||
>>> np.uint32(5).is_integer()
|
||||
True
|
||||
"""))
|
||||
|
||||
# TODO: work out how to put this on the base class, np.floating
|
||||
for float_name in ('half', 'single', 'double', 'longdouble'):
|
||||
add_newdoc('numpy._core.numerictypes', float_name, ('as_integer_ratio',
|
||||
"""
|
||||
{ftype}.as_integer_ratio() -> (int, int)
|
||||
|
||||
Return a pair of integers, whose ratio is exactly equal to the original
|
||||
floating point number, and with a positive denominator.
|
||||
Raise `OverflowError` on infinities and a `ValueError` on NaNs.
|
||||
|
||||
>>> np.{ftype}(10.0).as_integer_ratio()
|
||||
(10, 1)
|
||||
>>> np.{ftype}(0.0).as_integer_ratio()
|
||||
(0, 1)
|
||||
>>> np.{ftype}(-.25).as_integer_ratio()
|
||||
(-1, 4)
|
||||
""".format(ftype=float_name)))
|
||||
|
||||
add_newdoc('numpy._core.numerictypes', float_name, ('is_integer',
|
||||
f"""
|
||||
{float_name}.is_integer() -> bool
|
||||
|
||||
Return ``True`` if the floating point number is finite with integral
|
||||
value, and ``False`` otherwise.
|
||||
|
||||
.. versionadded:: 1.22
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> np.{float_name}(-2.0).is_integer()
|
||||
True
|
||||
>>> np.{float_name}(3.2).is_integer()
|
||||
False
|
||||
"""))
|
||||
|
||||
for int_name in ('int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32',
|
||||
'int64', 'uint64', 'int64', 'uint64', 'int64', 'uint64'):
|
||||
# Add negative examples for signed cases by checking typecode
|
||||
add_newdoc('numpy._core.numerictypes', int_name, ('bit_count',
|
||||
f"""
|
||||
{int_name}.bit_count() -> int
|
||||
|
||||
Computes the number of 1-bits in the absolute value of the input.
|
||||
Analogous to the builtin `int.bit_count` or ``popcount`` in C++.
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> np.{int_name}(127).bit_count()
|
||||
7""" +
|
||||
(f"""
|
||||
>>> np.{int_name}(-127).bit_count()
|
||||
7
|
||||
""" if dtype(int_name).char.islower() else "")))
|
||||
135
.CondaPkg/env/Lib/site-packages/numpy/_core/_asarray.py
vendored
Normal file
135
.CondaPkg/env/Lib/site-packages/numpy/_core/_asarray.py
vendored
Normal file
@@ -0,0 +1,135 @@
|
||||
"""
|
||||
Functions in the ``as*array`` family that promote array-likes into arrays.
|
||||
|
||||
`require` fits this category despite its name not matching this pattern.
|
||||
"""
|
||||
from .overrides import (
|
||||
array_function_dispatch,
|
||||
set_array_function_like_doc,
|
||||
set_module,
|
||||
)
|
||||
from .multiarray import array, asanyarray
|
||||
|
||||
|
||||
__all__ = ["require"]
|
||||
|
||||
|
||||
POSSIBLE_FLAGS = {
|
||||
'C': 'C', 'C_CONTIGUOUS': 'C', 'CONTIGUOUS': 'C',
|
||||
'F': 'F', 'F_CONTIGUOUS': 'F', 'FORTRAN': 'F',
|
||||
'A': 'A', 'ALIGNED': 'A',
|
||||
'W': 'W', 'WRITEABLE': 'W',
|
||||
'O': 'O', 'OWNDATA': 'O',
|
||||
'E': 'E', 'ENSUREARRAY': 'E'
|
||||
}
|
||||
|
||||
|
||||
@set_array_function_like_doc
|
||||
@set_module('numpy')
|
||||
def require(a, dtype=None, requirements=None, *, like=None):
|
||||
"""
|
||||
Return an ndarray of the provided type that satisfies requirements.
|
||||
|
||||
This function is useful to be sure that an array with the correct flags
|
||||
is returned for passing to compiled code (perhaps through ctypes).
|
||||
|
||||
Parameters
|
||||
----------
|
||||
a : array_like
|
||||
The object to be converted to a type-and-requirement-satisfying array.
|
||||
dtype : data-type
|
||||
The required data-type. If None preserve the current dtype. If your
|
||||
application requires the data to be in native byteorder, include
|
||||
a byteorder specification as a part of the dtype specification.
|
||||
requirements : str or sequence of str
|
||||
The requirements list can be any of the following
|
||||
|
||||
* 'F_CONTIGUOUS' ('F') - ensure a Fortran-contiguous array
|
||||
* 'C_CONTIGUOUS' ('C') - ensure a C-contiguous array
|
||||
* 'ALIGNED' ('A') - ensure a data-type aligned array
|
||||
* 'WRITEABLE' ('W') - ensure a writable array
|
||||
* 'OWNDATA' ('O') - ensure an array that owns its own data
|
||||
* 'ENSUREARRAY', ('E') - ensure a base array, instead of a subclass
|
||||
${ARRAY_FUNCTION_LIKE}
|
||||
|
||||
.. versionadded:: 1.20.0
|
||||
|
||||
Returns
|
||||
-------
|
||||
out : ndarray
|
||||
Array with specified requirements and type if given.
|
||||
|
||||
See Also
|
||||
--------
|
||||
asarray : Convert input to an ndarray.
|
||||
asanyarray : Convert to an ndarray, but pass through ndarray subclasses.
|
||||
ascontiguousarray : Convert input to a contiguous array.
|
||||
asfortranarray : Convert input to an ndarray with column-major
|
||||
memory order.
|
||||
ndarray.flags : Information about the memory layout of the array.
|
||||
|
||||
Notes
|
||||
-----
|
||||
The returned array will be guaranteed to have the listed requirements
|
||||
by making a copy if needed.
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> import numpy as np
|
||||
>>> x = np.arange(6).reshape(2,3)
|
||||
>>> x.flags
|
||||
C_CONTIGUOUS : True
|
||||
F_CONTIGUOUS : False
|
||||
OWNDATA : False
|
||||
WRITEABLE : True
|
||||
ALIGNED : True
|
||||
WRITEBACKIFCOPY : False
|
||||
|
||||
>>> y = np.require(x, dtype=np.float32, requirements=['A', 'O', 'W', 'F'])
|
||||
>>> y.flags
|
||||
C_CONTIGUOUS : False
|
||||
F_CONTIGUOUS : True
|
||||
OWNDATA : True
|
||||
WRITEABLE : True
|
||||
ALIGNED : True
|
||||
WRITEBACKIFCOPY : False
|
||||
|
||||
"""
|
||||
if like is not None:
|
||||
return _require_with_like(
|
||||
like,
|
||||
a,
|
||||
dtype=dtype,
|
||||
requirements=requirements,
|
||||
)
|
||||
|
||||
if not requirements:
|
||||
return asanyarray(a, dtype=dtype)
|
||||
|
||||
requirements = {POSSIBLE_FLAGS[x.upper()] for x in requirements}
|
||||
|
||||
if 'E' in requirements:
|
||||
requirements.remove('E')
|
||||
subok = False
|
||||
else:
|
||||
subok = True
|
||||
|
||||
order = 'A'
|
||||
if requirements >= {'C', 'F'}:
|
||||
raise ValueError('Cannot specify both "C" and "F" order')
|
||||
elif 'F' in requirements:
|
||||
order = 'F'
|
||||
requirements.remove('F')
|
||||
elif 'C' in requirements:
|
||||
order = 'C'
|
||||
requirements.remove('C')
|
||||
|
||||
arr = array(a, dtype=dtype, order=order, copy=None, subok=subok)
|
||||
|
||||
for prop in requirements:
|
||||
if not arr.flags[prop]:
|
||||
return arr.copy(order)
|
||||
return arr
|
||||
|
||||
|
||||
_require_with_like = array_function_dispatch()(require)
|
||||
41
.CondaPkg/env/Lib/site-packages/numpy/_core/_asarray.pyi
vendored
Normal file
41
.CondaPkg/env/Lib/site-packages/numpy/_core/_asarray.pyi
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
from collections.abc import Iterable
|
||||
from typing import Any, TypeVar, overload, Literal
|
||||
|
||||
from numpy._typing import NDArray, DTypeLike, _SupportsArrayFunc
|
||||
|
||||
_ArrayType = TypeVar("_ArrayType", bound=NDArray[Any])
|
||||
|
||||
_Requirements = Literal[
|
||||
"C", "C_CONTIGUOUS", "CONTIGUOUS",
|
||||
"F", "F_CONTIGUOUS", "FORTRAN",
|
||||
"A", "ALIGNED",
|
||||
"W", "WRITEABLE",
|
||||
"O", "OWNDATA"
|
||||
]
|
||||
_E = Literal["E", "ENSUREARRAY"]
|
||||
_RequirementsWithE = _Requirements | _E
|
||||
|
||||
@overload
|
||||
def require(
|
||||
a: _ArrayType,
|
||||
dtype: None = ...,
|
||||
requirements: None | _Requirements | Iterable[_Requirements] = ...,
|
||||
*,
|
||||
like: _SupportsArrayFunc = ...
|
||||
) -> _ArrayType: ...
|
||||
@overload
|
||||
def require(
|
||||
a: object,
|
||||
dtype: DTypeLike = ...,
|
||||
requirements: _E | Iterable[_RequirementsWithE] = ...,
|
||||
*,
|
||||
like: _SupportsArrayFunc = ...
|
||||
) -> NDArray[Any]: ...
|
||||
@overload
|
||||
def require(
|
||||
a: object,
|
||||
dtype: DTypeLike = ...,
|
||||
requirements: None | _Requirements | Iterable[_Requirements] = ...,
|
||||
*,
|
||||
like: _SupportsArrayFunc = ...
|
||||
) -> NDArray[Any]: ...
|
||||
374
.CondaPkg/env/Lib/site-packages/numpy/_core/_dtype.py
vendored
Normal file
374
.CondaPkg/env/Lib/site-packages/numpy/_core/_dtype.py
vendored
Normal file
@@ -0,0 +1,374 @@
|
||||
"""
|
||||
A place for code to be called from the implementation of np.dtype
|
||||
|
||||
String handling is much easier to do correctly in python.
|
||||
"""
|
||||
import numpy as np
|
||||
|
||||
|
||||
_kind_to_stem = {
|
||||
'u': 'uint',
|
||||
'i': 'int',
|
||||
'c': 'complex',
|
||||
'f': 'float',
|
||||
'b': 'bool',
|
||||
'V': 'void',
|
||||
'O': 'object',
|
||||
'M': 'datetime',
|
||||
'm': 'timedelta',
|
||||
'S': 'bytes',
|
||||
'U': 'str',
|
||||
}
|
||||
|
||||
|
||||
def _kind_name(dtype):
|
||||
try:
|
||||
return _kind_to_stem[dtype.kind]
|
||||
except KeyError as e:
|
||||
raise RuntimeError(
|
||||
"internal dtype error, unknown kind {!r}"
|
||||
.format(dtype.kind)
|
||||
) from None
|
||||
|
||||
|
||||
def __str__(dtype):
|
||||
if dtype.fields is not None:
|
||||
return _struct_str(dtype, include_align=True)
|
||||
elif dtype.subdtype:
|
||||
return _subarray_str(dtype)
|
||||
elif issubclass(dtype.type, np.flexible) or not dtype.isnative:
|
||||
return dtype.str
|
||||
else:
|
||||
return dtype.name
|
||||
|
||||
|
||||
def __repr__(dtype):
|
||||
arg_str = _construction_repr(dtype, include_align=False)
|
||||
if dtype.isalignedstruct:
|
||||
arg_str = arg_str + ", align=True"
|
||||
return "dtype({})".format(arg_str)
|
||||
|
||||
|
||||
def _unpack_field(dtype, offset, title=None):
|
||||
"""
|
||||
Helper function to normalize the items in dtype.fields.
|
||||
|
||||
Call as:
|
||||
|
||||
dtype, offset, title = _unpack_field(*dtype.fields[name])
|
||||
"""
|
||||
return dtype, offset, title
|
||||
|
||||
|
||||
def _isunsized(dtype):
|
||||
# PyDataType_ISUNSIZED
|
||||
return dtype.itemsize == 0
|
||||
|
||||
|
||||
def _construction_repr(dtype, include_align=False, short=False):
|
||||
"""
|
||||
Creates a string repr of the dtype, excluding the 'dtype()' part
|
||||
surrounding the object. This object may be a string, a list, or
|
||||
a dict depending on the nature of the dtype. This
|
||||
is the object passed as the first parameter to the dtype
|
||||
constructor, and if no additional constructor parameters are
|
||||
given, will reproduce the exact memory layout.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
short : bool
|
||||
If true, this creates a shorter repr using 'kind' and 'itemsize',
|
||||
instead of the longer type name.
|
||||
|
||||
include_align : bool
|
||||
If true, this includes the 'align=True' parameter
|
||||
inside the struct dtype construction dict when needed. Use this flag
|
||||
if you want a proper repr string without the 'dtype()' part around it.
|
||||
|
||||
If false, this does not preserve the
|
||||
'align=True' parameter or sticky NPY_ALIGNED_STRUCT flag for
|
||||
struct arrays like the regular repr does, because the 'align'
|
||||
flag is not part of first dtype constructor parameter. This
|
||||
mode is intended for a full 'repr', where the 'align=True' is
|
||||
provided as the second parameter.
|
||||
"""
|
||||
if dtype.fields is not None:
|
||||
return _struct_str(dtype, include_align=include_align)
|
||||
elif dtype.subdtype:
|
||||
return _subarray_str(dtype)
|
||||
else:
|
||||
return _scalar_str(dtype, short=short)
|
||||
|
||||
|
||||
def _scalar_str(dtype, short):
|
||||
byteorder = _byte_order_str(dtype)
|
||||
|
||||
if dtype.type == np.bool:
|
||||
if short:
|
||||
return "'?'"
|
||||
else:
|
||||
return "'bool'"
|
||||
|
||||
elif dtype.type == np.object_:
|
||||
# The object reference may be different sizes on different
|
||||
# platforms, so it should never include the itemsize here.
|
||||
return "'O'"
|
||||
|
||||
elif dtype.type == np.bytes_:
|
||||
if _isunsized(dtype):
|
||||
return "'S'"
|
||||
else:
|
||||
return "'S%d'" % dtype.itemsize
|
||||
|
||||
elif dtype.type == np.str_:
|
||||
if _isunsized(dtype):
|
||||
return "'%sU'" % byteorder
|
||||
else:
|
||||
return "'%sU%d'" % (byteorder, dtype.itemsize / 4)
|
||||
|
||||
elif dtype.type == str:
|
||||
return "'T'"
|
||||
|
||||
elif not type(dtype)._legacy:
|
||||
return f"'{byteorder}{type(dtype).__name__}{dtype.itemsize * 8}'"
|
||||
|
||||
# unlike the other types, subclasses of void are preserved - but
|
||||
# historically the repr does not actually reveal the subclass
|
||||
elif issubclass(dtype.type, np.void):
|
||||
if _isunsized(dtype):
|
||||
return "'V'"
|
||||
else:
|
||||
return "'V%d'" % dtype.itemsize
|
||||
|
||||
elif dtype.type == np.datetime64:
|
||||
return "'%sM8%s'" % (byteorder, _datetime_metadata_str(dtype))
|
||||
|
||||
elif dtype.type == np.timedelta64:
|
||||
return "'%sm8%s'" % (byteorder, _datetime_metadata_str(dtype))
|
||||
|
||||
elif np.issubdtype(dtype, np.number):
|
||||
# Short repr with endianness, like '<f8'
|
||||
if short or dtype.byteorder not in ('=', '|'):
|
||||
return "'%s%c%d'" % (byteorder, dtype.kind, dtype.itemsize)
|
||||
|
||||
# Longer repr, like 'float64'
|
||||
else:
|
||||
return "'%s%d'" % (_kind_name(dtype), 8*dtype.itemsize)
|
||||
|
||||
elif dtype.isbuiltin == 2:
|
||||
return dtype.type.__name__
|
||||
|
||||
else:
|
||||
raise RuntimeError(
|
||||
"Internal error: NumPy dtype unrecognized type number")
|
||||
|
||||
|
||||
def _byte_order_str(dtype):
|
||||
""" Normalize byteorder to '<' or '>' """
|
||||
# hack to obtain the native and swapped byte order characters
|
||||
swapped = np.dtype(int).newbyteorder('S')
|
||||
native = swapped.newbyteorder('S')
|
||||
|
||||
byteorder = dtype.byteorder
|
||||
if byteorder == '=':
|
||||
return native.byteorder
|
||||
if byteorder == 'S':
|
||||
# TODO: this path can never be reached
|
||||
return swapped.byteorder
|
||||
elif byteorder == '|':
|
||||
return ''
|
||||
else:
|
||||
return byteorder
|
||||
|
||||
|
||||
def _datetime_metadata_str(dtype):
|
||||
# TODO: this duplicates the C metastr_to_unicode functionality
|
||||
unit, count = np.datetime_data(dtype)
|
||||
if unit == 'generic':
|
||||
return ''
|
||||
elif count == 1:
|
||||
return '[{}]'.format(unit)
|
||||
else:
|
||||
return '[{}{}]'.format(count, unit)
|
||||
|
||||
|
||||
def _struct_dict_str(dtype, includealignedflag):
|
||||
# unpack the fields dictionary into ls
|
||||
names = dtype.names
|
||||
fld_dtypes = []
|
||||
offsets = []
|
||||
titles = []
|
||||
for name in names:
|
||||
fld_dtype, offset, title = _unpack_field(*dtype.fields[name])
|
||||
fld_dtypes.append(fld_dtype)
|
||||
offsets.append(offset)
|
||||
titles.append(title)
|
||||
|
||||
# Build up a string to make the dictionary
|
||||
|
||||
if np._core.arrayprint._get_legacy_print_mode() <= 121:
|
||||
colon = ":"
|
||||
fieldsep = ","
|
||||
else:
|
||||
colon = ": "
|
||||
fieldsep = ", "
|
||||
|
||||
# First, the names
|
||||
ret = "{'names'%s[" % colon
|
||||
ret += fieldsep.join(repr(name) for name in names)
|
||||
|
||||
# Second, the formats
|
||||
ret += "], 'formats'%s[" % colon
|
||||
ret += fieldsep.join(
|
||||
_construction_repr(fld_dtype, short=True) for fld_dtype in fld_dtypes)
|
||||
|
||||
# Third, the offsets
|
||||
ret += "], 'offsets'%s[" % colon
|
||||
ret += fieldsep.join("%d" % offset for offset in offsets)
|
||||
|
||||
# Fourth, the titles
|
||||
if any(title is not None for title in titles):
|
||||
ret += "], 'titles'%s[" % colon
|
||||
ret += fieldsep.join(repr(title) for title in titles)
|
||||
|
||||
# Fifth, the itemsize
|
||||
ret += "], 'itemsize'%s%d" % (colon, dtype.itemsize)
|
||||
|
||||
if (includealignedflag and dtype.isalignedstruct):
|
||||
# Finally, the aligned flag
|
||||
ret += ", 'aligned'%sTrue}" % colon
|
||||
else:
|
||||
ret += "}"
|
||||
|
||||
return ret
|
||||
|
||||
|
||||
def _aligned_offset(offset, alignment):
|
||||
# round up offset:
|
||||
return - (-offset // alignment) * alignment
|
||||
|
||||
|
||||
def _is_packed(dtype):
|
||||
"""
|
||||
Checks whether the structured data type in 'dtype'
|
||||
has a simple layout, where all the fields are in order,
|
||||
and follow each other with no alignment padding.
|
||||
|
||||
When this returns true, the dtype can be reconstructed
|
||||
from a list of the field names and dtypes with no additional
|
||||
dtype parameters.
|
||||
|
||||
Duplicates the C `is_dtype_struct_simple_unaligned_layout` function.
|
||||
"""
|
||||
align = dtype.isalignedstruct
|
||||
max_alignment = 1
|
||||
total_offset = 0
|
||||
for name in dtype.names:
|
||||
fld_dtype, fld_offset, title = _unpack_field(*dtype.fields[name])
|
||||
|
||||
if align:
|
||||
total_offset = _aligned_offset(total_offset, fld_dtype.alignment)
|
||||
max_alignment = max(max_alignment, fld_dtype.alignment)
|
||||
|
||||
if fld_offset != total_offset:
|
||||
return False
|
||||
total_offset += fld_dtype.itemsize
|
||||
|
||||
if align:
|
||||
total_offset = _aligned_offset(total_offset, max_alignment)
|
||||
|
||||
return total_offset == dtype.itemsize
|
||||
|
||||
|
||||
def _struct_list_str(dtype):
|
||||
items = []
|
||||
for name in dtype.names:
|
||||
fld_dtype, fld_offset, title = _unpack_field(*dtype.fields[name])
|
||||
|
||||
item = "("
|
||||
if title is not None:
|
||||
item += "({!r}, {!r}), ".format(title, name)
|
||||
else:
|
||||
item += "{!r}, ".format(name)
|
||||
# Special case subarray handling here
|
||||
if fld_dtype.subdtype is not None:
|
||||
base, shape = fld_dtype.subdtype
|
||||
item += "{}, {}".format(
|
||||
_construction_repr(base, short=True),
|
||||
shape
|
||||
)
|
||||
else:
|
||||
item += _construction_repr(fld_dtype, short=True)
|
||||
|
||||
item += ")"
|
||||
items.append(item)
|
||||
|
||||
return "[" + ", ".join(items) + "]"
|
||||
|
||||
|
||||
def _struct_str(dtype, include_align):
|
||||
# The list str representation can't include the 'align=' flag,
|
||||
# so if it is requested and the struct has the aligned flag set,
|
||||
# we must use the dict str instead.
|
||||
if not (include_align and dtype.isalignedstruct) and _is_packed(dtype):
|
||||
sub = _struct_list_str(dtype)
|
||||
|
||||
else:
|
||||
sub = _struct_dict_str(dtype, include_align)
|
||||
|
||||
# If the data type isn't the default, void, show it
|
||||
if dtype.type != np.void:
|
||||
return "({t.__module__}.{t.__name__}, {f})".format(t=dtype.type, f=sub)
|
||||
else:
|
||||
return sub
|
||||
|
||||
|
||||
def _subarray_str(dtype):
|
||||
base, shape = dtype.subdtype
|
||||
return "({}, {})".format(
|
||||
_construction_repr(base, short=True),
|
||||
shape
|
||||
)
|
||||
|
||||
|
||||
def _name_includes_bit_suffix(dtype):
|
||||
if dtype.type == np.object_:
|
||||
# pointer size varies by system, best to omit it
|
||||
return False
|
||||
elif dtype.type == np.bool:
|
||||
# implied
|
||||
return False
|
||||
elif dtype.type is None:
|
||||
return True
|
||||
elif np.issubdtype(dtype, np.flexible) and _isunsized(dtype):
|
||||
# unspecified
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
||||
|
||||
def _name_get(dtype):
|
||||
# provides dtype.name.__get__, documented as returning a "bit name"
|
||||
|
||||
if dtype.isbuiltin == 2:
|
||||
# user dtypes don't promise to do anything special
|
||||
return dtype.type.__name__
|
||||
|
||||
if not type(dtype)._legacy:
|
||||
name = type(dtype).__name__
|
||||
|
||||
elif issubclass(dtype.type, np.void):
|
||||
# historically, void subclasses preserve their name, eg `record64`
|
||||
name = dtype.type.__name__
|
||||
else:
|
||||
name = _kind_name(dtype)
|
||||
|
||||
# append bit counts
|
||||
if _name_includes_bit_suffix(dtype):
|
||||
name += "{}".format(dtype.itemsize * 8)
|
||||
|
||||
# append metadata to datetimes
|
||||
if dtype.type in (np.datetime64, np.timedelta64):
|
||||
name += _datetime_metadata_str(dtype)
|
||||
|
||||
return name
|
||||
120
.CondaPkg/env/Lib/site-packages/numpy/_core/_dtype_ctypes.py
vendored
Normal file
120
.CondaPkg/env/Lib/site-packages/numpy/_core/_dtype_ctypes.py
vendored
Normal file
@@ -0,0 +1,120 @@
|
||||
"""
|
||||
Conversion from ctypes to dtype.
|
||||
|
||||
In an ideal world, we could achieve this through the PEP3118 buffer protocol,
|
||||
something like::
|
||||
|
||||
def dtype_from_ctypes_type(t):
|
||||
# needed to ensure that the shape of `t` is within memoryview.format
|
||||
class DummyStruct(ctypes.Structure):
|
||||
_fields_ = [('a', t)]
|
||||
|
||||
# empty to avoid memory allocation
|
||||
ctype_0 = (DummyStruct * 0)()
|
||||
mv = memoryview(ctype_0)
|
||||
|
||||
# convert the struct, and slice back out the field
|
||||
return _dtype_from_pep3118(mv.format)['a']
|
||||
|
||||
Unfortunately, this fails because:
|
||||
|
||||
* ctypes cannot handle length-0 arrays with PEP3118 (bpo-32782)
|
||||
* PEP3118 cannot represent unions, but both numpy and ctypes can
|
||||
* ctypes cannot handle big-endian structs with PEP3118 (bpo-32780)
|
||||
"""
|
||||
|
||||
# We delay-import ctypes for distributions that do not include it.
|
||||
# While this module is not used unless the user passes in ctypes
|
||||
# members, it is eagerly imported from numpy/_core/__init__.py.
|
||||
import numpy as np
|
||||
|
||||
|
||||
def _from_ctypes_array(t):
|
||||
return np.dtype((dtype_from_ctypes_type(t._type_), (t._length_,)))
|
||||
|
||||
|
||||
def _from_ctypes_structure(t):
|
||||
for item in t._fields_:
|
||||
if len(item) > 2:
|
||||
raise TypeError(
|
||||
"ctypes bitfields have no dtype equivalent")
|
||||
|
||||
if hasattr(t, "_pack_"):
|
||||
import ctypes
|
||||
formats = []
|
||||
offsets = []
|
||||
names = []
|
||||
current_offset = 0
|
||||
for fname, ftyp in t._fields_:
|
||||
names.append(fname)
|
||||
formats.append(dtype_from_ctypes_type(ftyp))
|
||||
# Each type has a default offset, this is platform dependent
|
||||
# for some types.
|
||||
effective_pack = min(t._pack_, ctypes.alignment(ftyp))
|
||||
current_offset = (
|
||||
(current_offset + effective_pack - 1) // effective_pack
|
||||
) * effective_pack
|
||||
offsets.append(current_offset)
|
||||
current_offset += ctypes.sizeof(ftyp)
|
||||
|
||||
return np.dtype(dict(
|
||||
formats=formats,
|
||||
offsets=offsets,
|
||||
names=names,
|
||||
itemsize=ctypes.sizeof(t)))
|
||||
else:
|
||||
fields = []
|
||||
for fname, ftyp in t._fields_:
|
||||
fields.append((fname, dtype_from_ctypes_type(ftyp)))
|
||||
|
||||
# by default, ctypes structs are aligned
|
||||
return np.dtype(fields, align=True)
|
||||
|
||||
|
||||
def _from_ctypes_scalar(t):
|
||||
"""
|
||||
Return the dtype type with endianness included if it's the case
|
||||
"""
|
||||
if getattr(t, '__ctype_be__', None) is t:
|
||||
return np.dtype('>' + t._type_)
|
||||
elif getattr(t, '__ctype_le__', None) is t:
|
||||
return np.dtype('<' + t._type_)
|
||||
else:
|
||||
return np.dtype(t._type_)
|
||||
|
||||
|
||||
def _from_ctypes_union(t):
|
||||
import ctypes
|
||||
formats = []
|
||||
offsets = []
|
||||
names = []
|
||||
for fname, ftyp in t._fields_:
|
||||
names.append(fname)
|
||||
formats.append(dtype_from_ctypes_type(ftyp))
|
||||
offsets.append(0) # Union fields are offset to 0
|
||||
|
||||
return np.dtype(dict(
|
||||
formats=formats,
|
||||
offsets=offsets,
|
||||
names=names,
|
||||
itemsize=ctypes.sizeof(t)))
|
||||
|
||||
|
||||
def dtype_from_ctypes_type(t):
|
||||
"""
|
||||
Construct a dtype object from a ctypes type
|
||||
"""
|
||||
import _ctypes
|
||||
if issubclass(t, _ctypes.Array):
|
||||
return _from_ctypes_array(t)
|
||||
elif issubclass(t, _ctypes._Pointer):
|
||||
raise TypeError("ctypes pointers have no dtype equivalent")
|
||||
elif issubclass(t, _ctypes.Structure):
|
||||
return _from_ctypes_structure(t)
|
||||
elif issubclass(t, _ctypes.Union):
|
||||
return _from_ctypes_union(t)
|
||||
elif isinstance(getattr(t, '_type_', None), str):
|
||||
return _from_ctypes_scalar(t)
|
||||
else:
|
||||
raise NotImplementedError(
|
||||
"Unknown ctypes type {}".format(t.__name__))
|
||||
172
.CondaPkg/env/Lib/site-packages/numpy/_core/_exceptions.py
vendored
Normal file
172
.CondaPkg/env/Lib/site-packages/numpy/_core/_exceptions.py
vendored
Normal file
@@ -0,0 +1,172 @@
|
||||
"""
|
||||
Various richly-typed exceptions, that also help us deal with string formatting
|
||||
in python where it's easier.
|
||||
|
||||
By putting the formatting in `__str__`, we also avoid paying the cost for
|
||||
users who silence the exceptions.
|
||||
"""
|
||||
from .._utils import set_module
|
||||
|
||||
def _unpack_tuple(tup):
|
||||
if len(tup) == 1:
|
||||
return tup[0]
|
||||
else:
|
||||
return tup
|
||||
|
||||
|
||||
def _display_as_base(cls):
|
||||
"""
|
||||
A decorator that makes an exception class look like its base.
|
||||
|
||||
We use this to hide subclasses that are implementation details - the user
|
||||
should catch the base type, which is what the traceback will show them.
|
||||
|
||||
Classes decorated with this decorator are subject to removal without a
|
||||
deprecation warning.
|
||||
"""
|
||||
assert issubclass(cls, Exception)
|
||||
cls.__name__ = cls.__base__.__name__
|
||||
return cls
|
||||
|
||||
|
||||
class UFuncTypeError(TypeError):
|
||||
""" Base class for all ufunc exceptions """
|
||||
def __init__(self, ufunc):
|
||||
self.ufunc = ufunc
|
||||
|
||||
|
||||
@_display_as_base
|
||||
class _UFuncNoLoopError(UFuncTypeError):
|
||||
""" Thrown when a ufunc loop cannot be found """
|
||||
def __init__(self, ufunc, dtypes):
|
||||
super().__init__(ufunc)
|
||||
self.dtypes = tuple(dtypes)
|
||||
|
||||
def __str__(self):
|
||||
return (
|
||||
"ufunc {!r} did not contain a loop with signature matching types "
|
||||
"{!r} -> {!r}"
|
||||
).format(
|
||||
self.ufunc.__name__,
|
||||
_unpack_tuple(self.dtypes[:self.ufunc.nin]),
|
||||
_unpack_tuple(self.dtypes[self.ufunc.nin:])
|
||||
)
|
||||
|
||||
|
||||
@_display_as_base
|
||||
class _UFuncBinaryResolutionError(_UFuncNoLoopError):
|
||||
""" Thrown when a binary resolution fails """
|
||||
def __init__(self, ufunc, dtypes):
|
||||
super().__init__(ufunc, dtypes)
|
||||
assert len(self.dtypes) == 2
|
||||
|
||||
def __str__(self):
|
||||
return (
|
||||
"ufunc {!r} cannot use operands with types {!r} and {!r}"
|
||||
).format(
|
||||
self.ufunc.__name__, *self.dtypes
|
||||
)
|
||||
|
||||
|
||||
@_display_as_base
|
||||
class _UFuncCastingError(UFuncTypeError):
|
||||
def __init__(self, ufunc, casting, from_, to):
|
||||
super().__init__(ufunc)
|
||||
self.casting = casting
|
||||
self.from_ = from_
|
||||
self.to = to
|
||||
|
||||
|
||||
@_display_as_base
|
||||
class _UFuncInputCastingError(_UFuncCastingError):
|
||||
""" Thrown when a ufunc input cannot be casted """
|
||||
def __init__(self, ufunc, casting, from_, to, i):
|
||||
super().__init__(ufunc, casting, from_, to)
|
||||
self.in_i = i
|
||||
|
||||
def __str__(self):
|
||||
# only show the number if more than one input exists
|
||||
i_str = "{} ".format(self.in_i) if self.ufunc.nin != 1 else ""
|
||||
return (
|
||||
"Cannot cast ufunc {!r} input {}from {!r} to {!r} with casting "
|
||||
"rule {!r}"
|
||||
).format(
|
||||
self.ufunc.__name__, i_str, self.from_, self.to, self.casting
|
||||
)
|
||||
|
||||
|
||||
@_display_as_base
|
||||
class _UFuncOutputCastingError(_UFuncCastingError):
|
||||
""" Thrown when a ufunc output cannot be casted """
|
||||
def __init__(self, ufunc, casting, from_, to, i):
|
||||
super().__init__(ufunc, casting, from_, to)
|
||||
self.out_i = i
|
||||
|
||||
def __str__(self):
|
||||
# only show the number if more than one output exists
|
||||
i_str = "{} ".format(self.out_i) if self.ufunc.nout != 1 else ""
|
||||
return (
|
||||
"Cannot cast ufunc {!r} output {}from {!r} to {!r} with casting "
|
||||
"rule {!r}"
|
||||
).format(
|
||||
self.ufunc.__name__, i_str, self.from_, self.to, self.casting
|
||||
)
|
||||
|
||||
|
||||
@_display_as_base
|
||||
class _ArrayMemoryError(MemoryError):
|
||||
""" Thrown when an array cannot be allocated"""
|
||||
def __init__(self, shape, dtype):
|
||||
self.shape = shape
|
||||
self.dtype = dtype
|
||||
|
||||
@property
|
||||
def _total_size(self):
|
||||
num_bytes = self.dtype.itemsize
|
||||
for dim in self.shape:
|
||||
num_bytes *= dim
|
||||
return num_bytes
|
||||
|
||||
@staticmethod
|
||||
def _size_to_string(num_bytes):
|
||||
""" Convert a number of bytes into a binary size string """
|
||||
|
||||
# https://en.wikipedia.org/wiki/Binary_prefix
|
||||
LOG2_STEP = 10
|
||||
STEP = 1024
|
||||
units = ['bytes', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB']
|
||||
|
||||
unit_i = max(num_bytes.bit_length() - 1, 1) // LOG2_STEP
|
||||
unit_val = 1 << (unit_i * LOG2_STEP)
|
||||
n_units = num_bytes / unit_val
|
||||
del unit_val
|
||||
|
||||
# ensure we pick a unit that is correct after rounding
|
||||
if round(n_units) == STEP:
|
||||
unit_i += 1
|
||||
n_units /= STEP
|
||||
|
||||
# deal with sizes so large that we don't have units for them
|
||||
if unit_i >= len(units):
|
||||
new_unit_i = len(units) - 1
|
||||
n_units *= 1 << ((unit_i - new_unit_i) * LOG2_STEP)
|
||||
unit_i = new_unit_i
|
||||
|
||||
unit_name = units[unit_i]
|
||||
# format with a sensible number of digits
|
||||
if unit_i == 0:
|
||||
# no decimal point on bytes
|
||||
return '{:.0f} {}'.format(n_units, unit_name)
|
||||
elif round(n_units) < 1000:
|
||||
# 3 significant figures, if none are dropped to the left of the .
|
||||
return '{:#.3g} {}'.format(n_units, unit_name)
|
||||
else:
|
||||
# just give all the digits otherwise
|
||||
return '{:#.0f} {}'.format(n_units, unit_name)
|
||||
|
||||
def __str__(self):
|
||||
size_str = self._size_to_string(self._total_size)
|
||||
return (
|
||||
"Unable to allocate {} for an array with shape {} and data type {}"
|
||||
.format(size_str, self.shape, self.dtype)
|
||||
)
|
||||
963
.CondaPkg/env/Lib/site-packages/numpy/_core/_internal.py
vendored
Normal file
963
.CondaPkg/env/Lib/site-packages/numpy/_core/_internal.py
vendored
Normal file
@@ -0,0 +1,963 @@
|
||||
"""
|
||||
A place for internal code
|
||||
|
||||
Some things are more easily handled Python.
|
||||
|
||||
"""
|
||||
import ast
|
||||
import math
|
||||
import re
|
||||
import sys
|
||||
import warnings
|
||||
|
||||
from ..exceptions import DTypePromotionError
|
||||
from .multiarray import dtype, array, ndarray, promote_types, StringDType
|
||||
from numpy import _NoValue
|
||||
try:
|
||||
import ctypes
|
||||
except ImportError:
|
||||
ctypes = None
|
||||
|
||||
IS_PYPY = sys.implementation.name == 'pypy'
|
||||
|
||||
if sys.byteorder == 'little':
|
||||
_nbo = '<'
|
||||
else:
|
||||
_nbo = '>'
|
||||
|
||||
def _makenames_list(adict, align):
|
||||
allfields = []
|
||||
|
||||
for fname, obj in adict.items():
|
||||
n = len(obj)
|
||||
if not isinstance(obj, tuple) or n not in (2, 3):
|
||||
raise ValueError("entry not a 2- or 3- tuple")
|
||||
if n > 2 and obj[2] == fname:
|
||||
continue
|
||||
num = int(obj[1])
|
||||
if num < 0:
|
||||
raise ValueError("invalid offset.")
|
||||
format = dtype(obj[0], align=align)
|
||||
if n > 2:
|
||||
title = obj[2]
|
||||
else:
|
||||
title = None
|
||||
allfields.append((fname, format, num, title))
|
||||
# sort by offsets
|
||||
allfields.sort(key=lambda x: x[2])
|
||||
names = [x[0] for x in allfields]
|
||||
formats = [x[1] for x in allfields]
|
||||
offsets = [x[2] for x in allfields]
|
||||
titles = [x[3] for x in allfields]
|
||||
|
||||
return names, formats, offsets, titles
|
||||
|
||||
# Called in PyArray_DescrConverter function when
|
||||
# a dictionary without "names" and "formats"
|
||||
# fields is used as a data-type descriptor.
|
||||
def _usefields(adict, align):
|
||||
try:
|
||||
names = adict[-1]
|
||||
except KeyError:
|
||||
names = None
|
||||
if names is None:
|
||||
names, formats, offsets, titles = _makenames_list(adict, align)
|
||||
else:
|
||||
formats = []
|
||||
offsets = []
|
||||
titles = []
|
||||
for name in names:
|
||||
res = adict[name]
|
||||
formats.append(res[0])
|
||||
offsets.append(res[1])
|
||||
if len(res) > 2:
|
||||
titles.append(res[2])
|
||||
else:
|
||||
titles.append(None)
|
||||
|
||||
return dtype({"names": names,
|
||||
"formats": formats,
|
||||
"offsets": offsets,
|
||||
"titles": titles}, align)
|
||||
|
||||
|
||||
# construct an array_protocol descriptor list
|
||||
# from the fields attribute of a descriptor
|
||||
# This calls itself recursively but should eventually hit
|
||||
# a descriptor that has no fields and then return
|
||||
# a simple typestring
|
||||
|
||||
def _array_descr(descriptor):
|
||||
fields = descriptor.fields
|
||||
if fields is None:
|
||||
subdtype = descriptor.subdtype
|
||||
if subdtype is None:
|
||||
if descriptor.metadata is None:
|
||||
return descriptor.str
|
||||
else:
|
||||
new = descriptor.metadata.copy()
|
||||
if new:
|
||||
return (descriptor.str, new)
|
||||
else:
|
||||
return descriptor.str
|
||||
else:
|
||||
return (_array_descr(subdtype[0]), subdtype[1])
|
||||
|
||||
names = descriptor.names
|
||||
ordered_fields = [fields[x] + (x,) for x in names]
|
||||
result = []
|
||||
offset = 0
|
||||
for field in ordered_fields:
|
||||
if field[1] > offset:
|
||||
num = field[1] - offset
|
||||
result.append(('', f'|V{num}'))
|
||||
offset += num
|
||||
elif field[1] < offset:
|
||||
raise ValueError(
|
||||
"dtype.descr is not defined for types with overlapping or "
|
||||
"out-of-order fields")
|
||||
if len(field) > 3:
|
||||
name = (field[2], field[3])
|
||||
else:
|
||||
name = field[2]
|
||||
if field[0].subdtype:
|
||||
tup = (name, _array_descr(field[0].subdtype[0]),
|
||||
field[0].subdtype[1])
|
||||
else:
|
||||
tup = (name, _array_descr(field[0]))
|
||||
offset += field[0].itemsize
|
||||
result.append(tup)
|
||||
|
||||
if descriptor.itemsize > offset:
|
||||
num = descriptor.itemsize - offset
|
||||
result.append(('', f'|V{num}'))
|
||||
|
||||
return result
|
||||
|
||||
|
||||
# format_re was originally from numarray by J. Todd Miller
|
||||
|
||||
format_re = re.compile(r'(?P<order1>[<>|=]?)'
|
||||
r'(?P<repeats> *[(]?[ ,0-9]*[)]? *)'
|
||||
r'(?P<order2>[<>|=]?)'
|
||||
r'(?P<dtype>[A-Za-z0-9.?]*(?:\[[a-zA-Z0-9,.]+\])?)')
|
||||
sep_re = re.compile(r'\s*,\s*')
|
||||
space_re = re.compile(r'\s+$')
|
||||
|
||||
# astr is a string (perhaps comma separated)
|
||||
|
||||
_convorder = {'=': _nbo}
|
||||
|
||||
def _commastring(astr):
|
||||
startindex = 0
|
||||
result = []
|
||||
islist = False
|
||||
while startindex < len(astr):
|
||||
mo = format_re.match(astr, pos=startindex)
|
||||
try:
|
||||
(order1, repeats, order2, dtype) = mo.groups()
|
||||
except (TypeError, AttributeError):
|
||||
raise ValueError(
|
||||
f'format number {len(result)+1} of "{astr}" is not recognized'
|
||||
) from None
|
||||
startindex = mo.end()
|
||||
# Separator or ending padding
|
||||
if startindex < len(astr):
|
||||
if space_re.match(astr, pos=startindex):
|
||||
startindex = len(astr)
|
||||
else:
|
||||
mo = sep_re.match(astr, pos=startindex)
|
||||
if not mo:
|
||||
raise ValueError(
|
||||
'format number %d of "%s" is not recognized' %
|
||||
(len(result)+1, astr))
|
||||
startindex = mo.end()
|
||||
islist = True
|
||||
|
||||
if order2 == '':
|
||||
order = order1
|
||||
elif order1 == '':
|
||||
order = order2
|
||||
else:
|
||||
order1 = _convorder.get(order1, order1)
|
||||
order2 = _convorder.get(order2, order2)
|
||||
if (order1 != order2):
|
||||
raise ValueError(
|
||||
'inconsistent byte-order specification %s and %s' %
|
||||
(order1, order2))
|
||||
order = order1
|
||||
|
||||
if order in ('|', '=', _nbo):
|
||||
order = ''
|
||||
dtype = order + dtype
|
||||
if repeats == '':
|
||||
newitem = dtype
|
||||
else:
|
||||
if (repeats[0] == "(" and repeats[-1] == ")"
|
||||
and repeats[1:-1].strip() != ""
|
||||
and "," not in repeats):
|
||||
warnings.warn(
|
||||
'Passing in a parenthesized single number for repeats '
|
||||
'is deprecated; pass either a single number or indicate '
|
||||
'a tuple with a comma, like "(2,)".', DeprecationWarning,
|
||||
stacklevel=2)
|
||||
newitem = (dtype, ast.literal_eval(repeats))
|
||||
|
||||
result.append(newitem)
|
||||
|
||||
return result if islist else result[0]
|
||||
|
||||
class dummy_ctype:
|
||||
|
||||
def __init__(self, cls):
|
||||
self._cls = cls
|
||||
|
||||
def __mul__(self, other):
|
||||
return self
|
||||
|
||||
def __call__(self, *other):
|
||||
return self._cls(other)
|
||||
|
||||
def __eq__(self, other):
|
||||
return self._cls == other._cls
|
||||
|
||||
def __ne__(self, other):
|
||||
return self._cls != other._cls
|
||||
|
||||
def _getintp_ctype():
|
||||
val = _getintp_ctype.cache
|
||||
if val is not None:
|
||||
return val
|
||||
if ctypes is None:
|
||||
import numpy as np
|
||||
val = dummy_ctype(np.intp)
|
||||
else:
|
||||
char = dtype('n').char
|
||||
if char == 'i':
|
||||
val = ctypes.c_int
|
||||
elif char == 'l':
|
||||
val = ctypes.c_long
|
||||
elif char == 'q':
|
||||
val = ctypes.c_longlong
|
||||
else:
|
||||
val = ctypes.c_long
|
||||
_getintp_ctype.cache = val
|
||||
return val
|
||||
|
||||
|
||||
_getintp_ctype.cache = None
|
||||
|
||||
# Used for .ctypes attribute of ndarray
|
||||
|
||||
class _missing_ctypes:
|
||||
def cast(self, num, obj):
|
||||
return num.value
|
||||
|
||||
class c_void_p:
|
||||
def __init__(self, ptr):
|
||||
self.value = ptr
|
||||
|
||||
|
||||
class _ctypes:
|
||||
def __init__(self, array, ptr=None):
|
||||
self._arr = array
|
||||
|
||||
if ctypes:
|
||||
self._ctypes = ctypes
|
||||
self._data = self._ctypes.c_void_p(ptr)
|
||||
else:
|
||||
# fake a pointer-like object that holds onto the reference
|
||||
self._ctypes = _missing_ctypes()
|
||||
self._data = self._ctypes.c_void_p(ptr)
|
||||
self._data._objects = array
|
||||
|
||||
if self._arr.ndim == 0:
|
||||
self._zerod = True
|
||||
else:
|
||||
self._zerod = False
|
||||
|
||||
def data_as(self, obj):
|
||||
"""
|
||||
Return the data pointer cast to a particular c-types object.
|
||||
For example, calling ``self._as_parameter_`` is equivalent to
|
||||
``self.data_as(ctypes.c_void_p)``. Perhaps you want to use
|
||||
the data as a pointer to a ctypes array of floating-point data:
|
||||
``self.data_as(ctypes.POINTER(ctypes.c_double))``.
|
||||
|
||||
The returned pointer will keep a reference to the array.
|
||||
"""
|
||||
# _ctypes.cast function causes a circular reference of self._data in
|
||||
# self._data._objects. Attributes of self._data cannot be released
|
||||
# until gc.collect is called. Make a copy of the pointer first then
|
||||
# let it hold the array reference. This is a workaround to circumvent
|
||||
# the CPython bug https://bugs.python.org/issue12836.
|
||||
ptr = self._ctypes.cast(self._data, obj)
|
||||
ptr._arr = self._arr
|
||||
return ptr
|
||||
|
||||
def shape_as(self, obj):
|
||||
"""
|
||||
Return the shape tuple as an array of some other c-types
|
||||
type. For example: ``self.shape_as(ctypes.c_short)``.
|
||||
"""
|
||||
if self._zerod:
|
||||
return None
|
||||
return (obj*self._arr.ndim)(*self._arr.shape)
|
||||
|
||||
def strides_as(self, obj):
|
||||
"""
|
||||
Return the strides tuple as an array of some other
|
||||
c-types type. For example: ``self.strides_as(ctypes.c_longlong)``.
|
||||
"""
|
||||
if self._zerod:
|
||||
return None
|
||||
return (obj*self._arr.ndim)(*self._arr.strides)
|
||||
|
||||
@property
|
||||
def data(self):
|
||||
"""
|
||||
A pointer to the memory area of the array as a Python integer.
|
||||
This memory area may contain data that is not aligned, or not in
|
||||
correct byte-order. The memory area may not even be writeable.
|
||||
The array flags and data-type of this array should be respected
|
||||
when passing this attribute to arbitrary C-code to avoid trouble
|
||||
that can include Python crashing. User Beware! The value of this
|
||||
attribute is exactly the same as:
|
||||
``self._array_interface_['data'][0]``.
|
||||
|
||||
Note that unlike ``data_as``, a reference won't be kept to the array:
|
||||
code like ``ctypes.c_void_p((a + b).ctypes.data)`` will result in a
|
||||
pointer to a deallocated array, and should be spelt
|
||||
``(a + b).ctypes.data_as(ctypes.c_void_p)``
|
||||
"""
|
||||
return self._data.value
|
||||
|
||||
@property
|
||||
def shape(self):
|
||||
"""
|
||||
(c_intp*self.ndim): A ctypes array of length self.ndim where
|
||||
the basetype is the C-integer corresponding to ``dtype('p')`` on this
|
||||
platform (see `~numpy.ctypeslib.c_intp`). This base-type could be
|
||||
`ctypes.c_int`, `ctypes.c_long`, or `ctypes.c_longlong` depending on
|
||||
the platform. The ctypes array contains the shape of
|
||||
the underlying array.
|
||||
"""
|
||||
return self.shape_as(_getintp_ctype())
|
||||
|
||||
@property
|
||||
def strides(self):
|
||||
"""
|
||||
(c_intp*self.ndim): A ctypes array of length self.ndim where
|
||||
the basetype is the same as for the shape attribute. This ctypes
|
||||
array contains the strides information from the underlying array.
|
||||
This strides information is important for showing how many bytes
|
||||
must be jumped to get to the next element in the array.
|
||||
"""
|
||||
return self.strides_as(_getintp_ctype())
|
||||
|
||||
@property
|
||||
def _as_parameter_(self):
|
||||
"""
|
||||
Overrides the ctypes semi-magic method
|
||||
|
||||
Enables `c_func(some_array.ctypes)`
|
||||
"""
|
||||
return self.data_as(ctypes.c_void_p)
|
||||
|
||||
# Numpy 1.21.0, 2021-05-18
|
||||
|
||||
def get_data(self):
|
||||
"""Deprecated getter for the `_ctypes.data` property.
|
||||
|
||||
.. deprecated:: 1.21
|
||||
"""
|
||||
warnings.warn('"get_data" is deprecated. Use "data" instead',
|
||||
DeprecationWarning, stacklevel=2)
|
||||
return self.data
|
||||
|
||||
def get_shape(self):
|
||||
"""Deprecated getter for the `_ctypes.shape` property.
|
||||
|
||||
.. deprecated:: 1.21
|
||||
"""
|
||||
warnings.warn('"get_shape" is deprecated. Use "shape" instead',
|
||||
DeprecationWarning, stacklevel=2)
|
||||
return self.shape
|
||||
|
||||
def get_strides(self):
|
||||
"""Deprecated getter for the `_ctypes.strides` property.
|
||||
|
||||
.. deprecated:: 1.21
|
||||
"""
|
||||
warnings.warn('"get_strides" is deprecated. Use "strides" instead',
|
||||
DeprecationWarning, stacklevel=2)
|
||||
return self.strides
|
||||
|
||||
def get_as_parameter(self):
|
||||
"""Deprecated getter for the `_ctypes._as_parameter_` property.
|
||||
|
||||
.. deprecated:: 1.21
|
||||
"""
|
||||
warnings.warn(
|
||||
'"get_as_parameter" is deprecated. Use "_as_parameter_" instead',
|
||||
DeprecationWarning, stacklevel=2,
|
||||
)
|
||||
return self._as_parameter_
|
||||
|
||||
|
||||
def _newnames(datatype, order):
|
||||
"""
|
||||
Given a datatype and an order object, return a new names tuple, with the
|
||||
order indicated
|
||||
"""
|
||||
oldnames = datatype.names
|
||||
nameslist = list(oldnames)
|
||||
if isinstance(order, str):
|
||||
order = [order]
|
||||
seen = set()
|
||||
if isinstance(order, (list, tuple)):
|
||||
for name in order:
|
||||
try:
|
||||
nameslist.remove(name)
|
||||
except ValueError:
|
||||
if name in seen:
|
||||
raise ValueError(f"duplicate field name: {name}") from None
|
||||
else:
|
||||
raise ValueError(f"unknown field name: {name}") from None
|
||||
seen.add(name)
|
||||
return tuple(list(order) + nameslist)
|
||||
raise ValueError(f"unsupported order value: {order}")
|
||||
|
||||
def _copy_fields(ary):
|
||||
"""Return copy of structured array with padding between fields removed.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
ary : ndarray
|
||||
Structured array from which to remove padding bytes
|
||||
|
||||
Returns
|
||||
-------
|
||||
ary_copy : ndarray
|
||||
Copy of ary with padding bytes removed
|
||||
"""
|
||||
dt = ary.dtype
|
||||
copy_dtype = {'names': dt.names,
|
||||
'formats': [dt.fields[name][0] for name in dt.names]}
|
||||
return array(ary, dtype=copy_dtype, copy=True)
|
||||
|
||||
def _promote_fields(dt1, dt2):
|
||||
""" Perform type promotion for two structured dtypes.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
dt1 : structured dtype
|
||||
First dtype.
|
||||
dt2 : structured dtype
|
||||
Second dtype.
|
||||
|
||||
Returns
|
||||
-------
|
||||
out : dtype
|
||||
The promoted dtype
|
||||
|
||||
Notes
|
||||
-----
|
||||
If one of the inputs is aligned, the result will be. The titles of
|
||||
both descriptors must match (point to the same field).
|
||||
"""
|
||||
# Both must be structured and have the same names in the same order
|
||||
if (dt1.names is None or dt2.names is None) or dt1.names != dt2.names:
|
||||
raise DTypePromotionError(
|
||||
f"field names `{dt1.names}` and `{dt2.names}` mismatch.")
|
||||
|
||||
# if both are identical, we can (maybe!) just return the same dtype.
|
||||
identical = dt1 is dt2
|
||||
new_fields = []
|
||||
for name in dt1.names:
|
||||
field1 = dt1.fields[name]
|
||||
field2 = dt2.fields[name]
|
||||
new_descr = promote_types(field1[0], field2[0])
|
||||
identical = identical and new_descr is field1[0]
|
||||
|
||||
# Check that the titles match (if given):
|
||||
if field1[2:] != field2[2:]:
|
||||
raise DTypePromotionError(
|
||||
f"field titles of field '{name}' mismatch")
|
||||
if len(field1) == 2:
|
||||
new_fields.append((name, new_descr))
|
||||
else:
|
||||
new_fields.append(((field1[2], name), new_descr))
|
||||
|
||||
res = dtype(new_fields, align=dt1.isalignedstruct or dt2.isalignedstruct)
|
||||
|
||||
# Might as well preserve identity (and metadata) if the dtype is identical
|
||||
# and the itemsize, offsets are also unmodified. This could probably be
|
||||
# sped up, but also probably just be removed entirely.
|
||||
if identical and res.itemsize == dt1.itemsize:
|
||||
for name in dt1.names:
|
||||
if dt1.fields[name][1] != res.fields[name][1]:
|
||||
return res # the dtype changed.
|
||||
return dt1
|
||||
|
||||
return res
|
||||
|
||||
|
||||
def _getfield_is_safe(oldtype, newtype, offset):
|
||||
""" Checks safety of getfield for object arrays.
|
||||
|
||||
As in _view_is_safe, we need to check that memory containing objects is not
|
||||
reinterpreted as a non-object datatype and vice versa.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
oldtype : data-type
|
||||
Data type of the original ndarray.
|
||||
newtype : data-type
|
||||
Data type of the field being accessed by ndarray.getfield
|
||||
offset : int
|
||||
Offset of the field being accessed by ndarray.getfield
|
||||
|
||||
Raises
|
||||
------
|
||||
TypeError
|
||||
If the field access is invalid
|
||||
|
||||
"""
|
||||
if newtype.hasobject or oldtype.hasobject:
|
||||
if offset == 0 and newtype == oldtype:
|
||||
return
|
||||
if oldtype.names is not None:
|
||||
for name in oldtype.names:
|
||||
if (oldtype.fields[name][1] == offset and
|
||||
oldtype.fields[name][0] == newtype):
|
||||
return
|
||||
raise TypeError("Cannot get/set field of an object array")
|
||||
return
|
||||
|
||||
def _view_is_safe(oldtype, newtype):
|
||||
""" Checks safety of a view involving object arrays, for example when
|
||||
doing::
|
||||
|
||||
np.zeros(10, dtype=oldtype).view(newtype)
|
||||
|
||||
Parameters
|
||||
----------
|
||||
oldtype : data-type
|
||||
Data type of original ndarray
|
||||
newtype : data-type
|
||||
Data type of the view
|
||||
|
||||
Raises
|
||||
------
|
||||
TypeError
|
||||
If the new type is incompatible with the old type.
|
||||
|
||||
"""
|
||||
|
||||
# if the types are equivalent, there is no problem.
|
||||
# for example: dtype((np.record, 'i4,i4')) == dtype((np.void, 'i4,i4'))
|
||||
if oldtype == newtype:
|
||||
return
|
||||
|
||||
if newtype.hasobject or oldtype.hasobject:
|
||||
raise TypeError("Cannot change data-type for array of references.")
|
||||
return
|
||||
|
||||
|
||||
# Given a string containing a PEP 3118 format specifier,
|
||||
# construct a NumPy dtype
|
||||
|
||||
_pep3118_native_map = {
|
||||
'?': '?',
|
||||
'c': 'S1',
|
||||
'b': 'b',
|
||||
'B': 'B',
|
||||
'h': 'h',
|
||||
'H': 'H',
|
||||
'i': 'i',
|
||||
'I': 'I',
|
||||
'l': 'l',
|
||||
'L': 'L',
|
||||
'q': 'q',
|
||||
'Q': 'Q',
|
||||
'e': 'e',
|
||||
'f': 'f',
|
||||
'd': 'd',
|
||||
'g': 'g',
|
||||
'Zf': 'F',
|
||||
'Zd': 'D',
|
||||
'Zg': 'G',
|
||||
's': 'S',
|
||||
'w': 'U',
|
||||
'O': 'O',
|
||||
'x': 'V', # padding
|
||||
}
|
||||
_pep3118_native_typechars = ''.join(_pep3118_native_map.keys())
|
||||
|
||||
_pep3118_standard_map = {
|
||||
'?': '?',
|
||||
'c': 'S1',
|
||||
'b': 'b',
|
||||
'B': 'B',
|
||||
'h': 'i2',
|
||||
'H': 'u2',
|
||||
'i': 'i4',
|
||||
'I': 'u4',
|
||||
'l': 'i4',
|
||||
'L': 'u4',
|
||||
'q': 'i8',
|
||||
'Q': 'u8',
|
||||
'e': 'f2',
|
||||
'f': 'f',
|
||||
'd': 'd',
|
||||
'Zf': 'F',
|
||||
'Zd': 'D',
|
||||
's': 'S',
|
||||
'w': 'U',
|
||||
'O': 'O',
|
||||
'x': 'V', # padding
|
||||
}
|
||||
_pep3118_standard_typechars = ''.join(_pep3118_standard_map.keys())
|
||||
|
||||
_pep3118_unsupported_map = {
|
||||
'u': 'UCS-2 strings',
|
||||
'&': 'pointers',
|
||||
't': 'bitfields',
|
||||
'X': 'function pointers',
|
||||
}
|
||||
|
||||
class _Stream:
|
||||
def __init__(self, s):
|
||||
self.s = s
|
||||
self.byteorder = '@'
|
||||
|
||||
def advance(self, n):
|
||||
res = self.s[:n]
|
||||
self.s = self.s[n:]
|
||||
return res
|
||||
|
||||
def consume(self, c):
|
||||
if self.s[:len(c)] == c:
|
||||
self.advance(len(c))
|
||||
return True
|
||||
return False
|
||||
|
||||
def consume_until(self, c):
|
||||
if callable(c):
|
||||
i = 0
|
||||
while i < len(self.s) and not c(self.s[i]):
|
||||
i = i + 1
|
||||
return self.advance(i)
|
||||
else:
|
||||
i = self.s.index(c)
|
||||
res = self.advance(i)
|
||||
self.advance(len(c))
|
||||
return res
|
||||
|
||||
@property
|
||||
def next(self):
|
||||
return self.s[0]
|
||||
|
||||
def __bool__(self):
|
||||
return bool(self.s)
|
||||
|
||||
|
||||
def _dtype_from_pep3118(spec):
|
||||
stream = _Stream(spec)
|
||||
dtype, align = __dtype_from_pep3118(stream, is_subdtype=False)
|
||||
return dtype
|
||||
|
||||
def __dtype_from_pep3118(stream, is_subdtype):
|
||||
field_spec = dict(
|
||||
names=[],
|
||||
formats=[],
|
||||
offsets=[],
|
||||
itemsize=0
|
||||
)
|
||||
offset = 0
|
||||
common_alignment = 1
|
||||
is_padding = False
|
||||
|
||||
# Parse spec
|
||||
while stream:
|
||||
value = None
|
||||
|
||||
# End of structure, bail out to upper level
|
||||
if stream.consume('}'):
|
||||
break
|
||||
|
||||
# Sub-arrays (1)
|
||||
shape = None
|
||||
if stream.consume('('):
|
||||
shape = stream.consume_until(')')
|
||||
shape = tuple(map(int, shape.split(',')))
|
||||
|
||||
# Byte order
|
||||
if stream.next in ('@', '=', '<', '>', '^', '!'):
|
||||
byteorder = stream.advance(1)
|
||||
if byteorder == '!':
|
||||
byteorder = '>'
|
||||
stream.byteorder = byteorder
|
||||
|
||||
# Byte order characters also control native vs. standard type sizes
|
||||
if stream.byteorder in ('@', '^'):
|
||||
type_map = _pep3118_native_map
|
||||
type_map_chars = _pep3118_native_typechars
|
||||
else:
|
||||
type_map = _pep3118_standard_map
|
||||
type_map_chars = _pep3118_standard_typechars
|
||||
|
||||
# Item sizes
|
||||
itemsize_str = stream.consume_until(lambda c: not c.isdigit())
|
||||
if itemsize_str:
|
||||
itemsize = int(itemsize_str)
|
||||
else:
|
||||
itemsize = 1
|
||||
|
||||
# Data types
|
||||
is_padding = False
|
||||
|
||||
if stream.consume('T{'):
|
||||
value, align = __dtype_from_pep3118(
|
||||
stream, is_subdtype=True)
|
||||
elif stream.next in type_map_chars:
|
||||
if stream.next == 'Z':
|
||||
typechar = stream.advance(2)
|
||||
else:
|
||||
typechar = stream.advance(1)
|
||||
|
||||
is_padding = (typechar == 'x')
|
||||
dtypechar = type_map[typechar]
|
||||
if dtypechar in 'USV':
|
||||
dtypechar += '%d' % itemsize
|
||||
itemsize = 1
|
||||
numpy_byteorder = {'@': '=', '^': '='}.get(
|
||||
stream.byteorder, stream.byteorder)
|
||||
value = dtype(numpy_byteorder + dtypechar)
|
||||
align = value.alignment
|
||||
elif stream.next in _pep3118_unsupported_map:
|
||||
desc = _pep3118_unsupported_map[stream.next]
|
||||
raise NotImplementedError(
|
||||
"Unrepresentable PEP 3118 data type {!r} ({})"
|
||||
.format(stream.next, desc))
|
||||
else:
|
||||
raise ValueError(
|
||||
"Unknown PEP 3118 data type specifier %r" % stream.s
|
||||
)
|
||||
|
||||
#
|
||||
# Native alignment may require padding
|
||||
#
|
||||
# Here we assume that the presence of a '@' character implicitly
|
||||
# implies that the start of the array is *already* aligned.
|
||||
#
|
||||
extra_offset = 0
|
||||
if stream.byteorder == '@':
|
||||
start_padding = (-offset) % align
|
||||
intra_padding = (-value.itemsize) % align
|
||||
|
||||
offset += start_padding
|
||||
|
||||
if intra_padding != 0:
|
||||
if itemsize > 1 or (shape is not None and _prod(shape) > 1):
|
||||
# Inject internal padding to the end of the sub-item
|
||||
value = _add_trailing_padding(value, intra_padding)
|
||||
else:
|
||||
# We can postpone the injection of internal padding,
|
||||
# as the item appears at most once
|
||||
extra_offset += intra_padding
|
||||
|
||||
# Update common alignment
|
||||
common_alignment = _lcm(align, common_alignment)
|
||||
|
||||
# Convert itemsize to sub-array
|
||||
if itemsize != 1:
|
||||
value = dtype((value, (itemsize,)))
|
||||
|
||||
# Sub-arrays (2)
|
||||
if shape is not None:
|
||||
value = dtype((value, shape))
|
||||
|
||||
# Field name
|
||||
if stream.consume(':'):
|
||||
name = stream.consume_until(':')
|
||||
else:
|
||||
name = None
|
||||
|
||||
if not (is_padding and name is None):
|
||||
if name is not None and name in field_spec['names']:
|
||||
raise RuntimeError(
|
||||
f"Duplicate field name '{name}' in PEP3118 format"
|
||||
)
|
||||
field_spec['names'].append(name)
|
||||
field_spec['formats'].append(value)
|
||||
field_spec['offsets'].append(offset)
|
||||
|
||||
offset += value.itemsize
|
||||
offset += extra_offset
|
||||
|
||||
field_spec['itemsize'] = offset
|
||||
|
||||
# extra final padding for aligned types
|
||||
if stream.byteorder == '@':
|
||||
field_spec['itemsize'] += (-offset) % common_alignment
|
||||
|
||||
# Check if this was a simple 1-item type, and unwrap it
|
||||
if (field_spec['names'] == [None]
|
||||
and field_spec['offsets'][0] == 0
|
||||
and field_spec['itemsize'] == field_spec['formats'][0].itemsize
|
||||
and not is_subdtype):
|
||||
ret = field_spec['formats'][0]
|
||||
else:
|
||||
_fix_names(field_spec)
|
||||
ret = dtype(field_spec)
|
||||
|
||||
# Finished
|
||||
return ret, common_alignment
|
||||
|
||||
def _fix_names(field_spec):
|
||||
""" Replace names which are None with the next unused f%d name """
|
||||
names = field_spec['names']
|
||||
for i, name in enumerate(names):
|
||||
if name is not None:
|
||||
continue
|
||||
|
||||
j = 0
|
||||
while True:
|
||||
name = f'f{j}'
|
||||
if name not in names:
|
||||
break
|
||||
j = j + 1
|
||||
names[i] = name
|
||||
|
||||
def _add_trailing_padding(value, padding):
|
||||
"""Inject the specified number of padding bytes at the end of a dtype"""
|
||||
if value.fields is None:
|
||||
field_spec = dict(
|
||||
names=['f0'],
|
||||
formats=[value],
|
||||
offsets=[0],
|
||||
itemsize=value.itemsize
|
||||
)
|
||||
else:
|
||||
fields = value.fields
|
||||
names = value.names
|
||||
field_spec = dict(
|
||||
names=names,
|
||||
formats=[fields[name][0] for name in names],
|
||||
offsets=[fields[name][1] for name in names],
|
||||
itemsize=value.itemsize
|
||||
)
|
||||
|
||||
field_spec['itemsize'] += padding
|
||||
return dtype(field_spec)
|
||||
|
||||
def _prod(a):
|
||||
p = 1
|
||||
for x in a:
|
||||
p *= x
|
||||
return p
|
||||
|
||||
def _gcd(a, b):
|
||||
"""Calculate the greatest common divisor of a and b"""
|
||||
if not (math.isfinite(a) and math.isfinite(b)):
|
||||
raise ValueError('Can only find greatest common divisor of '
|
||||
f'finite arguments, found "{a}" and "{b}"')
|
||||
while b:
|
||||
a, b = b, a % b
|
||||
return a
|
||||
|
||||
def _lcm(a, b):
|
||||
return a // _gcd(a, b) * b
|
||||
|
||||
def array_ufunc_errmsg_formatter(dummy, ufunc, method, *inputs, **kwargs):
|
||||
""" Format the error message for when __array_ufunc__ gives up. """
|
||||
args_string = ', '.join(['{!r}'.format(arg) for arg in inputs] +
|
||||
['{}={!r}'.format(k, v)
|
||||
for k, v in kwargs.items()])
|
||||
args = inputs + kwargs.get('out', ())
|
||||
types_string = ', '.join(repr(type(arg).__name__) for arg in args)
|
||||
return ('operand type(s) all returned NotImplemented from '
|
||||
'__array_ufunc__({!r}, {!r}, {}): {}'
|
||||
.format(ufunc, method, args_string, types_string))
|
||||
|
||||
|
||||
def array_function_errmsg_formatter(public_api, types):
|
||||
""" Format the error message for when __array_ufunc__ gives up. """
|
||||
func_name = '{}.{}'.format(public_api.__module__, public_api.__name__)
|
||||
return ("no implementation found for '{}' on types that implement "
|
||||
'__array_function__: {}'.format(func_name, list(types)))
|
||||
|
||||
|
||||
def _ufunc_doc_signature_formatter(ufunc):
|
||||
"""
|
||||
Builds a signature string which resembles PEP 457
|
||||
|
||||
This is used to construct the first line of the docstring
|
||||
"""
|
||||
|
||||
# input arguments are simple
|
||||
if ufunc.nin == 1:
|
||||
in_args = 'x'
|
||||
else:
|
||||
in_args = ', '.join(f'x{i+1}' for i in range(ufunc.nin))
|
||||
|
||||
# output arguments are both keyword or positional
|
||||
if ufunc.nout == 0:
|
||||
out_args = ', /, out=()'
|
||||
elif ufunc.nout == 1:
|
||||
out_args = ', /, out=None'
|
||||
else:
|
||||
out_args = '[, {positional}], / [, out={default}]'.format(
|
||||
positional=', '.join(
|
||||
'out{}'.format(i+1) for i in range(ufunc.nout)),
|
||||
default=repr((None,)*ufunc.nout)
|
||||
)
|
||||
|
||||
# keyword only args depend on whether this is a gufunc
|
||||
kwargs = (
|
||||
", casting='same_kind'"
|
||||
", order='K'"
|
||||
", dtype=None"
|
||||
", subok=True"
|
||||
)
|
||||
|
||||
# NOTE: gufuncs may or may not support the `axis` parameter
|
||||
if ufunc.signature is None:
|
||||
kwargs = f", where=True{kwargs}[, signature]"
|
||||
else:
|
||||
kwargs += "[, signature, axes, axis]"
|
||||
|
||||
# join all the parts together
|
||||
return '{name}({in_args}{out_args}, *{kwargs})'.format(
|
||||
name=ufunc.__name__,
|
||||
in_args=in_args,
|
||||
out_args=out_args,
|
||||
kwargs=kwargs
|
||||
)
|
||||
|
||||
|
||||
def npy_ctypes_check(cls):
|
||||
# determine if a class comes from ctypes, in order to work around
|
||||
# a bug in the buffer protocol for those objects, bpo-10746
|
||||
try:
|
||||
# ctypes class are new-style, so have an __mro__. This probably fails
|
||||
# for ctypes classes with multiple inheritance.
|
||||
if IS_PYPY:
|
||||
# (..., _ctypes.basics._CData, Bufferable, object)
|
||||
ctype_base = cls.__mro__[-3]
|
||||
else:
|
||||
# # (..., _ctypes._CData, object)
|
||||
ctype_base = cls.__mro__[-2]
|
||||
# right now, they're part of the _ctypes module
|
||||
return '_ctypes' in ctype_base.__module__
|
||||
except Exception:
|
||||
return False
|
||||
|
||||
# used to handle the _NoValue default argument for na_object
|
||||
# in the C implementation of the __reduce__ method for stringdtype
|
||||
def _convert_to_stringdtype_kwargs(coerce, na_object=_NoValue):
|
||||
if na_object is _NoValue:
|
||||
return StringDType(coerce=coerce)
|
||||
return StringDType(coerce=coerce, na_object=na_object)
|
||||
30
.CondaPkg/env/Lib/site-packages/numpy/_core/_internal.pyi
vendored
Normal file
30
.CondaPkg/env/Lib/site-packages/numpy/_core/_internal.pyi
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
from typing import Any, TypeVar, overload, Generic
|
||||
import ctypes as ct
|
||||
|
||||
from numpy.typing import NDArray
|
||||
from numpy.ctypeslib import c_intp
|
||||
|
||||
_CastT = TypeVar("_CastT", bound=ct._CanCastTo) # Copied from `ctypes.cast`
|
||||
_CT = TypeVar("_CT", bound=ct._CData)
|
||||
_PT = TypeVar("_PT", bound=int)
|
||||
|
||||
# TODO: Let the likes of `shape_as` and `strides_as` return `None`
|
||||
# for 0D arrays once we've got shape-support
|
||||
|
||||
class _ctypes(Generic[_PT]):
|
||||
@overload
|
||||
def __new__(cls, array: NDArray[Any], ptr: None = ...) -> _ctypes[None]: ...
|
||||
@overload
|
||||
def __new__(cls, array: NDArray[Any], ptr: _PT) -> _ctypes[_PT]: ...
|
||||
@property
|
||||
def data(self) -> _PT: ...
|
||||
@property
|
||||
def shape(self) -> ct.Array[c_intp]: ...
|
||||
@property
|
||||
def strides(self) -> ct.Array[c_intp]: ...
|
||||
@property
|
||||
def _as_parameter_(self) -> ct.c_void_p: ...
|
||||
|
||||
def data_as(self, obj: type[_CastT]) -> _CastT: ...
|
||||
def shape_as(self, obj: type[_CT]) -> ct.Array[_CT]: ...
|
||||
def strides_as(self, obj: type[_CT]) -> ct.Array[_CT]: ...
|
||||
356
.CondaPkg/env/Lib/site-packages/numpy/_core/_machar.py
vendored
Normal file
356
.CondaPkg/env/Lib/site-packages/numpy/_core/_machar.py
vendored
Normal file
@@ -0,0 +1,356 @@
|
||||
"""
|
||||
Machine arithmetic - determine the parameters of the
|
||||
floating-point arithmetic system
|
||||
|
||||
Author: Pearu Peterson, September 2003
|
||||
|
||||
"""
|
||||
__all__ = ['MachAr']
|
||||
|
||||
from .fromnumeric import any
|
||||
from ._ufunc_config import errstate
|
||||
from .._utils import set_module
|
||||
|
||||
# Need to speed this up...especially for longdouble
|
||||
|
||||
# Deprecated 2021-10-20, NumPy 1.22
|
||||
class MachAr:
|
||||
"""
|
||||
Diagnosing machine parameters.
|
||||
|
||||
Attributes
|
||||
----------
|
||||
ibeta : int
|
||||
Radix in which numbers are represented.
|
||||
it : int
|
||||
Number of base-`ibeta` digits in the floating point mantissa M.
|
||||
machep : int
|
||||
Exponent of the smallest (most negative) power of `ibeta` that,
|
||||
added to 1.0, gives something different from 1.0
|
||||
eps : float
|
||||
Floating-point number ``beta**machep`` (floating point precision)
|
||||
negep : int
|
||||
Exponent of the smallest power of `ibeta` that, subtracted
|
||||
from 1.0, gives something different from 1.0.
|
||||
epsneg : float
|
||||
Floating-point number ``beta**negep``.
|
||||
iexp : int
|
||||
Number of bits in the exponent (including its sign and bias).
|
||||
minexp : int
|
||||
Smallest (most negative) power of `ibeta` consistent with there
|
||||
being no leading zeros in the mantissa.
|
||||
xmin : float
|
||||
Floating-point number ``beta**minexp`` (the smallest [in
|
||||
magnitude] positive floating point number with full precision).
|
||||
maxexp : int
|
||||
Smallest (positive) power of `ibeta` that causes overflow.
|
||||
xmax : float
|
||||
``(1-epsneg) * beta**maxexp`` (the largest [in magnitude]
|
||||
usable floating value).
|
||||
irnd : int
|
||||
In ``range(6)``, information on what kind of rounding is done
|
||||
in addition, and on how underflow is handled.
|
||||
ngrd : int
|
||||
Number of 'guard digits' used when truncating the product
|
||||
of two mantissas to fit the representation.
|
||||
epsilon : float
|
||||
Same as `eps`.
|
||||
tiny : float
|
||||
An alias for `smallest_normal`, kept for backwards compatibility.
|
||||
huge : float
|
||||
Same as `xmax`.
|
||||
precision : float
|
||||
``- int(-log10(eps))``
|
||||
resolution : float
|
||||
``- 10**(-precision)``
|
||||
smallest_normal : float
|
||||
The smallest positive floating point number with 1 as leading bit in
|
||||
the mantissa following IEEE-754. Same as `xmin`.
|
||||
smallest_subnormal : float
|
||||
The smallest positive floating point number with 0 as leading bit in
|
||||
the mantissa following IEEE-754.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
float_conv : function, optional
|
||||
Function that converts an integer or integer array to a float
|
||||
or float array. Default is `float`.
|
||||
int_conv : function, optional
|
||||
Function that converts a float or float array to an integer or
|
||||
integer array. Default is `int`.
|
||||
float_to_float : function, optional
|
||||
Function that converts a float array to float. Default is `float`.
|
||||
Note that this does not seem to do anything useful in the current
|
||||
implementation.
|
||||
float_to_str : function, optional
|
||||
Function that converts a single float to a string. Default is
|
||||
``lambda v:'%24.16e' %v``.
|
||||
title : str, optional
|
||||
Title that is printed in the string representation of `MachAr`.
|
||||
|
||||
See Also
|
||||
--------
|
||||
finfo : Machine limits for floating point types.
|
||||
iinfo : Machine limits for integer types.
|
||||
|
||||
References
|
||||
----------
|
||||
.. [1] Press, Teukolsky, Vetterling and Flannery,
|
||||
"Numerical Recipes in C++," 2nd ed,
|
||||
Cambridge University Press, 2002, p. 31.
|
||||
|
||||
"""
|
||||
|
||||
def __init__(self, float_conv=float,int_conv=int,
|
||||
float_to_float=float,
|
||||
float_to_str=lambda v:'%24.16e' % v,
|
||||
title='Python floating point number'):
|
||||
"""
|
||||
|
||||
float_conv - convert integer to float (array)
|
||||
int_conv - convert float (array) to integer
|
||||
float_to_float - convert float array to float
|
||||
float_to_str - convert array float to str
|
||||
title - description of used floating point numbers
|
||||
|
||||
"""
|
||||
# We ignore all errors here because we are purposely triggering
|
||||
# underflow to detect the properties of the runninng arch.
|
||||
with errstate(under='ignore'):
|
||||
self._do_init(float_conv, int_conv, float_to_float, float_to_str, title)
|
||||
|
||||
def _do_init(self, float_conv, int_conv, float_to_float, float_to_str, title):
|
||||
max_iterN = 10000
|
||||
msg = "Did not converge after %d tries with %s"
|
||||
one = float_conv(1)
|
||||
two = one + one
|
||||
zero = one - one
|
||||
|
||||
# Do we really need to do this? Aren't they 2 and 2.0?
|
||||
# Determine ibeta and beta
|
||||
a = one
|
||||
for _ in range(max_iterN):
|
||||
a = a + a
|
||||
temp = a + one
|
||||
temp1 = temp - a
|
||||
if any(temp1 - one != zero):
|
||||
break
|
||||
else:
|
||||
raise RuntimeError(msg % (_, one.dtype))
|
||||
b = one
|
||||
for _ in range(max_iterN):
|
||||
b = b + b
|
||||
temp = a + b
|
||||
itemp = int_conv(temp-a)
|
||||
if any(itemp != 0):
|
||||
break
|
||||
else:
|
||||
raise RuntimeError(msg % (_, one.dtype))
|
||||
ibeta = itemp
|
||||
beta = float_conv(ibeta)
|
||||
|
||||
# Determine it and irnd
|
||||
it = -1
|
||||
b = one
|
||||
for _ in range(max_iterN):
|
||||
it = it + 1
|
||||
b = b * beta
|
||||
temp = b + one
|
||||
temp1 = temp - b
|
||||
if any(temp1 - one != zero):
|
||||
break
|
||||
else:
|
||||
raise RuntimeError(msg % (_, one.dtype))
|
||||
|
||||
betah = beta / two
|
||||
a = one
|
||||
for _ in range(max_iterN):
|
||||
a = a + a
|
||||
temp = a + one
|
||||
temp1 = temp - a
|
||||
if any(temp1 - one != zero):
|
||||
break
|
||||
else:
|
||||
raise RuntimeError(msg % (_, one.dtype))
|
||||
temp = a + betah
|
||||
irnd = 0
|
||||
if any(temp-a != zero):
|
||||
irnd = 1
|
||||
tempa = a + beta
|
||||
temp = tempa + betah
|
||||
if irnd == 0 and any(temp-tempa != zero):
|
||||
irnd = 2
|
||||
|
||||
# Determine negep and epsneg
|
||||
negep = it + 3
|
||||
betain = one / beta
|
||||
a = one
|
||||
for i in range(negep):
|
||||
a = a * betain
|
||||
b = a
|
||||
for _ in range(max_iterN):
|
||||
temp = one - a
|
||||
if any(temp-one != zero):
|
||||
break
|
||||
a = a * beta
|
||||
negep = negep - 1
|
||||
# Prevent infinite loop on PPC with gcc 4.0:
|
||||
if negep < 0:
|
||||
raise RuntimeError("could not determine machine tolerance "
|
||||
"for 'negep', locals() -> %s" % (locals()))
|
||||
else:
|
||||
raise RuntimeError(msg % (_, one.dtype))
|
||||
negep = -negep
|
||||
epsneg = a
|
||||
|
||||
# Determine machep and eps
|
||||
machep = - it - 3
|
||||
a = b
|
||||
|
||||
for _ in range(max_iterN):
|
||||
temp = one + a
|
||||
if any(temp-one != zero):
|
||||
break
|
||||
a = a * beta
|
||||
machep = machep + 1
|
||||
else:
|
||||
raise RuntimeError(msg % (_, one.dtype))
|
||||
eps = a
|
||||
|
||||
# Determine ngrd
|
||||
ngrd = 0
|
||||
temp = one + eps
|
||||
if irnd == 0 and any(temp*one - one != zero):
|
||||
ngrd = 1
|
||||
|
||||
# Determine iexp
|
||||
i = 0
|
||||
k = 1
|
||||
z = betain
|
||||
t = one + eps
|
||||
nxres = 0
|
||||
for _ in range(max_iterN):
|
||||
y = z
|
||||
z = y*y
|
||||
a = z*one # Check here for underflow
|
||||
temp = z*t
|
||||
if any(a+a == zero) or any(abs(z) >= y):
|
||||
break
|
||||
temp1 = temp * betain
|
||||
if any(temp1*beta == z):
|
||||
break
|
||||
i = i + 1
|
||||
k = k + k
|
||||
else:
|
||||
raise RuntimeError(msg % (_, one.dtype))
|
||||
if ibeta != 10:
|
||||
iexp = i + 1
|
||||
mx = k + k
|
||||
else:
|
||||
iexp = 2
|
||||
iz = ibeta
|
||||
while k >= iz:
|
||||
iz = iz * ibeta
|
||||
iexp = iexp + 1
|
||||
mx = iz + iz - 1
|
||||
|
||||
# Determine minexp and xmin
|
||||
for _ in range(max_iterN):
|
||||
xmin = y
|
||||
y = y * betain
|
||||
a = y * one
|
||||
temp = y * t
|
||||
if any((a + a) != zero) and any(abs(y) < xmin):
|
||||
k = k + 1
|
||||
temp1 = temp * betain
|
||||
if any(temp1*beta == y) and any(temp != y):
|
||||
nxres = 3
|
||||
xmin = y
|
||||
break
|
||||
else:
|
||||
break
|
||||
else:
|
||||
raise RuntimeError(msg % (_, one.dtype))
|
||||
minexp = -k
|
||||
|
||||
# Determine maxexp, xmax
|
||||
if mx <= k + k - 3 and ibeta != 10:
|
||||
mx = mx + mx
|
||||
iexp = iexp + 1
|
||||
maxexp = mx + minexp
|
||||
irnd = irnd + nxres
|
||||
if irnd >= 2:
|
||||
maxexp = maxexp - 2
|
||||
i = maxexp + minexp
|
||||
if ibeta == 2 and not i:
|
||||
maxexp = maxexp - 1
|
||||
if i > 20:
|
||||
maxexp = maxexp - 1
|
||||
if any(a != y):
|
||||
maxexp = maxexp - 2
|
||||
xmax = one - epsneg
|
||||
if any(xmax*one != xmax):
|
||||
xmax = one - beta*epsneg
|
||||
xmax = xmax / (xmin*beta*beta*beta)
|
||||
i = maxexp + minexp + 3
|
||||
for j in range(i):
|
||||
if ibeta == 2:
|
||||
xmax = xmax + xmax
|
||||
else:
|
||||
xmax = xmax * beta
|
||||
|
||||
smallest_subnormal = abs(xmin / beta ** (it))
|
||||
|
||||
self.ibeta = ibeta
|
||||
self.it = it
|
||||
self.negep = negep
|
||||
self.epsneg = float_to_float(epsneg)
|
||||
self._str_epsneg = float_to_str(epsneg)
|
||||
self.machep = machep
|
||||
self.eps = float_to_float(eps)
|
||||
self._str_eps = float_to_str(eps)
|
||||
self.ngrd = ngrd
|
||||
self.iexp = iexp
|
||||
self.minexp = minexp
|
||||
self.xmin = float_to_float(xmin)
|
||||
self._str_xmin = float_to_str(xmin)
|
||||
self.maxexp = maxexp
|
||||
self.xmax = float_to_float(xmax)
|
||||
self._str_xmax = float_to_str(xmax)
|
||||
self.irnd = irnd
|
||||
|
||||
self.title = title
|
||||
# Commonly used parameters
|
||||
self.epsilon = self.eps
|
||||
self.tiny = self.xmin
|
||||
self.huge = self.xmax
|
||||
self.smallest_normal = self.xmin
|
||||
self._str_smallest_normal = float_to_str(self.xmin)
|
||||
self.smallest_subnormal = float_to_float(smallest_subnormal)
|
||||
self._str_smallest_subnormal = float_to_str(smallest_subnormal)
|
||||
|
||||
import math
|
||||
self.precision = int(-math.log10(float_to_float(self.eps)))
|
||||
ten = two + two + two + two + two
|
||||
resolution = ten ** (-self.precision)
|
||||
self.resolution = float_to_float(resolution)
|
||||
self._str_resolution = float_to_str(resolution)
|
||||
|
||||
def __str__(self):
|
||||
fmt = (
|
||||
'Machine parameters for %(title)s\n'
|
||||
'---------------------------------------------------------------------\n'
|
||||
'ibeta=%(ibeta)s it=%(it)s iexp=%(iexp)s ngrd=%(ngrd)s irnd=%(irnd)s\n'
|
||||
'machep=%(machep)s eps=%(_str_eps)s (beta**machep == epsilon)\n'
|
||||
'negep =%(negep)s epsneg=%(_str_epsneg)s (beta**epsneg)\n'
|
||||
'minexp=%(minexp)s xmin=%(_str_xmin)s (beta**minexp == tiny)\n'
|
||||
'maxexp=%(maxexp)s xmax=%(_str_xmax)s ((1-epsneg)*beta**maxexp == huge)\n'
|
||||
'smallest_normal=%(smallest_normal)s '
|
||||
'smallest_subnormal=%(smallest_subnormal)s\n'
|
||||
'---------------------------------------------------------------------\n'
|
||||
)
|
||||
return fmt % self.__dict__
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
print(MachAr())
|
||||
260
.CondaPkg/env/Lib/site-packages/numpy/_core/_methods.py
vendored
Normal file
260
.CondaPkg/env/Lib/site-packages/numpy/_core/_methods.py
vendored
Normal file
@@ -0,0 +1,260 @@
|
||||
"""
|
||||
Array methods which are called by both the C-code for the method
|
||||
and the Python code for the NumPy-namespace function
|
||||
|
||||
"""
|
||||
import os
|
||||
import pickle
|
||||
import warnings
|
||||
from contextlib import nullcontext
|
||||
|
||||
import numpy as np
|
||||
from numpy._core import multiarray as mu
|
||||
from numpy._core import umath as um
|
||||
from numpy._core.multiarray import asanyarray
|
||||
from numpy._core import numerictypes as nt
|
||||
from numpy._core import _exceptions
|
||||
from numpy._core._ufunc_config import _no_nep50_warning
|
||||
from numpy._globals import _NoValue
|
||||
|
||||
# save those O(100) nanoseconds!
|
||||
bool_dt = mu.dtype("bool")
|
||||
umr_maximum = um.maximum.reduce
|
||||
umr_minimum = um.minimum.reduce
|
||||
umr_sum = um.add.reduce
|
||||
umr_prod = um.multiply.reduce
|
||||
umr_bitwise_count = um.bitwise_count
|
||||
umr_any = um.logical_or.reduce
|
||||
umr_all = um.logical_and.reduce
|
||||
|
||||
# Complex types to -> (2,)float view for fast-path computation in _var()
|
||||
_complex_to_float = {
|
||||
nt.dtype(nt.csingle) : nt.dtype(nt.single),
|
||||
nt.dtype(nt.cdouble) : nt.dtype(nt.double),
|
||||
}
|
||||
# Special case for windows: ensure double takes precedence
|
||||
if nt.dtype(nt.longdouble) != nt.dtype(nt.double):
|
||||
_complex_to_float.update({
|
||||
nt.dtype(nt.clongdouble) : nt.dtype(nt.longdouble),
|
||||
})
|
||||
|
||||
# avoid keyword arguments to speed up parsing, saves about 15%-20% for very
|
||||
# small reductions
|
||||
def _amax(a, axis=None, out=None, keepdims=False,
|
||||
initial=_NoValue, where=True):
|
||||
return umr_maximum(a, axis, None, out, keepdims, initial, where)
|
||||
|
||||
def _amin(a, axis=None, out=None, keepdims=False,
|
||||
initial=_NoValue, where=True):
|
||||
return umr_minimum(a, axis, None, out, keepdims, initial, where)
|
||||
|
||||
def _sum(a, axis=None, dtype=None, out=None, keepdims=False,
|
||||
initial=_NoValue, where=True):
|
||||
return umr_sum(a, axis, dtype, out, keepdims, initial, where)
|
||||
|
||||
def _prod(a, axis=None, dtype=None, out=None, keepdims=False,
|
||||
initial=_NoValue, where=True):
|
||||
return umr_prod(a, axis, dtype, out, keepdims, initial, where)
|
||||
|
||||
def _any(a, axis=None, dtype=None, out=None, keepdims=False, *, where=True):
|
||||
# By default, return a boolean for any and all
|
||||
if dtype is None:
|
||||
dtype = bool_dt
|
||||
# Parsing keyword arguments is currently fairly slow, so avoid it for now
|
||||
if where is True:
|
||||
return umr_any(a, axis, dtype, out, keepdims)
|
||||
return umr_any(a, axis, dtype, out, keepdims, where=where)
|
||||
|
||||
def _all(a, axis=None, dtype=None, out=None, keepdims=False, *, where=True):
|
||||
# By default, return a boolean for any and all
|
||||
if dtype is None:
|
||||
dtype = bool_dt
|
||||
# Parsing keyword arguments is currently fairly slow, so avoid it for now
|
||||
if where is True:
|
||||
return umr_all(a, axis, dtype, out, keepdims)
|
||||
return umr_all(a, axis, dtype, out, keepdims, where=where)
|
||||
|
||||
def _count_reduce_items(arr, axis, keepdims=False, where=True):
|
||||
# fast-path for the default case
|
||||
if where is True:
|
||||
# no boolean mask given, calculate items according to axis
|
||||
if axis is None:
|
||||
axis = tuple(range(arr.ndim))
|
||||
elif not isinstance(axis, tuple):
|
||||
axis = (axis,)
|
||||
items = 1
|
||||
for ax in axis:
|
||||
items *= arr.shape[mu.normalize_axis_index(ax, arr.ndim)]
|
||||
items = nt.intp(items)
|
||||
else:
|
||||
# TODO: Optimize case when `where` is broadcast along a non-reduction
|
||||
# axis and full sum is more excessive than needed.
|
||||
|
||||
# guarded to protect circular imports
|
||||
from numpy.lib._stride_tricks_impl import broadcast_to
|
||||
# count True values in (potentially broadcasted) boolean mask
|
||||
items = umr_sum(broadcast_to(where, arr.shape), axis, nt.intp, None,
|
||||
keepdims)
|
||||
return items
|
||||
|
||||
def _clip(a, min=None, max=None, out=None, **kwargs):
|
||||
if a.dtype.kind in "iu":
|
||||
# If min/max is a Python integer, deal with out-of-bound values here.
|
||||
# (This enforces NEP 50 rules as no value based promotion is done.)
|
||||
if type(min) is int and min <= np.iinfo(a.dtype).min:
|
||||
min = None
|
||||
if type(max) is int and max >= np.iinfo(a.dtype).max:
|
||||
max = None
|
||||
|
||||
if min is None and max is None:
|
||||
# return identity
|
||||
return um.positive(a, out=out, **kwargs)
|
||||
elif min is None:
|
||||
return um.minimum(a, max, out=out, **kwargs)
|
||||
elif max is None:
|
||||
return um.maximum(a, min, out=out, **kwargs)
|
||||
else:
|
||||
return um.clip(a, min, max, out=out, **kwargs)
|
||||
|
||||
def _mean(a, axis=None, dtype=None, out=None, keepdims=False, *, where=True):
|
||||
arr = asanyarray(a)
|
||||
|
||||
is_float16_result = False
|
||||
|
||||
rcount = _count_reduce_items(arr, axis, keepdims=keepdims, where=where)
|
||||
if rcount == 0 if where is True else umr_any(rcount == 0, axis=None):
|
||||
warnings.warn("Mean of empty slice.", RuntimeWarning, stacklevel=2)
|
||||
|
||||
# Cast bool, unsigned int, and int to float64 by default
|
||||
if dtype is None:
|
||||
if issubclass(arr.dtype.type, (nt.integer, nt.bool)):
|
||||
dtype = mu.dtype('f8')
|
||||
elif issubclass(arr.dtype.type, nt.float16):
|
||||
dtype = mu.dtype('f4')
|
||||
is_float16_result = True
|
||||
|
||||
ret = umr_sum(arr, axis, dtype, out, keepdims, where=where)
|
||||
if isinstance(ret, mu.ndarray):
|
||||
with _no_nep50_warning():
|
||||
ret = um.true_divide(
|
||||
ret, rcount, out=ret, casting='unsafe', subok=False)
|
||||
if is_float16_result and out is None:
|
||||
ret = arr.dtype.type(ret)
|
||||
elif hasattr(ret, 'dtype'):
|
||||
if is_float16_result:
|
||||
ret = arr.dtype.type(ret / rcount)
|
||||
else:
|
||||
ret = ret.dtype.type(ret / rcount)
|
||||
else:
|
||||
ret = ret / rcount
|
||||
|
||||
return ret
|
||||
|
||||
def _var(a, axis=None, dtype=None, out=None, ddof=0, keepdims=False, *,
|
||||
where=True, mean=None):
|
||||
arr = asanyarray(a)
|
||||
|
||||
rcount = _count_reduce_items(arr, axis, keepdims=keepdims, where=where)
|
||||
# Make this warning show up on top.
|
||||
if ddof >= rcount if where is True else umr_any(ddof >= rcount, axis=None):
|
||||
warnings.warn("Degrees of freedom <= 0 for slice", RuntimeWarning,
|
||||
stacklevel=2)
|
||||
|
||||
# Cast bool, unsigned int, and int to float64 by default
|
||||
if dtype is None and issubclass(arr.dtype.type, (nt.integer, nt.bool)):
|
||||
dtype = mu.dtype('f8')
|
||||
|
||||
if mean is not None:
|
||||
arrmean = mean
|
||||
else:
|
||||
# Compute the mean.
|
||||
# Note that if dtype is not of inexact type then arraymean will
|
||||
# not be either.
|
||||
arrmean = umr_sum(arr, axis, dtype, keepdims=True, where=where)
|
||||
# The shape of rcount has to match arrmean to not change the shape of
|
||||
# out in broadcasting. Otherwise, it cannot be stored back to arrmean.
|
||||
if rcount.ndim == 0:
|
||||
# fast-path for default case when where is True
|
||||
div = rcount
|
||||
else:
|
||||
# matching rcount to arrmean when where is specified as array
|
||||
div = rcount.reshape(arrmean.shape)
|
||||
if isinstance(arrmean, mu.ndarray):
|
||||
with _no_nep50_warning():
|
||||
arrmean = um.true_divide(arrmean, div, out=arrmean,
|
||||
casting='unsafe', subok=False)
|
||||
elif hasattr(arrmean, "dtype"):
|
||||
arrmean = arrmean.dtype.type(arrmean / rcount)
|
||||
else:
|
||||
arrmean = arrmean / rcount
|
||||
|
||||
# Compute sum of squared deviations from mean
|
||||
# Note that x may not be inexact and that we need it to be an array,
|
||||
# not a scalar.
|
||||
x = asanyarray(arr - arrmean)
|
||||
|
||||
if issubclass(arr.dtype.type, (nt.floating, nt.integer)):
|
||||
x = um.multiply(x, x, out=x)
|
||||
# Fast-paths for built-in complex types
|
||||
elif x.dtype in _complex_to_float:
|
||||
xv = x.view(dtype=(_complex_to_float[x.dtype], (2,)))
|
||||
um.multiply(xv, xv, out=xv)
|
||||
x = um.add(xv[..., 0], xv[..., 1], out=x.real).real
|
||||
# Most general case; includes handling object arrays containing imaginary
|
||||
# numbers and complex types with non-native byteorder
|
||||
else:
|
||||
x = um.multiply(x, um.conjugate(x), out=x).real
|
||||
|
||||
ret = umr_sum(x, axis, dtype, out, keepdims=keepdims, where=where)
|
||||
|
||||
# Compute degrees of freedom and make sure it is not negative.
|
||||
rcount = um.maximum(rcount - ddof, 0)
|
||||
|
||||
# divide by degrees of freedom
|
||||
if isinstance(ret, mu.ndarray):
|
||||
with _no_nep50_warning():
|
||||
ret = um.true_divide(
|
||||
ret, rcount, out=ret, casting='unsafe', subok=False)
|
||||
elif hasattr(ret, 'dtype'):
|
||||
ret = ret.dtype.type(ret / rcount)
|
||||
else:
|
||||
ret = ret / rcount
|
||||
|
||||
return ret
|
||||
|
||||
def _std(a, axis=None, dtype=None, out=None, ddof=0, keepdims=False, *,
|
||||
where=True, mean=None):
|
||||
ret = _var(a, axis=axis, dtype=dtype, out=out, ddof=ddof,
|
||||
keepdims=keepdims, where=where, mean=mean)
|
||||
|
||||
if isinstance(ret, mu.ndarray):
|
||||
ret = um.sqrt(ret, out=ret)
|
||||
elif hasattr(ret, 'dtype'):
|
||||
ret = ret.dtype.type(um.sqrt(ret))
|
||||
else:
|
||||
ret = um.sqrt(ret)
|
||||
|
||||
return ret
|
||||
|
||||
def _ptp(a, axis=None, out=None, keepdims=False):
|
||||
return um.subtract(
|
||||
umr_maximum(a, axis, None, out, keepdims),
|
||||
umr_minimum(a, axis, None, None, keepdims),
|
||||
out
|
||||
)
|
||||
|
||||
def _dump(self, file, protocol=2):
|
||||
if hasattr(file, 'write'):
|
||||
ctx = nullcontext(file)
|
||||
else:
|
||||
ctx = open(os.fspath(file), "wb")
|
||||
with ctx as f:
|
||||
pickle.dump(self, f, protocol=protocol)
|
||||
|
||||
def _dumps(self, protocol=2):
|
||||
return pickle.dumps(self, protocol=protocol)
|
||||
|
||||
def _bitwise_count(a, out=None, *, where=True, casting='same_kind',
|
||||
order='K', dtype=None, subok=True):
|
||||
return umr_bitwise_count(a, out, where=where, casting=casting,
|
||||
order=order, dtype=dtype, subok=subok)
|
||||
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/_multiarray_tests.cp312-win_amd64.lib
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/_multiarray_tests.cp312-win_amd64.lib
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/_multiarray_tests.cp312-win_amd64.pyd
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/_multiarray_tests.cp312-win_amd64.pyd
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/_multiarray_umath.cp312-win_amd64.lib
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/_multiarray_umath.cp312-win_amd64.lib
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/_multiarray_umath.cp312-win_amd64.pyd
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/_multiarray_umath.cp312-win_amd64.pyd
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/_operand_flag_tests.cp312-win_amd64.lib
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/_operand_flag_tests.cp312-win_amd64.lib
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/_operand_flag_tests.cp312-win_amd64.pyd
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/_operand_flag_tests.cp312-win_amd64.pyd
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/_rational_tests.cp312-win_amd64.lib
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/_rational_tests.cp312-win_amd64.lib
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/_rational_tests.cp312-win_amd64.pyd
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/_rational_tests.cp312-win_amd64.pyd
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/_simd.cp312-win_amd64.lib
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/_simd.cp312-win_amd64.lib
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/_simd.cp312-win_amd64.pyd
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/_simd.cp312-win_amd64.pyd
vendored
Normal file
Binary file not shown.
100
.CondaPkg/env/Lib/site-packages/numpy/_core/_string_helpers.py
vendored
Normal file
100
.CondaPkg/env/Lib/site-packages/numpy/_core/_string_helpers.py
vendored
Normal file
@@ -0,0 +1,100 @@
|
||||
"""
|
||||
String-handling utilities to avoid locale-dependence.
|
||||
|
||||
Used primarily to generate type name aliases.
|
||||
"""
|
||||
# "import string" is costly to import!
|
||||
# Construct the translation tables directly
|
||||
# "A" = chr(65), "a" = chr(97)
|
||||
_all_chars = tuple(map(chr, range(256)))
|
||||
_ascii_upper = _all_chars[65:65+26]
|
||||
_ascii_lower = _all_chars[97:97+26]
|
||||
LOWER_TABLE = _all_chars[:65] + _ascii_lower + _all_chars[65+26:]
|
||||
UPPER_TABLE = _all_chars[:97] + _ascii_upper + _all_chars[97+26:]
|
||||
|
||||
|
||||
def english_lower(s):
|
||||
""" Apply English case rules to convert ASCII strings to all lower case.
|
||||
|
||||
This is an internal utility function to replace calls to str.lower() such
|
||||
that we can avoid changing behavior with changing locales. In particular,
|
||||
Turkish has distinct dotted and dotless variants of the Latin letter "I" in
|
||||
both lowercase and uppercase. Thus, "I".lower() != "i" in a "tr" locale.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
s : str
|
||||
|
||||
Returns
|
||||
-------
|
||||
lowered : str
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> from numpy._core.numerictypes import english_lower
|
||||
>>> english_lower('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_')
|
||||
'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789_'
|
||||
>>> english_lower('')
|
||||
''
|
||||
"""
|
||||
lowered = s.translate(LOWER_TABLE)
|
||||
return lowered
|
||||
|
||||
|
||||
def english_upper(s):
|
||||
""" Apply English case rules to convert ASCII strings to all upper case.
|
||||
|
||||
This is an internal utility function to replace calls to str.upper() such
|
||||
that we can avoid changing behavior with changing locales. In particular,
|
||||
Turkish has distinct dotted and dotless variants of the Latin letter "I" in
|
||||
both lowercase and uppercase. Thus, "i".upper() != "I" in a "tr" locale.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
s : str
|
||||
|
||||
Returns
|
||||
-------
|
||||
uppered : str
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> from numpy._core.numerictypes import english_upper
|
||||
>>> english_upper('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_')
|
||||
'ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_'
|
||||
>>> english_upper('')
|
||||
''
|
||||
"""
|
||||
uppered = s.translate(UPPER_TABLE)
|
||||
return uppered
|
||||
|
||||
|
||||
def english_capitalize(s):
|
||||
""" Apply English case rules to convert the first character of an ASCII
|
||||
string to upper case.
|
||||
|
||||
This is an internal utility function to replace calls to str.capitalize()
|
||||
such that we can avoid changing behavior with changing locales.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
s : str
|
||||
|
||||
Returns
|
||||
-------
|
||||
capitalized : str
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> from numpy._core.numerictypes import english_capitalize
|
||||
>>> english_capitalize('int8')
|
||||
'Int8'
|
||||
>>> english_capitalize('Int8')
|
||||
'Int8'
|
||||
>>> english_capitalize('')
|
||||
''
|
||||
"""
|
||||
if s:
|
||||
return english_upper(s[0]) + s[1:]
|
||||
else:
|
||||
return s
|
||||
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/_struct_ufunc_tests.cp312-win_amd64.lib
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/_struct_ufunc_tests.cp312-win_amd64.lib
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/_struct_ufunc_tests.cp312-win_amd64.pyd
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/_struct_ufunc_tests.cp312-win_amd64.pyd
vendored
Normal file
Binary file not shown.
119
.CondaPkg/env/Lib/site-packages/numpy/_core/_type_aliases.py
vendored
Normal file
119
.CondaPkg/env/Lib/site-packages/numpy/_core/_type_aliases.py
vendored
Normal file
@@ -0,0 +1,119 @@
|
||||
"""
|
||||
Due to compatibility, numpy has a very large number of different naming
|
||||
conventions for the scalar types (those subclassing from `numpy.generic`).
|
||||
This file produces a convoluted set of dictionaries mapping names to types,
|
||||
and sometimes other mappings too.
|
||||
|
||||
.. data:: allTypes
|
||||
A dictionary of names to types that will be exposed as attributes through
|
||||
``np._core.numerictypes.*``
|
||||
|
||||
.. data:: sctypeDict
|
||||
Similar to `allTypes`, but maps a broader set of aliases to their types.
|
||||
|
||||
.. data:: sctypes
|
||||
A dictionary keyed by a "type group" string, providing a list of types
|
||||
under that group.
|
||||
|
||||
"""
|
||||
|
||||
import numpy._core.multiarray as ma
|
||||
from numpy._core.multiarray import typeinfo, dtype
|
||||
|
||||
######################################
|
||||
# Building `sctypeDict` and `allTypes`
|
||||
######################################
|
||||
|
||||
sctypeDict = {}
|
||||
allTypes = {}
|
||||
c_names_dict = {}
|
||||
|
||||
_abstract_type_names = {
|
||||
"generic", "integer", "inexact", "floating", "number",
|
||||
"flexible", "character", "complexfloating", "unsignedinteger",
|
||||
"signedinteger"
|
||||
}
|
||||
|
||||
for _abstract_type_name in _abstract_type_names:
|
||||
allTypes[_abstract_type_name] = getattr(ma, _abstract_type_name)
|
||||
|
||||
for k, v in typeinfo.items():
|
||||
if k.startswith("NPY_") and v not in c_names_dict:
|
||||
c_names_dict[k[4:]] = v
|
||||
else:
|
||||
concrete_type = v.type
|
||||
allTypes[k] = concrete_type
|
||||
sctypeDict[k] = concrete_type
|
||||
|
||||
_aliases = {
|
||||
"double": "float64",
|
||||
"cdouble": "complex128",
|
||||
"single": "float32",
|
||||
"csingle": "complex64",
|
||||
"half": "float16",
|
||||
"bool_": "bool",
|
||||
# Default integer:
|
||||
"int_": "intp",
|
||||
"uint": "uintp",
|
||||
}
|
||||
|
||||
for k, v in _aliases.items():
|
||||
sctypeDict[k] = allTypes[v]
|
||||
allTypes[k] = allTypes[v]
|
||||
|
||||
# extra aliases are added only to `sctypeDict`
|
||||
# to support dtype name access, such as`np.dtype("float")`
|
||||
_extra_aliases = {
|
||||
"float": "float64",
|
||||
"complex": "complex128",
|
||||
"object": "object_",
|
||||
"bytes": "bytes_",
|
||||
"a": "bytes_",
|
||||
"int": "int_",
|
||||
"str": "str_",
|
||||
"unicode": "str_",
|
||||
}
|
||||
|
||||
for k, v in _extra_aliases.items():
|
||||
sctypeDict[k] = allTypes[v]
|
||||
|
||||
# include extended precision sized aliases
|
||||
for is_complex, full_name in [(False, "longdouble"), (True, "clongdouble")]:
|
||||
longdouble_type: type = allTypes[full_name]
|
||||
|
||||
bits: int = dtype(longdouble_type).itemsize * 8
|
||||
base_name: str = "complex" if is_complex else "float"
|
||||
extended_prec_name: str = f"{base_name}{bits}"
|
||||
if extended_prec_name not in allTypes:
|
||||
sctypeDict[extended_prec_name] = longdouble_type
|
||||
allTypes[extended_prec_name] = longdouble_type
|
||||
|
||||
|
||||
####################
|
||||
# Building `sctypes`
|
||||
####################
|
||||
|
||||
sctypes = {"int": set(), "uint": set(), "float": set(),
|
||||
"complex": set(), "others": set()}
|
||||
|
||||
for type_info in typeinfo.values():
|
||||
if type_info.kind in ["M", "m"]: # exclude timedelta and datetime
|
||||
continue
|
||||
|
||||
concrete_type = type_info.type
|
||||
|
||||
# find proper group for each concrete type
|
||||
for type_group, abstract_type in [
|
||||
("int", ma.signedinteger), ("uint", ma.unsignedinteger),
|
||||
("float", ma.floating), ("complex", ma.complexfloating),
|
||||
("others", ma.generic)
|
||||
]:
|
||||
if issubclass(concrete_type, abstract_type):
|
||||
sctypes[type_group].add(concrete_type)
|
||||
break
|
||||
|
||||
# sort sctype groups by bitsize
|
||||
for sctype_key in sctypes.keys():
|
||||
sctype_list = list(sctypes[sctype_key])
|
||||
sctype_list.sort(key=lambda x: dtype(x).itemsize)
|
||||
sctypes[sctype_key] = sctype_list
|
||||
3
.CondaPkg/env/Lib/site-packages/numpy/_core/_type_aliases.pyi
vendored
Normal file
3
.CondaPkg/env/Lib/site-packages/numpy/_core/_type_aliases.pyi
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
from numpy import generic
|
||||
|
||||
sctypeDict: dict[int | str, type[generic]]
|
||||
503
.CondaPkg/env/Lib/site-packages/numpy/_core/_ufunc_config.py
vendored
Normal file
503
.CondaPkg/env/Lib/site-packages/numpy/_core/_ufunc_config.py
vendored
Normal file
@@ -0,0 +1,503 @@
|
||||
"""
|
||||
Functions for changing global ufunc configuration
|
||||
|
||||
This provides helpers which wrap `_get_extobj_dict` and `_make_extobj`, and
|
||||
`_extobj_contextvar` from umath.
|
||||
"""
|
||||
import collections.abc
|
||||
import contextlib
|
||||
import contextvars
|
||||
import functools
|
||||
|
||||
from .._utils import set_module
|
||||
from .umath import _make_extobj, _get_extobj_dict, _extobj_contextvar
|
||||
|
||||
__all__ = [
|
||||
"seterr", "geterr", "setbufsize", "getbufsize", "seterrcall", "geterrcall",
|
||||
"errstate", '_no_nep50_warning'
|
||||
]
|
||||
|
||||
|
||||
@set_module('numpy')
|
||||
def seterr(all=None, divide=None, over=None, under=None, invalid=None):
|
||||
"""
|
||||
Set how floating-point errors are handled.
|
||||
|
||||
Note that operations on integer scalar types (such as `int16`) are
|
||||
handled like floating point, and are affected by these settings.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
all : {'ignore', 'warn', 'raise', 'call', 'print', 'log'}, optional
|
||||
Set treatment for all types of floating-point errors at once:
|
||||
|
||||
- ignore: Take no action when the exception occurs.
|
||||
- warn: Print a :exc:`RuntimeWarning` (via the Python `warnings`
|
||||
module).
|
||||
- raise: Raise a :exc:`FloatingPointError`.
|
||||
- call: Call a function specified using the `seterrcall` function.
|
||||
- print: Print a warning directly to ``stdout``.
|
||||
- log: Record error in a Log object specified by `seterrcall`.
|
||||
|
||||
The default is not to change the current behavior.
|
||||
divide : {'ignore', 'warn', 'raise', 'call', 'print', 'log'}, optional
|
||||
Treatment for division by zero.
|
||||
over : {'ignore', 'warn', 'raise', 'call', 'print', 'log'}, optional
|
||||
Treatment for floating-point overflow.
|
||||
under : {'ignore', 'warn', 'raise', 'call', 'print', 'log'}, optional
|
||||
Treatment for floating-point underflow.
|
||||
invalid : {'ignore', 'warn', 'raise', 'call', 'print', 'log'}, optional
|
||||
Treatment for invalid floating-point operation.
|
||||
|
||||
Returns
|
||||
-------
|
||||
old_settings : dict
|
||||
Dictionary containing the old settings.
|
||||
|
||||
See also
|
||||
--------
|
||||
seterrcall : Set a callback function for the 'call' mode.
|
||||
geterr, geterrcall, errstate
|
||||
|
||||
Notes
|
||||
-----
|
||||
The floating-point exceptions are defined in the IEEE 754 standard [1]_:
|
||||
|
||||
- Division by zero: infinite result obtained from finite numbers.
|
||||
- Overflow: result too large to be expressed.
|
||||
- Underflow: result so close to zero that some precision
|
||||
was lost.
|
||||
- Invalid operation: result is not an expressible number, typically
|
||||
indicates that a NaN was produced.
|
||||
|
||||
.. [1] https://en.wikipedia.org/wiki/IEEE_754
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> import numpy as np
|
||||
>>> orig_settings = np.seterr(all='ignore') # seterr to known value
|
||||
>>> np.int16(32000) * np.int16(3)
|
||||
30464
|
||||
>>> np.seterr(over='raise')
|
||||
{'divide': 'ignore', 'over': 'ignore', 'under': 'ignore', 'invalid': 'ignore'}
|
||||
>>> old_settings = np.seterr(all='warn', over='raise')
|
||||
>>> np.int16(32000) * np.int16(3)
|
||||
Traceback (most recent call last):
|
||||
File "<stdin>", line 1, in <module>
|
||||
FloatingPointError: overflow encountered in scalar multiply
|
||||
|
||||
>>> old_settings = np.seterr(all='print')
|
||||
>>> np.geterr()
|
||||
{'divide': 'print', 'over': 'print', 'under': 'print', 'invalid': 'print'}
|
||||
>>> np.int16(32000) * np.int16(3)
|
||||
30464
|
||||
>>> np.seterr(**orig_settings) # restore original
|
||||
{'divide': 'print', 'over': 'print', 'under': 'print', 'invalid': 'print'}
|
||||
|
||||
"""
|
||||
|
||||
old = _get_extobj_dict()
|
||||
# The errstate doesn't include call and bufsize, so pop them:
|
||||
old.pop("call", None)
|
||||
old.pop("bufsize", None)
|
||||
|
||||
extobj = _make_extobj(
|
||||
all=all, divide=divide, over=over, under=under, invalid=invalid)
|
||||
_extobj_contextvar.set(extobj)
|
||||
return old
|
||||
|
||||
|
||||
@set_module('numpy')
|
||||
def geterr():
|
||||
"""
|
||||
Get the current way of handling floating-point errors.
|
||||
|
||||
Returns
|
||||
-------
|
||||
res : dict
|
||||
A dictionary with keys "divide", "over", "under", and "invalid",
|
||||
whose values are from the strings "ignore", "print", "log", "warn",
|
||||
"raise", and "call". The keys represent possible floating-point
|
||||
exceptions, and the values define how these exceptions are handled.
|
||||
|
||||
See Also
|
||||
--------
|
||||
geterrcall, seterr, seterrcall
|
||||
|
||||
Notes
|
||||
-----
|
||||
For complete documentation of the types of floating-point exceptions and
|
||||
treatment options, see `seterr`.
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> import numpy as np
|
||||
>>> np.geterr()
|
||||
{'divide': 'warn', 'over': 'warn', 'under': 'ignore', 'invalid': 'warn'}
|
||||
>>> np.arange(3.) / np.arange(3.) # doctest: +SKIP
|
||||
array([nan, 1., 1.])
|
||||
RuntimeWarning: invalid value encountered in divide
|
||||
|
||||
>>> oldsettings = np.seterr(all='warn', invalid='raise')
|
||||
>>> np.geterr()
|
||||
{'divide': 'warn', 'over': 'warn', 'under': 'warn', 'invalid': 'raise'}
|
||||
>>> np.arange(3.) / np.arange(3.)
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
FloatingPointError: invalid value encountered in divide
|
||||
>>> oldsettings = np.seterr(**oldsettings) # restore original
|
||||
|
||||
"""
|
||||
res = _get_extobj_dict()
|
||||
# The "geterr" doesn't include call and bufsize,:
|
||||
res.pop("call", None)
|
||||
res.pop("bufsize", None)
|
||||
return res
|
||||
|
||||
|
||||
@set_module('numpy')
|
||||
def setbufsize(size):
|
||||
"""
|
||||
Set the size of the buffer used in ufuncs.
|
||||
|
||||
.. versionchanged:: 2.0
|
||||
The scope of setting the buffer is tied to the `numpy.errstate`
|
||||
context. Exiting a ``with errstate():`` will also restore the bufsize.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
size : int
|
||||
Size of buffer.
|
||||
|
||||
Returns
|
||||
-------
|
||||
bufsize : int
|
||||
Previous size of ufunc buffer in bytes.
|
||||
|
||||
Examples
|
||||
--------
|
||||
When exiting a `numpy.errstate` context manager the bufsize is restored:
|
||||
|
||||
>>> import numpy as np
|
||||
>>> with np.errstate():
|
||||
... np.setbufsize(4096)
|
||||
... print(np.getbufsize())
|
||||
...
|
||||
8192
|
||||
4096
|
||||
>>> np.getbufsize()
|
||||
8192
|
||||
|
||||
"""
|
||||
old = _get_extobj_dict()["bufsize"]
|
||||
extobj = _make_extobj(bufsize=size)
|
||||
_extobj_contextvar.set(extobj)
|
||||
return old
|
||||
|
||||
|
||||
@set_module('numpy')
|
||||
def getbufsize():
|
||||
"""
|
||||
Return the size of the buffer used in ufuncs.
|
||||
|
||||
Returns
|
||||
-------
|
||||
getbufsize : int
|
||||
Size of ufunc buffer in bytes.
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> import numpy as np
|
||||
>>> np.getbufsize()
|
||||
8192
|
||||
|
||||
"""
|
||||
return _get_extobj_dict()["bufsize"]
|
||||
|
||||
|
||||
@set_module('numpy')
|
||||
def seterrcall(func):
|
||||
"""
|
||||
Set the floating-point error callback function or log object.
|
||||
|
||||
There are two ways to capture floating-point error messages. The first
|
||||
is to set the error-handler to 'call', using `seterr`. Then, set
|
||||
the function to call using this function.
|
||||
|
||||
The second is to set the error-handler to 'log', using `seterr`.
|
||||
Floating-point errors then trigger a call to the 'write' method of
|
||||
the provided object.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
func : callable f(err, flag) or object with write method
|
||||
Function to call upon floating-point errors ('call'-mode) or
|
||||
object whose 'write' method is used to log such message ('log'-mode).
|
||||
|
||||
The call function takes two arguments. The first is a string describing
|
||||
the type of error (such as "divide by zero", "overflow", "underflow",
|
||||
or "invalid value"), and the second is the status flag. The flag is a
|
||||
byte, whose four least-significant bits indicate the type of error, one
|
||||
of "divide", "over", "under", "invalid"::
|
||||
|
||||
[0 0 0 0 divide over under invalid]
|
||||
|
||||
In other words, ``flags = divide + 2*over + 4*under + 8*invalid``.
|
||||
|
||||
If an object is provided, its write method should take one argument,
|
||||
a string.
|
||||
|
||||
Returns
|
||||
-------
|
||||
h : callable, log instance or None
|
||||
The old error handler.
|
||||
|
||||
See Also
|
||||
--------
|
||||
seterr, geterr, geterrcall
|
||||
|
||||
Examples
|
||||
--------
|
||||
Callback upon error:
|
||||
|
||||
>>> def err_handler(type, flag):
|
||||
... print("Floating point error (%s), with flag %s" % (type, flag))
|
||||
...
|
||||
|
||||
>>> import numpy as np
|
||||
|
||||
>>> orig_handler = np.seterrcall(err_handler)
|
||||
>>> orig_err = np.seterr(all='call')
|
||||
|
||||
>>> np.array([1, 2, 3]) / 0.0
|
||||
Floating point error (divide by zero), with flag 1
|
||||
array([inf, inf, inf])
|
||||
|
||||
>>> np.seterrcall(orig_handler)
|
||||
<function err_handler at 0x...>
|
||||
>>> np.seterr(**orig_err)
|
||||
{'divide': 'call', 'over': 'call', 'under': 'call', 'invalid': 'call'}
|
||||
|
||||
Log error message:
|
||||
|
||||
>>> class Log:
|
||||
... def write(self, msg):
|
||||
... print("LOG: %s" % msg)
|
||||
...
|
||||
|
||||
>>> log = Log()
|
||||
>>> saved_handler = np.seterrcall(log)
|
||||
>>> save_err = np.seterr(all='log')
|
||||
|
||||
>>> np.array([1, 2, 3]) / 0.0
|
||||
LOG: Warning: divide by zero encountered in divide
|
||||
array([inf, inf, inf])
|
||||
|
||||
>>> np.seterrcall(orig_handler)
|
||||
<numpy.Log object at 0x...>
|
||||
>>> np.seterr(**orig_err)
|
||||
{'divide': 'log', 'over': 'log', 'under': 'log', 'invalid': 'log'}
|
||||
|
||||
"""
|
||||
old = _get_extobj_dict()["call"]
|
||||
extobj = _make_extobj(call=func)
|
||||
_extobj_contextvar.set(extobj)
|
||||
return old
|
||||
|
||||
|
||||
@set_module('numpy')
|
||||
def geterrcall():
|
||||
"""
|
||||
Return the current callback function used on floating-point errors.
|
||||
|
||||
When the error handling for a floating-point error (one of "divide",
|
||||
"over", "under", or "invalid") is set to 'call' or 'log', the function
|
||||
that is called or the log instance that is written to is returned by
|
||||
`geterrcall`. This function or log instance has been set with
|
||||
`seterrcall`.
|
||||
|
||||
Returns
|
||||
-------
|
||||
errobj : callable, log instance or None
|
||||
The current error handler. If no handler was set through `seterrcall`,
|
||||
``None`` is returned.
|
||||
|
||||
See Also
|
||||
--------
|
||||
seterrcall, seterr, geterr
|
||||
|
||||
Notes
|
||||
-----
|
||||
For complete documentation of the types of floating-point exceptions and
|
||||
treatment options, see `seterr`.
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> import numpy as np
|
||||
>>> np.geterrcall() # we did not yet set a handler, returns None
|
||||
|
||||
>>> orig_settings = np.seterr(all='call')
|
||||
>>> def err_handler(type, flag):
|
||||
... print("Floating point error (%s), with flag %s" % (type, flag))
|
||||
>>> old_handler = np.seterrcall(err_handler)
|
||||
>>> np.array([1, 2, 3]) / 0.0
|
||||
Floating point error (divide by zero), with flag 1
|
||||
array([inf, inf, inf])
|
||||
|
||||
>>> cur_handler = np.geterrcall()
|
||||
>>> cur_handler is err_handler
|
||||
True
|
||||
>>> old_settings = np.seterr(**orig_settings) # restore original
|
||||
>>> old_handler = np.seterrcall(None) # restore original
|
||||
|
||||
"""
|
||||
return _get_extobj_dict()["call"]
|
||||
|
||||
|
||||
class _unspecified:
|
||||
pass
|
||||
|
||||
|
||||
_Unspecified = _unspecified()
|
||||
|
||||
|
||||
@set_module('numpy')
|
||||
class errstate:
|
||||
"""
|
||||
errstate(**kwargs)
|
||||
|
||||
Context manager for floating-point error handling.
|
||||
|
||||
Using an instance of `errstate` as a context manager allows statements in
|
||||
that context to execute with a known error handling behavior. Upon entering
|
||||
the context the error handling is set with `seterr` and `seterrcall`, and
|
||||
upon exiting it is reset to what it was before.
|
||||
|
||||
.. versionchanged:: 1.17.0
|
||||
`errstate` is also usable as a function decorator, saving
|
||||
a level of indentation if an entire function is wrapped.
|
||||
|
||||
.. versionchanged:: 2.0
|
||||
`errstate` is now fully thread and asyncio safe, but may not be
|
||||
entered more than once.
|
||||
It is not safe to decorate async functions using ``errstate``.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
kwargs : {divide, over, under, invalid}
|
||||
Keyword arguments. The valid keywords are the possible floating-point
|
||||
exceptions. Each keyword should have a string value that defines the
|
||||
treatment for the particular error. Possible values are
|
||||
{'ignore', 'warn', 'raise', 'call', 'print', 'log'}.
|
||||
|
||||
See Also
|
||||
--------
|
||||
seterr, geterr, seterrcall, geterrcall
|
||||
|
||||
Notes
|
||||
-----
|
||||
For complete documentation of the types of floating-point exceptions and
|
||||
treatment options, see `seterr`.
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> import numpy as np
|
||||
>>> olderr = np.seterr(all='ignore') # Set error handling to known state.
|
||||
|
||||
>>> np.arange(3) / 0.
|
||||
array([nan, inf, inf])
|
||||
>>> with np.errstate(divide='ignore'):
|
||||
... np.arange(3) / 0.
|
||||
array([nan, inf, inf])
|
||||
|
||||
>>> np.sqrt(-1)
|
||||
np.float64(nan)
|
||||
>>> with np.errstate(invalid='raise'):
|
||||
... np.sqrt(-1)
|
||||
Traceback (most recent call last):
|
||||
File "<stdin>", line 2, in <module>
|
||||
FloatingPointError: invalid value encountered in sqrt
|
||||
|
||||
Outside the context the error handling behavior has not changed:
|
||||
|
||||
>>> np.geterr()
|
||||
{'divide': 'ignore', 'over': 'ignore', 'under': 'ignore', 'invalid': 'ignore'}
|
||||
>>> olderr = np.seterr(**olderr) # restore original state
|
||||
|
||||
"""
|
||||
__slots__ = (
|
||||
"_call", "_all", "_divide", "_over", "_under", "_invalid", "_token")
|
||||
|
||||
def __init__(self, *, call=_Unspecified,
|
||||
all=None, divide=None, over=None, under=None, invalid=None):
|
||||
self._token = None
|
||||
self._call = call
|
||||
self._all = all
|
||||
self._divide = divide
|
||||
self._over = over
|
||||
self._under = under
|
||||
self._invalid = invalid
|
||||
|
||||
def __enter__(self):
|
||||
# Note that __call__ duplicates much of this logic
|
||||
if self._token is not None:
|
||||
raise TypeError("Cannot enter `np.errstate` twice.")
|
||||
if self._call is _Unspecified:
|
||||
extobj = _make_extobj(
|
||||
all=self._all, divide=self._divide, over=self._over,
|
||||
under=self._under, invalid=self._invalid)
|
||||
else:
|
||||
extobj = _make_extobj(
|
||||
call=self._call,
|
||||
all=self._all, divide=self._divide, over=self._over,
|
||||
under=self._under, invalid=self._invalid)
|
||||
|
||||
self._token = _extobj_contextvar.set(extobj)
|
||||
|
||||
def __exit__(self, *exc_info):
|
||||
_extobj_contextvar.reset(self._token)
|
||||
|
||||
def __call__(self, func):
|
||||
# We need to customize `__call__` compared to `ContextDecorator`
|
||||
# because we must store the token per-thread so cannot store it on
|
||||
# the instance (we could create a new instance for this).
|
||||
# This duplicates the code from `__enter__`.
|
||||
@functools.wraps(func)
|
||||
def inner(*args, **kwargs):
|
||||
if self._call is _Unspecified:
|
||||
extobj = _make_extobj(
|
||||
all=self._all, divide=self._divide, over=self._over,
|
||||
under=self._under, invalid=self._invalid)
|
||||
else:
|
||||
extobj = _make_extobj(
|
||||
call=self._call,
|
||||
all=self._all, divide=self._divide, over=self._over,
|
||||
under=self._under, invalid=self._invalid)
|
||||
|
||||
_token = _extobj_contextvar.set(extobj)
|
||||
try:
|
||||
# Call the original, decorated, function:
|
||||
return func(*args, **kwargs)
|
||||
finally:
|
||||
_extobj_contextvar.reset(_token)
|
||||
|
||||
return inner
|
||||
|
||||
|
||||
NO_NEP50_WARNING = contextvars.ContextVar("_no_nep50_warning", default=False)
|
||||
|
||||
@set_module('numpy')
|
||||
@contextlib.contextmanager
|
||||
def _no_nep50_warning():
|
||||
"""
|
||||
Context manager to disable NEP 50 warnings. This context manager is
|
||||
only relevant if the NEP 50 warnings are enabled globally (which is not
|
||||
thread/context safe).
|
||||
|
||||
This warning context manager itself is fully safe, however.
|
||||
"""
|
||||
token = NO_NEP50_WARNING.set(True)
|
||||
try:
|
||||
yield
|
||||
finally:
|
||||
NO_NEP50_WARNING.reset(token)
|
||||
37
.CondaPkg/env/Lib/site-packages/numpy/_core/_ufunc_config.pyi
vendored
Normal file
37
.CondaPkg/env/Lib/site-packages/numpy/_core/_ufunc_config.pyi
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
from collections.abc import Callable
|
||||
from typing import Any, Literal, TypedDict
|
||||
|
||||
from numpy import _SupportsWrite
|
||||
|
||||
_ErrKind = Literal["ignore", "warn", "raise", "call", "print", "log"]
|
||||
_ErrFunc = Callable[[str, int], Any]
|
||||
|
||||
class _ErrDict(TypedDict):
|
||||
divide: _ErrKind
|
||||
over: _ErrKind
|
||||
under: _ErrKind
|
||||
invalid: _ErrKind
|
||||
|
||||
class _ErrDictOptional(TypedDict, total=False):
|
||||
all: None | _ErrKind
|
||||
divide: None | _ErrKind
|
||||
over: None | _ErrKind
|
||||
under: None | _ErrKind
|
||||
invalid: None | _ErrKind
|
||||
|
||||
def seterr(
|
||||
all: None | _ErrKind = ...,
|
||||
divide: None | _ErrKind = ...,
|
||||
over: None | _ErrKind = ...,
|
||||
under: None | _ErrKind = ...,
|
||||
invalid: None | _ErrKind = ...,
|
||||
) -> _ErrDict: ...
|
||||
def geterr() -> _ErrDict: ...
|
||||
def setbufsize(size: int) -> int: ...
|
||||
def getbufsize() -> int: ...
|
||||
def seterrcall(
|
||||
func: None | _ErrFunc | _SupportsWrite[str]
|
||||
) -> None | _ErrFunc | _SupportsWrite[str]: ...
|
||||
def geterrcall() -> None | _ErrFunc | _SupportsWrite[str]: ...
|
||||
|
||||
# See `numpy/__init__.pyi` for the `errstate` class and `no_nep5_warnings`
|
||||
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/_umath_tests.cp312-win_amd64.lib
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/_umath_tests.cp312-win_amd64.lib
vendored
Normal file
Binary file not shown.
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/_umath_tests.cp312-win_amd64.pyd
vendored
Normal file
BIN
.CondaPkg/env/Lib/site-packages/numpy/_core/_umath_tests.cp312-win_amd64.pyd
vendored
Normal file
Binary file not shown.
1746
.CondaPkg/env/Lib/site-packages/numpy/_core/arrayprint.py
vendored
Normal file
1746
.CondaPkg/env/Lib/site-packages/numpy/_core/arrayprint.py
vendored
Normal file
File diff suppressed because it is too large
Load Diff
135
.CondaPkg/env/Lib/site-packages/numpy/_core/arrayprint.pyi
vendored
Normal file
135
.CondaPkg/env/Lib/site-packages/numpy/_core/arrayprint.pyi
vendored
Normal file
@@ -0,0 +1,135 @@
|
||||
from collections.abc import Callable
|
||||
from typing import Any, Literal, TypedDict, SupportsIndex
|
||||
|
||||
# Using a private class is by no means ideal, but it is simply a consequence
|
||||
# of a `contextlib.context` returning an instance of aforementioned class
|
||||
from contextlib import _GeneratorContextManager
|
||||
|
||||
import numpy as np
|
||||
from numpy import (
|
||||
integer,
|
||||
timedelta64,
|
||||
datetime64,
|
||||
floating,
|
||||
complexfloating,
|
||||
void,
|
||||
longdouble,
|
||||
clongdouble,
|
||||
)
|
||||
from numpy._typing import NDArray, _CharLike_co, _FloatLike_co
|
||||
|
||||
_FloatMode = Literal["fixed", "unique", "maxprec", "maxprec_equal"]
|
||||
|
||||
class _FormatDict(TypedDict, total=False):
|
||||
bool: Callable[[np.bool], str]
|
||||
int: Callable[[integer[Any]], str]
|
||||
timedelta: Callable[[timedelta64], str]
|
||||
datetime: Callable[[datetime64], str]
|
||||
float: Callable[[floating[Any]], str]
|
||||
longfloat: Callable[[longdouble], str]
|
||||
complexfloat: Callable[[complexfloating[Any, Any]], str]
|
||||
longcomplexfloat: Callable[[clongdouble], str]
|
||||
void: Callable[[void], str]
|
||||
numpystr: Callable[[_CharLike_co], str]
|
||||
object: Callable[[object], str]
|
||||
all: Callable[[object], str]
|
||||
int_kind: Callable[[integer[Any]], str]
|
||||
float_kind: Callable[[floating[Any]], str]
|
||||
complex_kind: Callable[[complexfloating[Any, Any]], str]
|
||||
str_kind: Callable[[_CharLike_co], str]
|
||||
|
||||
class _FormatOptions(TypedDict):
|
||||
precision: int
|
||||
threshold: int
|
||||
edgeitems: int
|
||||
linewidth: int
|
||||
suppress: bool
|
||||
nanstr: str
|
||||
infstr: str
|
||||
formatter: None | _FormatDict
|
||||
sign: Literal["-", "+", " "]
|
||||
floatmode: _FloatMode
|
||||
legacy: Literal[False, "1.13", "1.21"]
|
||||
|
||||
def set_printoptions(
|
||||
precision: None | SupportsIndex = ...,
|
||||
threshold: None | int = ...,
|
||||
edgeitems: None | int = ...,
|
||||
linewidth: None | int = ...,
|
||||
suppress: None | bool = ...,
|
||||
nanstr: None | str = ...,
|
||||
infstr: None | str = ...,
|
||||
formatter: None | _FormatDict = ...,
|
||||
sign: Literal[None, "-", "+", " "] = ...,
|
||||
floatmode: None | _FloatMode = ...,
|
||||
*,
|
||||
legacy: Literal[None, False, "1.13", "1.21"] = ...,
|
||||
override_repr: None | Callable[[NDArray[Any]], str] = ...,
|
||||
) -> None: ...
|
||||
def get_printoptions() -> _FormatOptions: ...
|
||||
def array2string(
|
||||
a: NDArray[Any],
|
||||
max_line_width: None | int = ...,
|
||||
precision: None | SupportsIndex = ...,
|
||||
suppress_small: None | bool = ...,
|
||||
separator: str = ...,
|
||||
prefix: str = ...,
|
||||
# NOTE: With the `style` argument being deprecated,
|
||||
# all arguments between `formatter` and `suffix` are de facto
|
||||
# keyworld-only arguments
|
||||
*,
|
||||
formatter: None | _FormatDict = ...,
|
||||
threshold: None | int = ...,
|
||||
edgeitems: None | int = ...,
|
||||
sign: Literal[None, "-", "+", " "] = ...,
|
||||
floatmode: None | _FloatMode = ...,
|
||||
suffix: str = ...,
|
||||
legacy: Literal[None, False, "1.13", "1.21"] = ...,
|
||||
) -> str: ...
|
||||
def format_float_scientific(
|
||||
x: _FloatLike_co,
|
||||
precision: None | int = ...,
|
||||
unique: bool = ...,
|
||||
trim: Literal["k", ".", "0", "-"] = ...,
|
||||
sign: bool = ...,
|
||||
pad_left: None | int = ...,
|
||||
exp_digits: None | int = ...,
|
||||
min_digits: None | int = ...,
|
||||
) -> str: ...
|
||||
def format_float_positional(
|
||||
x: _FloatLike_co,
|
||||
precision: None | int = ...,
|
||||
unique: bool = ...,
|
||||
fractional: bool = ...,
|
||||
trim: Literal["k", ".", "0", "-"] = ...,
|
||||
sign: bool = ...,
|
||||
pad_left: None | int = ...,
|
||||
pad_right: None | int = ...,
|
||||
min_digits: None | int = ...,
|
||||
) -> str: ...
|
||||
def array_repr(
|
||||
arr: NDArray[Any],
|
||||
max_line_width: None | int = ...,
|
||||
precision: None | SupportsIndex = ...,
|
||||
suppress_small: None | bool = ...,
|
||||
) -> str: ...
|
||||
def array_str(
|
||||
a: NDArray[Any],
|
||||
max_line_width: None | int = ...,
|
||||
precision: None | SupportsIndex = ...,
|
||||
suppress_small: None | bool = ...,
|
||||
) -> str: ...
|
||||
def printoptions(
|
||||
precision: None | SupportsIndex = ...,
|
||||
threshold: None | int = ...,
|
||||
edgeitems: None | int = ...,
|
||||
linewidth: None | int = ...,
|
||||
suppress: None | bool = ...,
|
||||
nanstr: None | str = ...,
|
||||
infstr: None | str = ...,
|
||||
formatter: None | _FormatDict = ...,
|
||||
sign: Literal[None, "-", "+", " "] = ...,
|
||||
floatmode: None | _FloatMode = ...,
|
||||
*,
|
||||
legacy: Literal[None, False, "1.13", "1.21"] = ...
|
||||
) -> _GeneratorContextManager[_FormatOptions]: ...
|
||||
13
.CondaPkg/env/Lib/site-packages/numpy/_core/cversions.py
vendored
Normal file
13
.CondaPkg/env/Lib/site-packages/numpy/_core/cversions.py
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
"""Simple script to compute the api hash of the current API.
|
||||
|
||||
The API has is defined by numpy_api_order and ufunc_api_order.
|
||||
|
||||
"""
|
||||
from os.path import dirname
|
||||
|
||||
from code_generators.genapi import fullapi_hash
|
||||
from code_generators.numpy_api import full_api
|
||||
|
||||
if __name__ == '__main__':
|
||||
curdir = dirname(__file__)
|
||||
print(fullapi_hash(full_api))
|
||||
1402
.CondaPkg/env/Lib/site-packages/numpy/_core/defchararray.py
vendored
Normal file
1402
.CondaPkg/env/Lib/site-packages/numpy/_core/defchararray.py
vendored
Normal file
File diff suppressed because it is too large
Load Diff
843
.CondaPkg/env/Lib/site-packages/numpy/_core/defchararray.pyi
vendored
Normal file
843
.CondaPkg/env/Lib/site-packages/numpy/_core/defchararray.pyi
vendored
Normal file
@@ -0,0 +1,843 @@
|
||||
from typing import (
|
||||
Literal as L,
|
||||
overload,
|
||||
TypeVar,
|
||||
Any,
|
||||
SupportsIndex,
|
||||
SupportsInt,
|
||||
)
|
||||
|
||||
import numpy as np
|
||||
from numpy import (
|
||||
ndarray,
|
||||
dtype,
|
||||
str_,
|
||||
bytes_,
|
||||
int_,
|
||||
object_,
|
||||
_OrderKACF,
|
||||
_ShapeType_co,
|
||||
_CharDType,
|
||||
_SupportsBuffer,
|
||||
)
|
||||
|
||||
from numpy._typing import (
|
||||
NDArray,
|
||||
_ShapeLike,
|
||||
_ArrayLikeStr_co as U_co,
|
||||
_ArrayLikeBytes_co as S_co,
|
||||
_ArrayLikeInt_co as i_co,
|
||||
_ArrayLikeBool_co as b_co,
|
||||
)
|
||||
|
||||
from numpy._core.multiarray import compare_chararrays as compare_chararrays
|
||||
|
||||
_SCT = TypeVar("_SCT", str_, bytes_)
|
||||
_CharArray = chararray[Any, dtype[_SCT]]
|
||||
|
||||
class chararray(ndarray[_ShapeType_co, _CharDType]):
|
||||
@overload
|
||||
def __new__(
|
||||
subtype,
|
||||
shape: _ShapeLike,
|
||||
itemsize: SupportsIndex | SupportsInt = ...,
|
||||
unicode: L[False] = ...,
|
||||
buffer: _SupportsBuffer = ...,
|
||||
offset: SupportsIndex = ...,
|
||||
strides: _ShapeLike = ...,
|
||||
order: _OrderKACF = ...,
|
||||
) -> chararray[Any, dtype[bytes_]]: ...
|
||||
@overload
|
||||
def __new__(
|
||||
subtype,
|
||||
shape: _ShapeLike,
|
||||
itemsize: SupportsIndex | SupportsInt = ...,
|
||||
unicode: L[True] = ...,
|
||||
buffer: _SupportsBuffer = ...,
|
||||
offset: SupportsIndex = ...,
|
||||
strides: _ShapeLike = ...,
|
||||
order: _OrderKACF = ...,
|
||||
) -> chararray[Any, dtype[str_]]: ...
|
||||
|
||||
def __array_finalize__(self, obj: object) -> None: ...
|
||||
def __mul__(self, other: i_co) -> chararray[Any, _CharDType]: ...
|
||||
def __rmul__(self, other: i_co) -> chararray[Any, _CharDType]: ...
|
||||
def __mod__(self, i: Any) -> chararray[Any, _CharDType]: ...
|
||||
|
||||
@overload
|
||||
def __eq__(
|
||||
self: _CharArray[str_],
|
||||
other: U_co,
|
||||
) -> NDArray[np.bool]: ...
|
||||
@overload
|
||||
def __eq__(
|
||||
self: _CharArray[bytes_],
|
||||
other: S_co,
|
||||
) -> NDArray[np.bool]: ...
|
||||
|
||||
@overload
|
||||
def __ne__(
|
||||
self: _CharArray[str_],
|
||||
other: U_co,
|
||||
) -> NDArray[np.bool]: ...
|
||||
@overload
|
||||
def __ne__(
|
||||
self: _CharArray[bytes_],
|
||||
other: S_co,
|
||||
) -> NDArray[np.bool]: ...
|
||||
|
||||
@overload
|
||||
def __ge__(
|
||||
self: _CharArray[str_],
|
||||
other: U_co,
|
||||
) -> NDArray[np.bool]: ...
|
||||
@overload
|
||||
def __ge__(
|
||||
self: _CharArray[bytes_],
|
||||
other: S_co,
|
||||
) -> NDArray[np.bool]: ...
|
||||
|
||||
@overload
|
||||
def __le__(
|
||||
self: _CharArray[str_],
|
||||
other: U_co,
|
||||
) -> NDArray[np.bool]: ...
|
||||
@overload
|
||||
def __le__(
|
||||
self: _CharArray[bytes_],
|
||||
other: S_co,
|
||||
) -> NDArray[np.bool]: ...
|
||||
|
||||
@overload
|
||||
def __gt__(
|
||||
self: _CharArray[str_],
|
||||
other: U_co,
|
||||
) -> NDArray[np.bool]: ...
|
||||
@overload
|
||||
def __gt__(
|
||||
self: _CharArray[bytes_],
|
||||
other: S_co,
|
||||
) -> NDArray[np.bool]: ...
|
||||
|
||||
@overload
|
||||
def __lt__(
|
||||
self: _CharArray[str_],
|
||||
other: U_co,
|
||||
) -> NDArray[np.bool]: ...
|
||||
@overload
|
||||
def __lt__(
|
||||
self: _CharArray[bytes_],
|
||||
other: S_co,
|
||||
) -> NDArray[np.bool]: ...
|
||||
|
||||
@overload
|
||||
def __add__(
|
||||
self: _CharArray[str_],
|
||||
other: U_co,
|
||||
) -> _CharArray[str_]: ...
|
||||
@overload
|
||||
def __add__(
|
||||
self: _CharArray[bytes_],
|
||||
other: S_co,
|
||||
) -> _CharArray[bytes_]: ...
|
||||
|
||||
@overload
|
||||
def __radd__(
|
||||
self: _CharArray[str_],
|
||||
other: U_co,
|
||||
) -> _CharArray[str_]: ...
|
||||
@overload
|
||||
def __radd__(
|
||||
self: _CharArray[bytes_],
|
||||
other: S_co,
|
||||
) -> _CharArray[bytes_]: ...
|
||||
|
||||
@overload
|
||||
def center(
|
||||
self: _CharArray[str_],
|
||||
width: i_co,
|
||||
fillchar: U_co = ...,
|
||||
) -> _CharArray[str_]: ...
|
||||
@overload
|
||||
def center(
|
||||
self: _CharArray[bytes_],
|
||||
width: i_co,
|
||||
fillchar: S_co = ...,
|
||||
) -> _CharArray[bytes_]: ...
|
||||
|
||||
@overload
|
||||
def count(
|
||||
self: _CharArray[str_],
|
||||
sub: U_co,
|
||||
start: i_co = ...,
|
||||
end: None | i_co = ...,
|
||||
) -> NDArray[int_]: ...
|
||||
@overload
|
||||
def count(
|
||||
self: _CharArray[bytes_],
|
||||
sub: S_co,
|
||||
start: i_co = ...,
|
||||
end: None | i_co = ...,
|
||||
) -> NDArray[int_]: ...
|
||||
|
||||
def decode(
|
||||
self: _CharArray[bytes_],
|
||||
encoding: None | str = ...,
|
||||
errors: None | str = ...,
|
||||
) -> _CharArray[str_]: ...
|
||||
|
||||
def encode(
|
||||
self: _CharArray[str_],
|
||||
encoding: None | str = ...,
|
||||
errors: None | str = ...,
|
||||
) -> _CharArray[bytes_]: ...
|
||||
|
||||
@overload
|
||||
def endswith(
|
||||
self: _CharArray[str_],
|
||||
suffix: U_co,
|
||||
start: i_co = ...,
|
||||
end: None | i_co = ...,
|
||||
) -> NDArray[np.bool]: ...
|
||||
@overload
|
||||
def endswith(
|
||||
self: _CharArray[bytes_],
|
||||
suffix: S_co,
|
||||
start: i_co = ...,
|
||||
end: None | i_co = ...,
|
||||
) -> NDArray[np.bool]: ...
|
||||
|
||||
def expandtabs(
|
||||
self,
|
||||
tabsize: i_co = ...,
|
||||
) -> chararray[Any, _CharDType]: ...
|
||||
|
||||
@overload
|
||||
def find(
|
||||
self: _CharArray[str_],
|
||||
sub: U_co,
|
||||
start: i_co = ...,
|
||||
end: None | i_co = ...,
|
||||
) -> NDArray[int_]: ...
|
||||
@overload
|
||||
def find(
|
||||
self: _CharArray[bytes_],
|
||||
sub: S_co,
|
||||
start: i_co = ...,
|
||||
end: None | i_co = ...,
|
||||
) -> NDArray[int_]: ...
|
||||
|
||||
@overload
|
||||
def index(
|
||||
self: _CharArray[str_],
|
||||
sub: U_co,
|
||||
start: i_co = ...,
|
||||
end: None | i_co = ...,
|
||||
) -> NDArray[int_]: ...
|
||||
@overload
|
||||
def index(
|
||||
self: _CharArray[bytes_],
|
||||
sub: S_co,
|
||||
start: i_co = ...,
|
||||
end: None | i_co = ...,
|
||||
) -> NDArray[int_]: ...
|
||||
|
||||
@overload
|
||||
def join(
|
||||
self: _CharArray[str_],
|
||||
seq: U_co,
|
||||
) -> _CharArray[str_]: ...
|
||||
@overload
|
||||
def join(
|
||||
self: _CharArray[bytes_],
|
||||
seq: S_co,
|
||||
) -> _CharArray[bytes_]: ...
|
||||
|
||||
@overload
|
||||
def ljust(
|
||||
self: _CharArray[str_],
|
||||
width: i_co,
|
||||
fillchar: U_co = ...,
|
||||
) -> _CharArray[str_]: ...
|
||||
@overload
|
||||
def ljust(
|
||||
self: _CharArray[bytes_],
|
||||
width: i_co,
|
||||
fillchar: S_co = ...,
|
||||
) -> _CharArray[bytes_]: ...
|
||||
|
||||
@overload
|
||||
def lstrip(
|
||||
self: _CharArray[str_],
|
||||
chars: None | U_co = ...,
|
||||
) -> _CharArray[str_]: ...
|
||||
@overload
|
||||
def lstrip(
|
||||
self: _CharArray[bytes_],
|
||||
chars: None | S_co = ...,
|
||||
) -> _CharArray[bytes_]: ...
|
||||
|
||||
@overload
|
||||
def partition(
|
||||
self: _CharArray[str_],
|
||||
sep: U_co,
|
||||
) -> _CharArray[str_]: ...
|
||||
@overload
|
||||
def partition(
|
||||
self: _CharArray[bytes_],
|
||||
sep: S_co,
|
||||
) -> _CharArray[bytes_]: ...
|
||||
|
||||
@overload
|
||||
def replace(
|
||||
self: _CharArray[str_],
|
||||
old: U_co,
|
||||
new: U_co,
|
||||
count: None | i_co = ...,
|
||||
) -> _CharArray[str_]: ...
|
||||
@overload
|
||||
def replace(
|
||||
self: _CharArray[bytes_],
|
||||
old: S_co,
|
||||
new: S_co,
|
||||
count: None | i_co = ...,
|
||||
) -> _CharArray[bytes_]: ...
|
||||
|
||||
@overload
|
||||
def rfind(
|
||||
self: _CharArray[str_],
|
||||
sub: U_co,
|
||||
start: i_co = ...,
|
||||
end: None | i_co = ...,
|
||||
) -> NDArray[int_]: ...
|
||||
@overload
|
||||
def rfind(
|
||||
self: _CharArray[bytes_],
|
||||
sub: S_co,
|
||||
start: i_co = ...,
|
||||
end: None | i_co = ...,
|
||||
) -> NDArray[int_]: ...
|
||||
|
||||
@overload
|
||||
def rindex(
|
||||
self: _CharArray[str_],
|
||||
sub: U_co,
|
||||
start: i_co = ...,
|
||||
end: None | i_co = ...,
|
||||
) -> NDArray[int_]: ...
|
||||
@overload
|
||||
def rindex(
|
||||
self: _CharArray[bytes_],
|
||||
sub: S_co,
|
||||
start: i_co = ...,
|
||||
end: None | i_co = ...,
|
||||
) -> NDArray[int_]: ...
|
||||
|
||||
@overload
|
||||
def rjust(
|
||||
self: _CharArray[str_],
|
||||
width: i_co,
|
||||
fillchar: U_co = ...,
|
||||
) -> _CharArray[str_]: ...
|
||||
@overload
|
||||
def rjust(
|
||||
self: _CharArray[bytes_],
|
||||
width: i_co,
|
||||
fillchar: S_co = ...,
|
||||
) -> _CharArray[bytes_]: ...
|
||||
|
||||
@overload
|
||||
def rpartition(
|
||||
self: _CharArray[str_],
|
||||
sep: U_co,
|
||||
) -> _CharArray[str_]: ...
|
||||
@overload
|
||||
def rpartition(
|
||||
self: _CharArray[bytes_],
|
||||
sep: S_co,
|
||||
) -> _CharArray[bytes_]: ...
|
||||
|
||||
@overload
|
||||
def rsplit(
|
||||
self: _CharArray[str_],
|
||||
sep: None | U_co = ...,
|
||||
maxsplit: None | i_co = ...,
|
||||
) -> NDArray[object_]: ...
|
||||
@overload
|
||||
def rsplit(
|
||||
self: _CharArray[bytes_],
|
||||
sep: None | S_co = ...,
|
||||
maxsplit: None | i_co = ...,
|
||||
) -> NDArray[object_]: ...
|
||||
|
||||
@overload
|
||||
def rstrip(
|
||||
self: _CharArray[str_],
|
||||
chars: None | U_co = ...,
|
||||
) -> _CharArray[str_]: ...
|
||||
@overload
|
||||
def rstrip(
|
||||
self: _CharArray[bytes_],
|
||||
chars: None | S_co = ...,
|
||||
) -> _CharArray[bytes_]: ...
|
||||
|
||||
@overload
|
||||
def split(
|
||||
self: _CharArray[str_],
|
||||
sep: None | U_co = ...,
|
||||
maxsplit: None | i_co = ...,
|
||||
) -> NDArray[object_]: ...
|
||||
@overload
|
||||
def split(
|
||||
self: _CharArray[bytes_],
|
||||
sep: None | S_co = ...,
|
||||
maxsplit: None | i_co = ...,
|
||||
) -> NDArray[object_]: ...
|
||||
|
||||
def splitlines(self, keepends: None | b_co = ...) -> NDArray[object_]: ...
|
||||
|
||||
@overload
|
||||
def startswith(
|
||||
self: _CharArray[str_],
|
||||
prefix: U_co,
|
||||
start: i_co = ...,
|
||||
end: None | i_co = ...,
|
||||
) -> NDArray[np.bool]: ...
|
||||
@overload
|
||||
def startswith(
|
||||
self: _CharArray[bytes_],
|
||||
prefix: S_co,
|
||||
start: i_co = ...,
|
||||
end: None | i_co = ...,
|
||||
) -> NDArray[np.bool]: ...
|
||||
|
||||
@overload
|
||||
def strip(
|
||||
self: _CharArray[str_],
|
||||
chars: None | U_co = ...,
|
||||
) -> _CharArray[str_]: ...
|
||||
@overload
|
||||
def strip(
|
||||
self: _CharArray[bytes_],
|
||||
chars: None | S_co = ...,
|
||||
) -> _CharArray[bytes_]: ...
|
||||
|
||||
@overload
|
||||
def translate(
|
||||
self: _CharArray[str_],
|
||||
table: U_co,
|
||||
deletechars: None | U_co = ...,
|
||||
) -> _CharArray[str_]: ...
|
||||
@overload
|
||||
def translate(
|
||||
self: _CharArray[bytes_],
|
||||
table: S_co,
|
||||
deletechars: None | S_co = ...,
|
||||
) -> _CharArray[bytes_]: ...
|
||||
|
||||
def zfill(self, width: _ArrayLikeInt_co) -> chararray[Any, _CharDType]: ...
|
||||
def capitalize(self) -> chararray[_ShapeType_co, _CharDType]: ...
|
||||
def title(self) -> chararray[_ShapeType_co, _CharDType]: ...
|
||||
def swapcase(self) -> chararray[_ShapeType_co, _CharDType]: ...
|
||||
def lower(self) -> chararray[_ShapeType_co, _CharDType]: ...
|
||||
def upper(self) -> chararray[_ShapeType_co, _CharDType]: ...
|
||||
def isalnum(self) -> ndarray[_ShapeType_co, dtype[np.bool]]: ...
|
||||
def isalpha(self) -> ndarray[_ShapeType_co, dtype[np.bool]]: ...
|
||||
def isdigit(self) -> ndarray[_ShapeType_co, dtype[np.bool]]: ...
|
||||
def islower(self) -> ndarray[_ShapeType_co, dtype[np.bool]]: ...
|
||||
def isspace(self) -> ndarray[_ShapeType_co, dtype[np.bool]]: ...
|
||||
def istitle(self) -> ndarray[_ShapeType_co, dtype[np.bool]]: ...
|
||||
def isupper(self) -> ndarray[_ShapeType_co, dtype[np.bool]]: ...
|
||||
def isnumeric(self) -> ndarray[_ShapeType_co, dtype[np.bool]]: ...
|
||||
def isdecimal(self) -> ndarray[_ShapeType_co, dtype[np.bool]]: ...
|
||||
|
||||
__all__: list[str]
|
||||
|
||||
# Comparison
|
||||
@overload
|
||||
def equal(x1: U_co, x2: U_co) -> NDArray[np.bool]: ...
|
||||
@overload
|
||||
def equal(x1: S_co, x2: S_co) -> NDArray[np.bool]: ...
|
||||
|
||||
@overload
|
||||
def not_equal(x1: U_co, x2: U_co) -> NDArray[np.bool]: ...
|
||||
@overload
|
||||
def not_equal(x1: S_co, x2: S_co) -> NDArray[np.bool]: ...
|
||||
|
||||
@overload
|
||||
def greater_equal(x1: U_co, x2: U_co) -> NDArray[np.bool]: ...
|
||||
@overload
|
||||
def greater_equal(x1: S_co, x2: S_co) -> NDArray[np.bool]: ...
|
||||
|
||||
@overload
|
||||
def less_equal(x1: U_co, x2: U_co) -> NDArray[np.bool]: ...
|
||||
@overload
|
||||
def less_equal(x1: S_co, x2: S_co) -> NDArray[np.bool]: ...
|
||||
|
||||
@overload
|
||||
def greater(x1: U_co, x2: U_co) -> NDArray[np.bool]: ...
|
||||
@overload
|
||||
def greater(x1: S_co, x2: S_co) -> NDArray[np.bool]: ...
|
||||
|
||||
@overload
|
||||
def less(x1: U_co, x2: U_co) -> NDArray[np.bool]: ...
|
||||
@overload
|
||||
def less(x1: S_co, x2: S_co) -> NDArray[np.bool]: ...
|
||||
|
||||
# String operations
|
||||
@overload
|
||||
def add(x1: U_co, x2: U_co) -> NDArray[str_]: ...
|
||||
@overload
|
||||
def add(x1: S_co, x2: S_co) -> NDArray[bytes_]: ...
|
||||
|
||||
@overload
|
||||
def multiply(a: U_co, i: i_co) -> NDArray[str_]: ...
|
||||
@overload
|
||||
def multiply(a: S_co, i: i_co) -> NDArray[bytes_]: ...
|
||||
|
||||
@overload
|
||||
def mod(a: U_co, value: Any) -> NDArray[str_]: ...
|
||||
@overload
|
||||
def mod(a: S_co, value: Any) -> NDArray[bytes_]: ...
|
||||
|
||||
@overload
|
||||
def capitalize(a: U_co) -> NDArray[str_]: ...
|
||||
@overload
|
||||
def capitalize(a: S_co) -> NDArray[bytes_]: ...
|
||||
|
||||
@overload
|
||||
def center(a: U_co, width: i_co, fillchar: U_co = ...) -> NDArray[str_]: ...
|
||||
@overload
|
||||
def center(a: S_co, width: i_co, fillchar: S_co = ...) -> NDArray[bytes_]: ...
|
||||
|
||||
def decode(
|
||||
a: S_co,
|
||||
encoding: None | str = ...,
|
||||
errors: None | str = ...,
|
||||
) -> NDArray[str_]: ...
|
||||
|
||||
def encode(
|
||||
a: U_co,
|
||||
encoding: None | str = ...,
|
||||
errors: None | str = ...,
|
||||
) -> NDArray[bytes_]: ...
|
||||
|
||||
@overload
|
||||
def expandtabs(a: U_co, tabsize: i_co = ...) -> NDArray[str_]: ...
|
||||
@overload
|
||||
def expandtabs(a: S_co, tabsize: i_co = ...) -> NDArray[bytes_]: ...
|
||||
|
||||
@overload
|
||||
def join(sep: U_co, seq: U_co) -> NDArray[str_]: ...
|
||||
@overload
|
||||
def join(sep: S_co, seq: S_co) -> NDArray[bytes_]: ...
|
||||
|
||||
@overload
|
||||
def ljust(a: U_co, width: i_co, fillchar: U_co = ...) -> NDArray[str_]: ...
|
||||
@overload
|
||||
def ljust(a: S_co, width: i_co, fillchar: S_co = ...) -> NDArray[bytes_]: ...
|
||||
|
||||
@overload
|
||||
def lower(a: U_co) -> NDArray[str_]: ...
|
||||
@overload
|
||||
def lower(a: S_co) -> NDArray[bytes_]: ...
|
||||
|
||||
@overload
|
||||
def lstrip(a: U_co, chars: None | U_co = ...) -> NDArray[str_]: ...
|
||||
@overload
|
||||
def lstrip(a: S_co, chars: None | S_co = ...) -> NDArray[bytes_]: ...
|
||||
|
||||
@overload
|
||||
def partition(a: U_co, sep: U_co) -> NDArray[str_]: ...
|
||||
@overload
|
||||
def partition(a: S_co, sep: S_co) -> NDArray[bytes_]: ...
|
||||
|
||||
@overload
|
||||
def replace(
|
||||
a: U_co,
|
||||
old: U_co,
|
||||
new: U_co,
|
||||
count: None | i_co = ...,
|
||||
) -> NDArray[str_]: ...
|
||||
@overload
|
||||
def replace(
|
||||
a: S_co,
|
||||
old: S_co,
|
||||
new: S_co,
|
||||
count: None | i_co = ...,
|
||||
) -> NDArray[bytes_]: ...
|
||||
|
||||
@overload
|
||||
def rjust(
|
||||
a: U_co,
|
||||
width: i_co,
|
||||
fillchar: U_co = ...,
|
||||
) -> NDArray[str_]: ...
|
||||
@overload
|
||||
def rjust(
|
||||
a: S_co,
|
||||
width: i_co,
|
||||
fillchar: S_co = ...,
|
||||
) -> NDArray[bytes_]: ...
|
||||
|
||||
@overload
|
||||
def rpartition(a: U_co, sep: U_co) -> NDArray[str_]: ...
|
||||
@overload
|
||||
def rpartition(a: S_co, sep: S_co) -> NDArray[bytes_]: ...
|
||||
|
||||
@overload
|
||||
def rsplit(
|
||||
a: U_co,
|
||||
sep: None | U_co = ...,
|
||||
maxsplit: None | i_co = ...,
|
||||
) -> NDArray[object_]: ...
|
||||
@overload
|
||||
def rsplit(
|
||||
a: S_co,
|
||||
sep: None | S_co = ...,
|
||||
maxsplit: None | i_co = ...,
|
||||
) -> NDArray[object_]: ...
|
||||
|
||||
@overload
|
||||
def rstrip(a: U_co, chars: None | U_co = ...) -> NDArray[str_]: ...
|
||||
@overload
|
||||
def rstrip(a: S_co, chars: None | S_co = ...) -> NDArray[bytes_]: ...
|
||||
|
||||
@overload
|
||||
def split(
|
||||
a: U_co,
|
||||
sep: None | U_co = ...,
|
||||
maxsplit: None | i_co = ...,
|
||||
) -> NDArray[object_]: ...
|
||||
@overload
|
||||
def split(
|
||||
a: S_co,
|
||||
sep: None | S_co = ...,
|
||||
maxsplit: None | i_co = ...,
|
||||
) -> NDArray[object_]: ...
|
||||
|
||||
@overload
|
||||
def splitlines(a: U_co, keepends: None | b_co = ...) -> NDArray[object_]: ...
|
||||
@overload
|
||||
def splitlines(a: S_co, keepends: None | b_co = ...) -> NDArray[object_]: ...
|
||||
|
||||
@overload
|
||||
def strip(a: U_co, chars: None | U_co = ...) -> NDArray[str_]: ...
|
||||
@overload
|
||||
def strip(a: S_co, chars: None | S_co = ...) -> NDArray[bytes_]: ...
|
||||
|
||||
@overload
|
||||
def swapcase(a: U_co) -> NDArray[str_]: ...
|
||||
@overload
|
||||
def swapcase(a: S_co) -> NDArray[bytes_]: ...
|
||||
|
||||
@overload
|
||||
def title(a: U_co) -> NDArray[str_]: ...
|
||||
@overload
|
||||
def title(a: S_co) -> NDArray[bytes_]: ...
|
||||
|
||||
@overload
|
||||
def translate(
|
||||
a: U_co,
|
||||
table: U_co,
|
||||
deletechars: None | U_co = ...,
|
||||
) -> NDArray[str_]: ...
|
||||
@overload
|
||||
def translate(
|
||||
a: S_co,
|
||||
table: S_co,
|
||||
deletechars: None | S_co = ...,
|
||||
) -> NDArray[bytes_]: ...
|
||||
|
||||
@overload
|
||||
def upper(a: U_co) -> NDArray[str_]: ...
|
||||
@overload
|
||||
def upper(a: S_co) -> NDArray[bytes_]: ...
|
||||
|
||||
@overload
|
||||
def zfill(a: U_co, width: i_co) -> NDArray[str_]: ...
|
||||
@overload
|
||||
def zfill(a: S_co, width: i_co) -> NDArray[bytes_]: ...
|
||||
|
||||
# String information
|
||||
@overload
|
||||
def count(
|
||||
a: U_co,
|
||||
sub: U_co,
|
||||
start: i_co = ...,
|
||||
end: None | i_co = ...,
|
||||
) -> NDArray[int_]: ...
|
||||
@overload
|
||||
def count(
|
||||
a: S_co,
|
||||
sub: S_co,
|
||||
start: i_co = ...,
|
||||
end: None | i_co = ...,
|
||||
) -> NDArray[int_]: ...
|
||||
|
||||
@overload
|
||||
def endswith(
|
||||
a: U_co,
|
||||
suffix: U_co,
|
||||
start: i_co = ...,
|
||||
end: None | i_co = ...,
|
||||
) -> NDArray[np.bool]: ...
|
||||
@overload
|
||||
def endswith(
|
||||
a: S_co,
|
||||
suffix: S_co,
|
||||
start: i_co = ...,
|
||||
end: None | i_co = ...,
|
||||
) -> NDArray[np.bool]: ...
|
||||
|
||||
@overload
|
||||
def find(
|
||||
a: U_co,
|
||||
sub: U_co,
|
||||
start: i_co = ...,
|
||||
end: None | i_co = ...,
|
||||
) -> NDArray[int_]: ...
|
||||
@overload
|
||||
def find(
|
||||
a: S_co,
|
||||
sub: S_co,
|
||||
start: i_co = ...,
|
||||
end: None | i_co = ...,
|
||||
) -> NDArray[int_]: ...
|
||||
|
||||
@overload
|
||||
def index(
|
||||
a: U_co,
|
||||
sub: U_co,
|
||||
start: i_co = ...,
|
||||
end: None | i_co = ...,
|
||||
) -> NDArray[int_]: ...
|
||||
@overload
|
||||
def index(
|
||||
a: S_co,
|
||||
sub: S_co,
|
||||
start: i_co = ...,
|
||||
end: None | i_co = ...,
|
||||
) -> NDArray[int_]: ...
|
||||
|
||||
def isalpha(a: U_co | S_co) -> NDArray[np.bool]: ...
|
||||
def isalnum(a: U_co | S_co) -> NDArray[np.bool]: ...
|
||||
def isdecimal(a: U_co) -> NDArray[np.bool]: ...
|
||||
def isdigit(a: U_co | S_co) -> NDArray[np.bool]: ...
|
||||
def islower(a: U_co | S_co) -> NDArray[np.bool]: ...
|
||||
def isnumeric(a: U_co) -> NDArray[np.bool]: ...
|
||||
def isspace(a: U_co | S_co) -> NDArray[np.bool]: ...
|
||||
def istitle(a: U_co | S_co) -> NDArray[np.bool]: ...
|
||||
def isupper(a: U_co | S_co) -> NDArray[np.bool]: ...
|
||||
|
||||
@overload
|
||||
def rfind(
|
||||
a: U_co,
|
||||
sub: U_co,
|
||||
start: i_co = ...,
|
||||
end: None | i_co = ...,
|
||||
) -> NDArray[int_]: ...
|
||||
@overload
|
||||
def rfind(
|
||||
a: S_co,
|
||||
sub: S_co,
|
||||
start: i_co = ...,
|
||||
end: None | i_co = ...,
|
||||
) -> NDArray[int_]: ...
|
||||
|
||||
@overload
|
||||
def rindex(
|
||||
a: U_co,
|
||||
sub: U_co,
|
||||
start: i_co = ...,
|
||||
end: None | i_co = ...,
|
||||
) -> NDArray[int_]: ...
|
||||
@overload
|
||||
def rindex(
|
||||
a: S_co,
|
||||
sub: S_co,
|
||||
start: i_co = ...,
|
||||
end: None | i_co = ...,
|
||||
) -> NDArray[int_]: ...
|
||||
|
||||
@overload
|
||||
def startswith(
|
||||
a: U_co,
|
||||
prefix: U_co,
|
||||
start: i_co = ...,
|
||||
end: None | i_co = ...,
|
||||
) -> NDArray[np.bool]: ...
|
||||
@overload
|
||||
def startswith(
|
||||
a: S_co,
|
||||
prefix: S_co,
|
||||
start: i_co = ...,
|
||||
end: None | i_co = ...,
|
||||
) -> NDArray[np.bool]: ...
|
||||
|
||||
def str_len(A: U_co | S_co) -> NDArray[int_]: ...
|
||||
|
||||
# Overload 1 and 2: str- or bytes-based array-likes
|
||||
# overload 3: arbitrary object with unicode=False (-> bytes_)
|
||||
# overload 4: arbitrary object with unicode=True (-> str_)
|
||||
@overload
|
||||
def array(
|
||||
obj: U_co,
|
||||
itemsize: None | int = ...,
|
||||
copy: bool = ...,
|
||||
unicode: L[False] = ...,
|
||||
order: _OrderKACF = ...,
|
||||
) -> _CharArray[str_]: ...
|
||||
@overload
|
||||
def array(
|
||||
obj: S_co,
|
||||
itemsize: None | int = ...,
|
||||
copy: bool = ...,
|
||||
unicode: L[False] = ...,
|
||||
order: _OrderKACF = ...,
|
||||
) -> _CharArray[bytes_]: ...
|
||||
@overload
|
||||
def array(
|
||||
obj: object,
|
||||
itemsize: None | int = ...,
|
||||
copy: bool = ...,
|
||||
unicode: L[False] = ...,
|
||||
order: _OrderKACF = ...,
|
||||
) -> _CharArray[bytes_]: ...
|
||||
@overload
|
||||
def array(
|
||||
obj: object,
|
||||
itemsize: None | int = ...,
|
||||
copy: bool = ...,
|
||||
unicode: L[True] = ...,
|
||||
order: _OrderKACF = ...,
|
||||
) -> _CharArray[str_]: ...
|
||||
|
||||
@overload
|
||||
def asarray(
|
||||
obj: U_co,
|
||||
itemsize: None | int = ...,
|
||||
unicode: L[False] = ...,
|
||||
order: _OrderKACF = ...,
|
||||
) -> _CharArray[str_]: ...
|
||||
@overload
|
||||
def asarray(
|
||||
obj: S_co,
|
||||
itemsize: None | int = ...,
|
||||
unicode: L[False] = ...,
|
||||
order: _OrderKACF = ...,
|
||||
) -> _CharArray[bytes_]: ...
|
||||
@overload
|
||||
def asarray(
|
||||
obj: object,
|
||||
itemsize: None | int = ...,
|
||||
unicode: L[False] = ...,
|
||||
order: _OrderKACF = ...,
|
||||
) -> _CharArray[bytes_]: ...
|
||||
@overload
|
||||
def asarray(
|
||||
obj: object,
|
||||
itemsize: None | int = ...,
|
||||
unicode: L[True] = ...,
|
||||
order: _OrderKACF = ...,
|
||||
) -> _CharArray[str_]: ...
|
||||
1505
.CondaPkg/env/Lib/site-packages/numpy/_core/einsumfunc.py
vendored
Normal file
1505
.CondaPkg/env/Lib/site-packages/numpy/_core/einsumfunc.py
vendored
Normal file
File diff suppressed because it is too large
Load Diff
183
.CondaPkg/env/Lib/site-packages/numpy/_core/einsumfunc.pyi
vendored
Normal file
183
.CondaPkg/env/Lib/site-packages/numpy/_core/einsumfunc.pyi
vendored
Normal file
@@ -0,0 +1,183 @@
|
||||
from collections.abc import Sequence
|
||||
from typing import TypeVar, Any, overload, Literal
|
||||
|
||||
import numpy as np
|
||||
from numpy import number, _OrderKACF
|
||||
from numpy._typing import (
|
||||
NDArray,
|
||||
_ArrayLikeBool_co,
|
||||
_ArrayLikeUInt_co,
|
||||
_ArrayLikeInt_co,
|
||||
_ArrayLikeFloat_co,
|
||||
_ArrayLikeComplex_co,
|
||||
_ArrayLikeObject_co,
|
||||
_DTypeLikeBool,
|
||||
_DTypeLikeUInt,
|
||||
_DTypeLikeInt,
|
||||
_DTypeLikeFloat,
|
||||
_DTypeLikeComplex,
|
||||
_DTypeLikeComplex_co,
|
||||
_DTypeLikeObject,
|
||||
)
|
||||
|
||||
_ArrayType = TypeVar(
|
||||
"_ArrayType",
|
||||
bound=NDArray[np.bool | number[Any]],
|
||||
)
|
||||
|
||||
_OptimizeKind = None | bool | Literal["greedy", "optimal"] | Sequence[Any]
|
||||
_CastingSafe = Literal["no", "equiv", "safe", "same_kind"]
|
||||
_CastingUnsafe = Literal["unsafe"]
|
||||
|
||||
__all__: list[str]
|
||||
|
||||
# TODO: Properly handle the `casting`-based combinatorics
|
||||
# TODO: We need to evaluate the content `__subscripts` in order
|
||||
# to identify whether or an array or scalar is returned. At a cursory
|
||||
# glance this seems like something that can quite easily be done with
|
||||
# a mypy plugin.
|
||||
# Something like `is_scalar = bool(__subscripts.partition("->")[-1])`
|
||||
@overload
|
||||
def einsum(
|
||||
subscripts: str | _ArrayLikeInt_co,
|
||||
/,
|
||||
*operands: _ArrayLikeBool_co,
|
||||
out: None = ...,
|
||||
dtype: None | _DTypeLikeBool = ...,
|
||||
order: _OrderKACF = ...,
|
||||
casting: _CastingSafe = ...,
|
||||
optimize: _OptimizeKind = ...,
|
||||
) -> Any: ...
|
||||
@overload
|
||||
def einsum(
|
||||
subscripts: str | _ArrayLikeInt_co,
|
||||
/,
|
||||
*operands: _ArrayLikeUInt_co,
|
||||
out: None = ...,
|
||||
dtype: None | _DTypeLikeUInt = ...,
|
||||
order: _OrderKACF = ...,
|
||||
casting: _CastingSafe = ...,
|
||||
optimize: _OptimizeKind = ...,
|
||||
) -> Any: ...
|
||||
@overload
|
||||
def einsum(
|
||||
subscripts: str | _ArrayLikeInt_co,
|
||||
/,
|
||||
*operands: _ArrayLikeInt_co,
|
||||
out: None = ...,
|
||||
dtype: None | _DTypeLikeInt = ...,
|
||||
order: _OrderKACF = ...,
|
||||
casting: _CastingSafe = ...,
|
||||
optimize: _OptimizeKind = ...,
|
||||
) -> Any: ...
|
||||
@overload
|
||||
def einsum(
|
||||
subscripts: str | _ArrayLikeInt_co,
|
||||
/,
|
||||
*operands: _ArrayLikeFloat_co,
|
||||
out: None = ...,
|
||||
dtype: None | _DTypeLikeFloat = ...,
|
||||
order: _OrderKACF = ...,
|
||||
casting: _CastingSafe = ...,
|
||||
optimize: _OptimizeKind = ...,
|
||||
) -> Any: ...
|
||||
@overload
|
||||
def einsum(
|
||||
subscripts: str | _ArrayLikeInt_co,
|
||||
/,
|
||||
*operands: _ArrayLikeComplex_co,
|
||||
out: None = ...,
|
||||
dtype: None | _DTypeLikeComplex = ...,
|
||||
order: _OrderKACF = ...,
|
||||
casting: _CastingSafe = ...,
|
||||
optimize: _OptimizeKind = ...,
|
||||
) -> Any: ...
|
||||
@overload
|
||||
def einsum(
|
||||
subscripts: str | _ArrayLikeInt_co,
|
||||
/,
|
||||
*operands: Any,
|
||||
casting: _CastingUnsafe,
|
||||
dtype: None | _DTypeLikeComplex_co = ...,
|
||||
out: None = ...,
|
||||
order: _OrderKACF = ...,
|
||||
optimize: _OptimizeKind = ...,
|
||||
) -> Any: ...
|
||||
@overload
|
||||
def einsum(
|
||||
subscripts: str | _ArrayLikeInt_co,
|
||||
/,
|
||||
*operands: _ArrayLikeComplex_co,
|
||||
out: _ArrayType,
|
||||
dtype: None | _DTypeLikeComplex_co = ...,
|
||||
order: _OrderKACF = ...,
|
||||
casting: _CastingSafe = ...,
|
||||
optimize: _OptimizeKind = ...,
|
||||
) -> _ArrayType: ...
|
||||
@overload
|
||||
def einsum(
|
||||
subscripts: str | _ArrayLikeInt_co,
|
||||
/,
|
||||
*operands: Any,
|
||||
out: _ArrayType,
|
||||
casting: _CastingUnsafe,
|
||||
dtype: None | _DTypeLikeComplex_co = ...,
|
||||
order: _OrderKACF = ...,
|
||||
optimize: _OptimizeKind = ...,
|
||||
) -> _ArrayType: ...
|
||||
|
||||
@overload
|
||||
def einsum(
|
||||
subscripts: str | _ArrayLikeInt_co,
|
||||
/,
|
||||
*operands: _ArrayLikeObject_co,
|
||||
out: None = ...,
|
||||
dtype: None | _DTypeLikeObject = ...,
|
||||
order: _OrderKACF = ...,
|
||||
casting: _CastingSafe = ...,
|
||||
optimize: _OptimizeKind = ...,
|
||||
) -> Any: ...
|
||||
@overload
|
||||
def einsum(
|
||||
subscripts: str | _ArrayLikeInt_co,
|
||||
/,
|
||||
*operands: Any,
|
||||
casting: _CastingUnsafe,
|
||||
dtype: None | _DTypeLikeObject = ...,
|
||||
out: None = ...,
|
||||
order: _OrderKACF = ...,
|
||||
optimize: _OptimizeKind = ...,
|
||||
) -> Any: ...
|
||||
@overload
|
||||
def einsum(
|
||||
subscripts: str | _ArrayLikeInt_co,
|
||||
/,
|
||||
*operands: _ArrayLikeObject_co,
|
||||
out: _ArrayType,
|
||||
dtype: None | _DTypeLikeObject = ...,
|
||||
order: _OrderKACF = ...,
|
||||
casting: _CastingSafe = ...,
|
||||
optimize: _OptimizeKind = ...,
|
||||
) -> _ArrayType: ...
|
||||
@overload
|
||||
def einsum(
|
||||
subscripts: str | _ArrayLikeInt_co,
|
||||
/,
|
||||
*operands: Any,
|
||||
out: _ArrayType,
|
||||
casting: _CastingUnsafe,
|
||||
dtype: None | _DTypeLikeObject = ...,
|
||||
order: _OrderKACF = ...,
|
||||
optimize: _OptimizeKind = ...,
|
||||
) -> _ArrayType: ...
|
||||
|
||||
# NOTE: `einsum_call` is a hidden kwarg unavailable for public use.
|
||||
# It is therefore excluded from the signatures below.
|
||||
# NOTE: In practice the list consists of a `str` (first element)
|
||||
# and a variable number of integer tuples.
|
||||
def einsum_path(
|
||||
subscripts: str | _ArrayLikeInt_co,
|
||||
/,
|
||||
*operands: _ArrayLikeComplex_co | _DTypeLikeObject,
|
||||
optimize: _OptimizeKind = ...,
|
||||
) -> tuple[list[Any], str]: ...
|
||||
4320
.CondaPkg/env/Lib/site-packages/numpy/_core/fromnumeric.py
vendored
Normal file
4320
.CondaPkg/env/Lib/site-packages/numpy/_core/fromnumeric.py
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1245
.CondaPkg/env/Lib/site-packages/numpy/_core/fromnumeric.pyi
vendored
Normal file
1245
.CondaPkg/env/Lib/site-packages/numpy/_core/fromnumeric.pyi
vendored
Normal file
File diff suppressed because it is too large
Load Diff
562
.CondaPkg/env/Lib/site-packages/numpy/_core/function_base.py
vendored
Normal file
562
.CondaPkg/env/Lib/site-packages/numpy/_core/function_base.py
vendored
Normal file
@@ -0,0 +1,562 @@
|
||||
import functools
|
||||
import warnings
|
||||
import operator
|
||||
import types
|
||||
|
||||
import numpy as np
|
||||
from . import numeric as _nx
|
||||
from .numeric import result_type, nan, asanyarray, ndim
|
||||
from numpy._core.multiarray import add_docstring
|
||||
from numpy._core._multiarray_umath import _array_converter
|
||||
from numpy._core import overrides
|
||||
|
||||
__all__ = ['logspace', 'linspace', 'geomspace']
|
||||
|
||||
|
||||
array_function_dispatch = functools.partial(
|
||||
overrides.array_function_dispatch, module='numpy')
|
||||
|
||||
|
||||
def _linspace_dispatcher(start, stop, num=None, endpoint=None, retstep=None,
|
||||
dtype=None, axis=None, *, device=None):
|
||||
return (start, stop)
|
||||
|
||||
|
||||
@array_function_dispatch(_linspace_dispatcher)
|
||||
def linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None,
|
||||
axis=0, *, device=None):
|
||||
"""
|
||||
Return evenly spaced numbers over a specified interval.
|
||||
|
||||
Returns `num` evenly spaced samples, calculated over the
|
||||
interval [`start`, `stop`].
|
||||
|
||||
The endpoint of the interval can optionally be excluded.
|
||||
|
||||
.. versionchanged:: 1.16.0
|
||||
Non-scalar `start` and `stop` are now supported.
|
||||
|
||||
.. versionchanged:: 1.20.0
|
||||
Values are rounded towards ``-inf`` instead of ``0`` when an
|
||||
integer ``dtype`` is specified. The old behavior can
|
||||
still be obtained with ``np.linspace(start, stop, num).astype(int)``
|
||||
|
||||
Parameters
|
||||
----------
|
||||
start : array_like
|
||||
The starting value of the sequence.
|
||||
stop : array_like
|
||||
The end value of the sequence, unless `endpoint` is set to False.
|
||||
In that case, the sequence consists of all but the last of ``num + 1``
|
||||
evenly spaced samples, so that `stop` is excluded. Note that the step
|
||||
size changes when `endpoint` is False.
|
||||
num : int, optional
|
||||
Number of samples to generate. Default is 50. Must be non-negative.
|
||||
endpoint : bool, optional
|
||||
If True, `stop` is the last sample. Otherwise, it is not included.
|
||||
Default is True.
|
||||
retstep : bool, optional
|
||||
If True, return (`samples`, `step`), where `step` is the spacing
|
||||
between samples.
|
||||
dtype : dtype, optional
|
||||
The type of the output array. If `dtype` is not given, the data type
|
||||
is inferred from `start` and `stop`. The inferred dtype will never be
|
||||
an integer; `float` is chosen even if the arguments would produce an
|
||||
array of integers.
|
||||
|
||||
.. versionadded:: 1.9.0
|
||||
axis : int, optional
|
||||
The axis in the result to store the samples. Relevant only if start
|
||||
or stop are array-like. By default (0), the samples will be along a
|
||||
new axis inserted at the beginning. Use -1 to get an axis at the end.
|
||||
|
||||
.. versionadded:: 1.16.0
|
||||
device : str, optional
|
||||
The device on which to place the created array. Default: None.
|
||||
For Array-API interoperability only, so must be ``"cpu"`` if passed.
|
||||
|
||||
.. versionadded:: 2.0.0
|
||||
|
||||
Returns
|
||||
-------
|
||||
samples : ndarray
|
||||
There are `num` equally spaced samples in the closed interval
|
||||
``[start, stop]`` or the half-open interval ``[start, stop)``
|
||||
(depending on whether `endpoint` is True or False).
|
||||
step : float, optional
|
||||
Only returned if `retstep` is True
|
||||
|
||||
Size of spacing between samples.
|
||||
|
||||
|
||||
See Also
|
||||
--------
|
||||
arange : Similar to `linspace`, but uses a step size (instead of the
|
||||
number of samples).
|
||||
geomspace : Similar to `linspace`, but with numbers spaced evenly on a log
|
||||
scale (a geometric progression).
|
||||
logspace : Similar to `geomspace`, but with the end points specified as
|
||||
logarithms.
|
||||
:ref:`how-to-partition`
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> import numpy as np
|
||||
>>> np.linspace(2.0, 3.0, num=5)
|
||||
array([2. , 2.25, 2.5 , 2.75, 3. ])
|
||||
>>> np.linspace(2.0, 3.0, num=5, endpoint=False)
|
||||
array([2. , 2.2, 2.4, 2.6, 2.8])
|
||||
>>> np.linspace(2.0, 3.0, num=5, retstep=True)
|
||||
(array([2. , 2.25, 2.5 , 2.75, 3. ]), 0.25)
|
||||
|
||||
Graphical illustration:
|
||||
|
||||
>>> import matplotlib.pyplot as plt
|
||||
>>> N = 8
|
||||
>>> y = np.zeros(N)
|
||||
>>> x1 = np.linspace(0, 10, N, endpoint=True)
|
||||
>>> x2 = np.linspace(0, 10, N, endpoint=False)
|
||||
>>> plt.plot(x1, y, 'o')
|
||||
[<matplotlib.lines.Line2D object at 0x...>]
|
||||
>>> plt.plot(x2, y + 0.5, 'o')
|
||||
[<matplotlib.lines.Line2D object at 0x...>]
|
||||
>>> plt.ylim([-0.5, 1])
|
||||
(-0.5, 1)
|
||||
>>> plt.show()
|
||||
|
||||
"""
|
||||
num = operator.index(num)
|
||||
if num < 0:
|
||||
raise ValueError(
|
||||
"Number of samples, %s, must be non-negative." % num
|
||||
)
|
||||
div = (num - 1) if endpoint else num
|
||||
|
||||
conv = _array_converter(start, stop)
|
||||
start, stop = conv.as_arrays()
|
||||
dt = conv.result_type(ensure_inexact=True)
|
||||
|
||||
if dtype is None:
|
||||
dtype = dt
|
||||
integer_dtype = False
|
||||
else:
|
||||
integer_dtype = _nx.issubdtype(dtype, _nx.integer)
|
||||
|
||||
# Use `dtype=type(dt)` to enforce a floating point evaluation:
|
||||
delta = np.subtract(stop, start, dtype=type(dt))
|
||||
y = _nx.arange(
|
||||
0, num, dtype=dt, device=device
|
||||
).reshape((-1,) + (1,) * ndim(delta))
|
||||
|
||||
# In-place multiplication y *= delta/div is faster, but prevents
|
||||
# the multiplicant from overriding what class is produced, and thus
|
||||
# prevents, e.g. use of Quantities, see gh-7142. Hence, we multiply
|
||||
# in place only for standard scalar types.
|
||||
if div > 0:
|
||||
_mult_inplace = _nx.isscalar(delta)
|
||||
step = delta / div
|
||||
any_step_zero = (
|
||||
step == 0 if _mult_inplace else _nx.asanyarray(step == 0).any())
|
||||
if any_step_zero:
|
||||
# Special handling for denormal numbers, gh-5437
|
||||
y /= div
|
||||
if _mult_inplace:
|
||||
y *= delta
|
||||
else:
|
||||
y = y * delta
|
||||
else:
|
||||
if _mult_inplace:
|
||||
y *= step
|
||||
else:
|
||||
y = y * step
|
||||
else:
|
||||
# sequences with 0 items or 1 item with endpoint=True (i.e. div <= 0)
|
||||
# have an undefined step
|
||||
step = nan
|
||||
# Multiply with delta to allow possible override of output class.
|
||||
y = y * delta
|
||||
|
||||
y += start
|
||||
|
||||
if endpoint and num > 1:
|
||||
y[-1, ...] = stop
|
||||
|
||||
if axis != 0:
|
||||
y = _nx.moveaxis(y, 0, axis)
|
||||
|
||||
if integer_dtype:
|
||||
_nx.floor(y, out=y)
|
||||
|
||||
y = conv.wrap(y.astype(dtype, copy=False))
|
||||
if retstep:
|
||||
return y, step
|
||||
else:
|
||||
return y
|
||||
|
||||
|
||||
def _logspace_dispatcher(start, stop, num=None, endpoint=None, base=None,
|
||||
dtype=None, axis=None):
|
||||
return (start, stop, base)
|
||||
|
||||
|
||||
@array_function_dispatch(_logspace_dispatcher)
|
||||
def logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None,
|
||||
axis=0):
|
||||
"""
|
||||
Return numbers spaced evenly on a log scale.
|
||||
|
||||
In linear space, the sequence starts at ``base ** start``
|
||||
(`base` to the power of `start`) and ends with ``base ** stop``
|
||||
(see `endpoint` below).
|
||||
|
||||
.. versionchanged:: 1.16.0
|
||||
Non-scalar `start` and `stop` are now supported.
|
||||
|
||||
.. versionchanged:: 1.25.0
|
||||
Non-scalar 'base` is now supported
|
||||
|
||||
Parameters
|
||||
----------
|
||||
start : array_like
|
||||
``base ** start`` is the starting value of the sequence.
|
||||
stop : array_like
|
||||
``base ** stop`` is the final value of the sequence, unless `endpoint`
|
||||
is False. In that case, ``num + 1`` values are spaced over the
|
||||
interval in log-space, of which all but the last (a sequence of
|
||||
length `num`) are returned.
|
||||
num : integer, optional
|
||||
Number of samples to generate. Default is 50.
|
||||
endpoint : boolean, optional
|
||||
If true, `stop` is the last sample. Otherwise, it is not included.
|
||||
Default is True.
|
||||
base : array_like, optional
|
||||
The base of the log space. The step size between the elements in
|
||||
``ln(samples) / ln(base)`` (or ``log_base(samples)``) is uniform.
|
||||
Default is 10.0.
|
||||
dtype : dtype
|
||||
The type of the output array. If `dtype` is not given, the data type
|
||||
is inferred from `start` and `stop`. The inferred type will never be
|
||||
an integer; `float` is chosen even if the arguments would produce an
|
||||
array of integers.
|
||||
axis : int, optional
|
||||
The axis in the result to store the samples. Relevant only if start,
|
||||
stop, or base are array-like. By default (0), the samples will be
|
||||
along a new axis inserted at the beginning. Use -1 to get an axis at
|
||||
the end.
|
||||
|
||||
.. versionadded:: 1.16.0
|
||||
|
||||
|
||||
Returns
|
||||
-------
|
||||
samples : ndarray
|
||||
`num` samples, equally spaced on a log scale.
|
||||
|
||||
See Also
|
||||
--------
|
||||
arange : Similar to linspace, with the step size specified instead of the
|
||||
number of samples. Note that, when used with a float endpoint, the
|
||||
endpoint may or may not be included.
|
||||
linspace : Similar to logspace, but with the samples uniformly distributed
|
||||
in linear space, instead of log space.
|
||||
geomspace : Similar to logspace, but with endpoints specified directly.
|
||||
:ref:`how-to-partition`
|
||||
|
||||
Notes
|
||||
-----
|
||||
If base is a scalar, logspace is equivalent to the code
|
||||
|
||||
>>> y = np.linspace(start, stop, num=num, endpoint=endpoint)
|
||||
... # doctest: +SKIP
|
||||
>>> power(base, y).astype(dtype)
|
||||
... # doctest: +SKIP
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> import numpy as np
|
||||
>>> np.logspace(2.0, 3.0, num=4)
|
||||
array([ 100. , 215.443469 , 464.15888336, 1000. ])
|
||||
>>> np.logspace(2.0, 3.0, num=4, endpoint=False)
|
||||
array([100. , 177.827941 , 316.22776602, 562.34132519])
|
||||
>>> np.logspace(2.0, 3.0, num=4, base=2.0)
|
||||
array([4. , 5.0396842 , 6.34960421, 8. ])
|
||||
>>> np.logspace(2.0, 3.0, num=4, base=[2.0, 3.0], axis=-1)
|
||||
array([[ 4. , 5.0396842 , 6.34960421, 8. ],
|
||||
[ 9. , 12.98024613, 18.72075441, 27. ]])
|
||||
|
||||
Graphical illustration:
|
||||
|
||||
>>> import matplotlib.pyplot as plt
|
||||
>>> N = 10
|
||||
>>> x1 = np.logspace(0.1, 1, N, endpoint=True)
|
||||
>>> x2 = np.logspace(0.1, 1, N, endpoint=False)
|
||||
>>> y = np.zeros(N)
|
||||
>>> plt.plot(x1, y, 'o')
|
||||
[<matplotlib.lines.Line2D object at 0x...>]
|
||||
>>> plt.plot(x2, y + 0.5, 'o')
|
||||
[<matplotlib.lines.Line2D object at 0x...>]
|
||||
>>> plt.ylim([-0.5, 1])
|
||||
(-0.5, 1)
|
||||
>>> plt.show()
|
||||
|
||||
"""
|
||||
if not isinstance(base, (float, int)) and np.ndim(base):
|
||||
# If base is non-scalar, broadcast it with the others, since it
|
||||
# may influence how axis is interpreted.
|
||||
ndmax = np.broadcast(start, stop, base).ndim
|
||||
start, stop, base = (
|
||||
np.array(a, copy=None, subok=True, ndmin=ndmax)
|
||||
for a in (start, stop, base)
|
||||
)
|
||||
base = np.expand_dims(base, axis=axis)
|
||||
y = linspace(start, stop, num=num, endpoint=endpoint, axis=axis)
|
||||
if dtype is None:
|
||||
return _nx.power(base, y)
|
||||
return _nx.power(base, y).astype(dtype, copy=False)
|
||||
|
||||
|
||||
def _geomspace_dispatcher(start, stop, num=None, endpoint=None, dtype=None,
|
||||
axis=None):
|
||||
return (start, stop)
|
||||
|
||||
|
||||
@array_function_dispatch(_geomspace_dispatcher)
|
||||
def geomspace(start, stop, num=50, endpoint=True, dtype=None, axis=0):
|
||||
"""
|
||||
Return numbers spaced evenly on a log scale (a geometric progression).
|
||||
|
||||
This is similar to `logspace`, but with endpoints specified directly.
|
||||
Each output sample is a constant multiple of the previous.
|
||||
|
||||
.. versionchanged:: 1.16.0
|
||||
Non-scalar `start` and `stop` are now supported.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
start : array_like
|
||||
The starting value of the sequence.
|
||||
stop : array_like
|
||||
The final value of the sequence, unless `endpoint` is False.
|
||||
In that case, ``num + 1`` values are spaced over the
|
||||
interval in log-space, of which all but the last (a sequence of
|
||||
length `num`) are returned.
|
||||
num : integer, optional
|
||||
Number of samples to generate. Default is 50.
|
||||
endpoint : boolean, optional
|
||||
If true, `stop` is the last sample. Otherwise, it is not included.
|
||||
Default is True.
|
||||
dtype : dtype
|
||||
The type of the output array. If `dtype` is not given, the data type
|
||||
is inferred from `start` and `stop`. The inferred dtype will never be
|
||||
an integer; `float` is chosen even if the arguments would produce an
|
||||
array of integers.
|
||||
axis : int, optional
|
||||
The axis in the result to store the samples. Relevant only if start
|
||||
or stop are array-like. By default (0), the samples will be along a
|
||||
new axis inserted at the beginning. Use -1 to get an axis at the end.
|
||||
|
||||
.. versionadded:: 1.16.0
|
||||
|
||||
Returns
|
||||
-------
|
||||
samples : ndarray
|
||||
`num` samples, equally spaced on a log scale.
|
||||
|
||||
See Also
|
||||
--------
|
||||
logspace : Similar to geomspace, but with endpoints specified using log
|
||||
and base.
|
||||
linspace : Similar to geomspace, but with arithmetic instead of geometric
|
||||
progression.
|
||||
arange : Similar to linspace, with the step size specified instead of the
|
||||
number of samples.
|
||||
:ref:`how-to-partition`
|
||||
|
||||
Notes
|
||||
-----
|
||||
If the inputs or dtype are complex, the output will follow a logarithmic
|
||||
spiral in the complex plane. (There are an infinite number of spirals
|
||||
passing through two points; the output will follow the shortest such path.)
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> import numpy as np
|
||||
>>> np.geomspace(1, 1000, num=4)
|
||||
array([ 1., 10., 100., 1000.])
|
||||
>>> np.geomspace(1, 1000, num=3, endpoint=False)
|
||||
array([ 1., 10., 100.])
|
||||
>>> np.geomspace(1, 1000, num=4, endpoint=False)
|
||||
array([ 1. , 5.62341325, 31.6227766 , 177.827941 ])
|
||||
>>> np.geomspace(1, 256, num=9)
|
||||
array([ 1., 2., 4., 8., 16., 32., 64., 128., 256.])
|
||||
|
||||
Note that the above may not produce exact integers:
|
||||
|
||||
>>> np.geomspace(1, 256, num=9, dtype=int)
|
||||
array([ 1, 2, 4, 7, 16, 32, 63, 127, 256])
|
||||
>>> np.around(np.geomspace(1, 256, num=9)).astype(int)
|
||||
array([ 1, 2, 4, 8, 16, 32, 64, 128, 256])
|
||||
|
||||
Negative, decreasing, and complex inputs are allowed:
|
||||
|
||||
>>> np.geomspace(1000, 1, num=4)
|
||||
array([1000., 100., 10., 1.])
|
||||
>>> np.geomspace(-1000, -1, num=4)
|
||||
array([-1000., -100., -10., -1.])
|
||||
>>> np.geomspace(1j, 1000j, num=4) # Straight line
|
||||
array([0. +1.j, 0. +10.j, 0. +100.j, 0.+1000.j])
|
||||
>>> np.geomspace(-1+0j, 1+0j, num=5) # Circle
|
||||
array([-1.00000000e+00+1.22464680e-16j, -7.07106781e-01+7.07106781e-01j,
|
||||
6.12323400e-17+1.00000000e+00j, 7.07106781e-01+7.07106781e-01j,
|
||||
1.00000000e+00+0.00000000e+00j])
|
||||
|
||||
Graphical illustration of `endpoint` parameter:
|
||||
|
||||
>>> import matplotlib.pyplot as plt
|
||||
>>> N = 10
|
||||
>>> y = np.zeros(N)
|
||||
>>> plt.semilogx(np.geomspace(1, 1000, N, endpoint=True), y + 1, 'o')
|
||||
[<matplotlib.lines.Line2D object at 0x...>]
|
||||
>>> plt.semilogx(np.geomspace(1, 1000, N, endpoint=False), y + 2, 'o')
|
||||
[<matplotlib.lines.Line2D object at 0x...>]
|
||||
>>> plt.axis([0.5, 2000, 0, 3])
|
||||
[0.5, 2000, 0, 3]
|
||||
>>> plt.grid(True, color='0.7', linestyle='-', which='both', axis='both')
|
||||
>>> plt.show()
|
||||
|
||||
"""
|
||||
start = asanyarray(start)
|
||||
stop = asanyarray(stop)
|
||||
if _nx.any(start == 0) or _nx.any(stop == 0):
|
||||
raise ValueError('Geometric sequence cannot include zero')
|
||||
|
||||
dt = result_type(start, stop, float(num), _nx.zeros((), dtype))
|
||||
if dtype is None:
|
||||
dtype = dt
|
||||
else:
|
||||
# complex to dtype('complex128'), for instance
|
||||
dtype = _nx.dtype(dtype)
|
||||
|
||||
# Promote both arguments to the same dtype in case, for instance, one is
|
||||
# complex and another is negative and log would produce NaN otherwise.
|
||||
# Copy since we may change things in-place further down.
|
||||
start = start.astype(dt, copy=True)
|
||||
stop = stop.astype(dt, copy=True)
|
||||
|
||||
# Allow negative real values and ensure a consistent result for complex
|
||||
# (including avoiding negligible real or imaginary parts in output) by
|
||||
# rotating start to positive real, calculating, then undoing rotation.
|
||||
out_sign = _nx.sign(start)
|
||||
start /= out_sign
|
||||
stop = stop / out_sign
|
||||
|
||||
log_start = _nx.log10(start)
|
||||
log_stop = _nx.log10(stop)
|
||||
result = logspace(log_start, log_stop, num=num,
|
||||
endpoint=endpoint, base=10.0, dtype=dt)
|
||||
|
||||
# Make sure the endpoints match the start and stop arguments. This is
|
||||
# necessary because np.exp(np.log(x)) is not necessarily equal to x.
|
||||
if num > 0:
|
||||
result[0] = start
|
||||
if num > 1 and endpoint:
|
||||
result[-1] = stop
|
||||
|
||||
result *= out_sign
|
||||
|
||||
if axis != 0:
|
||||
result = _nx.moveaxis(result, 0, axis)
|
||||
|
||||
return result.astype(dtype, copy=False)
|
||||
|
||||
|
||||
def _needs_add_docstring(obj):
|
||||
"""
|
||||
Returns true if the only way to set the docstring of `obj` from python is
|
||||
via add_docstring.
|
||||
|
||||
This function errs on the side of being overly conservative.
|
||||
"""
|
||||
Py_TPFLAGS_HEAPTYPE = 1 << 9
|
||||
|
||||
if isinstance(obj, (types.FunctionType, types.MethodType, property)):
|
||||
return False
|
||||
|
||||
if isinstance(obj, type) and obj.__flags__ & Py_TPFLAGS_HEAPTYPE:
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
|
||||
def _add_docstring(obj, doc, warn_on_python):
|
||||
if warn_on_python and not _needs_add_docstring(obj):
|
||||
warnings.warn(
|
||||
"add_newdoc was used on a pure-python object {}. "
|
||||
"Prefer to attach it directly to the source."
|
||||
.format(obj),
|
||||
UserWarning,
|
||||
stacklevel=3)
|
||||
try:
|
||||
add_docstring(obj, doc)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
|
||||
def add_newdoc(place, obj, doc, warn_on_python=True):
|
||||
"""
|
||||
Add documentation to an existing object, typically one defined in C
|
||||
|
||||
The purpose is to allow easier editing of the docstrings without requiring
|
||||
a re-compile. This exists primarily for internal use within numpy itself.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
place : str
|
||||
The absolute name of the module to import from
|
||||
obj : str or None
|
||||
The name of the object to add documentation to, typically a class or
|
||||
function name.
|
||||
doc : {str, Tuple[str, str], List[Tuple[str, str]]}
|
||||
If a string, the documentation to apply to `obj`
|
||||
|
||||
If a tuple, then the first element is interpreted as an attribute
|
||||
of `obj` and the second as the docstring to apply -
|
||||
``(method, docstring)``
|
||||
|
||||
If a list, then each element of the list should be a tuple of length
|
||||
two - ``[(method1, docstring1), (method2, docstring2), ...]``
|
||||
warn_on_python : bool
|
||||
If True, the default, emit `UserWarning` if this is used to attach
|
||||
documentation to a pure-python object.
|
||||
|
||||
Notes
|
||||
-----
|
||||
This routine never raises an error if the docstring can't be written, but
|
||||
will raise an error if the object being documented does not exist.
|
||||
|
||||
This routine cannot modify read-only docstrings, as appear
|
||||
in new-style classes or built-in functions. Because this
|
||||
routine never raises an error the caller must check manually
|
||||
that the docstrings were changed.
|
||||
|
||||
Since this function grabs the ``char *`` from a c-level str object and puts
|
||||
it into the ``tp_doc`` slot of the type of `obj`, it violates a number of
|
||||
C-API best-practices, by:
|
||||
|
||||
- modifying a `PyTypeObject` after calling `PyType_Ready`
|
||||
- calling `Py_INCREF` on the str and losing the reference, so the str
|
||||
will never be released
|
||||
|
||||
If possible it should be avoided.
|
||||
"""
|
||||
new = getattr(__import__(place, globals(), {}, [obj]), obj)
|
||||
if isinstance(doc, str):
|
||||
_add_docstring(new, doc.strip(), warn_on_python)
|
||||
elif isinstance(doc, tuple):
|
||||
attr, docstring = doc
|
||||
_add_docstring(getattr(new, attr), docstring.strip(), warn_on_python)
|
||||
elif isinstance(doc, list):
|
||||
for attr, docstring in doc:
|
||||
_add_docstring(
|
||||
getattr(new, attr), docstring.strip(), warn_on_python
|
||||
)
|
||||
202
.CondaPkg/env/Lib/site-packages/numpy/_core/function_base.pyi
vendored
Normal file
202
.CondaPkg/env/Lib/site-packages/numpy/_core/function_base.pyi
vendored
Normal file
@@ -0,0 +1,202 @@
|
||||
from typing import (
|
||||
Literal as L,
|
||||
overload,
|
||||
Any,
|
||||
SupportsIndex,
|
||||
TypeVar,
|
||||
)
|
||||
|
||||
from numpy import floating, complexfloating, generic
|
||||
from numpy._typing import (
|
||||
NDArray,
|
||||
DTypeLike,
|
||||
_DTypeLike,
|
||||
_ArrayLikeFloat_co,
|
||||
_ArrayLikeComplex_co,
|
||||
)
|
||||
|
||||
_SCT = TypeVar("_SCT", bound=generic)
|
||||
|
||||
__all__: list[str]
|
||||
|
||||
@overload
|
||||
def linspace(
|
||||
start: _ArrayLikeFloat_co,
|
||||
stop: _ArrayLikeFloat_co,
|
||||
num: SupportsIndex = ...,
|
||||
endpoint: bool = ...,
|
||||
retstep: L[False] = ...,
|
||||
dtype: None = ...,
|
||||
axis: SupportsIndex = ...,
|
||||
*,
|
||||
device: None | L["cpu"] = ...,
|
||||
) -> NDArray[floating[Any]]: ...
|
||||
@overload
|
||||
def linspace(
|
||||
start: _ArrayLikeComplex_co,
|
||||
stop: _ArrayLikeComplex_co,
|
||||
num: SupportsIndex = ...,
|
||||
endpoint: bool = ...,
|
||||
retstep: L[False] = ...,
|
||||
dtype: None = ...,
|
||||
axis: SupportsIndex = ...,
|
||||
*,
|
||||
device: None | L["cpu"] = ...,
|
||||
) -> NDArray[complexfloating[Any, Any]]: ...
|
||||
@overload
|
||||
def linspace(
|
||||
start: _ArrayLikeComplex_co,
|
||||
stop: _ArrayLikeComplex_co,
|
||||
num: SupportsIndex = ...,
|
||||
endpoint: bool = ...,
|
||||
retstep: L[False] = ...,
|
||||
dtype: _DTypeLike[_SCT] = ...,
|
||||
axis: SupportsIndex = ...,
|
||||
*,
|
||||
device: None | L["cpu"] = ...,
|
||||
) -> NDArray[_SCT]: ...
|
||||
@overload
|
||||
def linspace(
|
||||
start: _ArrayLikeComplex_co,
|
||||
stop: _ArrayLikeComplex_co,
|
||||
num: SupportsIndex = ...,
|
||||
endpoint: bool = ...,
|
||||
retstep: L[False] = ...,
|
||||
dtype: DTypeLike = ...,
|
||||
axis: SupportsIndex = ...,
|
||||
*,
|
||||
device: None | L["cpu"] = ...,
|
||||
) -> NDArray[Any]: ...
|
||||
@overload
|
||||
def linspace(
|
||||
start: _ArrayLikeFloat_co,
|
||||
stop: _ArrayLikeFloat_co,
|
||||
num: SupportsIndex = ...,
|
||||
endpoint: bool = ...,
|
||||
retstep: L[True] = ...,
|
||||
dtype: None = ...,
|
||||
axis: SupportsIndex = ...,
|
||||
*,
|
||||
device: None | L["cpu"] = ...,
|
||||
) -> tuple[NDArray[floating[Any]], floating[Any]]: ...
|
||||
@overload
|
||||
def linspace(
|
||||
start: _ArrayLikeComplex_co,
|
||||
stop: _ArrayLikeComplex_co,
|
||||
num: SupportsIndex = ...,
|
||||
endpoint: bool = ...,
|
||||
retstep: L[True] = ...,
|
||||
dtype: None = ...,
|
||||
axis: SupportsIndex = ...,
|
||||
*,
|
||||
device: None | L["cpu"] = ...,
|
||||
) -> tuple[NDArray[complexfloating[Any, Any]], complexfloating[Any, Any]]: ...
|
||||
@overload
|
||||
def linspace(
|
||||
start: _ArrayLikeComplex_co,
|
||||
stop: _ArrayLikeComplex_co,
|
||||
num: SupportsIndex = ...,
|
||||
endpoint: bool = ...,
|
||||
retstep: L[True] = ...,
|
||||
dtype: _DTypeLike[_SCT] = ...,
|
||||
axis: SupportsIndex = ...,
|
||||
*,
|
||||
device: None | L["cpu"] = ...,
|
||||
) -> tuple[NDArray[_SCT], _SCT]: ...
|
||||
@overload
|
||||
def linspace(
|
||||
start: _ArrayLikeComplex_co,
|
||||
stop: _ArrayLikeComplex_co,
|
||||
num: SupportsIndex = ...,
|
||||
endpoint: bool = ...,
|
||||
retstep: L[True] = ...,
|
||||
dtype: DTypeLike = ...,
|
||||
axis: SupportsIndex = ...,
|
||||
*,
|
||||
device: None | L["cpu"] = ...,
|
||||
) -> tuple[NDArray[Any], Any]: ...
|
||||
|
||||
@overload
|
||||
def logspace(
|
||||
start: _ArrayLikeFloat_co,
|
||||
stop: _ArrayLikeFloat_co,
|
||||
num: SupportsIndex = ...,
|
||||
endpoint: bool = ...,
|
||||
base: _ArrayLikeFloat_co = ...,
|
||||
dtype: None = ...,
|
||||
axis: SupportsIndex = ...,
|
||||
) -> NDArray[floating[Any]]: ...
|
||||
@overload
|
||||
def logspace(
|
||||
start: _ArrayLikeComplex_co,
|
||||
stop: _ArrayLikeComplex_co,
|
||||
num: SupportsIndex = ...,
|
||||
endpoint: bool = ...,
|
||||
base: _ArrayLikeComplex_co = ...,
|
||||
dtype: None = ...,
|
||||
axis: SupportsIndex = ...,
|
||||
) -> NDArray[complexfloating[Any, Any]]: ...
|
||||
@overload
|
||||
def logspace(
|
||||
start: _ArrayLikeComplex_co,
|
||||
stop: _ArrayLikeComplex_co,
|
||||
num: SupportsIndex = ...,
|
||||
endpoint: bool = ...,
|
||||
base: _ArrayLikeComplex_co = ...,
|
||||
dtype: _DTypeLike[_SCT] = ...,
|
||||
axis: SupportsIndex = ...,
|
||||
) -> NDArray[_SCT]: ...
|
||||
@overload
|
||||
def logspace(
|
||||
start: _ArrayLikeComplex_co,
|
||||
stop: _ArrayLikeComplex_co,
|
||||
num: SupportsIndex = ...,
|
||||
endpoint: bool = ...,
|
||||
base: _ArrayLikeComplex_co = ...,
|
||||
dtype: DTypeLike = ...,
|
||||
axis: SupportsIndex = ...,
|
||||
) -> NDArray[Any]: ...
|
||||
|
||||
@overload
|
||||
def geomspace(
|
||||
start: _ArrayLikeFloat_co,
|
||||
stop: _ArrayLikeFloat_co,
|
||||
num: SupportsIndex = ...,
|
||||
endpoint: bool = ...,
|
||||
dtype: None = ...,
|
||||
axis: SupportsIndex = ...,
|
||||
) -> NDArray[floating[Any]]: ...
|
||||
@overload
|
||||
def geomspace(
|
||||
start: _ArrayLikeComplex_co,
|
||||
stop: _ArrayLikeComplex_co,
|
||||
num: SupportsIndex = ...,
|
||||
endpoint: bool = ...,
|
||||
dtype: None = ...,
|
||||
axis: SupportsIndex = ...,
|
||||
) -> NDArray[complexfloating[Any, Any]]: ...
|
||||
@overload
|
||||
def geomspace(
|
||||
start: _ArrayLikeComplex_co,
|
||||
stop: _ArrayLikeComplex_co,
|
||||
num: SupportsIndex = ...,
|
||||
endpoint: bool = ...,
|
||||
dtype: _DTypeLike[_SCT] = ...,
|
||||
axis: SupportsIndex = ...,
|
||||
) -> NDArray[_SCT]: ...
|
||||
@overload
|
||||
def geomspace(
|
||||
start: _ArrayLikeComplex_co,
|
||||
stop: _ArrayLikeComplex_co,
|
||||
num: SupportsIndex = ...,
|
||||
endpoint: bool = ...,
|
||||
dtype: DTypeLike = ...,
|
||||
axis: SupportsIndex = ...,
|
||||
) -> NDArray[Any]: ...
|
||||
|
||||
def add_newdoc(
|
||||
place: str,
|
||||
obj: str,
|
||||
doc: str | tuple[str, str] | list[tuple[str, str]],
|
||||
warn_on_python: bool = ...,
|
||||
) -> None: ...
|
||||
742
.CondaPkg/env/Lib/site-packages/numpy/_core/getlimits.py
vendored
Normal file
742
.CondaPkg/env/Lib/site-packages/numpy/_core/getlimits.py
vendored
Normal file
@@ -0,0 +1,742 @@
|
||||
"""Machine limits for Float32 and Float64 and (long double) if available...
|
||||
|
||||
"""
|
||||
__all__ = ['finfo', 'iinfo']
|
||||
|
||||
import warnings
|
||||
|
||||
from .._utils import set_module
|
||||
from ._machar import MachAr
|
||||
from . import numeric
|
||||
from . import numerictypes as ntypes
|
||||
from .numeric import array, inf, nan
|
||||
from .umath import log10, exp2, nextafter, isnan
|
||||
|
||||
|
||||
def _fr0(a):
|
||||
"""fix rank-0 --> rank-1"""
|
||||
if a.ndim == 0:
|
||||
a = a.copy()
|
||||
a.shape = (1,)
|
||||
return a
|
||||
|
||||
|
||||
def _fr1(a):
|
||||
"""fix rank > 0 --> rank-0"""
|
||||
if a.size == 1:
|
||||
a = a.copy()
|
||||
a.shape = ()
|
||||
return a
|
||||
|
||||
|
||||
class MachArLike:
|
||||
""" Object to simulate MachAr instance """
|
||||
def __init__(self, ftype, *, eps, epsneg, huge, tiny,
|
||||
ibeta, smallest_subnormal=None, **kwargs):
|
||||
self.params = _MACHAR_PARAMS[ftype]
|
||||
self.ftype = ftype
|
||||
self.title = self.params['title']
|
||||
# Parameter types same as for discovered MachAr object.
|
||||
if not smallest_subnormal:
|
||||
self._smallest_subnormal = nextafter(
|
||||
self.ftype(0), self.ftype(1), dtype=self.ftype)
|
||||
else:
|
||||
self._smallest_subnormal = smallest_subnormal
|
||||
self.epsilon = self.eps = self._float_to_float(eps)
|
||||
self.epsneg = self._float_to_float(epsneg)
|
||||
self.xmax = self.huge = self._float_to_float(huge)
|
||||
self.xmin = self._float_to_float(tiny)
|
||||
self.smallest_normal = self.tiny = self._float_to_float(tiny)
|
||||
self.ibeta = self.params['itype'](ibeta)
|
||||
self.__dict__.update(kwargs)
|
||||
self.precision = int(-log10(self.eps))
|
||||
self.resolution = self._float_to_float(
|
||||
self._float_conv(10) ** (-self.precision))
|
||||
self._str_eps = self._float_to_str(self.eps)
|
||||
self._str_epsneg = self._float_to_str(self.epsneg)
|
||||
self._str_xmin = self._float_to_str(self.xmin)
|
||||
self._str_xmax = self._float_to_str(self.xmax)
|
||||
self._str_resolution = self._float_to_str(self.resolution)
|
||||
self._str_smallest_normal = self._float_to_str(self.xmin)
|
||||
|
||||
@property
|
||||
def smallest_subnormal(self):
|
||||
"""Return the value for the smallest subnormal.
|
||||
|
||||
Returns
|
||||
-------
|
||||
smallest_subnormal : float
|
||||
value for the smallest subnormal.
|
||||
|
||||
Warns
|
||||
-----
|
||||
UserWarning
|
||||
If the calculated value for the smallest subnormal is zero.
|
||||
"""
|
||||
# Check that the calculated value is not zero, in case it raises a
|
||||
# warning.
|
||||
value = self._smallest_subnormal
|
||||
if self.ftype(0) == value:
|
||||
warnings.warn(
|
||||
'The value of the smallest subnormal for {} type '
|
||||
'is zero.'.format(self.ftype), UserWarning, stacklevel=2)
|
||||
|
||||
return self._float_to_float(value)
|
||||
|
||||
@property
|
||||
def _str_smallest_subnormal(self):
|
||||
"""Return the string representation of the smallest subnormal."""
|
||||
return self._float_to_str(self.smallest_subnormal)
|
||||
|
||||
def _float_to_float(self, value):
|
||||
"""Converts float to float.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
value : float
|
||||
value to be converted.
|
||||
"""
|
||||
return _fr1(self._float_conv(value))
|
||||
|
||||
def _float_conv(self, value):
|
||||
"""Converts float to conv.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
value : float
|
||||
value to be converted.
|
||||
"""
|
||||
return array([value], self.ftype)
|
||||
|
||||
def _float_to_str(self, value):
|
||||
"""Converts float to str.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
value : float
|
||||
value to be converted.
|
||||
"""
|
||||
return self.params['fmt'] % array(_fr0(value)[0], self.ftype)
|
||||
|
||||
|
||||
_convert_to_float = {
|
||||
ntypes.csingle: ntypes.single,
|
||||
ntypes.complex128: ntypes.float64,
|
||||
ntypes.clongdouble: ntypes.longdouble
|
||||
}
|
||||
|
||||
# Parameters for creating MachAr / MachAr-like objects
|
||||
_title_fmt = 'numpy {} precision floating point number'
|
||||
_MACHAR_PARAMS = {
|
||||
ntypes.double: dict(
|
||||
itype = ntypes.int64,
|
||||
fmt = '%24.16e',
|
||||
title = _title_fmt.format('double')),
|
||||
ntypes.single: dict(
|
||||
itype = ntypes.int32,
|
||||
fmt = '%15.7e',
|
||||
title = _title_fmt.format('single')),
|
||||
ntypes.longdouble: dict(
|
||||
itype = ntypes.longlong,
|
||||
fmt = '%s',
|
||||
title = _title_fmt.format('long double')),
|
||||
ntypes.half: dict(
|
||||
itype = ntypes.int16,
|
||||
fmt = '%12.5e',
|
||||
title = _title_fmt.format('half'))}
|
||||
|
||||
# Key to identify the floating point type. Key is result of
|
||||
#
|
||||
# ftype = np.longdouble # or float64, float32, etc.
|
||||
# v = (ftype(-1.0) / ftype(10.0))
|
||||
# v.view(v.dtype.newbyteorder('<')).tobytes()
|
||||
#
|
||||
# Uses division to work around deficiencies in strtold on some platforms.
|
||||
# See:
|
||||
# https://perl5.git.perl.org/perl.git/blob/3118d7d684b56cbeb702af874f4326683c45f045:/Configure
|
||||
|
||||
_KNOWN_TYPES = {}
|
||||
def _register_type(machar, bytepat):
|
||||
_KNOWN_TYPES[bytepat] = machar
|
||||
|
||||
|
||||
_float_ma = {}
|
||||
|
||||
|
||||
def _register_known_types():
|
||||
# Known parameters for float16
|
||||
# See docstring of MachAr class for description of parameters.
|
||||
f16 = ntypes.float16
|
||||
float16_ma = MachArLike(f16,
|
||||
machep=-10,
|
||||
negep=-11,
|
||||
minexp=-14,
|
||||
maxexp=16,
|
||||
it=10,
|
||||
iexp=5,
|
||||
ibeta=2,
|
||||
irnd=5,
|
||||
ngrd=0,
|
||||
eps=exp2(f16(-10)),
|
||||
epsneg=exp2(f16(-11)),
|
||||
huge=f16(65504),
|
||||
tiny=f16(2 ** -14))
|
||||
_register_type(float16_ma, b'f\xae')
|
||||
_float_ma[16] = float16_ma
|
||||
|
||||
# Known parameters for float32
|
||||
f32 = ntypes.float32
|
||||
float32_ma = MachArLike(f32,
|
||||
machep=-23,
|
||||
negep=-24,
|
||||
minexp=-126,
|
||||
maxexp=128,
|
||||
it=23,
|
||||
iexp=8,
|
||||
ibeta=2,
|
||||
irnd=5,
|
||||
ngrd=0,
|
||||
eps=exp2(f32(-23)),
|
||||
epsneg=exp2(f32(-24)),
|
||||
huge=f32((1 - 2 ** -24) * 2**128),
|
||||
tiny=exp2(f32(-126)))
|
||||
_register_type(float32_ma, b'\xcd\xcc\xcc\xbd')
|
||||
_float_ma[32] = float32_ma
|
||||
|
||||
# Known parameters for float64
|
||||
f64 = ntypes.float64
|
||||
epsneg_f64 = 2.0 ** -53.0
|
||||
tiny_f64 = 2.0 ** -1022.0
|
||||
float64_ma = MachArLike(f64,
|
||||
machep=-52,
|
||||
negep=-53,
|
||||
minexp=-1022,
|
||||
maxexp=1024,
|
||||
it=52,
|
||||
iexp=11,
|
||||
ibeta=2,
|
||||
irnd=5,
|
||||
ngrd=0,
|
||||
eps=2.0 ** -52.0,
|
||||
epsneg=epsneg_f64,
|
||||
huge=(1.0 - epsneg_f64) / tiny_f64 * f64(4),
|
||||
tiny=tiny_f64)
|
||||
_register_type(float64_ma, b'\x9a\x99\x99\x99\x99\x99\xb9\xbf')
|
||||
_float_ma[64] = float64_ma
|
||||
|
||||
# Known parameters for IEEE 754 128-bit binary float
|
||||
ld = ntypes.longdouble
|
||||
epsneg_f128 = exp2(ld(-113))
|
||||
tiny_f128 = exp2(ld(-16382))
|
||||
# Ignore runtime error when this is not f128
|
||||
with numeric.errstate(all='ignore'):
|
||||
huge_f128 = (ld(1) - epsneg_f128) / tiny_f128 * ld(4)
|
||||
float128_ma = MachArLike(ld,
|
||||
machep=-112,
|
||||
negep=-113,
|
||||
minexp=-16382,
|
||||
maxexp=16384,
|
||||
it=112,
|
||||
iexp=15,
|
||||
ibeta=2,
|
||||
irnd=5,
|
||||
ngrd=0,
|
||||
eps=exp2(ld(-112)),
|
||||
epsneg=epsneg_f128,
|
||||
huge=huge_f128,
|
||||
tiny=tiny_f128)
|
||||
# IEEE 754 128-bit binary float
|
||||
_register_type(float128_ma,
|
||||
b'\x9a\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\xfb\xbf')
|
||||
_float_ma[128] = float128_ma
|
||||
|
||||
# Known parameters for float80 (Intel 80-bit extended precision)
|
||||
epsneg_f80 = exp2(ld(-64))
|
||||
tiny_f80 = exp2(ld(-16382))
|
||||
# Ignore runtime error when this is not f80
|
||||
with numeric.errstate(all='ignore'):
|
||||
huge_f80 = (ld(1) - epsneg_f80) / tiny_f80 * ld(4)
|
||||
float80_ma = MachArLike(ld,
|
||||
machep=-63,
|
||||
negep=-64,
|
||||
minexp=-16382,
|
||||
maxexp=16384,
|
||||
it=63,
|
||||
iexp=15,
|
||||
ibeta=2,
|
||||
irnd=5,
|
||||
ngrd=0,
|
||||
eps=exp2(ld(-63)),
|
||||
epsneg=epsneg_f80,
|
||||
huge=huge_f80,
|
||||
tiny=tiny_f80)
|
||||
# float80, first 10 bytes containing actual storage
|
||||
_register_type(float80_ma, b'\xcd\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xfb\xbf')
|
||||
_float_ma[80] = float80_ma
|
||||
|
||||
# Guessed / known parameters for double double; see:
|
||||
# https://en.wikipedia.org/wiki/Quadruple-precision_floating-point_format#Double-double_arithmetic
|
||||
# These numbers have the same exponent range as float64, but extended
|
||||
# number of digits in the significand.
|
||||
huge_dd = nextafter(ld(inf), ld(0), dtype=ld)
|
||||
# As the smallest_normal in double double is so hard to calculate we set
|
||||
# it to NaN.
|
||||
smallest_normal_dd = nan
|
||||
# Leave the same value for the smallest subnormal as double
|
||||
smallest_subnormal_dd = ld(nextafter(0., 1.))
|
||||
float_dd_ma = MachArLike(ld,
|
||||
machep=-105,
|
||||
negep=-106,
|
||||
minexp=-1022,
|
||||
maxexp=1024,
|
||||
it=105,
|
||||
iexp=11,
|
||||
ibeta=2,
|
||||
irnd=5,
|
||||
ngrd=0,
|
||||
eps=exp2(ld(-105)),
|
||||
epsneg=exp2(ld(-106)),
|
||||
huge=huge_dd,
|
||||
tiny=smallest_normal_dd,
|
||||
smallest_subnormal=smallest_subnormal_dd)
|
||||
# double double; low, high order (e.g. PPC 64)
|
||||
_register_type(float_dd_ma,
|
||||
b'\x9a\x99\x99\x99\x99\x99Y<\x9a\x99\x99\x99\x99\x99\xb9\xbf')
|
||||
# double double; high, low order (e.g. PPC 64 le)
|
||||
_register_type(float_dd_ma,
|
||||
b'\x9a\x99\x99\x99\x99\x99\xb9\xbf\x9a\x99\x99\x99\x99\x99Y<')
|
||||
_float_ma['dd'] = float_dd_ma
|
||||
|
||||
|
||||
def _get_machar(ftype):
|
||||
""" Get MachAr instance or MachAr-like instance
|
||||
|
||||
Get parameters for floating point type, by first trying signatures of
|
||||
various known floating point types, then, if none match, attempting to
|
||||
identify parameters by analysis.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
ftype : class
|
||||
Numpy floating point type class (e.g. ``np.float64``)
|
||||
|
||||
Returns
|
||||
-------
|
||||
ma_like : instance of :class:`MachAr` or :class:`MachArLike`
|
||||
Object giving floating point parameters for `ftype`.
|
||||
|
||||
Warns
|
||||
-----
|
||||
UserWarning
|
||||
If the binary signature of the float type is not in the dictionary of
|
||||
known float types.
|
||||
"""
|
||||
params = _MACHAR_PARAMS.get(ftype)
|
||||
if params is None:
|
||||
raise ValueError(repr(ftype))
|
||||
# Detect known / suspected types
|
||||
# ftype(-1.0) / ftype(10.0) is better than ftype('-0.1') because stold
|
||||
# may be deficient
|
||||
key = (ftype(-1.0) / ftype(10.))
|
||||
key = key.view(key.dtype.newbyteorder("<")).tobytes()
|
||||
ma_like = None
|
||||
if ftype == ntypes.longdouble:
|
||||
# Could be 80 bit == 10 byte extended precision, where last bytes can
|
||||
# be random garbage.
|
||||
# Comparing first 10 bytes to pattern first to avoid branching on the
|
||||
# random garbage.
|
||||
ma_like = _KNOWN_TYPES.get(key[:10])
|
||||
if ma_like is None:
|
||||
# see if the full key is known.
|
||||
ma_like = _KNOWN_TYPES.get(key)
|
||||
if ma_like is None and len(key) == 16:
|
||||
# machine limits could be f80 masquerading as np.float128,
|
||||
# find all keys with length 16 and make new dict, but make the keys
|
||||
# only 10 bytes long, the last bytes can be random garbage
|
||||
_kt = {k[:10]: v for k, v in _KNOWN_TYPES.items() if len(k) == 16}
|
||||
ma_like = _kt.get(key[:10])
|
||||
if ma_like is not None:
|
||||
return ma_like
|
||||
# Fall back to parameter discovery
|
||||
warnings.warn(
|
||||
f'Signature {key} for {ftype} does not match any known type: '
|
||||
'falling back to type probe function.\n'
|
||||
'This warnings indicates broken support for the dtype!',
|
||||
UserWarning, stacklevel=2)
|
||||
return _discovered_machar(ftype)
|
||||
|
||||
|
||||
def _discovered_machar(ftype):
|
||||
""" Create MachAr instance with found information on float types
|
||||
|
||||
TODO: MachAr should be retired completely ideally. We currently only
|
||||
ever use it system with broken longdouble (valgrind, WSL).
|
||||
"""
|
||||
params = _MACHAR_PARAMS[ftype]
|
||||
return MachAr(lambda v: array([v], ftype),
|
||||
lambda v: _fr0(v.astype(params['itype']))[0],
|
||||
lambda v: array(_fr0(v)[0], ftype),
|
||||
lambda v: params['fmt'] % array(_fr0(v)[0], ftype),
|
||||
params['title'])
|
||||
|
||||
|
||||
@set_module('numpy')
|
||||
class finfo:
|
||||
"""
|
||||
finfo(dtype)
|
||||
|
||||
Machine limits for floating point types.
|
||||
|
||||
Attributes
|
||||
----------
|
||||
bits : int
|
||||
The number of bits occupied by the type.
|
||||
dtype : dtype
|
||||
Returns the dtype for which `finfo` returns information. For complex
|
||||
input, the returned dtype is the associated ``float*`` dtype for its
|
||||
real and complex components.
|
||||
eps : float
|
||||
The difference between 1.0 and the next smallest representable float
|
||||
larger than 1.0. For example, for 64-bit binary floats in the IEEE-754
|
||||
standard, ``eps = 2**-52``, approximately 2.22e-16.
|
||||
epsneg : float
|
||||
The difference between 1.0 and the next smallest representable float
|
||||
less than 1.0. For example, for 64-bit binary floats in the IEEE-754
|
||||
standard, ``epsneg = 2**-53``, approximately 1.11e-16.
|
||||
iexp : int
|
||||
The number of bits in the exponent portion of the floating point
|
||||
representation.
|
||||
machep : int
|
||||
The exponent that yields `eps`.
|
||||
max : floating point number of the appropriate type
|
||||
The largest representable number.
|
||||
maxexp : int
|
||||
The smallest positive power of the base (2) that causes overflow.
|
||||
min : floating point number of the appropriate type
|
||||
The smallest representable number, typically ``-max``.
|
||||
minexp : int
|
||||
The most negative power of the base (2) consistent with there
|
||||
being no leading 0's in the mantissa.
|
||||
negep : int
|
||||
The exponent that yields `epsneg`.
|
||||
nexp : int
|
||||
The number of bits in the exponent including its sign and bias.
|
||||
nmant : int
|
||||
The number of bits in the mantissa.
|
||||
precision : int
|
||||
The approximate number of decimal digits to which this kind of
|
||||
float is precise.
|
||||
resolution : floating point number of the appropriate type
|
||||
The approximate decimal resolution of this type, i.e.,
|
||||
``10**-precision``.
|
||||
tiny : float
|
||||
An alias for `smallest_normal`, kept for backwards compatibility.
|
||||
smallest_normal : float
|
||||
The smallest positive floating point number with 1 as leading bit in
|
||||
the mantissa following IEEE-754 (see Notes).
|
||||
smallest_subnormal : float
|
||||
The smallest positive floating point number with 0 as leading bit in
|
||||
the mantissa following IEEE-754.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
dtype : float, dtype, or instance
|
||||
Kind of floating point or complex floating point
|
||||
data-type about which to get information.
|
||||
|
||||
See Also
|
||||
--------
|
||||
iinfo : The equivalent for integer data types.
|
||||
spacing : The distance between a value and the nearest adjacent number
|
||||
nextafter : The next floating point value after x1 towards x2
|
||||
|
||||
Notes
|
||||
-----
|
||||
For developers of NumPy: do not instantiate this at the module level.
|
||||
The initial calculation of these parameters is expensive and negatively
|
||||
impacts import times. These objects are cached, so calling ``finfo()``
|
||||
repeatedly inside your functions is not a problem.
|
||||
|
||||
Note that ``smallest_normal`` is not actually the smallest positive
|
||||
representable value in a NumPy floating point type. As in the IEEE-754
|
||||
standard [1]_, NumPy floating point types make use of subnormal numbers to
|
||||
fill the gap between 0 and ``smallest_normal``. However, subnormal numbers
|
||||
may have significantly reduced precision [2]_.
|
||||
|
||||
This function can also be used for complex data types as well. If used,
|
||||
the output will be the same as the corresponding real float type
|
||||
(e.g. numpy.finfo(numpy.csingle) is the same as numpy.finfo(numpy.single)).
|
||||
However, the output is true for the real and imaginary components.
|
||||
|
||||
References
|
||||
----------
|
||||
.. [1] IEEE Standard for Floating-Point Arithmetic, IEEE Std 754-2008,
|
||||
pp.1-70, 2008, https://doi.org/10.1109/IEEESTD.2008.4610935
|
||||
.. [2] Wikipedia, "Denormal Numbers",
|
||||
https://en.wikipedia.org/wiki/Denormal_number
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> import numpy as np
|
||||
>>> np.finfo(np.float64).dtype
|
||||
dtype('float64')
|
||||
>>> np.finfo(np.complex64).dtype
|
||||
dtype('float32')
|
||||
|
||||
"""
|
||||
|
||||
_finfo_cache = {}
|
||||
|
||||
def __new__(cls, dtype):
|
||||
try:
|
||||
obj = cls._finfo_cache.get(dtype) # most common path
|
||||
if obj is not None:
|
||||
return obj
|
||||
except TypeError:
|
||||
pass
|
||||
|
||||
if dtype is None:
|
||||
# Deprecated in NumPy 1.25, 2023-01-16
|
||||
warnings.warn(
|
||||
"finfo() dtype cannot be None. This behavior will "
|
||||
"raise an error in the future. (Deprecated in NumPy 1.25)",
|
||||
DeprecationWarning,
|
||||
stacklevel=2
|
||||
)
|
||||
|
||||
try:
|
||||
dtype = numeric.dtype(dtype)
|
||||
except TypeError:
|
||||
# In case a float instance was given
|
||||
dtype = numeric.dtype(type(dtype))
|
||||
|
||||
obj = cls._finfo_cache.get(dtype)
|
||||
if obj is not None:
|
||||
return obj
|
||||
dtypes = [dtype]
|
||||
newdtype = ntypes.obj2sctype(dtype)
|
||||
if newdtype is not dtype:
|
||||
dtypes.append(newdtype)
|
||||
dtype = newdtype
|
||||
if not issubclass(dtype, numeric.inexact):
|
||||
raise ValueError("data type %r not inexact" % (dtype))
|
||||
obj = cls._finfo_cache.get(dtype)
|
||||
if obj is not None:
|
||||
return obj
|
||||
if not issubclass(dtype, numeric.floating):
|
||||
newdtype = _convert_to_float[dtype]
|
||||
if newdtype is not dtype:
|
||||
# dtype changed, for example from complex128 to float64
|
||||
dtypes.append(newdtype)
|
||||
dtype = newdtype
|
||||
|
||||
obj = cls._finfo_cache.get(dtype, None)
|
||||
if obj is not None:
|
||||
# the original dtype was not in the cache, but the new
|
||||
# dtype is in the cache. we add the original dtypes to
|
||||
# the cache and return the result
|
||||
for dt in dtypes:
|
||||
cls._finfo_cache[dt] = obj
|
||||
return obj
|
||||
obj = object.__new__(cls)._init(dtype)
|
||||
for dt in dtypes:
|
||||
cls._finfo_cache[dt] = obj
|
||||
return obj
|
||||
|
||||
def _init(self, dtype):
|
||||
self.dtype = numeric.dtype(dtype)
|
||||
machar = _get_machar(dtype)
|
||||
|
||||
for word in ['precision', 'iexp',
|
||||
'maxexp', 'minexp', 'negep',
|
||||
'machep']:
|
||||
setattr(self, word, getattr(machar, word))
|
||||
for word in ['resolution', 'epsneg', 'smallest_subnormal']:
|
||||
setattr(self, word, getattr(machar, word).flat[0])
|
||||
self.bits = self.dtype.itemsize * 8
|
||||
self.max = machar.huge.flat[0]
|
||||
self.min = -self.max
|
||||
self.eps = machar.eps.flat[0]
|
||||
self.nexp = machar.iexp
|
||||
self.nmant = machar.it
|
||||
self._machar = machar
|
||||
self._str_tiny = machar._str_xmin.strip()
|
||||
self._str_max = machar._str_xmax.strip()
|
||||
self._str_epsneg = machar._str_epsneg.strip()
|
||||
self._str_eps = machar._str_eps.strip()
|
||||
self._str_resolution = machar._str_resolution.strip()
|
||||
self._str_smallest_normal = machar._str_smallest_normal.strip()
|
||||
self._str_smallest_subnormal = machar._str_smallest_subnormal.strip()
|
||||
return self
|
||||
|
||||
def __str__(self):
|
||||
fmt = (
|
||||
'Machine parameters for %(dtype)s\n'
|
||||
'---------------------------------------------------------------\n'
|
||||
'precision = %(precision)3s resolution = %(_str_resolution)s\n'
|
||||
'machep = %(machep)6s eps = %(_str_eps)s\n'
|
||||
'negep = %(negep)6s epsneg = %(_str_epsneg)s\n'
|
||||
'minexp = %(minexp)6s tiny = %(_str_tiny)s\n'
|
||||
'maxexp = %(maxexp)6s max = %(_str_max)s\n'
|
||||
'nexp = %(nexp)6s min = -max\n'
|
||||
'smallest_normal = %(_str_smallest_normal)s '
|
||||
'smallest_subnormal = %(_str_smallest_subnormal)s\n'
|
||||
'---------------------------------------------------------------\n'
|
||||
)
|
||||
return fmt % self.__dict__
|
||||
|
||||
def __repr__(self):
|
||||
c = self.__class__.__name__
|
||||
d = self.__dict__.copy()
|
||||
d['klass'] = c
|
||||
return (("%(klass)s(resolution=%(resolution)s, min=-%(_str_max)s,"
|
||||
" max=%(_str_max)s, dtype=%(dtype)s)") % d)
|
||||
|
||||
@property
|
||||
def smallest_normal(self):
|
||||
"""Return the value for the smallest normal.
|
||||
|
||||
Returns
|
||||
-------
|
||||
smallest_normal : float
|
||||
Value for the smallest normal.
|
||||
|
||||
Warns
|
||||
-----
|
||||
UserWarning
|
||||
If the calculated value for the smallest normal is requested for
|
||||
double-double.
|
||||
"""
|
||||
# This check is necessary because the value for smallest_normal is
|
||||
# platform dependent for longdouble types.
|
||||
if isnan(self._machar.smallest_normal.flat[0]):
|
||||
warnings.warn(
|
||||
'The value of smallest normal is undefined for double double',
|
||||
UserWarning, stacklevel=2)
|
||||
return self._machar.smallest_normal.flat[0]
|
||||
|
||||
@property
|
||||
def tiny(self):
|
||||
"""Return the value for tiny, alias of smallest_normal.
|
||||
|
||||
Returns
|
||||
-------
|
||||
tiny : float
|
||||
Value for the smallest normal, alias of smallest_normal.
|
||||
|
||||
Warns
|
||||
-----
|
||||
UserWarning
|
||||
If the calculated value for the smallest normal is requested for
|
||||
double-double.
|
||||
"""
|
||||
return self.smallest_normal
|
||||
|
||||
|
||||
@set_module('numpy')
|
||||
class iinfo:
|
||||
"""
|
||||
iinfo(type)
|
||||
|
||||
Machine limits for integer types.
|
||||
|
||||
Attributes
|
||||
----------
|
||||
bits : int
|
||||
The number of bits occupied by the type.
|
||||
dtype : dtype
|
||||
Returns the dtype for which `iinfo` returns information.
|
||||
min : int
|
||||
The smallest integer expressible by the type.
|
||||
max : int
|
||||
The largest integer expressible by the type.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
int_type : integer type, dtype, or instance
|
||||
The kind of integer data type to get information about.
|
||||
|
||||
See Also
|
||||
--------
|
||||
finfo : The equivalent for floating point data types.
|
||||
|
||||
Examples
|
||||
--------
|
||||
With types:
|
||||
|
||||
>>> import numpy as np
|
||||
>>> ii16 = np.iinfo(np.int16)
|
||||
>>> ii16.min
|
||||
-32768
|
||||
>>> ii16.max
|
||||
32767
|
||||
>>> ii32 = np.iinfo(np.int32)
|
||||
>>> ii32.min
|
||||
-2147483648
|
||||
>>> ii32.max
|
||||
2147483647
|
||||
|
||||
With instances:
|
||||
|
||||
>>> ii32 = np.iinfo(np.int32(10))
|
||||
>>> ii32.min
|
||||
-2147483648
|
||||
>>> ii32.max
|
||||
2147483647
|
||||
|
||||
"""
|
||||
|
||||
_min_vals = {}
|
||||
_max_vals = {}
|
||||
|
||||
def __init__(self, int_type):
|
||||
try:
|
||||
self.dtype = numeric.dtype(int_type)
|
||||
except TypeError:
|
||||
self.dtype = numeric.dtype(type(int_type))
|
||||
self.kind = self.dtype.kind
|
||||
self.bits = self.dtype.itemsize * 8
|
||||
self.key = "%s%d" % (self.kind, self.bits)
|
||||
if self.kind not in 'iu':
|
||||
raise ValueError("Invalid integer data type %r." % (self.kind,))
|
||||
|
||||
@property
|
||||
def min(self):
|
||||
"""Minimum value of given dtype."""
|
||||
if self.kind == 'u':
|
||||
return 0
|
||||
else:
|
||||
try:
|
||||
val = iinfo._min_vals[self.key]
|
||||
except KeyError:
|
||||
val = int(-(1 << (self.bits-1)))
|
||||
iinfo._min_vals[self.key] = val
|
||||
return val
|
||||
|
||||
@property
|
||||
def max(self):
|
||||
"""Maximum value of given dtype."""
|
||||
try:
|
||||
val = iinfo._max_vals[self.key]
|
||||
except KeyError:
|
||||
if self.kind == 'u':
|
||||
val = int((1 << self.bits) - 1)
|
||||
else:
|
||||
val = int((1 << (self.bits-1)) - 1)
|
||||
iinfo._max_vals[self.key] = val
|
||||
return val
|
||||
|
||||
def __str__(self):
|
||||
"""String representation."""
|
||||
fmt = (
|
||||
'Machine parameters for %(dtype)s\n'
|
||||
'---------------------------------------------------------------\n'
|
||||
'min = %(min)s\n'
|
||||
'max = %(max)s\n'
|
||||
'---------------------------------------------------------------\n'
|
||||
)
|
||||
return fmt % {'dtype': self.dtype, 'min': self.min, 'max': self.max}
|
||||
|
||||
def __repr__(self):
|
||||
return "%s(min=%s, max=%s, dtype=%s)" % (self.__class__.__name__,
|
||||
self.min, self.max, self.dtype)
|
||||
6
.CondaPkg/env/Lib/site-packages/numpy/_core/getlimits.pyi
vendored
Normal file
6
.CondaPkg/env/Lib/site-packages/numpy/_core/getlimits.pyi
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
from numpy import (
|
||||
finfo as finfo,
|
||||
iinfo as iinfo,
|
||||
)
|
||||
|
||||
__all__: list[str]
|
||||
376
.CondaPkg/env/Lib/site-packages/numpy/_core/include/numpy/__multiarray_api.c
vendored
Normal file
376
.CondaPkg/env/Lib/site-packages/numpy/_core/include/numpy/__multiarray_api.c
vendored
Normal file
@@ -0,0 +1,376 @@
|
||||
|
||||
/* These pointers will be stored in the C-object for use in other
|
||||
extension modules
|
||||
*/
|
||||
|
||||
void *PyArray_API[] = {
|
||||
(void *) PyArray_GetNDArrayCVersion,
|
||||
NULL,
|
||||
(void *) &PyArray_Type,
|
||||
(void *) &PyArrayDescr_Type,
|
||||
NULL,
|
||||
(void *) &PyArrayIter_Type,
|
||||
(void *) &PyArrayMultiIter_Type,
|
||||
(int *) &NPY_NUMUSERTYPES,
|
||||
(void *) &PyBoolArrType_Type,
|
||||
(void *) &_PyArrayScalar_BoolValues,
|
||||
(void *) &PyGenericArrType_Type,
|
||||
(void *) &PyNumberArrType_Type,
|
||||
(void *) &PyIntegerArrType_Type,
|
||||
(void *) &PySignedIntegerArrType_Type,
|
||||
(void *) &PyUnsignedIntegerArrType_Type,
|
||||
(void *) &PyInexactArrType_Type,
|
||||
(void *) &PyFloatingArrType_Type,
|
||||
(void *) &PyComplexFloatingArrType_Type,
|
||||
(void *) &PyFlexibleArrType_Type,
|
||||
(void *) &PyCharacterArrType_Type,
|
||||
(void *) &PyByteArrType_Type,
|
||||
(void *) &PyShortArrType_Type,
|
||||
(void *) &PyIntArrType_Type,
|
||||
(void *) &PyLongArrType_Type,
|
||||
(void *) &PyLongLongArrType_Type,
|
||||
(void *) &PyUByteArrType_Type,
|
||||
(void *) &PyUShortArrType_Type,
|
||||
(void *) &PyUIntArrType_Type,
|
||||
(void *) &PyULongArrType_Type,
|
||||
(void *) &PyULongLongArrType_Type,
|
||||
(void *) &PyFloatArrType_Type,
|
||||
(void *) &PyDoubleArrType_Type,
|
||||
(void *) &PyLongDoubleArrType_Type,
|
||||
(void *) &PyCFloatArrType_Type,
|
||||
(void *) &PyCDoubleArrType_Type,
|
||||
(void *) &PyCLongDoubleArrType_Type,
|
||||
(void *) &PyObjectArrType_Type,
|
||||
(void *) &PyStringArrType_Type,
|
||||
(void *) &PyUnicodeArrType_Type,
|
||||
(void *) &PyVoidArrType_Type,
|
||||
NULL,
|
||||
NULL,
|
||||
(void *) PyArray_INCREF,
|
||||
(void *) PyArray_XDECREF,
|
||||
(void *) PyArray_SetStringFunction,
|
||||
(void *) PyArray_DescrFromType,
|
||||
(void *) PyArray_TypeObjectFromType,
|
||||
(void *) PyArray_Zero,
|
||||
(void *) PyArray_One,
|
||||
(void *) PyArray_CastToType,
|
||||
(void *) PyArray_CopyInto,
|
||||
(void *) PyArray_CopyAnyInto,
|
||||
(void *) PyArray_CanCastSafely,
|
||||
(void *) PyArray_CanCastTo,
|
||||
(void *) PyArray_ObjectType,
|
||||
(void *) PyArray_DescrFromObject,
|
||||
(void *) PyArray_ConvertToCommonType,
|
||||
(void *) PyArray_DescrFromScalar,
|
||||
(void *) PyArray_DescrFromTypeObject,
|
||||
(void *) PyArray_Size,
|
||||
(void *) PyArray_Scalar,
|
||||
(void *) PyArray_FromScalar,
|
||||
(void *) PyArray_ScalarAsCtype,
|
||||
(void *) PyArray_CastScalarToCtype,
|
||||
(void *) PyArray_CastScalarDirect,
|
||||
(void *) PyArray_Pack,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
(void *) PyArray_FromAny,
|
||||
(void *) PyArray_EnsureArray,
|
||||
(void *) PyArray_EnsureAnyArray,
|
||||
(void *) PyArray_FromFile,
|
||||
(void *) PyArray_FromString,
|
||||
(void *) PyArray_FromBuffer,
|
||||
(void *) PyArray_FromIter,
|
||||
(void *) PyArray_Return,
|
||||
(void *) PyArray_GetField,
|
||||
(void *) PyArray_SetField,
|
||||
(void *) PyArray_Byteswap,
|
||||
(void *) PyArray_Resize,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
(void *) PyArray_CopyObject,
|
||||
(void *) PyArray_NewCopy,
|
||||
(void *) PyArray_ToList,
|
||||
(void *) PyArray_ToString,
|
||||
(void *) PyArray_ToFile,
|
||||
(void *) PyArray_Dump,
|
||||
(void *) PyArray_Dumps,
|
||||
(void *) PyArray_ValidType,
|
||||
(void *) PyArray_UpdateFlags,
|
||||
(void *) PyArray_New,
|
||||
(void *) PyArray_NewFromDescr,
|
||||
(void *) PyArray_DescrNew,
|
||||
(void *) PyArray_DescrNewFromType,
|
||||
(void *) PyArray_GetPriority,
|
||||
(void *) PyArray_IterNew,
|
||||
(void *) PyArray_MultiIterNew,
|
||||
(void *) PyArray_PyIntAsInt,
|
||||
(void *) PyArray_PyIntAsIntp,
|
||||
(void *) PyArray_Broadcast,
|
||||
NULL,
|
||||
(void *) PyArray_FillWithScalar,
|
||||
(void *) PyArray_CheckStrides,
|
||||
(void *) PyArray_DescrNewByteorder,
|
||||
(void *) PyArray_IterAllButAxis,
|
||||
(void *) PyArray_CheckFromAny,
|
||||
(void *) PyArray_FromArray,
|
||||
(void *) PyArray_FromInterface,
|
||||
(void *) PyArray_FromStructInterface,
|
||||
(void *) PyArray_FromArrayAttr,
|
||||
(void *) PyArray_ScalarKind,
|
||||
(void *) PyArray_CanCoerceScalar,
|
||||
NULL,
|
||||
(void *) PyArray_CanCastScalar,
|
||||
NULL,
|
||||
(void *) PyArray_RemoveSmallest,
|
||||
(void *) PyArray_ElementStrides,
|
||||
(void *) PyArray_Item_INCREF,
|
||||
(void *) PyArray_Item_XDECREF,
|
||||
NULL,
|
||||
(void *) PyArray_Transpose,
|
||||
(void *) PyArray_TakeFrom,
|
||||
(void *) PyArray_PutTo,
|
||||
(void *) PyArray_PutMask,
|
||||
(void *) PyArray_Repeat,
|
||||
(void *) PyArray_Choose,
|
||||
(void *) PyArray_Sort,
|
||||
(void *) PyArray_ArgSort,
|
||||
(void *) PyArray_SearchSorted,
|
||||
(void *) PyArray_ArgMax,
|
||||
(void *) PyArray_ArgMin,
|
||||
(void *) PyArray_Reshape,
|
||||
(void *) PyArray_Newshape,
|
||||
(void *) PyArray_Squeeze,
|
||||
(void *) PyArray_View,
|
||||
(void *) PyArray_SwapAxes,
|
||||
(void *) PyArray_Max,
|
||||
(void *) PyArray_Min,
|
||||
(void *) PyArray_Ptp,
|
||||
(void *) PyArray_Mean,
|
||||
(void *) PyArray_Trace,
|
||||
(void *) PyArray_Diagonal,
|
||||
(void *) PyArray_Clip,
|
||||
(void *) PyArray_Conjugate,
|
||||
(void *) PyArray_Nonzero,
|
||||
(void *) PyArray_Std,
|
||||
(void *) PyArray_Sum,
|
||||
(void *) PyArray_CumSum,
|
||||
(void *) PyArray_Prod,
|
||||
(void *) PyArray_CumProd,
|
||||
(void *) PyArray_All,
|
||||
(void *) PyArray_Any,
|
||||
(void *) PyArray_Compress,
|
||||
(void *) PyArray_Flatten,
|
||||
(void *) PyArray_Ravel,
|
||||
(void *) PyArray_MultiplyList,
|
||||
(void *) PyArray_MultiplyIntList,
|
||||
(void *) PyArray_GetPtr,
|
||||
(void *) PyArray_CompareLists,
|
||||
(void *) PyArray_AsCArray,
|
||||
NULL,
|
||||
NULL,
|
||||
(void *) PyArray_Free,
|
||||
(void *) PyArray_Converter,
|
||||
(void *) PyArray_IntpFromSequence,
|
||||
(void *) PyArray_Concatenate,
|
||||
(void *) PyArray_InnerProduct,
|
||||
(void *) PyArray_MatrixProduct,
|
||||
NULL,
|
||||
(void *) PyArray_Correlate,
|
||||
NULL,
|
||||
(void *) PyArray_DescrConverter,
|
||||
(void *) PyArray_DescrConverter2,
|
||||
(void *) PyArray_IntpConverter,
|
||||
(void *) PyArray_BufferConverter,
|
||||
(void *) PyArray_AxisConverter,
|
||||
(void *) PyArray_BoolConverter,
|
||||
(void *) PyArray_ByteorderConverter,
|
||||
(void *) PyArray_OrderConverter,
|
||||
(void *) PyArray_EquivTypes,
|
||||
(void *) PyArray_Zeros,
|
||||
(void *) PyArray_Empty,
|
||||
(void *) PyArray_Where,
|
||||
(void *) PyArray_Arange,
|
||||
(void *) PyArray_ArangeObj,
|
||||
(void *) PyArray_SortkindConverter,
|
||||
(void *) PyArray_LexSort,
|
||||
(void *) PyArray_Round,
|
||||
(void *) PyArray_EquivTypenums,
|
||||
(void *) PyArray_RegisterDataType,
|
||||
(void *) PyArray_RegisterCastFunc,
|
||||
(void *) PyArray_RegisterCanCast,
|
||||
(void *) PyArray_InitArrFuncs,
|
||||
(void *) PyArray_IntTupleFromIntp,
|
||||
NULL,
|
||||
(void *) PyArray_ClipmodeConverter,
|
||||
(void *) PyArray_OutputConverter,
|
||||
(void *) PyArray_BroadcastToShape,
|
||||
NULL,
|
||||
NULL,
|
||||
(void *) PyArray_DescrAlignConverter,
|
||||
(void *) PyArray_DescrAlignConverter2,
|
||||
(void *) PyArray_SearchsideConverter,
|
||||
(void *) PyArray_CheckAxis,
|
||||
(void *) PyArray_OverflowMultiplyList,
|
||||
NULL,
|
||||
(void *) PyArray_MultiIterFromObjects,
|
||||
(void *) PyArray_GetEndianness,
|
||||
(void *) PyArray_GetNDArrayCFeatureVersion,
|
||||
(void *) PyArray_Correlate2,
|
||||
(void *) PyArray_NeighborhoodIterNew,
|
||||
(void *) &PyTimeIntegerArrType_Type,
|
||||
(void *) &PyDatetimeArrType_Type,
|
||||
(void *) &PyTimedeltaArrType_Type,
|
||||
(void *) &PyHalfArrType_Type,
|
||||
(void *) &NpyIter_Type,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
(void *) NpyIter_New,
|
||||
(void *) NpyIter_MultiNew,
|
||||
(void *) NpyIter_AdvancedNew,
|
||||
(void *) NpyIter_Copy,
|
||||
(void *) NpyIter_Deallocate,
|
||||
(void *) NpyIter_HasDelayedBufAlloc,
|
||||
(void *) NpyIter_HasExternalLoop,
|
||||
(void *) NpyIter_EnableExternalLoop,
|
||||
(void *) NpyIter_GetInnerStrideArray,
|
||||
(void *) NpyIter_GetInnerLoopSizePtr,
|
||||
(void *) NpyIter_Reset,
|
||||
(void *) NpyIter_ResetBasePointers,
|
||||
(void *) NpyIter_ResetToIterIndexRange,
|
||||
(void *) NpyIter_GetNDim,
|
||||
(void *) NpyIter_GetNOp,
|
||||
(void *) NpyIter_GetIterNext,
|
||||
(void *) NpyIter_GetIterSize,
|
||||
(void *) NpyIter_GetIterIndexRange,
|
||||
(void *) NpyIter_GetIterIndex,
|
||||
(void *) NpyIter_GotoIterIndex,
|
||||
(void *) NpyIter_HasMultiIndex,
|
||||
(void *) NpyIter_GetShape,
|
||||
(void *) NpyIter_GetGetMultiIndex,
|
||||
(void *) NpyIter_GotoMultiIndex,
|
||||
(void *) NpyIter_RemoveMultiIndex,
|
||||
(void *) NpyIter_HasIndex,
|
||||
(void *) NpyIter_IsBuffered,
|
||||
(void *) NpyIter_IsGrowInner,
|
||||
(void *) NpyIter_GetBufferSize,
|
||||
(void *) NpyIter_GetIndexPtr,
|
||||
(void *) NpyIter_GotoIndex,
|
||||
(void *) NpyIter_GetDataPtrArray,
|
||||
(void *) NpyIter_GetDescrArray,
|
||||
(void *) NpyIter_GetOperandArray,
|
||||
(void *) NpyIter_GetIterView,
|
||||
(void *) NpyIter_GetReadFlags,
|
||||
(void *) NpyIter_GetWriteFlags,
|
||||
(void *) NpyIter_DebugPrint,
|
||||
(void *) NpyIter_IterationNeedsAPI,
|
||||
(void *) NpyIter_GetInnerFixedStrideArray,
|
||||
(void *) NpyIter_RemoveAxis,
|
||||
(void *) NpyIter_GetAxisStrideArray,
|
||||
(void *) NpyIter_RequiresBuffering,
|
||||
(void *) NpyIter_GetInitialDataPtrArray,
|
||||
(void *) NpyIter_CreateCompatibleStrides,
|
||||
(void *) PyArray_CastingConverter,
|
||||
(void *) PyArray_CountNonzero,
|
||||
(void *) PyArray_PromoteTypes,
|
||||
(void *) PyArray_MinScalarType,
|
||||
(void *) PyArray_ResultType,
|
||||
(void *) PyArray_CanCastArrayTo,
|
||||
(void *) PyArray_CanCastTypeTo,
|
||||
(void *) PyArray_EinsteinSum,
|
||||
(void *) PyArray_NewLikeArray,
|
||||
NULL,
|
||||
(void *) PyArray_ConvertClipmodeSequence,
|
||||
(void *) PyArray_MatrixProduct2,
|
||||
(void *) NpyIter_IsFirstVisit,
|
||||
(void *) PyArray_SetBaseObject,
|
||||
(void *) PyArray_CreateSortedStridePerm,
|
||||
(void *) PyArray_RemoveAxesInPlace,
|
||||
(void *) PyArray_DebugPrint,
|
||||
(void *) PyArray_FailUnlessWriteable,
|
||||
(void *) PyArray_SetUpdateIfCopyBase,
|
||||
(void *) PyDataMem_NEW,
|
||||
(void *) PyDataMem_FREE,
|
||||
(void *) PyDataMem_RENEW,
|
||||
NULL,
|
||||
(NPY_CASTING *) &NPY_DEFAULT_ASSIGN_CASTING,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
(void *) PyArray_Partition,
|
||||
(void *) PyArray_ArgPartition,
|
||||
(void *) PyArray_SelectkindConverter,
|
||||
(void *) PyDataMem_NEW_ZEROED,
|
||||
(void *) PyArray_CheckAnyScalarExact,
|
||||
NULL,
|
||||
(void *) PyArray_ResolveWritebackIfCopy,
|
||||
(void *) PyArray_SetWritebackIfCopyBase,
|
||||
(void *) PyDataMem_SetHandler,
|
||||
(void *) PyDataMem_GetHandler,
|
||||
(PyObject* *) &PyDataMem_DefaultHandler,
|
||||
(void *) NpyDatetime_ConvertDatetime64ToDatetimeStruct,
|
||||
(void *) NpyDatetime_ConvertDatetimeStructToDatetime64,
|
||||
(void *) NpyDatetime_ConvertPyDateTimeToDatetimeStruct,
|
||||
(void *) NpyDatetime_GetDatetimeISO8601StrLen,
|
||||
(void *) NpyDatetime_MakeISO8601Datetime,
|
||||
(void *) NpyDatetime_ParseISO8601Datetime,
|
||||
(void *) NpyString_load,
|
||||
(void *) NpyString_pack,
|
||||
(void *) NpyString_pack_null,
|
||||
(void *) NpyString_acquire_allocator,
|
||||
(void *) NpyString_acquire_allocators,
|
||||
(void *) NpyString_release_allocator,
|
||||
(void *) NpyString_release_allocators,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
(void *) PyArray_GetDefaultDescr,
|
||||
(void *) PyArrayInitDTypeMeta_FromSpec,
|
||||
(void *) PyArray_CommonDType,
|
||||
(void *) PyArray_PromoteDTypeSequence,
|
||||
(void *) _PyDataType_GetArrFuncs,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL
|
||||
};
|
||||
1613
.CondaPkg/env/Lib/site-packages/numpy/_core/include/numpy/__multiarray_api.h
vendored
Normal file
1613
.CondaPkg/env/Lib/site-packages/numpy/_core/include/numpy/__multiarray_api.h
vendored
Normal file
File diff suppressed because it is too large
Load Diff
54
.CondaPkg/env/Lib/site-packages/numpy/_core/include/numpy/__ufunc_api.c
vendored
Normal file
54
.CondaPkg/env/Lib/site-packages/numpy/_core/include/numpy/__ufunc_api.c
vendored
Normal file
@@ -0,0 +1,54 @@
|
||||
|
||||
/* These pointers will be stored in the C-object for use in other
|
||||
extension modules
|
||||
*/
|
||||
|
||||
void *PyUFunc_API[] = {
|
||||
(void *) &PyUFunc_Type,
|
||||
(void *) PyUFunc_FromFuncAndData,
|
||||
(void *) PyUFunc_RegisterLoopForType,
|
||||
NULL,
|
||||
(void *) PyUFunc_f_f_As_d_d,
|
||||
(void *) PyUFunc_d_d,
|
||||
(void *) PyUFunc_f_f,
|
||||
(void *) PyUFunc_g_g,
|
||||
(void *) PyUFunc_F_F_As_D_D,
|
||||
(void *) PyUFunc_F_F,
|
||||
(void *) PyUFunc_D_D,
|
||||
(void *) PyUFunc_G_G,
|
||||
(void *) PyUFunc_O_O,
|
||||
(void *) PyUFunc_ff_f_As_dd_d,
|
||||
(void *) PyUFunc_ff_f,
|
||||
(void *) PyUFunc_dd_d,
|
||||
(void *) PyUFunc_gg_g,
|
||||
(void *) PyUFunc_FF_F_As_DD_D,
|
||||
(void *) PyUFunc_DD_D,
|
||||
(void *) PyUFunc_FF_F,
|
||||
(void *) PyUFunc_GG_G,
|
||||
(void *) PyUFunc_OO_O,
|
||||
(void *) PyUFunc_O_O_method,
|
||||
(void *) PyUFunc_OO_O_method,
|
||||
(void *) PyUFunc_On_Om,
|
||||
NULL,
|
||||
NULL,
|
||||
(void *) PyUFunc_clearfperr,
|
||||
(void *) PyUFunc_getfperr,
|
||||
NULL,
|
||||
(void *) PyUFunc_ReplaceLoopBySignature,
|
||||
(void *) PyUFunc_FromFuncAndDataAndSignature,
|
||||
NULL,
|
||||
(void *) PyUFunc_e_e,
|
||||
(void *) PyUFunc_e_e_As_f_f,
|
||||
(void *) PyUFunc_e_e_As_d_d,
|
||||
(void *) PyUFunc_ee_e,
|
||||
(void *) PyUFunc_ee_e_As_ff_f,
|
||||
(void *) PyUFunc_ee_e_As_dd_d,
|
||||
(void *) PyUFunc_DefaultTypeResolver,
|
||||
(void *) PyUFunc_ValidateCasting,
|
||||
(void *) PyUFunc_RegisterLoopForDescr,
|
||||
(void *) PyUFunc_FromFuncAndDataAndSignatureAndIdentity,
|
||||
(void *) PyUFunc_AddLoopFromSpec,
|
||||
(void *) PyUFunc_AddPromoter,
|
||||
(void *) PyUFunc_AddWrappingLoop,
|
||||
(void *) PyUFunc_GiveFloatingpointErrors
|
||||
};
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user