summaryrefslogtreecommitdiff
path: root/numpy/array_api/tests
diff options
context:
space:
mode:
authorAaron Meurer <asmeurer@gmail.com>2021-09-25 17:34:22 -0500
committerGitHub <noreply@github.com>2021-09-25 16:34:22 -0600
commit2d112a98ed7597c4120b31908384ae09b0304659 (patch)
treea03fcf59a0ca9cfff10ca2b346bd4c9d37268451 /numpy/array_api/tests
parentac78192390943d90ebae2f4e209e194914d0bc97 (diff)
downloadnumpy-2d112a98ed7597c4120b31908384ae09b0304659.tar.gz
ENH: Updates to numpy.array_api (#19937)
* Add __index__ to array_api and update __int__, __bool__, and __float__ The spec specifies that they should only work on arrays with corresponding dtypes. __index__ is new in the spec since the initial PR, and works identically to np.array.__index__. * Add the to_device method to the array_api This method is new since #18585. It does nothing in NumPy since NumPy does not support non-CPU devices. * Update transpose methods in the array_api transpose() was renamed to matrix_transpose() and now operates on stacks of matrices. A function to permute dimensions will be added once it is finalized in the spec. The attribute mT was added and the T attribute was updated to only operate on 2-dimensional arrays as per the spec. * Restrict input dtypes in the array API statistical functions * Add the dtype parameter to the array API sum() and prod() * Add the function permute_dims() to the array_api namespace permute_dims() is the replacement for transpose(), which was split into permute_dims() and matrix_transpose(). * Add tril and triu to the array API namespace * Fix the array_api Array.__repr__ to indent the array properly * Make the Device type in the array_api just accept the string "cpu"
Diffstat (limited to 'numpy/array_api/tests')
-rw-r--r--numpy/array_api/tests/test_array_object.py30
1 files changed, 24 insertions, 6 deletions
diff --git a/numpy/array_api/tests/test_array_object.py b/numpy/array_api/tests/test_array_object.py
index 088e09b9f..7959f92b4 100644
--- a/numpy/array_api/tests/test_array_object.py
+++ b/numpy/array_api/tests/test_array_object.py
@@ -1,3 +1,5 @@
+import operator
+
from numpy.testing import assert_raises
import numpy as np
@@ -255,15 +257,31 @@ def test_operators():
def test_python_scalar_construtors():
- a = asarray(False)
- b = asarray(0)
- c = asarray(0.0)
+ b = asarray(False)
+ i = asarray(0)
+ f = asarray(0.0)
- assert bool(a) == bool(b) == bool(c) == False
- assert int(a) == int(b) == int(c) == 0
- assert float(a) == float(b) == float(c) == 0.0
+ assert bool(b) == False
+ assert int(i) == 0
+ assert float(f) == 0.0
+ assert operator.index(i) == 0
# bool/int/float should only be allowed on 0-D arrays.
assert_raises(TypeError, lambda: bool(asarray([False])))
assert_raises(TypeError, lambda: int(asarray([0])))
assert_raises(TypeError, lambda: float(asarray([0.0])))
+ assert_raises(TypeError, lambda: operator.index(asarray([0])))
+
+ # bool/int/float should only be allowed on arrays of the corresponding
+ # dtype
+ assert_raises(ValueError, lambda: bool(i))
+ assert_raises(ValueError, lambda: bool(f))
+
+ assert_raises(ValueError, lambda: int(b))
+ assert_raises(ValueError, lambda: int(f))
+
+ assert_raises(ValueError, lambda: float(b))
+ assert_raises(ValueError, lambda: float(i))
+
+ assert_raises(TypeError, lambda: operator.index(b))
+ assert_raises(TypeError, lambda: operator.index(f))