diff --git a/src/numpy-stubs/__init__.pyi b/src/numpy-stubs/__init__.pyi index be0256a9..86da7c2e 100644 --- a/src/numpy-stubs/__init__.pyi +++ b/src/numpy-stubs/__init__.pyi @@ -4,168 +4,11 @@ import ctypes as ct import datetime as dt import enum import sys +from _typeshed import StrOrBytesPath, SupportsFlush, SupportsLenAndGetItem, SupportsWrite from collections.abc import Callable, Iterable, Iterator, Mapping, Sequence from decimal import Decimal from fractions import Fraction from types import EllipsisType, GenericAlias, MappingProxyType, ModuleType, TracebackType -from uuid import UUID - -import numpy as np -from numpy.__config__ import show as show_config -from numpy._array_api_info import __array_namespace_info__ -from numpy._core._internal import _ctypes -from numpy._pytesttester import PytestTester -from numpy._typing import ( - ArrayLike, - DTypeLike, - NBitBase, - NDArray, - _8Bit, - _16Bit, - _32Bit, - _64Bit, - _ArrayLike, - _ArrayLikeBool_co, - _ArrayLikeComplex128_co, - _ArrayLikeComplex_co, - _ArrayLikeDT64_co, - _ArrayLikeFloat64_co, - _ArrayLikeFloat_co, - _ArrayLikeInt, - _ArrayLikeInt_co, - _ArrayLikeNumber_co, - _ArrayLikeObject_co, - _ArrayLikeTD64_co, - _ArrayLikeUInt_co, - _BoolCodes, - _ByteCodes, - _BytesCodes, - _CDoubleCodes, - _CLongDoubleCodes, - _CSingleCodes, - _CharLike_co, - _CharacterCodes, - _Complex64Codes, - _Complex128Codes, - _ComplexFloatingCodes, - _DT64Codes, - _DTypeLike, - _DTypeLikeVoid, - _DoubleCodes, - _FiniteNestedSequence, - _FlexibleCodes, - _Float16Codes, - _Float32Codes, - _Float64Codes, - _FloatLike_co, - _FloatingCodes, - _GUFunc_Nin2_Nout1, - _GenericCodes, - _HalfCodes, - _InexactCodes, - _Int8Codes, - _Int16Codes, - _Int32Codes, - _Int64Codes, - _IntCCodes, - _IntLike_co, - _IntPCodes, - _IntegerCodes, - _LongCodes, - _LongDoubleCodes, - _LongLongCodes, - _NBitByte, - _NBitDouble, - _NBitHalf, - _NBitIntC, - _NBitIntP, - _NBitLong, - _NBitLongDouble, - _NBitLongLong, - _NBitShort, - _NBitSingle, - _NestedSequence, - _NumberCodes, - _NumberLike_co, - _ObjectCodes, - _ScalarLike_co, - _Shape, - _ShapeLike, - _ShortCodes, - _SignedIntegerCodes, - _SingleCodes, - _StrCodes, - _StringCodes, - _SupportsArray, - _TD64Codes, - _TD64Like_co, - _UByteCodes, - _UFunc_Nin1_Nout1, - _UFunc_Nin1_Nout2, - _UFunc_Nin2_Nout1, - _UFunc_Nin2_Nout2, - _UInt8Codes, - _UInt16Codes, - _UInt32Codes, - _UInt64Codes, - _UIntCCodes, - _UIntPCodes, - _ULongCodes, - _ULongLongCodes, - _UShortCodes, - _UnsignedIntegerCodes, - _VoidCodes, - _VoidDTypeLike, -) -from numpy._typing._callable import ( - _BoolBitOp, - _BoolDivMod, - _BoolMod, - _BoolOp, - _BoolSub, - _BoolTrueDiv, - _ComparisonOpGE, - _ComparisonOpGT, - _ComparisonOpLE, - _ComparisonOpLT, - _FloatDivMod, - _FloatMod, - _FloatOp, - _IntTrueDiv, - _NumberOp, - _SignedIntBitOp, - _SignedIntDivMod, - _SignedIntMod, - _SignedIntOp, - _UnsignedIntBitOp, - _UnsignedIntDivMod, - _UnsignedIntMod, - _UnsignedIntOp, -) - -# NOTE: Numpy's mypy plugin is used for removing the types unavailable -# to the specific platform -from numpy._typing._extended_precision import ( - complex160, - complex192, - complex256, - complex512, - float80, - float96, - float128, - float256, - int128, - int256, - uint128, - uint256, -) - -if sys.version_info >= (3, 12): - from collections.abc import Buffer as _SupportsBuffer -else: - _SupportsBuffer: TypeAlias = ... - -from _typeshed import StrOrBytesPath, SupportsFlush, SupportsLenAndGetItem, SupportsWrite from typing import ( Any, ClassVar, @@ -181,37 +24,17 @@ from typing import ( TypedDict, final, overload, + runtime_checkable, type_check_only, ) from typing_extensions import CapsuleType, LiteralString, Never, Protocol, Self, TypeVar, deprecated +from uuid import UUID -from . import ( - __config__ as __config__, - char, - core, - ctypeslib, - dtypes, - exceptions, - f2py, - fft, - lib, - linalg, - ma, - matlib as matlib, - matrixlib as matrixlib, - polynomial, - random, - rec, - strings, - testing, - typing as npt, - version as version, -) - -if sys.version_info < (3, 12): - from . import distutils as distutils - +import numpy as np +from numpy.__config__ import show as show_config +from numpy._array_api_info import __array_namespace_info__ from numpy._core._asarray import require +from numpy._core._internal import _ctypes from numpy._core._type_aliases import sctypeDict from numpy._core._ufunc_config import _ErrCall, _ErrKind, getbufsize, geterr, geterrcall, setbufsize, seterr, seterrcall from numpy._core.arrayprint import ( @@ -345,6 +168,151 @@ from numpy._core.numeric import ( from numpy._core.numerictypes import ScalarType, isdtype, issubdtype, typecodes from numpy._core.records import recarray, record from numpy._core.shape_base import atleast_1d, atleast_2d, atleast_3d, block, hstack, stack, unstack, vstack +from numpy._pytesttester import PytestTester +from numpy._typing import ( + ArrayLike, + DTypeLike, + NBitBase, + NDArray, + _8Bit, + _16Bit, + _32Bit, + _64Bit, + _ArrayLike, + _ArrayLikeBool_co, + _ArrayLikeComplex128_co, + _ArrayLikeComplex_co, + _ArrayLikeDT64_co, + _ArrayLikeFloat64_co, + _ArrayLikeFloat_co, + _ArrayLikeInt, + _ArrayLikeInt_co, + _ArrayLikeNumber_co, + _ArrayLikeObject_co, + _ArrayLikeTD64_co, + _ArrayLikeUInt_co, + _BoolCodes, + _ByteCodes, + _BytesCodes, + _CDoubleCodes, + _CLongDoubleCodes, + _CSingleCodes, + _CharLike_co, + _CharacterCodes, + _Complex64Codes, + _Complex128Codes, + _ComplexFloatingCodes, + _DT64Codes, + _DTypeLike, + _DTypeLikeVoid, + _DoubleCodes, + _FiniteNestedSequence, + _FlexibleCodes, + _Float16Codes, + _Float32Codes, + _Float64Codes, + _FloatLike_co, + _FloatingCodes, + _GUFunc_Nin2_Nout1, + _GenericCodes, + _HalfCodes, + _InexactCodes, + _Int8Codes, + _Int16Codes, + _Int32Codes, + _Int64Codes, + _IntCCodes, + _IntLike_co, + _IntPCodes, + _IntegerCodes, + _LongCodes, + _LongDoubleCodes, + _LongLongCodes, + _NBitByte, + _NBitDouble, + _NBitHalf, + _NBitIntC, + _NBitIntP, + _NBitLong, + _NBitLongDouble, + _NBitLongLong, + _NBitShort, + _NBitSingle, + _NestedSequence, + _NumberCodes, + _NumberLike_co, + _ObjectCodes, + _ScalarLike_co, + _Shape, + _ShapeLike, + _ShortCodes, + _SignedIntegerCodes, + _SingleCodes, + _StrCodes, + _StringCodes, + _SupportsArray, + _TD64Codes, + _TD64Like_co, + _UByteCodes, + _UFunc_Nin1_Nout1, + _UFunc_Nin1_Nout2, + _UFunc_Nin2_Nout1, + _UFunc_Nin2_Nout2, + _UInt8Codes, + _UInt16Codes, + _UInt32Codes, + _UInt64Codes, + _UIntCCodes, + _UIntPCodes, + _ULongCodes, + _ULongLongCodes, + _UShortCodes, + _UnsignedIntegerCodes, + _VoidCodes, + _VoidDTypeLike, +) +from numpy._typing._callable import ( + _BoolBitOp, + _BoolDivMod, + _BoolMod, + _BoolOp, + _BoolSub, + _BoolTrueDiv, + _ComparisonOpGE, + _ComparisonOpGT, + _ComparisonOpLE, + _ComparisonOpLT, + _FloatDivMod, + _FloatMod, + _FloatOp, + _IntTrueDiv, + _NumberOp, + _SignedIntBitOp, + _SignedIntDivMod, + _SignedIntMod, + _SignedIntOp, + _UnsignedIntBitOp, + _UnsignedIntDivMod, + _UnsignedIntMod, + _UnsignedIntOp, +) + +# NOTE: Numpy's mypy plugin is used for removing the types unavailable +# to the specific platform +from numpy._typing._extended_precision import ( + complex160, + complex192, + complex256, + complex512, + float80, + float96, + float128, + float256, + int128, + int256, + uint128, + uint256, +) from numpy.lib import scimath as emath from numpy.lib._arraypad_impl import pad from numpy.lib._arraysetops_impl import ( @@ -483,6 +451,45 @@ from numpy.lib._ufunclike_impl import fix, isneginf, isposinf from numpy.lib._utils_impl import get_include, info, show_runtime from numpy.matrixlib import asmatrix, bmat +from . import ( + __config__ as __config__, + char, + core, + ctypeslib, + dtypes, + exceptions, + f2py, + fft, + lib, + linalg, + ma, + matlib as matlib, + matrixlib as matrixlib, + polynomial, + random, + rec, + strings, + testing, + typing as npt, + version as version, +) + +@runtime_checkable +class _Buffer(Protocol): + def __buffer__(self, flags: int, /) -> memoryview: ... + +if sys.version_info >= (3, 12): + _SupportsBuffer: TypeAlias = _Buffer +else: + import array as _array + import mmap as _mmap + + from numpy import distutils as distutils # type: ignore[attr-defined] # noqa: ICN003 + + _SupportsBuffer: TypeAlias = ( + _Buffer | bytes | bytearray | memoryview | _array.array[Any] | _mmap.mmap | NDArray[Any] | generic + ) + __all__ = [ # noqa: RUF022 # __numpy_submodules__ "char", "core", "ctypeslib", "dtypes", "exceptions", "f2py", "fft", "lib", "linalg", @@ -4025,7 +4032,7 @@ ubyte: TypeAlias = unsignedinteger[_NBitByte] ushort: TypeAlias = unsignedinteger[_NBitShort] uintc: TypeAlias = unsignedinteger[_NBitIntC] uintp: TypeAlias = unsignedinteger[_NBitIntP] -uint64: TypeAlias = uintp +uint: TypeAlias = uintp ulong: TypeAlias = unsignedinteger[_NBitLong] ulonglong: TypeAlias = unsignedinteger[_NBitLongLong] diff --git a/src/numpy-stubs/_typing/_array_like.pyi b/src/numpy-stubs/_typing/_array_like.pyi index d1c71cc8..f6696b5e 100644 --- a/src/numpy-stubs/_typing/_array_like.pyi +++ b/src/numpy-stubs/_typing/_array_like.pyi @@ -1,7 +1,7 @@ import sys from collections.abc import Callable, Collection, Sequence -from typing import Any, Never as _UnknownType, Protocol, TypeAlias, runtime_checkable -from typing_extensions import TypeVar +from typing import Any, Protocol, TypeAlias, runtime_checkable +from typing_extensions import Never, TypeVar import numpy as np from numpy.dtypes import StringDType @@ -23,6 +23,7 @@ _DType = TypeVar("_DType", bound=np.dtype[Any]) _DType_co = TypeVar("_DType_co", covariant=True, bound=np.dtype[Any]) NDArray: TypeAlias = np.ndarray[_Shape, np.dtype[_ScalarType_co]] +_UnknownType: TypeAlias = Never # The `_SupportsArray` protocol only cares about the default dtype # (i.e. `dtype=None` or no `dtype` parameter at all) of the to-be returned diff --git a/src/numpy-stubs/_typing/_callable.pyi b/src/numpy-stubs/_typing/_callable.pyi index 29d95901..8935b57d 100644 --- a/src/numpy-stubs/_typing/_callable.pyi +++ b/src/numpy-stubs/_typing/_callable.pyi @@ -111,7 +111,7 @@ class _IntTrueDiv(Protocol[_NBit1]): @overload def __call__(self, other: float, /) -> np.floating[_NBit1] | np.float64: ... @overload - def __call__(self, other: complex, /) -> np.complexnp.floating[_NBit1] | np.complex128: ... + def __call__(self, other: complex, /) -> np.complexfloating[_NBit1] | np.complex128: ... @overload def __call__(self, other: np.integer[_NBit2], /) -> np.floating[_NBit1] | np.floating[_NBit2]: ... diff --git a/src/numpy-stubs/lib/_format_impl.pyi b/src/numpy-stubs/lib/_format_impl.pyi deleted file mode 100644 index 6ccd2a91..00000000 --- a/src/numpy-stubs/lib/_format_impl.pyi +++ /dev/null @@ -1,38 +0,0 @@ -from _typeshed import Incomplete -from typing import Final, Literal - -__all__: list[str] = [] - -EXPECTED_KEYS: Final[set[str]] -MAGIC_PREFIX: Final[bytes] -MAGIC_LEN: Literal[8] -ARRAY_ALIGN: Literal[64] -BUFFER_SIZE: Literal[262144] # 2**18 -GROWTH_AXIS_MAX_DIGITS: Literal[21] - -def magic(major: Incomplete, minor: Incomplete) -> Incomplete: ... -def read_magic(fp: Incomplete) -> Incomplete: ... -def dtype_to_descr(dtype: Incomplete) -> Incomplete: ... -def descr_to_dtype(descr: Incomplete) -> Incomplete: ... -def header_data_from_array_1_0(array: Incomplete) -> Incomplete: ... -def write_array_header_1_0(fp: Incomplete, d: Incomplete) -> Incomplete: ... -def write_array_header_2_0(fp: Incomplete, d: Incomplete) -> Incomplete: ... -def read_array_header_1_0(fp: Incomplete) -> Incomplete: ... -def read_array_header_2_0(fp: Incomplete) -> Incomplete: ... -def write_array( - fp: Incomplete, - array: Incomplete, - version: Incomplete = ..., - allow_pickle: Incomplete = ..., - pickle_kwargs: Incomplete = ..., -) -> Incomplete: ... -def read_array(fp: Incomplete, allow_pickle: Incomplete = ..., pickle_kwargs: Incomplete = ...) -> Incomplete: ... -def open_memmap( - filename: Incomplete, - mode: Incomplete = ..., - dtype: Incomplete = ..., - shape: Incomplete = ..., - fortran_order: Incomplete = ..., - version: Incomplete = ..., -) -> Incomplete: ... -def isfileobj(f: Incomplete) -> Incomplete: ... diff --git a/src/numpy-stubs/lib/_function_base_impl.pyi b/src/numpy-stubs/lib/_function_base_impl.pyi index df601160..c9b65104 100644 --- a/src/numpy-stubs/lib/_function_base_impl.pyi +++ b/src/numpy-stubs/lib/_function_base_impl.pyi @@ -299,7 +299,7 @@ def interp( def interp( x: _FloatLike_co, xp: _ArrayLikeFloat_co, - fp: Sequence[complex | np.ccomplexfloating], + fp: Sequence[complex | np.complexfloating], left: _NumberLike_co | None = None, right: _NumberLike_co | None = None, period: _FloatLike_co | None = None, diff --git a/src/numpy-stubs/lib/_nanfunctions_impl.pyi b/src/numpy-stubs/lib/_nanfunctions_impl.pyi index dd4ddbe6..4a8225a4 100644 --- a/src/numpy-stubs/lib/_nanfunctions_impl.pyi +++ b/src/numpy-stubs/lib/_nanfunctions_impl.pyi @@ -1,9 +1,18 @@ -from numpy._core.fromnumeric import amax, amin, argmax, argmin, cumprod, cumsum, mean, prod, std, sum, var -from numpy.lib._function_base_impl import ( - median, - percentile, - quantile, +# NOTE: In reality these functions are not aliases but distinct functions with identical signatures. +from numpy._core.fromnumeric import ( + amax as nanmax, + amin as nanmin, + argmax as nanargmax, + argmin as nanargmin, + cumprod as nancumprod, + cumsum as nancumsum, + mean as nanmean, + prod as nanprod, + std as nanstd, + sum as nansum, + var as nanvar, ) +from numpy.lib._function_base_impl import median as nanmedian, percentile as nanpercentile, quantile as nanquantile __all__ = [ "nanargmax", @@ -21,20 +30,3 @@ __all__ = [ "nansum", "nanvar", ] - -# NOTE: In reality these functions are not aliases but distinct functions -# with identical signatures. -nanmin = amin -nanmax = amax -nanargmin = argmin -nanargmax = argmax -nansum = sum -nanprod = prod -nancumsum = cumsum -nancumprod = cumprod -nanmean = mean -nanvar = var -nanstd = std -nanmedian = median -nanpercentile = percentile -nanquantile = quantile diff --git a/src/numpy-stubs/lib/_polynomial_impl.pyi b/src/numpy-stubs/lib/_polynomial_impl.pyi index a2b2a748..8ce980a4 100644 --- a/src/numpy-stubs/lib/_polynomial_impl.pyi +++ b/src/numpy-stubs/lib/_polynomial_impl.pyi @@ -17,7 +17,7 @@ from numpy._typing import ( _T = TypeVar("_T") _2Tup: TypeAlias = tuple[_T, _T] -_5Tup: TypeAlias = tuple[_T, NDArray[np.np.float64], NDArray[np.int32], NDArray[np.float64], NDArray[np.float64]] +_5Tup: TypeAlias = tuple[_T, NDArray[np.float64], NDArray[np.int32], NDArray[np.float64], NDArray[np.float64]] __all__ = ["poly", "poly1d", "polyadd", "polyder", "polydiv", "polyfit", "polyint", "polymul", "polysub", "polyval", "roots"] diff --git a/src/numpy-stubs/lib/_twodim_base_impl.pyi b/src/numpy-stubs/lib/_twodim_base_impl.pyi index b96a36d5..859837fd 100644 --- a/src/numpy-stubs/lib/_twodim_base_impl.pyi +++ b/src/numpy-stubs/lib/_twodim_base_impl.pyi @@ -137,9 +137,9 @@ def vander(x: _ArrayLikeComplex_co, N: int | None = ..., increasing: bool = ...) @overload def vander(x: _ArrayLikeObject_co, N: int | None = ..., increasing: bool = ...) -> NDArray[np.object_]: ... -_Int_co: TypeAlias = np.integer[Any] | np.bool -_Float_co: TypeAlias = np.floating[Any] | _Int_co -_Number_co: TypeAlias = np.np.number | np.bool +_Int_co: TypeAlias = np.integer | np.bool +_Float_co: TypeAlias = np.floating | _Int_co +_Number_co: TypeAlias = np.number | np.bool _ArrayLike1D: TypeAlias = _SupportsArray[np.dtype[_SCT]] | Sequence[_SCT] _ArrayLike2D: TypeAlias = _SupportsArray[np.dtype[_SCT]] | Sequence[_ArrayLike1D[_SCT]] diff --git a/src/numpy-stubs/lib/format.pyi b/src/numpy-stubs/lib/format.pyi index c29e18fe..ae2c257f 100644 --- a/src/numpy-stubs/lib/format.pyi +++ b/src/numpy-stubs/lib/format.pyi @@ -1,24 +1,39 @@ -from ._format_impl import ( - ARRAY_ALIGN as ARRAY_ALIGN, - BUFFER_SIZE as BUFFER_SIZE, - EXPECTED_KEYS as EXPECTED_KEYS, - GROWTH_AXIS_MAX_DIGITS as GROWTH_AXIS_MAX_DIGITS, - MAGIC_LEN as MAGIC_LEN, - MAGIC_PREFIX as MAGIC_PREFIX, - __all__ as __all__, - __doc__ as __doc__, - descr_to_dtype as descr_to_dtype, - drop_metadata as drop_metadata, - dtype_to_descr as dtype_to_descr, - header_data_from_array_1_0 as header_data_from_array_1_0, - isfileobj as isfileobj, - magic as magic, - open_memmap as open_memmap, - read_array as read_array, - read_array_header_1_0 as read_array_header_1_0, - read_array_header_2_0 as read_array_header_2_0, - read_magic as read_magic, - write_array as write_array, - write_array_header_1_0 as write_array_header_1_0, - write_array_header_2_0 as write_array_header_2_0, -) +from _typeshed import Incomplete +from typing import Final, Literal + +__all__: list[str] = [] + +EXPECTED_KEYS: Final[set[str]] +MAGIC_PREFIX: Final[bytes] +MAGIC_LEN: Literal[8] +ARRAY_ALIGN: Literal[64] +BUFFER_SIZE: Literal[262144] # 2**18 +GROWTH_AXIS_MAX_DIGITS: Literal[21] + +def magic(major: Incomplete, minor: Incomplete) -> Incomplete: ... +def read_magic(fp: Incomplete) -> Incomplete: ... +def dtype_to_descr(dtype: Incomplete) -> Incomplete: ... +def descr_to_dtype(descr: Incomplete) -> Incomplete: ... +def header_data_from_array_1_0(array: Incomplete) -> Incomplete: ... +def write_array_header_1_0(fp: Incomplete, d: Incomplete) -> Incomplete: ... +def write_array_header_2_0(fp: Incomplete, d: Incomplete) -> Incomplete: ... +def read_array_header_1_0(fp: Incomplete) -> Incomplete: ... +def read_array_header_2_0(fp: Incomplete) -> Incomplete: ... +def write_array( + fp: Incomplete, + array: Incomplete, + version: Incomplete = ..., + allow_pickle: Incomplete = ..., + pickle_kwargs: Incomplete = ..., +) -> Incomplete: ... +def read_array(fp: Incomplete, allow_pickle: Incomplete = ..., pickle_kwargs: Incomplete = ...) -> Incomplete: ... +def open_memmap( + filename: Incomplete, + mode: Incomplete = ..., + dtype: Incomplete = ..., + shape: Incomplete = ..., + fortran_order: Incomplete = ..., + version: Incomplete = ..., +) -> Incomplete: ... +def isfileobj(f: Incomplete) -> Incomplete: ... +def drop_metadata(dtype: Incomplete, /) -> Incomplete: ...