summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--numpy/core/numerictypes.pyi97
1 files changed, 66 insertions, 31 deletions
diff --git a/numpy/core/numerictypes.pyi b/numpy/core/numerictypes.pyi
index fd4aa3fda..e99e1c500 100644
--- a/numpy/core/numerictypes.pyi
+++ b/numpy/core/numerictypes.pyi
@@ -1,16 +1,15 @@
import sys
+import types
from typing import (
- TypeVar,
- Optional,
Type,
Union,
Tuple,
- Sequence,
overload,
Any,
TypeVar,
Dict,
List,
+ Iterable,
)
from numpy import (
@@ -48,15 +47,22 @@ from numpy.core._type_aliases import (
sctypes as sctypes,
)
-from numpy.typing import DTypeLike, ArrayLike
+from numpy.typing import DTypeLike, ArrayLike, _SupportsDType
if sys.version_info >= (3, 8):
- from typing import Literal, Protocol, TypedDict
+ from typing import Literal as L, Protocol, TypedDict
else:
- from typing_extensions import Literal, Protocol, TypedDict
+ from typing_extensions import Literal as L, Protocol, TypedDict
_T = TypeVar("_T")
-_ScalarType = TypeVar("_ScalarType", bound=generic)
+_SCT = TypeVar("_SCT", bound=generic)
+
+# A paramtrizable subset of `npt.DTypeLike`
+_DTypeLike = Union[
+ Type[_SCT],
+ dtype[_SCT],
+ _SupportsDType[dtype[_SCT]],
+]
class _CastFunc(Protocol):
def __call__(
@@ -64,42 +70,71 @@ class _CastFunc(Protocol):
) -> ndarray[Any, dtype[Any]]: ...
class _TypeCodes(TypedDict):
- Character: Literal['c']
- Integer: Literal['bhilqp']
- UnsignedInteger: Literal['BHILQP']
- Float: Literal['efdg']
- Complex: Literal['FDG']
- AllInteger: Literal['bBhHiIlLqQpP']
- AllFloat: Literal['efdgFDG']
- Datetime: Literal['Mm']
- All: Literal['?bhilqpBHILQPefdgFDGSUVOMm']
+ Character: L['c']
+ Integer: L['bhilqp']
+ UnsignedInteger: L['BHILQP']
+ Float: L['efdg']
+ Complex: L['FDG']
+ AllInteger: L['bBhHiIlLqQpP']
+ AllFloat: L['efdgFDG']
+ Datetime: L['Mm']
+ All: L['?bhilqpBHILQPefdgFDGSUVOMm']
class _typedict(Dict[Type[generic], _T]):
def __getitem__(self, key: DTypeLike) -> _T: ...
+if sys.version_info >= (3, 10):
+ _TypeTuple = Union[
+ Type[Any],
+ types.Union,
+ Tuple[Union[Type[Any], types.Union, Tuple[Any, ...]], ...],
+ ]
+else:
+ _TypeTuple = Union[
+ Type[Any],
+ Tuple[Union[Type[Any], Tuple[Any, ...]], ...],
+ ]
+
__all__: List[str]
-# TODO: Clean up the annotations for the 7 functions below
+@overload
+def maximum_sctype(t: _DTypeLike[_SCT]) -> Type[_SCT]: ...
+@overload
+def maximum_sctype(t: DTypeLike) -> Type[Any]: ...
+
+@overload
+def issctype(rep: dtype[Any] | Type[Any]) -> bool: ...
+@overload
+def issctype(rep: object) -> L[False]: ...
-def maximum_sctype(t: DTypeLike) -> dtype: ...
-def issctype(rep: object) -> bool: ...
@overload
-def obj2sctype(rep: object) -> Optional[generic]: ...
+def obj2sctype(rep: _DTypeLike[_SCT], default: None = ...) -> None | Type[_SCT]: ...
@overload
-def obj2sctype(rep: object, default: None) -> Optional[generic]: ...
+def obj2sctype(rep: _DTypeLike[_SCT], default: _T) -> _T | Type[_SCT]: ...
@overload
-def obj2sctype(
- rep: object, default: Type[_T]
-) -> Union[generic, Type[_T]]: ...
-def issubclass_(arg1: object, arg2: Union[object, Tuple[object, ...]]) -> bool: ...
-def issubsctype(
- arg1: Union[ndarray, DTypeLike], arg2: Union[ndarray, DTypeLike]
-) -> bool: ...
+def obj2sctype(rep: DTypeLike, default: None = ...) -> None | Type[Any]: ...
+@overload
+def obj2sctype(rep: DTypeLike, default: _T) -> _T | Type[Any]: ...
+@overload
+def obj2sctype(rep: object, default: None = ...) -> None: ...
+@overload
+def obj2sctype(rep: object, default: _T) -> _T: ...
+
+@overload
+def issubclass_(arg1: Type[Any], arg2: _TypeTuple) -> bool: ...
+@overload
+def issubclass_(arg1: object, arg2: object) -> L[False]: ...
+
+def issubsctype(arg1: DTypeLike, arg2: DTypeLike) -> bool: ...
+
def issubdtype(arg1: DTypeLike, arg2: DTypeLike) -> bool: ...
-def sctype2char(sctype: object) -> str: ...
+
+def sctype2char(sctype: DTypeLike) -> str: ...
+
def find_common_type(
- array_types: Sequence[DTypeLike], scalar_types: Sequence[DTypeLike]
-) -> dtype: ...
+ array_types: Iterable[DTypeLike],
+ scalar_types: Iterable[DTypeLike],
+) -> dtype[Any]: ...
cast: _typedict[_CastFunc]
nbytes: _typedict[int]