Skip to content

Commit 4af45d0

Browse files
authored
Merge pull request #13 from data-apis/ci
Add GitHub Actions CI
2 parents e53385d + 7aeb23d commit 4af45d0

File tree

3 files changed

+121
-0
lines changed

3 files changed

+121
-0
lines changed

.github/workflows/array-api-tests.yml

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
name: Array API Tests
2+
3+
on: [push, pull_request]
4+
5+
env:
6+
PYTEST_ARGS: "--max-examples 200 -v -rxXfE --ci"
7+
8+
jobs:
9+
tests:
10+
runs-on: ubuntu-latest
11+
strategy:
12+
matrix:
13+
python-version: ['3.8', '3.9', '3.10', '3.11']
14+
15+
steps:
16+
- name: Checkout array-api-compat
17+
uses: actions/checkout@v3
18+
with:
19+
path: array-api-compat
20+
- name: Checkout array-api-tests
21+
uses: actions/checkout@v3
22+
with:
23+
# repository: data-apis/array-api-tests
24+
submodules: 'true'
25+
path: array-api-tests
26+
27+
# Temporarily use https://github.com/data-apis/array-api-tests/pull/157
28+
repository: asmeurer/array-api-tests
29+
ref: xfails-file
30+
- name: Set up Python ${{ matrix.python-version }}
31+
uses: actions/setup-python@v1
32+
with:
33+
python-version: ${{ matrix.python-version }}
34+
- name: Install dependencies
35+
run: |
36+
python -m pip install --upgrade pip
37+
python -m pip install numpy
38+
python -m pip install -r ${GITHUB_WORKSPACE}/array-api-tests/requirements.txt
39+
- name: Run the array API testsuite (NumPy)
40+
env:
41+
ARRAY_API_TESTS_MODULE: array_api_compat.numpy
42+
# This enables the NEP 50 type promotion behavior (without it a lot of
43+
# tests fail on bad scalar type promotion behavior)
44+
NPY_PROMOTION_STATE: weak
45+
run: |
46+
export PYTHONPATH="${GITHUB_WORKSPACE}/array-api-compat"
47+
cd ${GITHUB_WORKSPACE}/array-api-tests
48+
pytest ${PYTEST_ARGS} --xfails-file ${GITHUB_WORKSPACE}/array-api-compat/numpy-xfails.txt array_api_tests/

.github/workflows/tests.yml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
name: Tests
2+
on: [push, pull_request]
3+
jobs:
4+
tests:
5+
runs-on: ubuntu-latest
6+
strategy:
7+
matrix:
8+
python-version: ['3.8', '3.9', '3.10', '3.11']
9+
fail-fast: true
10+
steps:
11+
- uses: actions/checkout@v2
12+
- uses: actions/setup-python@v2
13+
with:
14+
python-version: ${{ matrix.python-version }}
15+
- name: Install Dependencies
16+
run: |
17+
python -m pip install --upgrade pip
18+
python -m pip install pytest numpy
19+
20+
- name: Run Tests
21+
run: |
22+
pytest
23+
24+
# Make sure it installs
25+
python setup.py install

numpy-xfails.txt

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# asarray(copy=False) is not yet implemented
2+
array_api_tests/test_creation_functions.py::test_asarray_arrays
3+
4+
# finfo(float32).eps returns float32 but should return float
5+
array_api_tests/test_data_type_functions.py::test_finfo[float32]
6+
7+
# Array methods and attributes not already on np.ndarray cannot be wrapped
8+
array_api_tests/test_has_names.py::test_has_names[array_method-__array_namespace__]
9+
array_api_tests/test_has_names.py::test_has_names[array_method-to_device]
10+
array_api_tests/test_has_names.py::test_has_names[array_attribute-device]
11+
array_api_tests/test_has_names.py::test_has_names[array_attribute-mT]
12+
13+
# linalg tests require https://github.com/data-apis/array-api-tests/pull/101
14+
# cleanups. Also some tests are using .mT
15+
array_api_tests/test_linalg.py::test_eigvalsh
16+
array_api_tests/test_linalg.py::test_solve
17+
array_api_tests/test_linalg.py::test_trace
18+
19+
# Array methods and attributes not already on np.ndarray cannot be wrapped
20+
array_api_tests/test_signatures.py::test_array_method_signature[__array_namespace__]
21+
array_api_tests/test_signatures.py::test_array_method_signature[to_device]
22+
23+
# NumPy deviates in some special cases for floordiv
24+
array_api_tests/test_special_cases.py::test_binary[floor_divide(x1_i is +infinity and isfinite(x2_i) and x2_i > 0) -> +infinity]
25+
array_api_tests/test_special_cases.py::test_binary[floor_divide(x1_i is +infinity and isfinite(x2_i) and x2_i < 0) -> -infinity]
26+
array_api_tests/test_special_cases.py::test_binary[floor_divide(x1_i is -infinity and isfinite(x2_i) and x2_i > 0) -> -infinity]
27+
array_api_tests/test_special_cases.py::test_binary[floor_divide(x1_i is -infinity and isfinite(x2_i) and x2_i < 0) -> +infinity]
28+
array_api_tests/test_special_cases.py::test_binary[floor_divide(isfinite(x1_i) and x1_i > 0 and x2_i is -infinity) -> -0]
29+
array_api_tests/test_special_cases.py::test_binary[floor_divide(isfinite(x1_i) and x1_i < 0 and x2_i is +infinity) -> -0]
30+
array_api_tests/test_special_cases.py::test_binary[__floordiv__(x1_i is +infinity and isfinite(x2_i) and x2_i > 0) -> +infinity]
31+
array_api_tests/test_special_cases.py::test_binary[__floordiv__(x1_i is +infinity and isfinite(x2_i) and x2_i < 0) -> -infinity]
32+
array_api_tests/test_special_cases.py::test_binary[__floordiv__(x1_i is -infinity and isfinite(x2_i) and x2_i > 0) -> -infinity]
33+
array_api_tests/test_special_cases.py::test_binary[__floordiv__(x1_i is -infinity and isfinite(x2_i) and x2_i < 0) -> +infinity]
34+
array_api_tests/test_special_cases.py::test_binary[__floordiv__(isfinite(x1_i) and x1_i > 0 and x2_i is -infinity) -> -0]
35+
array_api_tests/test_special_cases.py::test_binary[__floordiv__(isfinite(x1_i) and x1_i < 0 and x2_i is +infinity) -> -0]
36+
array_api_tests/test_special_cases.py::test_iop[__ifloordiv__(x1_i is +infinity and isfinite(x2_i) and x2_i > 0) -> +infinity]
37+
array_api_tests/test_special_cases.py::test_iop[__ifloordiv__(x1_i is +infinity and isfinite(x2_i) and x2_i < 0) -> -infinity]
38+
array_api_tests/test_special_cases.py::test_iop[__ifloordiv__(x1_i is -infinity and isfinite(x2_i) and x2_i > 0) -> -infinity]
39+
array_api_tests/test_special_cases.py::test_iop[__ifloordiv__(x1_i is -infinity and isfinite(x2_i) and x2_i < 0) -> +infinity]
40+
array_api_tests/test_special_cases.py::test_iop[__ifloordiv__(isfinite(x1_i) and x1_i > 0 and x2_i is -infinity) -> -0]
41+
array_api_tests/test_special_cases.py::test_iop[__ifloordiv__(isfinite(x1_i) and x1_i < 0 and x2_i is +infinity) -> -0]
42+
43+
# https://github.com/numpy/numpy/issues/21213
44+
array_api_tests/test_special_cases.py::test_binary[__pow__(x1_i is -infinity and x2_i > 0 and not (x2_i.is_integer() and x2_i % 2 == 1)) -> +infinity]
45+
array_api_tests/test_special_cases.py::test_binary[__pow__(x1_i is -0 and x2_i > 0 and not (x2_i.is_integer() and x2_i % 2 == 1)) -> +0]
46+
array_api_tests/test_special_cases.py::test_iop[__ipow__(x1_i is -infinity and x2_i > 0 and not (x2_i.is_integer() and x2_i % 2 == 1)) -> +infinity]
47+
array_api_tests/test_special_cases.py::test_iop[__ipow__(x1_i is -0 and x2_i > 0 and not (x2_i.is_integer() and x2_i % 2 == 1)) -> +0]
48+
array_api_tests/meta/test_hypothesis_helpers.py::test_symmetric_matrices

0 commit comments

Comments
 (0)