array-api-compat 1.14.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.
Files changed (112) hide show
  1. array_api_compat-1.15.0/.git-blame-ignore-revs +2 -0
  2. array_api_compat-1.15.0/.gitattributes +2 -0
  3. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/.github/dependabot.yml +2 -0
  4. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/.github/workflows/array-api-tests.yml +3 -0
  5. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/.github/workflows/dependabot-auto-merge.yml +1 -1
  6. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/.github/workflows/docs-build.yml +4 -2
  7. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/.github/workflows/docs-deploy.yml +1 -1
  8. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/.github/workflows/publish-package.yml +8 -8
  9. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/.github/workflows/tests.yml +6 -0
  10. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/.gitignore +2 -0
  11. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/CHANGELOG.md +37 -1
  12. {array_api_compat-1.14.0/array_api_compat.egg-info → array_api_compat-1.15.0}/PKG-INFO +4 -35
  13. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/cupy-xfails.txt +5 -0
  14. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/dask-xfails.txt +5 -0
  15. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/docs/changelog.md +37 -1
  16. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/docs/dev/releasing.md +3 -4
  17. array_api_compat-1.15.0/meson.build +75 -0
  18. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/numpy-1-22-xfails.txt +5 -0
  19. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/numpy-1-26-xfails.txt +4 -1
  20. array_api_compat-1.15.0/pixi.lock +2824 -0
  21. array_api_compat-1.15.0/pixi.toml +65 -0
  22. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/pyproject.toml +32 -20
  23. {array_api_compat-1.14.0 → array_api_compat-1.15.0/src}/array_api_compat/__init__.py +2 -2
  24. {array_api_compat-1.14.0 → array_api_compat-1.15.0/src}/array_api_compat/common/_helpers.py +22 -4
  25. {array_api_compat-1.14.0 → array_api_compat-1.15.0/src}/array_api_compat/cupy/__init__.py +2 -2
  26. {array_api_compat-1.14.0 → array_api_compat-1.15.0/src}/array_api_compat/cupy/linalg.py +1 -1
  27. {array_api_compat-1.14.0 → array_api_compat-1.15.0/src}/array_api_compat/dask/array/__init__.py +2 -2
  28. {array_api_compat-1.14.0 → array_api_compat-1.15.0/src}/array_api_compat/numpy/__init__.py +2 -3
  29. {array_api_compat-1.14.0 → array_api_compat-1.15.0/src}/array_api_compat/torch/__init__.py +2 -2
  30. {array_api_compat-1.14.0 → array_api_compat-1.15.0/src}/array_api_compat/torch/_aliases.py +27 -5
  31. {array_api_compat-1.14.0 → array_api_compat-1.15.0/src}/array_api_compat/torch/fft.py +10 -10
  32. array_api_compat-1.15.0/tests/meson.build +17 -0
  33. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/tests/test_isdtype.py +1 -1
  34. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/tests/test_no_dependencies.py +3 -3
  35. array_api_compat-1.15.0/tests/test_numpy.py +19 -0
  36. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/tests/test_torch.py +27 -1
  37. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/torch-xfails.txt +1 -2
  38. array_api_compat-1.15.0/vendor_tests/meson.build +11 -0
  39. {array_api_compat-1.14.0/tests → array_api_compat-1.15.0/vendor_tests}/test_vendoring.py +5 -4
  40. {array_api_compat-1.14.0/vendor_test → array_api_compat-1.15.0/vendor_tests}/uses_cupy.py +1 -1
  41. {array_api_compat-1.14.0/vendor_test → array_api_compat-1.15.0/vendor_tests}/uses_dask.py +2 -2
  42. {array_api_compat-1.14.0/vendor_test → array_api_compat-1.15.0/vendor_tests}/uses_numpy.py +1 -1
  43. {array_api_compat-1.14.0/vendor_test → array_api_compat-1.15.0/vendor_tests}/uses_torch.py +1 -1
  44. array_api_compat-1.14.0/PKG-INFO +0 -60
  45. array_api_compat-1.14.0/array_api_compat.egg-info/SOURCES.txt +0 -103
  46. array_api_compat-1.14.0/array_api_compat.egg-info/dependency_links.txt +0 -1
  47. array_api_compat-1.14.0/array_api_compat.egg-info/requires.txt +0 -39
  48. array_api_compat-1.14.0/array_api_compat.egg-info/top_level.txt +0 -1
  49. array_api_compat-1.14.0/setup.cfg +0 -4
  50. array_api_compat-1.14.0/vendor_test/vendored/__init__.py +0 -0
  51. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/.github/workflows/array-api-tests-dask.yml +0 -0
  52. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/.github/workflows/array-api-tests-numpy-1-22.yml +0 -0
  53. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/.github/workflows/array-api-tests-numpy-1-26.yml +0 -0
  54. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/.github/workflows/array-api-tests-numpy-dev.yml +0 -0
  55. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/.github/workflows/array-api-tests-numpy-latest.yml +0 -0
  56. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/.github/workflows/array-api-tests-torch.yml +0 -0
  57. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/.github/workflows/ruff.yml +0 -0
  58. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/CONTRIBUTING.md +0 -0
  59. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/LICENSE +0 -0
  60. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/README.md +0 -0
  61. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/dask-skips.txt +0 -0
  62. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/docs/Makefile +0 -0
  63. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/docs/_static/custom.css +0 -0
  64. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/docs/_static/favicon.png +0 -0
  65. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/docs/conf.py +0 -0
  66. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/docs/dev/implementation-notes.md +0 -0
  67. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/docs/dev/index.md +0 -0
  68. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/docs/dev/special-considerations.md +0 -0
  69. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/docs/dev/tests.md +0 -0
  70. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/docs/helper-functions.rst +0 -0
  71. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/docs/index.md +0 -0
  72. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/docs/make.bat +0 -0
  73. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/docs/supported-array-libraries.md +0 -0
  74. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/numpy-dev-xfails.txt +0 -0
  75. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/numpy-skips.txt +0 -0
  76. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/numpy-xfails.txt +0 -0
  77. {array_api_compat-1.14.0 → array_api_compat-1.15.0/src}/array_api_compat/_internal.py +0 -0
  78. {array_api_compat-1.14.0 → array_api_compat-1.15.0/src}/array_api_compat/common/__init__.py +0 -0
  79. {array_api_compat-1.14.0 → array_api_compat-1.15.0/src}/array_api_compat/common/_aliases.py +0 -0
  80. {array_api_compat-1.14.0 → array_api_compat-1.15.0/src}/array_api_compat/common/_fft.py +0 -0
  81. {array_api_compat-1.14.0 → array_api_compat-1.15.0/src}/array_api_compat/common/_linalg.py +0 -0
  82. {array_api_compat-1.14.0 → array_api_compat-1.15.0/src}/array_api_compat/common/_typing.py +0 -0
  83. {array_api_compat-1.14.0 → array_api_compat-1.15.0/src}/array_api_compat/cupy/_aliases.py +0 -0
  84. {array_api_compat-1.14.0 → array_api_compat-1.15.0/src}/array_api_compat/cupy/_info.py +0 -0
  85. {array_api_compat-1.14.0 → array_api_compat-1.15.0/src}/array_api_compat/cupy/_typing.py +0 -0
  86. {array_api_compat-1.14.0 → array_api_compat-1.15.0/src}/array_api_compat/cupy/fft.py +0 -0
  87. {array_api_compat-1.14.0 → array_api_compat-1.15.0/src}/array_api_compat/dask/__init__.py +0 -0
  88. {array_api_compat-1.14.0 → array_api_compat-1.15.0/src}/array_api_compat/dask/array/_aliases.py +0 -0
  89. {array_api_compat-1.14.0 → array_api_compat-1.15.0/src}/array_api_compat/dask/array/_info.py +0 -0
  90. {array_api_compat-1.14.0 → array_api_compat-1.15.0/src}/array_api_compat/dask/array/fft.py +0 -0
  91. {array_api_compat-1.14.0 → array_api_compat-1.15.0/src}/array_api_compat/dask/array/linalg.py +0 -0
  92. {array_api_compat-1.14.0 → array_api_compat-1.15.0/src}/array_api_compat/numpy/_aliases.py +0 -0
  93. {array_api_compat-1.14.0 → array_api_compat-1.15.0/src}/array_api_compat/numpy/_info.py +0 -0
  94. {array_api_compat-1.14.0 → array_api_compat-1.15.0/src}/array_api_compat/numpy/_typing.py +0 -0
  95. {array_api_compat-1.14.0 → array_api_compat-1.15.0/src}/array_api_compat/numpy/fft.py +0 -0
  96. {array_api_compat-1.14.0 → array_api_compat-1.15.0/src}/array_api_compat/numpy/linalg.py +0 -0
  97. {array_api_compat-1.14.0 → array_api_compat-1.15.0/src}/array_api_compat/py.typed +0 -0
  98. {array_api_compat-1.14.0 → array_api_compat-1.15.0/src}/array_api_compat/torch/_info.py +0 -0
  99. {array_api_compat-1.14.0 → array_api_compat-1.15.0/src}/array_api_compat/torch/_typing.py +0 -0
  100. {array_api_compat-1.14.0 → array_api_compat-1.15.0/src}/array_api_compat/torch/linalg.py +0 -0
  101. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/test_cupy.sh +0 -0
  102. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/tests/__init__.py +0 -0
  103. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/tests/_helpers.py +0 -0
  104. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/tests/test_all.py +0 -0
  105. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/tests/test_array_namespace.py +0 -0
  106. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/tests/test_common.py +0 -0
  107. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/tests/test_copies_or_views.py +0 -0
  108. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/tests/test_cupy.py +0 -0
  109. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/tests/test_dask.py +0 -0
  110. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/tests/test_jax.py +0 -0
  111. {array_api_compat-1.14.0 → array_api_compat-1.15.0}/torch-skips.txt +0 -0
  112. {array_api_compat-1.14.0/vendor_test → array_api_compat-1.15.0/vendor_tests}/__init__.py +0 -0
@@ -0,0 +1,2 @@
1
+ # refactor to `src` layout
2
+ 0d15d23693dd3f6b82e007793ef9b6c8d43e5eac
@@ -0,0 +1,2 @@
1
+ # SCM syntax highlighting & preventing 3-way merges
2
+ pixi.lock merge=binary linguist-language=YAML linguist-generated=true -diff
@@ -5,6 +5,8 @@ updates:
5
5
  directory: "/"
6
6
  schedule:
7
7
  interval: "weekly"
8
+ cooldown:
9
+ default-days: 7 # optional
8
10
  groups:
9
11
  actions:
10
12
  patterns:
@@ -78,6 +78,9 @@ 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
 
@@ -13,7 +13,7 @@ jobs:
13
13
  steps:
14
14
  - name: Dependabot metadata
15
15
  id: metadata
16
- uses: dependabot/fetch-metadata@v2
16
+ uses: dependabot/fetch-metadata@v3
17
17
  with:
18
18
  github-token: "${{ secrets.GITHUB_TOKEN }}"
19
19
  - name: Enable auto-merge for Dependabot PRs
@@ -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 .[docs]
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@v6
21
+ uses: actions/upload-artifact@v7
20
22
  with:
21
23
  name: docs-build
22
24
  path: docs/_build/html
@@ -13,7 +13,7 @@ jobs:
13
13
  steps:
14
14
  - uses: actions/checkout@v6
15
15
  - name: Download Artifact
16
- uses: dawidd6/action-download-artifact@v15
16
+ uses: dawidd6/action-download-artifact@v21
17
17
  with:
18
18
  workflow: docs-build.yml
19
19
  name: docs-build
@@ -4,8 +4,8 @@ on:
4
4
  branches:
5
5
  - main
6
6
  tags:
7
- - '[0-9]+.[0-9]+'
8
- - '[0-9]+.[0-9]+.[0-9]+'
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 "setuptools<=67"
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@v6
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@v7
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.13.0
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.13.0
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@v2
110
+ uses: softprops/action-gh-release@v3
111
111
  if: startsWith(github.ref, 'refs/tags/')
112
112
  with:
113
113
  files: dist/*
@@ -66,3 +66,9 @@ jobs:
66
66
 
67
67
  - name: Run Tests
68
68
  run: pytest -v
69
+
70
+ - name: Run vendoring tests
71
+ run: |
72
+ rm -rf vendor_tests/array_api_compat
73
+ cp -r src/array_api_compat vendor_tests/
74
+ pytest -v vendor_tests
@@ -1,3 +1,5 @@
1
+ vendor_tests/array_api_compat
2
+
1
3
  # Byte-compiled / optimized / DLL files
2
4
  __pycache__/
3
5
  *.py[cod]
@@ -1,5 +1,41 @@
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
+
3
39
  ## 1.14.0 (2026-02-26)
4
40
 
5
41
  ### Major changes
@@ -257,7 +293,7 @@ Thomas Li
257
293
  than setting the conjugation bit, as arrays with the conjugation bit set do
258
294
  not support some APIs.
259
295
 
260
- - `torch.sign` is now wrapped to support complex numbers and propogate nans
296
+ - `torch.sign` is now wrapped to support complex numbers and propagate nans
261
297
  properly.
262
298
 
263
299
  ### Minor Changes
@@ -1,53 +1,22 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: array-api-compat
3
- Version: 1.14.0
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
 
@@ -217,3 +217,8 @@ array_api_tests/test_special_cases.py::test_binary[nextafter(x1_i is +0 and x2_i
217
217
 
218
218
  # cupy 13.x follows numpy 1.x w/o weak promotion: result_type(int32, uint8, 1) != result_type(int32, uint8)
219
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
+
@@ -173,3 +173,8 @@ array_api_tests/test_special_cases.py::test_unary[sqrt(real(x_i) is +infinity an
173
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
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
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,41 @@
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
+
3
39
  ## 1.14.0 (2026-02-26)
4
40
 
5
41
  ### Major changes
@@ -257,7 +293,7 @@ Thomas Li
257
293
  than setting the conjugation bit, as arrays with the conjugation bit set do
258
294
  not support some APIs.
259
295
 
260
- - `torch.sign` is now wrapped to support complex numbers and propogate nans
296
+ - `torch.sign` is now wrapped to support complex numbers and propagate nans
261
297
  properly.
262
298
 
263
299
  ### Minor Changes
@@ -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
@@ -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')
@@ -191,3 +191,8 @@ array_api_tests/test_special_cases.py::test_unary[expm1((real(x_i) is +0 or real
191
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
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
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
@@ -85,6 +85,9 @@ array_api_tests/test_special_cases.py::test_unary[sqrt(real(x_i) is +infinity an
85
85
  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]
86
86
  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]
87
87
 
88
-
88
+ # no dlpack support
89
+ array_api_tests/test_dlpack.py::test_dlpack_device
90
+ array_api_tests/test_dlpack.py::test_dunder_dlpack
91
+ array_api_tests/test_dlpack.py::test_from_dlpack
89
92
 
90
93