summaryrefslogtreecommitdiff
path: root/numpy
diff options
context:
space:
mode:
Diffstat (limited to 'numpy')
-rw-r--r--numpy/typing/__init__.py17
-rw-r--r--numpy/typing/_dtype_like.py152
2 files changed, 165 insertions, 4 deletions
diff --git a/numpy/typing/__init__.py b/numpy/typing/__init__.py
index 4ec1f4b2f..8147789fb 100644
--- a/numpy/typing/__init__.py
+++ b/numpy/typing/__init__.py
@@ -297,7 +297,22 @@ from ._scalars import (
_VoidLike_co,
)
from ._shape import _Shape, _ShapeLike
-from ._dtype_like import _SupportsDType, _VoidDTypeLike, DTypeLike as DTypeLike
+from ._dtype_like import (
+ DTypeLike as DTypeLike,
+ _SupportsDType,
+ _VoidDTypeLike,
+ _DTypeLikeBool,
+ _DTypeLikeUInt,
+ _DTypeLikeInt,
+ _DTypeLikeFloat,
+ _DTypeLikeComplex,
+ _DTypeLikeTD64,
+ _DTypeLikeDT64,
+ _DTypeLikeObject,
+ _DTypeLikeVoid,
+ _DTypeLikeStr,
+ _DTypeLikeBytes,
+)
from ._array_like import (
ArrayLike as ArrayLike,
_ArrayLike,
diff --git a/numpy/typing/_dtype_like.py b/numpy/typing/_dtype_like.py
index 45edb4d76..9b79f9b68 100644
--- a/numpy/typing/_dtype_like.py
+++ b/numpy/typing/_dtype_like.py
@@ -1,7 +1,7 @@
import sys
-from typing import Any, List, Sequence, Tuple, Union, TypeVar, TYPE_CHECKING
+from typing import Any, List, Sequence, Tuple, Union, Type, TypeVar, TYPE_CHECKING
-from numpy import dtype
+import numpy as np
from ._shape import _ShapeLike
if sys.version_info >= (3, 8):
@@ -15,6 +15,48 @@ else:
else:
HAVE_PROTOCOL = True
+from ._char_codes import (
+ _BoolCodes,
+ _UInt8Codes,
+ _UInt16Codes,
+ _UInt32Codes,
+ _UInt64Codes,
+ _Int8Codes,
+ _Int16Codes,
+ _Int32Codes,
+ _Int64Codes,
+ _Float16Codes,
+ _Float32Codes,
+ _Float64Codes,
+ _Complex64Codes,
+ _Complex128Codes,
+ _ByteCodes,
+ _ShortCodes,
+ _IntCCodes,
+ _IntPCodes,
+ _IntCodes,
+ _LongLongCodes,
+ _UByteCodes,
+ _UShortCodes,
+ _UIntCCodes,
+ _UIntPCodes,
+ _UIntCodes,
+ _ULongLongCodes,
+ _HalfCodes,
+ _SingleCodes,
+ _DoubleCodes,
+ _LongDoubleCodes,
+ _CSingleCodes,
+ _CDoubleCodes,
+ _CLongDoubleCodes,
+ _DT64Codes,
+ _TD64Codes,
+ _StrCodes,
+ _BytesCodes,
+ _VoidCodes,
+ _ObjectCodes,
+)
+
_DTypeLikeNested = Any # TODO: wait for support for recursive types
if TYPE_CHECKING or HAVE_PROTOCOL:
@@ -64,7 +106,7 @@ _VoidDTypeLike = Union[
# Anything that can be coerced into numpy.dtype.
# Reference: https://docs.scipy.org/doc/numpy/reference/arrays.dtypes.html
DTypeLike = Union[
- dtype,
+ np.dtype,
# default data type (float64)
None,
# array-scalar types and generic types
@@ -82,3 +124,107 @@ DTypeLike = Union[
# therefore not included in the Union defining `DTypeLike`.
#
# See https://github.com/numpy/numpy/issues/16891 for more details.
+
+# Aliases for commonly used dtype-like objects.
+# Note that the precision of `np.number` subclasses is ignored herein.
+_DTypeLikeBool = Union[
+ Type[bool],
+ Type[np.bool_],
+ "np.dtype[np.bool_]",
+ "_SupportsDType[np.dtype[np.bool_]]",
+ _BoolCodes,
+]
+_DTypeLikeUInt = Union[
+ Type[np.unsignedinteger],
+ "np.dtype[np.unsignedinteger]",
+ "_SupportsDType[np.dtype[np.unsignedinteger]]",
+ _UInt8Codes,
+ _UInt16Codes,
+ _UInt32Codes,
+ _UInt64Codes,
+ _UByteCodes,
+ _UShortCodes,
+ _UIntCCodes,
+ _UIntPCodes,
+ _UIntCodes,
+ _ULongLongCodes,
+]
+_DTypeLikeInt = Union[
+ Type[int],
+ Type[np.signedinteger],
+ "np.dtype[np.signedinteger]",
+ "_SupportsDType[np.dtype[np.signedinteger]]",
+ _UInt8Codes,
+ _Int16Codes,
+ _Int32Codes,
+ _Int64Codes,
+ _ByteCodes,
+ _ShortCodes,
+ _IntCCodes,
+ _IntPCodes,
+ _IntCodes,
+ _LongLongCodes,
+]
+_DTypeLikeFloat = Union[
+ Type[float],
+ Type[np.floating],
+ "np.dtype[np.floating]",
+ "_SupportsDType[np.dtype[np.floating]]",
+ _Float16Codes,
+ _Float32Codes,
+ _Float64Codes,
+ _HalfCodes,
+ _SingleCodes,
+ _DoubleCodes,
+ _LongDoubleCodes,
+]
+_DTypeLikeComplex = Union[
+ Type[complex],
+ Type[np.complexfloating],
+ "np.dtype[np.complexfloating]",
+ "_SupportsDType[np.dtype[np.complexfloating]]",
+ _Complex64Codes,
+ _Complex128Codes,
+ _CSingleCodes,
+ _CDoubleCodes,
+ _CLongDoubleCodes,
+]
+_DTypeLikeDT64 = Union[
+ Type[np.timedelta64],
+ "np.dtype[np.timedelta64]",
+ "_SupportsDType[np.dtype[np.timedelta64]]",
+ _TD64Codes,
+]
+_DTypeLikeTD64 = Union[
+ Type[np.datetime64],
+ "np.dtype[np.datetime64]",
+ "_SupportsDType[np.dtype[np.datetime64]]",
+ _DT64Codes,
+]
+_DTypeLikeStr = Union[
+ Type[str],
+ Type[np.str_],
+ "np.dtype[np.str_]",
+ "_SupportsDType[np.dtype[np.str_]]",
+ _StrCodes,
+]
+_DTypeLikeBytes = Union[
+ Type[bytes],
+ Type[np.bytes_],
+ "np.dtype[np.bytes_]",
+ "_SupportsDType[np.dtype[np.bytes_]]",
+ _BytesCodes,
+]
+_DTypeLikeVoid = Union[
+ Type[np.void],
+ "np.dtype[np.void]",
+ "_SupportsDType[np.dtype[np.void]]",
+ _VoidCodes,
+ _VoidDTypeLike,
+]
+_DTypeLikeObject = Union[
+ type,
+ "np.dtype[np.object_]",
+ "_SupportsDType[np.dtype[np.object_]]",
+ _ObjectCodes,
+]