Skip to content

Commit 37c71c5

Browse files
authored
CI: Add array_api_tests CI job (#668)
1 parent 0308ed0 commit 37c71c5

File tree

4 files changed

+164
-1
lines changed

4 files changed

+164
-1
lines changed

.github/workflows/ci.yml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,35 @@ jobs:
122122
- name: Run benchmarks
123123
run: |
124124
asv run --quick
125+
array_api_tests:
126+
runs-on: ubuntu-latest
127+
steps:
128+
- name: Checkout Repo
129+
uses: actions/checkout@v4
130+
- name: Checkout array-api-tests
131+
uses: actions/checkout@v4
132+
with:
133+
repository: data-apis/array-api-tests
134+
ref: '3cf8ef654c456d9fd1633d64e67b4470465940e9' # Latest commit as of 2024-04-09
135+
submodules: 'true'
136+
path: 'array-api-tests'
137+
- name: Set up Python
138+
uses: actions/[email protected]
139+
with:
140+
python-version: '3.11'
141+
- name: Install build and test dependencies from PyPI
142+
run: |
143+
python -m pip install -r array-api-tests/requirements.txt
144+
- name: Build and install Sparse
145+
run: |
146+
python -m pip install '.[finch]'
147+
- name: Run the test suite
148+
env:
149+
ARRAY_API_TESTS_MODULE: sparse
150+
SPARSE_BACKEND: Finch
151+
run: |
152+
cd ${GITHUB_WORKSPACE}/array-api-tests
153+
pytest array_api_tests/test_signatures.py -v -c pytest.ini --ci --max-examples=2 --derandomize --disable-deadline --skips-file ${GITHUB_WORKSPACE}/ci/array-api-skips.txt
125154
on:
126155
# Trigger the workflow on push or pull request,
127156
# but only for the main branch

ci/array-api-skips.txt

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
# stats functions
2+
array_api_tests/test_signatures.py::test_func_signature[mean]
3+
array_api_tests/test_signatures.py::test_func_signature[std]
4+
array_api_tests/test_signatures.py::test_func_signature[var]
5+
6+
# set functions
7+
array_api_tests/test_signatures.py::test_func_signature[unique_all]
8+
array_api_tests/test_signatures.py::test_func_signature[unique_counts]
9+
array_api_tests/test_signatures.py::test_func_signature[unique_inverse]
10+
array_api_tests/test_signatures.py::test_func_signature[unique_values]
11+
12+
# asarray - missing 'device' keyword
13+
array_api_tests/test_signatures.py::test_func_signature[asarray]
14+
15+
# creation functions
16+
array_api_tests/test_signatures.py::test_func_signature[empty]
17+
array_api_tests/test_signatures.py::test_func_signature[empty_like]
18+
array_api_tests/test_signatures.py::test_func_signature[full]
19+
array_api_tests/test_signatures.py::test_func_signature[full_like]
20+
array_api_tests/test_signatures.py::test_func_signature[ones]
21+
array_api_tests/test_signatures.py::test_func_signature[ones_like]
22+
array_api_tests/test_signatures.py::test_func_signature[zeros]
23+
array_api_tests/test_signatures.py::test_func_signature[zeros_like]
24+
array_api_tests/test_signatures.py::test_func_signature[arange]
25+
array_api_tests/test_signatures.py::test_func_signature[linspace]
26+
array_api_tests/test_signatures.py::test_func_signature[meshgrid]
27+
array_api_tests/test_signatures.py::test_func_signature[tril]
28+
array_api_tests/test_signatures.py::test_func_signature[triu]
29+
# eye - missing 'device' keyword
30+
array_api_tests/test_signatures.py::test_func_signature[eye]
31+
32+
# inspection functions
33+
array_api_tests/test_signatures.py::test_func_signature[can_cast]
34+
array_api_tests/test_signatures.py::test_func_signature[isdtype]
35+
array_api_tests/test_signatures.py::test_func_signature[finfo]
36+
array_api_tests/test_signatures.py::test_func_signature[iinfo]
37+
array_api_tests/test_signatures.py::test_func_signature[result_type]
38+
39+
# bitwise functions
40+
array_api_tests/test_signatures.py::test_func_signature[bitwise_left_shift]
41+
array_api_tests/test_signatures.py::test_func_signature[bitwise_invert]
42+
array_api_tests/test_signatures.py::test_func_signature[bitwise_right_shift]
43+
array_api_tests/test_signatures.py::test_func_signature[bitwise_and]
44+
array_api_tests/test_signatures.py::test_func_signature[bitwise_or]
45+
array_api_tests/test_signatures.py::test_func_signature[bitwise_xor]
46+
array_api_tests/test_signatures.py::test_func_signature[logical_and]
47+
array_api_tests/test_signatures.py::test_func_signature[logical_not]
48+
array_api_tests/test_signatures.py::test_func_signature[logical_or]
49+
array_api_tests/test_signatures.py::test_func_signature[logical_xor]
50+
51+
# other functions
52+
array_api_tests/test_signatures.py::test_func_signature[concat]
53+
array_api_tests/test_signatures.py::test_func_signature[permute_dims]
54+
array_api_tests/test_signatures.py::test_func_signature[reshape]
55+
array_api_tests/test_signatures.py::test_func_signature[argsort]
56+
array_api_tests/test_signatures.py::test_func_signature[sort]
57+
array_api_tests/test_signatures.py::test_func_signature[broadcast_arrays]
58+
array_api_tests/test_signatures.py::test_func_signature[broadcast_to]
59+
array_api_tests/test_signatures.py::test_func_signature[expand_dims]
60+
array_api_tests/test_signatures.py::test_func_signature[flip]
61+
array_api_tests/test_signatures.py::test_func_signature[roll]
62+
array_api_tests/test_signatures.py::test_func_signature[squeeze]
63+
array_api_tests/test_signatures.py::test_func_signature[stack]
64+
array_api_tests/test_signatures.py::test_func_signature[conj]
65+
array_api_tests/test_signatures.py::test_func_signature[imag]
66+
array_api_tests/test_signatures.py::test_func_signature[real]
67+
array_api_tests/test_signatures.py::test_func_signature[equal]
68+
array_api_tests/test_signatures.py::test_func_signature[not_equal]
69+
array_api_tests/test_signatures.py::test_func_signature[greater]
70+
array_api_tests/test_signatures.py::test_func_signature[greater_equal]
71+
array_api_tests/test_signatures.py::test_func_signature[isfinite]
72+
array_api_tests/test_signatures.py::test_func_signature[isinf]
73+
array_api_tests/test_signatures.py::test_func_signature[isnan]
74+
array_api_tests/test_signatures.py::test_func_signature[less]
75+
array_api_tests/test_signatures.py::test_func_signature[less_equal]
76+
array_api_tests/test_signatures.py::test_func_signature[logaddexp]
77+
array_api_tests/test_signatures.py::test_func_signature[matrix_transpose]
78+
array_api_tests/test_signatures.py::test_func_signature[vecdot]
79+
array_api_tests/test_signatures.py::test_func_signature[take]
80+
array_api_tests/test_signatures.py::test_func_signature[trunc]
81+
array_api_tests/test_signatures.py::test_func_signature[square]
82+
array_api_tests/test_signatures.py::test_func_signature[remainder]
83+
array_api_tests/test_signatures.py::test_func_signature[argmax]
84+
array_api_tests/test_signatures.py::test_func_signature[argmin]
85+
array_api_tests/test_signatures.py::test_func_signature[from_dlpack]
86+
array_api_tests/test_signatures.py::test_array_method_signature[__array_namespace__]
87+
88+
# linalg namespace
89+
array_api_tests/test_signatures.py::test_extension_func_signature[linalg.cross]
90+
array_api_tests/test_signatures.py::test_extension_func_signature[linalg.matmul]
91+
array_api_tests/test_signatures.py::test_extension_func_signature[linalg.cholesky]
92+
array_api_tests/test_signatures.py::test_extension_func_signature[linalg.matrix_norm]
93+
array_api_tests/test_signatures.py::test_extension_func_signature[linalg.matrix_rank]
94+
array_api_tests/test_signatures.py::test_extension_func_signature[linalg.matrix_transpose]
95+
array_api_tests/test_signatures.py::test_extension_func_signature[linalg.outer]
96+
array_api_tests/test_signatures.py::test_extension_func_signature[linalg.pinv]
97+
array_api_tests/test_signatures.py::test_extension_func_signature[linalg.svdvals]
98+
array_api_tests/test_signatures.py::test_extension_func_signature[linalg.tensordot]
99+
array_api_tests/test_signatures.py::test_extension_func_signature[linalg.vecdot]
100+
array_api_tests/test_signatures.py::test_extension_func_signature[linalg.vector_norm]

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ tests = [
3838
]
3939
tox = ["sparse[tests]", "tox"]
4040
all = ["sparse[docs,tox]", "matrepr"]
41-
finch = ["finch-tensor>=0.1.11"]
41+
finch = ["finch-tensor>=0.1.12"]
4242

4343
[project.urls]
4444
Documentation = "https://sparse.pydata.org/"

sparse/finch_backend/__init__.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
acos,
1010
acosh,
1111
add,
12+
all,
13+
any,
1214
asarray,
1315
asin,
1416
asinh,
@@ -17,34 +19,48 @@
1719
atan2,
1820
atanh,
1921
bool,
22+
ceil,
2023
compiled,
2124
complex64,
2225
complex128,
2326
compute,
2427
cos,
2528
cosh,
2629
divide,
30+
exp,
31+
expm1,
2732
eye,
2833
float16,
2934
float32,
3035
float64,
36+
floor,
3137
floor_divide,
3238
int8,
3339
int16,
3440
int32,
3541
int64,
3642
int_,
3743
lazy,
44+
log,
45+
log1p,
46+
log2,
47+
log10,
3848
matmul,
49+
max,
50+
min,
3951
multiply,
4052
negative,
53+
nonzero,
4154
permute_dims,
4255
positive,
4356
pow,
4457
prod,
4558
random,
59+
round,
60+
sign,
4661
sin,
4762
sinh,
63+
sqrt,
4864
subtract,
4965
sum,
5066
tan,
@@ -55,6 +71,7 @@
5571
uint16,
5672
uint32,
5773
uint64,
74+
where,
5875
)
5976

6077
__all__ = [
@@ -109,4 +126,21 @@
109126
"uint16",
110127
"uint32",
111128
"uint64",
129+
"max",
130+
"min",
131+
"all",
132+
"any",
133+
"log",
134+
"log10",
135+
"log1p",
136+
"log2",
137+
"sqrt",
138+
"exp",
139+
"expm1",
140+
"sign",
141+
"round",
142+
"floor",
143+
"ceil",
144+
"nonzero",
145+
"where",
112146
]

0 commit comments

Comments
 (0)