Skip to content

Commit b59c191

Browse files
committed
✨ add Array class definition
Signed-off-by: Nathaniel Starkman <[email protected]>
1 parent 8db0e7c commit b59c191

File tree

2 files changed

+16
-5
lines changed

2 files changed

+16
-5
lines changed

src/array_api_typing/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
"""Static typing support for the array API standard."""
22

33
__all__ = (
4+
"Array",
45
"HasArrayNamespace",
56
"__version__",
67
"__version_tuple__",
78
)
89

9-
from ._array import HasArrayNamespace
10+
from ._array import Array, HasArrayNamespace
1011
from ._version import version as __version__, version_tuple as __version_tuple__

src/array_api_typing/_array.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
1-
__all__ = ("HasArrayNamespace",)
1+
__all__ = (
2+
"Array",
3+
"HasArrayNamespace",
4+
)
25

36
from types import ModuleType
47
from typing import Literal, Protocol
58
from typing_extensions import TypeVar
69

7-
T_co = TypeVar("T_co", covariant=True, default=ModuleType)
10+
NS_co = TypeVar("NS_co", covariant=True, default=ModuleType)
811

912

10-
class HasArrayNamespace(Protocol[T_co]):
13+
class HasArrayNamespace(Protocol[NS_co]):
1114
"""Protocol for classes that have an `__array_namespace__` method.
1215
1316
Example:
@@ -27,4 +30,11 @@ class HasArrayNamespace(Protocol[T_co]):
2730

2831
def __array_namespace__(
2932
self, /, *, api_version: Literal["2021.12"] | None = None
30-
) -> T_co: ...
33+
) -> NS_co: ...
34+
35+
36+
class Array(
37+
HasArrayNamespace[NS_co],
38+
Protocol[NS_co],
39+
):
40+
"""Array API specification for array object attributes and methods."""

0 commit comments

Comments
 (0)