array-api-compat 1.13.0__tar.gz → 1.15.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- array_api_compat-1.15.0/.git-blame-ignore-revs +2 -0
- array_api_compat-1.15.0/.gitattributes +2 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/.github/dependabot.yml +2 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/.github/workflows/array-api-tests.yml +4 -1
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/.github/workflows/dependabot-auto-merge.yml +1 -1
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/.github/workflows/docs-build.yml +4 -2
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/.github/workflows/docs-deploy.yml +1 -1
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/.github/workflows/publish-package.yml +8 -8
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/.github/workflows/tests.yml +6 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/.gitignore +2 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/CHANGELOG.md +71 -3
- {array_api_compat-1.13.0/array_api_compat.egg-info → array_api_compat-1.15.0}/PKG-INFO +4 -35
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/cupy-xfails.txt +26 -5
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/dask-xfails.txt +30 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/docs/changelog.md +71 -3
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/docs/dev/releasing.md +9 -5
- array_api_compat-1.15.0/meson.build +75 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/numpy-1-22-xfails.txt +25 -2
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/numpy-1-26-xfails.txt +28 -8
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/numpy-dev-xfails.txt +12 -11
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/numpy-xfails.txt +13 -11
- array_api_compat-1.15.0/pixi.lock +2824 -0
- array_api_compat-1.15.0/pixi.toml +65 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/pyproject.toml +32 -20
- {array_api_compat-1.13.0 → array_api_compat-1.15.0/src}/array_api_compat/__init__.py +2 -2
- {array_api_compat-1.13.0 → array_api_compat-1.15.0/src}/array_api_compat/common/_helpers.py +28 -10
- {array_api_compat-1.13.0 → array_api_compat-1.15.0/src}/array_api_compat/common/_linalg.py +4 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0/src}/array_api_compat/cupy/__init__.py +3 -3
- {array_api_compat-1.13.0 → array_api_compat-1.15.0/src}/array_api_compat/cupy/_aliases.py +41 -1
- {array_api_compat-1.13.0 → array_api_compat-1.15.0/src}/array_api_compat/cupy/_info.py +1 -1
- {array_api_compat-1.13.0 → array_api_compat-1.15.0/src}/array_api_compat/cupy/linalg.py +17 -2
- {array_api_compat-1.13.0 → array_api_compat-1.15.0/src}/array_api_compat/dask/array/__init__.py +3 -3
- {array_api_compat-1.13.0 → array_api_compat-1.15.0/src}/array_api_compat/dask/array/_info.py +2 -2
- {array_api_compat-1.13.0 → array_api_compat-1.15.0/src}/array_api_compat/dask/array/linalg.py +1 -1
- {array_api_compat-1.13.0 → array_api_compat-1.15.0/src}/array_api_compat/numpy/__init__.py +3 -4
- {array_api_compat-1.13.0 → array_api_compat-1.15.0/src}/array_api_compat/numpy/_info.py +2 -2
- {array_api_compat-1.13.0 → array_api_compat-1.15.0/src}/array_api_compat/numpy/linalg.py +80 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0/src}/array_api_compat/torch/__init__.py +3 -3
- {array_api_compat-1.13.0 → array_api_compat-1.15.0/src}/array_api_compat/torch/_aliases.py +98 -13
- {array_api_compat-1.13.0 → array_api_compat-1.15.0/src}/array_api_compat/torch/_info.py +1 -1
- {array_api_compat-1.13.0 → array_api_compat-1.15.0/src}/array_api_compat/torch/fft.py +10 -10
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/test_cupy.sh +1 -1
- array_api_compat-1.15.0/tests/meson.build +17 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/tests/test_all.py +7 -1
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/tests/test_copies_or_views.py +12 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/tests/test_isdtype.py +1 -1
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/tests/test_no_dependencies.py +3 -3
- array_api_compat-1.15.0/tests/test_numpy.py +19 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/tests/test_torch.py +39 -1
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/torch-xfails.txt +21 -15
- array_api_compat-1.15.0/vendor_tests/meson.build +11 -0
- {array_api_compat-1.13.0/tests → array_api_compat-1.15.0/vendor_tests}/test_vendoring.py +5 -4
- {array_api_compat-1.13.0/vendor_test → array_api_compat-1.15.0/vendor_tests}/uses_cupy.py +1 -1
- {array_api_compat-1.13.0/vendor_test → array_api_compat-1.15.0/vendor_tests}/uses_dask.py +2 -2
- {array_api_compat-1.13.0/vendor_test → array_api_compat-1.15.0/vendor_tests}/uses_numpy.py +1 -1
- {array_api_compat-1.13.0/vendor_test → array_api_compat-1.15.0/vendor_tests}/uses_torch.py +1 -1
- array_api_compat-1.13.0/PKG-INFO +0 -60
- array_api_compat-1.13.0/array_api_compat.egg-info/SOURCES.txt +0 -103
- array_api_compat-1.13.0/array_api_compat.egg-info/dependency_links.txt +0 -1
- array_api_compat-1.13.0/array_api_compat.egg-info/requires.txt +0 -39
- array_api_compat-1.13.0/array_api_compat.egg-info/top_level.txt +0 -1
- array_api_compat-1.13.0/setup.cfg +0 -4
- array_api_compat-1.13.0/vendor_test/vendored/__init__.py +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/.github/workflows/array-api-tests-dask.yml +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/.github/workflows/array-api-tests-numpy-1-22.yml +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/.github/workflows/array-api-tests-numpy-1-26.yml +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/.github/workflows/array-api-tests-numpy-dev.yml +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/.github/workflows/array-api-tests-numpy-latest.yml +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/.github/workflows/array-api-tests-torch.yml +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/.github/workflows/ruff.yml +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/CONTRIBUTING.md +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/LICENSE +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/README.md +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/dask-skips.txt +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/docs/Makefile +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/docs/_static/custom.css +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/docs/_static/favicon.png +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/docs/conf.py +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/docs/dev/implementation-notes.md +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/docs/dev/index.md +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/docs/dev/special-considerations.md +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/docs/dev/tests.md +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/docs/helper-functions.rst +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/docs/index.md +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/docs/make.bat +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/docs/supported-array-libraries.md +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/numpy-skips.txt +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0/src}/array_api_compat/_internal.py +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0/src}/array_api_compat/common/__init__.py +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0/src}/array_api_compat/common/_aliases.py +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0/src}/array_api_compat/common/_fft.py +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0/src}/array_api_compat/common/_typing.py +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0/src}/array_api_compat/cupy/_typing.py +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0/src}/array_api_compat/cupy/fft.py +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0/src}/array_api_compat/dask/__init__.py +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0/src}/array_api_compat/dask/array/_aliases.py +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0/src}/array_api_compat/dask/array/fft.py +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0/src}/array_api_compat/numpy/_aliases.py +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0/src}/array_api_compat/numpy/_typing.py +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0/src}/array_api_compat/numpy/fft.py +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0/src}/array_api_compat/py.typed +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0/src}/array_api_compat/torch/_typing.py +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0/src}/array_api_compat/torch/linalg.py +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/tests/__init__.py +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/tests/_helpers.py +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/tests/test_array_namespace.py +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/tests/test_common.py +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/tests/test_cupy.py +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/tests/test_dask.py +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/tests/test_jax.py +0 -0
- {array_api_compat-1.13.0 → array_api_compat-1.15.0}/torch-skips.txt +0 -0
- {array_api_compat-1.13.0/vendor_test → array_api_compat-1.15.0/vendor_tests}/__init__.py +0 -0
|
@@ -78,13 +78,16 @@ jobs:
|
|
|
78
78
|
python -m pip install -r ${GITHUB_WORKSPACE}/array-api-tests/requirements.txt
|
|
79
79
|
python -m pip install pytest-xdist
|
|
80
80
|
|
|
81
|
+
- name: Install array-api-compat
|
|
82
|
+
run: python -m pip install ${GITHUB_WORKSPACE}/array-api-compat
|
|
83
|
+
|
|
81
84
|
- name: Dump pip environment
|
|
82
85
|
run: pip freeze
|
|
83
86
|
|
|
84
87
|
- name: Run the array API testsuite (${{ inputs.package-name }})
|
|
85
88
|
env:
|
|
86
89
|
ARRAY_API_TESTS_MODULE: array_api_compat.${{ inputs.module-name || inputs.package-name }}
|
|
87
|
-
ARRAY_API_TESTS_VERSION:
|
|
90
|
+
ARRAY_API_TESTS_VERSION: 2025.12
|
|
88
91
|
# This enables the NEP 50 type promotion behavior (without it a lot of
|
|
89
92
|
# tests fail on bad scalar type promotion behavior)
|
|
90
93
|
NPY_PROMOTION_STATE: weak
|
|
@@ -10,13 +10,15 @@ jobs:
|
|
|
10
10
|
- uses: actions/setup-python@v6
|
|
11
11
|
- name: Install Dependencies
|
|
12
12
|
run: |
|
|
13
|
-
python -m pip install
|
|
13
|
+
python -m pip install --upgrade pip
|
|
14
|
+
python -m pip install .
|
|
15
|
+
python -m pip install --group docs
|
|
14
16
|
- name: Build Docs
|
|
15
17
|
run: |
|
|
16
18
|
cd docs
|
|
17
19
|
make html
|
|
18
20
|
- name: Upload Artifact
|
|
19
|
-
uses: actions/upload-artifact@
|
|
21
|
+
uses: actions/upload-artifact@v7
|
|
20
22
|
with:
|
|
21
23
|
name: docs-build
|
|
22
24
|
path: docs/_build/html
|
|
@@ -4,8 +4,8 @@ on:
|
|
|
4
4
|
branches:
|
|
5
5
|
- main
|
|
6
6
|
tags:
|
|
7
|
-
- '
|
|
8
|
-
- '
|
|
7
|
+
- '*.*'
|
|
8
|
+
- '*.*.*'
|
|
9
9
|
pull_request:
|
|
10
10
|
branches:
|
|
11
11
|
- main
|
|
@@ -41,7 +41,7 @@ jobs:
|
|
|
41
41
|
|
|
42
42
|
- name: Install python-build and twine
|
|
43
43
|
run: |
|
|
44
|
-
python -m pip install --upgrade pip
|
|
44
|
+
python -m pip install --upgrade pip meson-python
|
|
45
45
|
python -m pip install build twine
|
|
46
46
|
python -m pip list
|
|
47
47
|
|
|
@@ -60,7 +60,7 @@ jobs:
|
|
|
60
60
|
run: python -m zipfile --list dist/array_api_compat-*.whl
|
|
61
61
|
|
|
62
62
|
- name: Upload distribution artifact
|
|
63
|
-
uses: actions/upload-artifact@
|
|
63
|
+
uses: actions/upload-artifact@v7
|
|
64
64
|
with:
|
|
65
65
|
name: dist-artifact
|
|
66
66
|
path: dist
|
|
@@ -81,7 +81,7 @@ jobs:
|
|
|
81
81
|
|
|
82
82
|
steps:
|
|
83
83
|
- name: Download distribution artifact
|
|
84
|
-
uses: actions/download-artifact@
|
|
84
|
+
uses: actions/download-artifact@v8
|
|
85
85
|
with:
|
|
86
86
|
name: dist-artifact
|
|
87
87
|
path: dist
|
|
@@ -95,19 +95,19 @@ jobs:
|
|
|
95
95
|
# if: >-
|
|
96
96
|
# (github.event_name == 'push' && startsWith(github.ref, 'refs/tags'))
|
|
97
97
|
# || (github.event_name == 'workflow_dispatch' && github.event.inputs.publish == 'true')
|
|
98
|
-
# uses: pypa/gh-action-pypi-publish@v1.
|
|
98
|
+
# uses: pypa/gh-action-pypi-publish@v1.14.0
|
|
99
99
|
# with:
|
|
100
100
|
# repository-url: https://test.pypi.org/legacy/
|
|
101
101
|
# print-hash: true
|
|
102
102
|
|
|
103
103
|
- name: Publish distribution 📦 to PyPI
|
|
104
104
|
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
|
|
105
|
-
uses: pypa/gh-action-pypi-publish@v1.
|
|
105
|
+
uses: pypa/gh-action-pypi-publish@v1.14.0
|
|
106
106
|
with:
|
|
107
107
|
print-hash: true
|
|
108
108
|
|
|
109
109
|
- name: Create GitHub Release from a Tag
|
|
110
|
-
uses: softprops/action-gh-release@
|
|
110
|
+
uses: softprops/action-gh-release@v3
|
|
111
111
|
if: startsWith(github.ref, 'refs/tags/')
|
|
112
112
|
with:
|
|
113
113
|
files: dist/*
|
|
@@ -1,5 +1,73 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.15.0 (2026-06-07)
|
|
4
|
+
|
|
5
|
+
### Major changes
|
|
6
|
+
|
|
7
|
+
- `array_namespace` can now be used under `torch.compile`.
|
|
8
|
+
- The build system has changed from `setuptools` to `meson-python`.
|
|
9
|
+
Projects vendoring array-api-compat inside a meson project can now
|
|
10
|
+
rely on the in-tree meson project definition, which exposes the Python
|
|
11
|
+
sources via the `sources` variable. For example:
|
|
12
|
+
```meson
|
|
13
|
+
array_api_compat = subproject('array_api_compat')
|
|
14
|
+
array_api_compat_sources = array_api_compat.get_variable('sources')
|
|
15
|
+
foreach prefix, files : array_api_compat_sources
|
|
16
|
+
py3.install_sources(files, subdir: external_dir / prefix)
|
|
17
|
+
endforeach
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### Minor changes
|
|
21
|
+
|
|
22
|
+
- `torch.round` now supports complex input.
|
|
23
|
+
- `torch.arange` now works around missing dtype implementations instead of raising
|
|
24
|
+
an exception.
|
|
25
|
+
|
|
26
|
+
Bug fixes:
|
|
27
|
+
- `np.matrix` instances are no longer considered to be standard array objects.
|
|
28
|
+
- `torch.meshgrid` now correctly handles the case of no input arrays.
|
|
29
|
+
|
|
30
|
+
### Contributors
|
|
31
|
+
|
|
32
|
+
The following users contributed to this release:
|
|
33
|
+
|
|
34
|
+
Lucas Colley,
|
|
35
|
+
Evgeni Burovski,
|
|
36
|
+
Chris Ninham,
|
|
37
|
+
Dimitri Papadopoulos Orfanos.
|
|
38
|
+
|
|
39
|
+
## 1.14.0 (2026-02-26)
|
|
40
|
+
|
|
41
|
+
### Major changes
|
|
42
|
+
|
|
43
|
+
This release targets the 2025.12 Array API revision. This includes
|
|
44
|
+
|
|
45
|
+
- `__array_api_version__` for the wrapped APIs is now set to `2025.12`;
|
|
46
|
+
- wrappers for `linalg.eig` and `linalg.eigvals`;
|
|
47
|
+
- wrappers for `isin` and `searchsorted` to accept Python scalars;
|
|
48
|
+
- wrappers for `expand_dims` accepting tuple axes;
|
|
49
|
+
- `broadcast_arrays`, `meshgrid` and `__array_api_info__().devices()` have been
|
|
50
|
+
changed to return tuples, not lists;
|
|
51
|
+
|
|
52
|
+
Additionally,
|
|
53
|
+
|
|
54
|
+
- `clip` wrappers have been fixed to be compatible with `torch.vmap`.
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
### Minor changes
|
|
58
|
+
|
|
59
|
+
- `expand_dims` wrappers have been fixed to accept its `axis` argument as a keyword
|
|
60
|
+
or positional argument;
|
|
61
|
+
- `torch.clip` wrappers have been fixed to correctly handle `nan` scalars;
|
|
62
|
+
- `torch.repeat` wrapper has been fixed to not error out for short integers;
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
The following users contributed to this release:
|
|
66
|
+
|
|
67
|
+
Evgeni Burovski,
|
|
68
|
+
Josh Soref.
|
|
69
|
+
|
|
70
|
+
|
|
3
71
|
## 1.13.0 (2025-12-28)
|
|
4
72
|
|
|
5
73
|
|
|
@@ -221,11 +289,11 @@ Thomas Li
|
|
|
221
289
|
`xp.__array_namespace_info__()`.
|
|
222
290
|
- Various fixes to the `clip()` wrappers.
|
|
223
291
|
|
|
224
|
-
- `torch.conj` now
|
|
292
|
+
- `torch.conj` now wraps `torch.conj_physical`, which makes a copy rather
|
|
225
293
|
than setting the conjugation bit, as arrays with the conjugation bit set do
|
|
226
294
|
not support some APIs.
|
|
227
295
|
|
|
228
|
-
- `torch.sign` is now wrapped to support complex numbers and
|
|
296
|
+
- `torch.sign` is now wrapped to support complex numbers and propagate nans
|
|
229
297
|
properly.
|
|
230
298
|
|
|
231
299
|
### Minor Changes
|
|
@@ -298,7 +366,7 @@ Thomas Li
|
|
|
298
366
|
|
|
299
367
|
- New flag `use_compat` to {func}`~.array_namespace` to force the use or
|
|
300
368
|
non-use of the compat wrapper namespace. The default is to return a compat
|
|
301
|
-
namespace when it is
|
|
369
|
+
namespace when it is appropriate.
|
|
302
370
|
|
|
303
371
|
- Fix the `copy` flag to `asarray` for NumPy, CuPy, and Dask.
|
|
304
372
|
|
|
@@ -1,53 +1,22 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: array-api-compat
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.15.0
|
|
4
4
|
Summary: A wrapper around NumPy and other array libraries to make them compatible with the Array API standard
|
|
5
5
|
Author: Consortium for Python Data API Standards
|
|
6
6
|
License-Expression: MIT
|
|
7
|
-
Project-URL: homepage, https://data-apis.org/array-api-compat/
|
|
8
|
-
Project-URL: repository, https://github.com/data-apis/array-api-compat/
|
|
9
7
|
Classifier: Operating System :: OS Independent
|
|
10
8
|
Classifier: Programming Language :: Python :: 3
|
|
11
9
|
Classifier: Programming Language :: Python :: 3.10
|
|
12
10
|
Classifier: Programming Language :: Python :: 3.11
|
|
13
11
|
Classifier: Programming Language :: Python :: 3.12
|
|
14
12
|
Classifier: Programming Language :: Python :: 3.13
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
15
14
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
16
15
|
Classifier: Typing :: Typed
|
|
16
|
+
Project-URL: homepage, https://data-apis.org/array-api-compat/
|
|
17
|
+
Project-URL: repository, https://github.com/data-apis/array-api-compat/
|
|
17
18
|
Requires-Python: >=3.10
|
|
18
19
|
Description-Content-Type: text/markdown
|
|
19
|
-
License-File: LICENSE
|
|
20
|
-
Provides-Extra: cupy
|
|
21
|
-
Requires-Dist: cupy; extra == "cupy"
|
|
22
|
-
Provides-Extra: dask
|
|
23
|
-
Requires-Dist: dask>=2024.9.0; extra == "dask"
|
|
24
|
-
Provides-Extra: jax
|
|
25
|
-
Requires-Dist: jax; extra == "jax"
|
|
26
|
-
Provides-Extra: numpy
|
|
27
|
-
Requires-Dist: numpy>=1.22; extra == "numpy"
|
|
28
|
-
Provides-Extra: pytorch
|
|
29
|
-
Requires-Dist: torch; extra == "pytorch"
|
|
30
|
-
Provides-Extra: sparse
|
|
31
|
-
Requires-Dist: sparse>=0.15.1; extra == "sparse"
|
|
32
|
-
Provides-Extra: ndonnx
|
|
33
|
-
Requires-Dist: ndonnx; extra == "ndonnx"
|
|
34
|
-
Provides-Extra: docs
|
|
35
|
-
Requires-Dist: furo; extra == "docs"
|
|
36
|
-
Requires-Dist: linkify-it-py; extra == "docs"
|
|
37
|
-
Requires-Dist: myst-parser; extra == "docs"
|
|
38
|
-
Requires-Dist: sphinx; extra == "docs"
|
|
39
|
-
Requires-Dist: sphinx-copybutton; extra == "docs"
|
|
40
|
-
Requires-Dist: sphinx-autobuild; extra == "docs"
|
|
41
|
-
Provides-Extra: dev
|
|
42
|
-
Requires-Dist: array-api-strict; extra == "dev"
|
|
43
|
-
Requires-Dist: dask[array]>=2024.9.0; extra == "dev"
|
|
44
|
-
Requires-Dist: jax[cpu]; extra == "dev"
|
|
45
|
-
Requires-Dist: ndonnx; extra == "dev"
|
|
46
|
-
Requires-Dist: numpy>=1.22; extra == "dev"
|
|
47
|
-
Requires-Dist: pytest; extra == "dev"
|
|
48
|
-
Requires-Dist: torch; extra == "dev"
|
|
49
|
-
Requires-Dist: sparse>=0.15.1; extra == "dev"
|
|
50
|
-
Dynamic: license-file
|
|
51
20
|
|
|
52
21
|
# Array API compatibility library
|
|
53
22
|
|
|
@@ -24,6 +24,10 @@ array_api_tests/test_has_names.py::test_has_names[array_attribute-mT]
|
|
|
24
24
|
|
|
25
25
|
array_api_tests/test_linalg.py::test_solve
|
|
26
26
|
|
|
27
|
+
# 2025.12 support; {eig,eigvals} are new in CuPy 14
|
|
28
|
+
array_api_tests/test_linalg.py::test_eig
|
|
29
|
+
array_api_tests/test_linalg.py::test_eigvals
|
|
30
|
+
|
|
27
31
|
# We cannot modify array methods
|
|
28
32
|
array_api_tests/test_operators_and_elementwise_functions.py::test_divide[__truediv__(x, s)]
|
|
29
33
|
array_api_tests/test_operators_and_elementwise_functions.py::test_floor_divide[__floordiv__(x, s)]
|
|
@@ -44,6 +48,11 @@ array_api_tests/test_operators_and_elementwise_functions.py::test_binary_with_sc
|
|
|
44
48
|
array_api_tests/test_operators_and_elementwise_functions.py::test_binary_with_scalars_real[copysign]
|
|
45
49
|
array_api_tests/test_operators_and_elementwise_functions.py::test_binary_with_scalars_real[divide]
|
|
46
50
|
array_api_tests/test_operators_and_elementwise_functions.py::test_binary_with_scalars_real[maximum]
|
|
51
|
+
array_api_tests/test_operators_and_elementwise_functions.py::test_binary_with_scalars_real[add]
|
|
52
|
+
array_api_tests/test_operators_and_elementwise_functions.py::test_binary_with_scalars_real[minimum]
|
|
53
|
+
array_api_tests/test_operators_and_elementwise_functions.py::test_binary_with_scalars_real[multiply]
|
|
54
|
+
array_api_tests/test_operators_and_elementwise_functions.py::test_binary_with_scalars_real[subtract]
|
|
55
|
+
|
|
47
56
|
|
|
48
57
|
# cupy (arg)min/max wrong with infinities
|
|
49
58
|
# https://github.com/cupy/cupy/issues/7424
|
|
@@ -176,6 +185,18 @@ array_api_tests/test_special_cases.py::test_unary[tan(x_i is -0) -> -0]
|
|
|
176
185
|
array_api_tests/test_special_cases.py::test_unary[tanh(x_i is -0) -> -0]
|
|
177
186
|
array_api_tests/test_special_cases.py::test_unary[trunc(x_i is -0) -> -0]
|
|
178
187
|
|
|
188
|
+
# complex spec cases
|
|
189
|
+
array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is +0 and imag(x_i) is NaN) -> NaN \xb1 \u03c0j/2]
|
|
190
|
+
array_api_tests/test_special_cases.py::test_unary[log(real(x_i) is -0 and imag(x_i) is +0) -> -infinity + \u03c0j]
|
|
191
|
+
array_api_tests/test_special_cases.py::test_unary[log((real(x_i) is +infinity or real(x_i) == -infinity) and imag(x_i) is NaN) -> +infinity + NaN j]
|
|
192
|
+
array_api_tests/test_special_cases.py::test_unary[log(real(x_i) is NaN and imag(x_i) is +infinity) -> +infinity + NaN j]
|
|
193
|
+
array_api_tests/test_special_cases.py::test_unary[log1p((real(x_i) is +infinity or real(x_i) == -infinity) and imag(x_i) is NaN) -> +infinity + NaN j]
|
|
194
|
+
array_api_tests/test_special_cases.py::test_unary[log1p(real(x_i) is NaN and imag(x_i) is +infinity) -> +infinity + NaN j]
|
|
195
|
+
array_api_tests/test_special_cases.py::test_unary[sqrt(real(x_i) is +infinity and isfinite(imag(x_i)) and imag(x_i) > 0) -> +0 + infinity j]
|
|
196
|
+
array_api_tests/test_special_cases.py::test_unary[tanh(real(x_i) is +0 and imag(x_i) is +infinity) -> +0 + NaN j]
|
|
197
|
+
array_api_tests/test_special_cases.py::test_unary[tanh(real(x_i) is +0 and imag(x_i) is NaN) -> +0 + NaN j]
|
|
198
|
+
array_api_tests/test_special_cases.py::test_unary[tanh(real(x_i) is +infinity and isfinite(imag(x_i)) and imag(x_i) > 0) -> 1 + 0j]
|
|
199
|
+
|
|
179
200
|
# CuPy gives the wrong shape for n-dim fft funcs. See
|
|
180
201
|
# https://github.com/data-apis/array-api-compat/pull/78#issuecomment-1984527870
|
|
181
202
|
array_api_tests/test_fft.py::test_fftn
|
|
@@ -192,12 +213,12 @@ array_api_tests/test_signatures.py::test_func_signature[from_dlpack]
|
|
|
192
213
|
array_api_tests/test_signatures.py::test_array_method_signature[__dlpack__]
|
|
193
214
|
|
|
194
215
|
# 2024.12 support
|
|
195
|
-
array_api_tests/test_signatures.py::test_func_signature[bitwise_and]
|
|
196
|
-
array_api_tests/test_signatures.py::test_func_signature[bitwise_left_shift]
|
|
197
|
-
array_api_tests/test_signatures.py::test_func_signature[bitwise_or]
|
|
198
|
-
array_api_tests/test_signatures.py::test_func_signature[bitwise_right_shift]
|
|
199
|
-
array_api_tests/test_signatures.py::test_func_signature[bitwise_xor]
|
|
200
216
|
array_api_tests/test_special_cases.py::test_binary[nextafter(x1_i is +0 and x2_i is -0) -> -0]
|
|
201
217
|
|
|
202
218
|
# cupy 13.x follows numpy 1.x w/o weak promotion: result_type(int32, uint8, 1) != result_type(int32, uint8)
|
|
203
219
|
array_api_tests/test_data_type_functions.py::TestResultType::test_with_scalars
|
|
220
|
+
|
|
221
|
+
# CuPy 14 does not support copy= dlpack argument
|
|
222
|
+
array_api_tests/test_dlpack.py::test_dunder_dlpack
|
|
223
|
+
array_api_tests/test_dlpack.py::test_from_dlpack
|
|
224
|
+
|
|
@@ -129,6 +129,19 @@ array_api_tests/test_linalg.py::test_matrix_norm
|
|
|
129
129
|
array_api_tests/test_linalg.py::test_qr
|
|
130
130
|
array_api_tests/test_manipulation_functions.py::test_roll
|
|
131
131
|
|
|
132
|
+
# 2025.12 support
|
|
133
|
+
array_api_tests/test_has_names.py::test_has_names[manipulation-broadcast_shapes]
|
|
134
|
+
array_api_tests/test_signatures.py::test_func_signature[broadcast_shapes]
|
|
135
|
+
array_api_tests/test_data_type_functions.py::TestBroadcastShapes::test_broadcast_shapes
|
|
136
|
+
array_api_tests/test_data_type_functions.py::TestBroadcastShapes::test_empty
|
|
137
|
+
array_api_tests/test_data_type_functions.py::TestBroadcastShapes::test_error
|
|
138
|
+
array_api_tests/test_searching_functions.py::test_searchsorted_with_scalars
|
|
139
|
+
|
|
140
|
+
array_api_tests/test_linalg.py::test_eig
|
|
141
|
+
array_api_tests/test_linalg.py::test_eigvals
|
|
142
|
+
|
|
143
|
+
array_api_tests/test_manipulation_functions.py::TestExpandDims::test_expand_dims_tuples
|
|
144
|
+
|
|
132
145
|
# Stubs have a comment: (**note**: libraries may return ``NaN`` to match Python behavior.)
|
|
133
146
|
array_api_tests/test_special_cases.py::test_binary[floor_divide(x1_i is +infinity and isfinite(x2_i) and x2_i > 0) -> +infinity]
|
|
134
147
|
array_api_tests/test_special_cases.py::test_binary[floor_divide(x1_i is +infinity and isfinite(x2_i) and x2_i < 0) -> -infinity]
|
|
@@ -148,3 +161,20 @@ array_api_tests/test_special_cases.py::test_iop[__ifloordiv__(x1_i is -infinity
|
|
|
148
161
|
array_api_tests/test_special_cases.py::test_iop[__ifloordiv__(x1_i is -infinity and isfinite(x2_i) and x2_i < 0) -> +infinity]
|
|
149
162
|
array_api_tests/test_special_cases.py::test_iop[__ifloordiv__(isfinite(x1_i) and x1_i > 0 and x2_i is -infinity) -> -0]
|
|
150
163
|
array_api_tests/test_special_cases.py::test_iop[__ifloordiv__(isfinite(x1_i) and x1_i < 0 and x2_i is +infinity) -> -0]
|
|
164
|
+
|
|
165
|
+
# complex cases
|
|
166
|
+
array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is +infinity and imag(x_i) is +0) -> +infinity + 0j]
|
|
167
|
+
array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is -infinity and imag(x_i) is +infinity) -> -1 + 0j]
|
|
168
|
+
array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is +infinity and imag(x_i) is +infinity) -> infinity + NaN j]
|
|
169
|
+
array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is -infinity and imag(x_i) is NaN) -> -1 + 0j]
|
|
170
|
+
array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is +infinity and imag(x_i) is NaN) -> infinity + NaN j]
|
|
171
|
+
array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is NaN and imag(x_i) is +0) -> NaN + 0j]
|
|
172
|
+
array_api_tests/test_special_cases.py::test_unary[sqrt(real(x_i) is +infinity and isfinite(imag(x_i)) and imag(x_i) > 0) -> +0 + infinity j]
|
|
173
|
+
array_api_tests/test_special_cases.py::test_unary[tanh(real(x_i) is +infinity and isfinite(imag(x_i)) and imag(x_i) > 0) -> 1 + 0j]
|
|
174
|
+
array_api_tests/test_special_cases.py::test_unary[expm1((real(x_i) is +0 or real(x_i) == -0) and imag(x_i) is +0) -> 0 + 0j]
|
|
175
|
+
array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is +0 and imag(x_i) is NaN) -> NaN \xb1 \u03c0j/2]
|
|
176
|
+
|
|
177
|
+
# no dlpack support
|
|
178
|
+
array_api_tests/test_dlpack.py::test_dlpack_device
|
|
179
|
+
array_api_tests/test_dlpack.py::test_dunder_dlpack
|
|
180
|
+
array_api_tests/test_dlpack.py::test_from_dlpack
|
|
@@ -1,5 +1,73 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.15.0 (2026-06-07)
|
|
4
|
+
|
|
5
|
+
### Major changes
|
|
6
|
+
|
|
7
|
+
- `array_namespace` can now be used under `torch.compile`.
|
|
8
|
+
- The build system has changed from `setuptools` to `meson-python`.
|
|
9
|
+
Projects vendoring array-api-compat inside a meson project can now
|
|
10
|
+
rely on the in-tree meson project definition, which exposes the Python
|
|
11
|
+
sources via the `sources` variable. For example:
|
|
12
|
+
```meson
|
|
13
|
+
array_api_compat = subproject('array_api_compat')
|
|
14
|
+
array_api_compat_sources = array_api_compat.get_variable('sources')
|
|
15
|
+
foreach prefix, files : array_api_compat_sources
|
|
16
|
+
py3.install_sources(files, subdir: external_dir / prefix)
|
|
17
|
+
endforeach
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### Minor changes
|
|
21
|
+
|
|
22
|
+
- `torch.round` now supports complex input.
|
|
23
|
+
- `torch.arange` now works around missing dtype implementations instead of raising
|
|
24
|
+
an exception.
|
|
25
|
+
|
|
26
|
+
Bug fixes:
|
|
27
|
+
- `np.matrix` instances are no longer considered to be standard array objects.
|
|
28
|
+
- `torch.meshgrid` now correctly handles the case of no input arrays.
|
|
29
|
+
|
|
30
|
+
### Contributors
|
|
31
|
+
|
|
32
|
+
The following users contributed to this release:
|
|
33
|
+
|
|
34
|
+
Lucas Colley,
|
|
35
|
+
Evgeni Burovski,
|
|
36
|
+
Chris Ninham,
|
|
37
|
+
Dimitri Papadopoulos Orfanos.
|
|
38
|
+
|
|
39
|
+
## 1.14.0 (2026-02-26)
|
|
40
|
+
|
|
41
|
+
### Major changes
|
|
42
|
+
|
|
43
|
+
This release targets the 2025.12 Array API revision. This includes
|
|
44
|
+
|
|
45
|
+
- `__array_api_version__` for the wrapped APIs is now set to `2025.12`;
|
|
46
|
+
- wrappers for `linalg.eig` and `linalg.eigvals`;
|
|
47
|
+
- wrappers for `isin` and `searchsorted` to accept Python scalars;
|
|
48
|
+
- wrappers for `expand_dims` accepting tuple axes;
|
|
49
|
+
- `broadcast_arrays`, `meshgrid` and `__array_api_info__().devices()` have been
|
|
50
|
+
changed to return tuples, not lists;
|
|
51
|
+
|
|
52
|
+
Additionally,
|
|
53
|
+
|
|
54
|
+
- `clip` wrappers have been fixed to be compatible with `torch.vmap`.
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
### Minor changes
|
|
58
|
+
|
|
59
|
+
- `expand_dims` wrappers have been fixed to accept its `axis` argument as a keyword
|
|
60
|
+
or positional argument;
|
|
61
|
+
- `torch.clip` wrappers have been fixed to correctly handle `nan` scalars;
|
|
62
|
+
- `torch.repeat` wrapper has been fixed to not error out for short integers;
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
The following users contributed to this release:
|
|
66
|
+
|
|
67
|
+
Evgeni Burovski,
|
|
68
|
+
Josh Soref.
|
|
69
|
+
|
|
70
|
+
|
|
3
71
|
## 1.13.0 (2025-12-28)
|
|
4
72
|
|
|
5
73
|
|
|
@@ -221,11 +289,11 @@ Thomas Li
|
|
|
221
289
|
`xp.__array_namespace_info__()`.
|
|
222
290
|
- Various fixes to the `clip()` wrappers.
|
|
223
291
|
|
|
224
|
-
- `torch.conj` now
|
|
292
|
+
- `torch.conj` now wraps `torch.conj_physical`, which makes a copy rather
|
|
225
293
|
than setting the conjugation bit, as arrays with the conjugation bit set do
|
|
226
294
|
not support some APIs.
|
|
227
295
|
|
|
228
|
-
- `torch.sign` is now wrapped to support complex numbers and
|
|
296
|
+
- `torch.sign` is now wrapped to support complex numbers and propagate nans
|
|
229
297
|
properly.
|
|
230
298
|
|
|
231
299
|
### Minor Changes
|
|
@@ -298,7 +366,7 @@ Thomas Li
|
|
|
298
366
|
|
|
299
367
|
- New flag `use_compat` to {func}`~.array_namespace` to force the use or
|
|
300
368
|
non-use of the compat wrapper namespace. The default is to return a compat
|
|
301
|
-
namespace when it is
|
|
369
|
+
namespace when it is appropriate.
|
|
302
370
|
|
|
303
371
|
- Fix the `copy` flag to `asarray` for NumPy, CuPy, and Dask.
|
|
304
372
|
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
|
|
25
25
|
This does mean you can ignore CI failures, but ideally you should fix any
|
|
26
26
|
failures or update the `*-xfails.txt` files before tagging, so that CI and
|
|
27
|
-
the CuPy tests fully pass. Otherwise it will be hard to tell what things are
|
|
27
|
+
the CuPy tests fully pass. Otherwise, it will be hard to tell what things are
|
|
28
28
|
breaking in the future. It's also a good idea to remove any xpasses from
|
|
29
29
|
those files (but be aware that some xfails are from flaky failures, so
|
|
30
30
|
unless you know the underlying issue has been fixed, an xpass test is
|
|
@@ -44,15 +44,14 @@
|
|
|
44
44
|
|
|
45
45
|
- [ ] **Update the version.**
|
|
46
46
|
|
|
47
|
-
You must edit
|
|
47
|
+
You must edit the version in:
|
|
48
48
|
|
|
49
49
|
```
|
|
50
50
|
array_api_compat/__init__.py
|
|
51
|
+
pyproject.toml
|
|
52
|
+
meson.build
|
|
51
53
|
```
|
|
52
54
|
|
|
53
|
-
and update the version (the version is not computed from the tag because
|
|
54
|
-
that would break vendorability).
|
|
55
|
-
|
|
56
55
|
- [ ] **Update the [changelog](../changelog.md).**
|
|
57
56
|
|
|
58
57
|
Edit
|
|
@@ -100,6 +99,11 @@
|
|
|
100
99
|
docs update (the docs are published automatically from the sources on
|
|
101
100
|
`main`).
|
|
102
101
|
|
|
102
|
+
- [ ] **Bump the `__version__` attribute in `__init__.py`**
|
|
103
|
+
|
|
104
|
+
After an M.N.0 release, further development is towards version `M.(N+1).0`, thus the main branch's
|
|
105
|
+
version is `M.(N+1).0.dev0`.
|
|
106
|
+
|
|
103
107
|
- [ ] **Update conda-forge.**
|
|
104
108
|
|
|
105
109
|
After the PyPI package is published, the conda-forge bot should update the
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
project(
|
|
2
|
+
'array_api_compat',
|
|
3
|
+
version: '1.15.0',
|
|
4
|
+
license: 'MIT',
|
|
5
|
+
license_files: ['LICENSE']
|
|
6
|
+
)
|
|
7
|
+
|
|
8
|
+
py = import('python').find_installation()
|
|
9
|
+
|
|
10
|
+
sources_raw = {
|
|
11
|
+
'array_api_compat': [
|
|
12
|
+
'src/array_api_compat/__init__.py',
|
|
13
|
+
'src/array_api_compat/_internal.py',
|
|
14
|
+
],
|
|
15
|
+
|
|
16
|
+
'array_api_compat/common': [
|
|
17
|
+
'src/array_api_compat/common/__init__.py',
|
|
18
|
+
'src/array_api_compat/common/_aliases.py',
|
|
19
|
+
'src/array_api_compat/common/_fft.py',
|
|
20
|
+
'src/array_api_compat/common/_helpers.py',
|
|
21
|
+
'src/array_api_compat/common/_linalg.py',
|
|
22
|
+
'src/array_api_compat/common/_typing.py',
|
|
23
|
+
],
|
|
24
|
+
|
|
25
|
+
'array_api_compat/cupy': [
|
|
26
|
+
'src/array_api_compat/cupy/__init__.py',
|
|
27
|
+
'src/array_api_compat/cupy/_aliases.py',
|
|
28
|
+
'src/array_api_compat/cupy/_info.py',
|
|
29
|
+
'src/array_api_compat/cupy/_typing.py',
|
|
30
|
+
'src/array_api_compat/cupy/fft.py',
|
|
31
|
+
'src/array_api_compat/cupy/linalg.py',
|
|
32
|
+
],
|
|
33
|
+
|
|
34
|
+
'array_api_compat/dask': [
|
|
35
|
+
'src/array_api_compat/dask/__init__.py',
|
|
36
|
+
],
|
|
37
|
+
|
|
38
|
+
'array_api_compat/dask/array': [
|
|
39
|
+
'src/array_api_compat/dask/array/__init__.py',
|
|
40
|
+
'src/array_api_compat/dask/array/_aliases.py',
|
|
41
|
+
'src/array_api_compat/dask/array/_info.py',
|
|
42
|
+
'src/array_api_compat/dask/array/fft.py',
|
|
43
|
+
'src/array_api_compat/dask/array/linalg.py',
|
|
44
|
+
],
|
|
45
|
+
|
|
46
|
+
'array_api_compat/numpy': [
|
|
47
|
+
'src/array_api_compat/numpy/__init__.py',
|
|
48
|
+
'src/array_api_compat/numpy/_aliases.py',
|
|
49
|
+
'src/array_api_compat/numpy/_info.py',
|
|
50
|
+
'src/array_api_compat/numpy/_typing.py',
|
|
51
|
+
'src/array_api_compat/numpy/fft.py',
|
|
52
|
+
'src/array_api_compat/numpy/linalg.py',
|
|
53
|
+
],
|
|
54
|
+
|
|
55
|
+
'array_api_compat/torch': [
|
|
56
|
+
'src/array_api_compat/torch/__init__.py',
|
|
57
|
+
'src/array_api_compat/torch/_aliases.py',
|
|
58
|
+
'src/array_api_compat/torch/_info.py',
|
|
59
|
+
'src/array_api_compat/torch/_typing.py',
|
|
60
|
+
'src/array_api_compat/torch/fft.py',
|
|
61
|
+
'src/array_api_compat/torch/linalg.py',
|
|
62
|
+
],
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
sources = {}
|
|
66
|
+
foreach subdir, paths : sources_raw
|
|
67
|
+
sources += { subdir : files(paths) }
|
|
68
|
+
endforeach
|
|
69
|
+
|
|
70
|
+
foreach subdir, files : sources
|
|
71
|
+
py.install_sources(files, subdir: subdir)
|
|
72
|
+
endforeach
|
|
73
|
+
|
|
74
|
+
subdir('tests')
|
|
75
|
+
subdir('vendor_tests')
|
|
@@ -143,8 +143,6 @@ array_api_tests/test_operators_and_elementwise_functions.py::test_where_with_sca
|
|
|
143
143
|
array_api_tests/test_has_names.py::test_has_names[creation-from_dlpack]
|
|
144
144
|
array_api_tests/test_signatures.py::test_func_signature[from_dlpack]
|
|
145
145
|
array_api_tests/test_signatures.py::test_array_method_signature[__dlpack__]
|
|
146
|
-
# uint64 repeats not supported
|
|
147
|
-
array_api_tests/test_manipulation_functions.py::test_repeat
|
|
148
146
|
|
|
149
147
|
# 2024.12 support
|
|
150
148
|
array_api_tests/test_signatures.py::test_func_signature[bitwise_and]
|
|
@@ -154,6 +152,13 @@ array_api_tests/test_signatures.py::test_func_signature[bitwise_right_shift]
|
|
|
154
152
|
array_api_tests/test_signatures.py::test_func_signature[bitwise_xor]
|
|
155
153
|
array_api_tests/test_data_type_functions.py::TestResultType::test_with_scalars
|
|
156
154
|
|
|
155
|
+
# 2025.12 support
|
|
156
|
+
|
|
157
|
+
# older numpies return lists not tuples
|
|
158
|
+
array_api_tests/test_creation_functions.py::test_meshgrid
|
|
159
|
+
array_api_tests/test_data_type_functions.py::test_broadcast_arrays
|
|
160
|
+
|
|
161
|
+
|
|
157
162
|
# Stubs have a comment: (**note**: libraries may return ``NaN`` to match Python behavior.); Apparently,NumPy does just that
|
|
158
163
|
array_api_tests/test_special_cases.py::test_binary[floor_divide(x1_i is +infinity and isfinite(x2_i) and x2_i > 0) -> +infinity]
|
|
159
164
|
array_api_tests/test_special_cases.py::test_binary[floor_divide(x1_i is +infinity and isfinite(x2_i) and x2_i < 0) -> -infinity]
|
|
@@ -173,3 +178,21 @@ array_api_tests/test_special_cases.py::test_iop[__ifloordiv__(x1_i is -infinity
|
|
|
173
178
|
array_api_tests/test_special_cases.py::test_iop[__ifloordiv__(x1_i is -infinity and isfinite(x2_i) and x2_i < 0) -> +infinity]
|
|
174
179
|
array_api_tests/test_special_cases.py::test_iop[__ifloordiv__(isfinite(x1_i) and x1_i > 0 and x2_i is -infinity) -> -0]
|
|
175
180
|
array_api_tests/test_special_cases.py::test_iop[__ifloordiv__(isfinite(x1_i) and x1_i < 0 and x2_i is +infinity) -> -0]
|
|
181
|
+
|
|
182
|
+
# complex special cases
|
|
183
|
+
array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is +infinity and imag(x_i) is +0) -> +infinity + 0j]
|
|
184
|
+
array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is -infinity and imag(x_i) is +infinity) -> -1 + 0j]
|
|
185
|
+
array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is +infinity and imag(x_i) is +infinity) -> infinity + NaN j]
|
|
186
|
+
array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is -infinity and imag(x_i) is NaN) -> -1 + 0j]
|
|
187
|
+
array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is +infinity and imag(x_i) is NaN) -> infinity + NaN j]
|
|
188
|
+
array_api_tests/test_special_cases.py::test_unary[expm1(real(x_i) is NaN and imag(x_i) is +0) -> NaN + 0j]
|
|
189
|
+
array_api_tests/test_special_cases.py::test_unary[expm1((real(x_i) is +0 or real(x_i) == -0) and imag(x_i) is +0) -> 0 + 0j]
|
|
190
|
+
|
|
191
|
+
array_api_tests/test_special_cases.py::test_unary[sqrt(real(x_i) is +infinity and isfinite(imag(x_i)) and imag(x_i) > 0) -> +0 + infinity j]
|
|
192
|
+
array_api_tests/test_special_cases.py::test_unary[acosh(real(x_i) is +0 and imag(x_i) is NaN) -> NaN \xb1 \u03c0j/2]
|
|
193
|
+
array_api_tests/test_special_cases.py::test_unary[tanh(real(x_i) is +infinity and isfinite(imag(x_i)) and imag(x_i) > 0) -> 1 + 0j]
|
|
194
|
+
|
|
195
|
+
# no dlpack support
|
|
196
|
+
array_api_tests/test_dlpack.py::test_dlpack_device
|
|
197
|
+
array_api_tests/test_dlpack.py::test_dunder_dlpack
|
|
198
|
+
array_api_tests/test_dlpack.py::test_from_dlpack
|