Skip to content

Commit be1b193

Browse files
committed
Add type annotations to the array api submodule function definitions
Some stubs still need to be modified to properly pass mypy type checking. Also, 'device' is just left as a TypeVar() for now.
1 parent df698f8 commit be1b193

10 files changed

+151
-97
lines changed

numpy/_array_api/_creation_functions.py

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
1+
from __future__ import annotations
2+
3+
from ._types import Optional, Tuple, Union, array, device, dtype
4+
15
import numpy as np
26

3-
def arange(start, /, *, stop=None, step=1, dtype=None, device=None):
7+
def arange(start: Union[int, float], /, *, stop: Optional[Union[int, float]] = None, step: Union[int, float] = 1, dtype: Optional[dtype] = None, device: Optional[device] = None) -> array:
48
"""
59
Array API compatible wrapper for :py:func:`np.arange <numpy.arange>`.
610
@@ -11,7 +15,7 @@ def arange(start, /, *, stop=None, step=1, dtype=None, device=None):
1115
raise NotImplementedError("Device support is not yet implemented")
1216
return np.arange(start, stop=stop, step=step, dtype=dtype)
1317

14-
def empty(shape, /, *, dtype=None, device=None):
18+
def empty(shape: Union[int, Tuple[int, ...]], /, *, dtype: Optional[dtype] = None, device: Optional[device] = None) -> array:
1519
"""
1620
Array API compatible wrapper for :py:func:`np.empty <numpy.empty>`.
1721
@@ -22,7 +26,7 @@ def empty(shape, /, *, dtype=None, device=None):
2226
raise NotImplementedError("Device support is not yet implemented")
2327
return np.empty(shape, dtype=dtype)
2428

25-
def empty_like(x, /, *, dtype=None, device=None):
29+
def empty_like(x: array, /, *, dtype: Optional[dtype] = None, device: Optional[device] = None) -> array:
2630
"""
2731
Array API compatible wrapper for :py:func:`np.empty_like <numpy.empty_like>`.
2832
@@ -33,7 +37,7 @@ def empty_like(x, /, *, dtype=None, device=None):
3337
raise NotImplementedError("Device support is not yet implemented")
3438
return np.empty_like(x, dtype=dtype)
3539

36-
def eye(N, /, *, M=None, k=0, dtype=None, device=None):
40+
def eye(N: int, /, *, M: Optional[int] = None, k: Optional[int] = 0, dtype: Optional[dtype] = None, device: Optional[device] = None) -> array:
3741
"""
3842
Array API compatible wrapper for :py:func:`np.eye <numpy.eye>`.
3943
@@ -44,7 +48,7 @@ def eye(N, /, *, M=None, k=0, dtype=None, device=None):
4448
raise NotImplementedError("Device support is not yet implemented")
4549
return np.eye(N, M=M, k=k, dtype=dtype)
4650

47-
def full(shape, fill_value, /, *, dtype=None, device=None):
51+
def full(shape: Union[int, Tuple[int, ...]], fill_value: Union[int, float], /, *, dtype: Optional[dtype] = None, device: Optional[device] = None) -> array:
4852
"""
4953
Array API compatible wrapper for :py:func:`np.full <numpy.full>`.
5054
@@ -55,7 +59,7 @@ def full(shape, fill_value, /, *, dtype=None, device=None):
5559
raise NotImplementedError("Device support is not yet implemented")
5660
return np.full(shape, fill_value, dtype=dtype)
5761

58-
def full_like(x, fill_value, /, *, dtype=None, device=None):
62+
def full_like(x: array, fill_value: Union[int, float], /, *, dtype: Optional[dtype] = None, device: Optional[device] = None) -> array:
5963
"""
6064
Array API compatible wrapper for :py:func:`np.full_like <numpy.full_like>`.
6165
@@ -66,7 +70,7 @@ def full_like(x, fill_value, /, *, dtype=None, device=None):
6670
raise NotImplementedError("Device support is not yet implemented")
6771
return np.full_like(x, fill_value, dtype=dtype)
6872

69-
def linspace(start, stop, num, /, *, dtype=None, device=None, endpoint=True):
73+
def linspace(start: Union[int, float], stop: Union[int, float], num: int, /, *, dtype: Optional[dtype] = None, device: Optional[device] = None, endpoint: Optional[bool] = True) -> array:
7074
"""
7175
Array API compatible wrapper for :py:func:`np.linspace <numpy.linspace>`.
7276
@@ -77,7 +81,7 @@ def linspace(start, stop, num, /, *, dtype=None, device=None, endpoint=True):
7781
raise NotImplementedError("Device support is not yet implemented")
7882
return np.linspace(start, stop, num, dtype=dtype, endpoint=endpoint)
7983

80-
def ones(shape, /, *, dtype=None, device=None):
84+
def ones(shape: Union[int, Tuple[int, ...]], /, *, dtype: Optional[dtype] = None, device: Optional[device] = None) -> array:
8185
"""
8286
Array API compatible wrapper for :py:func:`np.ones <numpy.ones>`.
8387
@@ -88,7 +92,7 @@ def ones(shape, /, *, dtype=None, device=None):
8892
raise NotImplementedError("Device support is not yet implemented")
8993
return np.ones(shape, dtype=dtype)
9094

91-
def ones_like(x, /, *, dtype=None, device=None):
95+
def ones_like(x: array, /, *, dtype: Optional[dtype] = None, device: Optional[device] = None) -> array:
9296
"""
9397
Array API compatible wrapper for :py:func:`np.ones_like <numpy.ones_like>`.
9498
@@ -99,7 +103,7 @@ def ones_like(x, /, *, dtype=None, device=None):
99103
raise NotImplementedError("Device support is not yet implemented")
100104
return np.ones_like(x, dtype=dtype)
101105

102-
def zeros(shape, /, *, dtype=None, device=None):
106+
def zeros(shape: Union[int, Tuple[int, ...]], /, *, dtype: Optional[dtype] = None, device: Optional[device] = None) -> array:
103107
"""
104108
Array API compatible wrapper for :py:func:`np.zeros <numpy.zeros>`.
105109
@@ -110,7 +114,7 @@ def zeros(shape, /, *, dtype=None, device=None):
110114
raise NotImplementedError("Device support is not yet implemented")
111115
return np.zeros(shape, dtype=dtype)
112116

113-
def zeros_like(x, /, *, dtype=None, device=None):
117+
def zeros_like(x: array, /, *, dtype: Optional[dtype] = None, device: Optional[device] = None) -> array:
114118
"""
115119
Array API compatible wrapper for :py:func:`np.zeros_like <numpy.zeros_like>`.
116120

0 commit comments

Comments
 (0)