diff options
author | Charles Harris <charlesr.harris@gmail.com> | 2022-06-09 11:55:32 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-09 11:55:32 -0600 |
commit | 5ea81775e0d2d13a4fec6bab882002e050bd3da1 (patch) | |
tree | d2dc068c7c06c22393841ddc0dd7ee011996249f /numpy/array_api/_typing.py | |
parent | 9d6b102617a92ad41964a5611c8dec87d3053a9f (diff) | |
parent | 5447192c8dc5d43d837b93ed5c5d47457e367669 (diff) | |
download | numpy-5ea81775e0d2d13a4fec6bab882002e050bd3da1.tar.gz |
Merge branch 'main' into bugfix_16492_segfault_on_pyfragments
Diffstat (limited to 'numpy/array_api/_typing.py')
-rw-r--r-- | numpy/array_api/_typing.py | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/numpy/array_api/_typing.py b/numpy/array_api/_typing.py new file mode 100644 index 000000000..dfa87b358 --- /dev/null +++ b/numpy/array_api/_typing.py @@ -0,0 +1,74 @@ +""" +This file defines the types for type annotations. + +These names aren't part of the module namespace, but they are used in the +annotations in the function signatures. The functions in the module are only +valid for inputs that match the given type annotations. +""" + +from __future__ import annotations + +__all__ = [ + "Array", + "Device", + "Dtype", + "SupportsDLPack", + "SupportsBufferProtocol", + "PyCapsule", +] + +import sys +from typing import ( + Any, + Literal, + Sequence, + Type, + Union, + TYPE_CHECKING, + TypeVar, + Protocol, +) + +from ._array_object import Array +from numpy import ( + dtype, + int8, + int16, + int32, + int64, + uint8, + uint16, + uint32, + uint64, + float32, + float64, +) + +_T_co = TypeVar("_T_co", covariant=True) + +class NestedSequence(Protocol[_T_co]): + def __getitem__(self, key: int, /) -> _T_co | NestedSequence[_T_co]: ... + def __len__(self, /) -> int: ... + +Device = Literal["cpu"] +if TYPE_CHECKING or sys.version_info >= (3, 9): + Dtype = dtype[Union[ + int8, + int16, + int32, + int64, + uint8, + uint16, + uint32, + uint64, + float32, + float64, + ]] +else: + Dtype = dtype + +SupportsBufferProtocol = Any +PyCapsule = Any + +class SupportsDLPack(Protocol): + def __dlpack__(self, /, *, stream: None = ...) -> PyCapsule: ... |