array-api-extra 0.5.0__tar.gz → 0.6.1__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_extra-0.5.0 → array_api_extra-0.6.1}/.all-contributorsrc +39 -20
- array_api_extra-0.6.1/.editorconfig +14 -0
- {array_api_extra-0.5.0 → array_api_extra-0.6.1}/.github/workflows/cd.yml +1 -1
- {array_api_extra-0.5.0 → array_api_extra-0.6.1}/.github/workflows/ci.yml +6 -6
- {array_api_extra-0.5.0 → array_api_extra-0.6.1}/.github/workflows/docs-build.yml +2 -2
- {array_api_extra-0.5.0 → array_api_extra-0.6.1}/.github/workflows/docs-deploy.yml +1 -1
- {array_api_extra-0.5.0 → array_api_extra-0.6.1}/CONTRIBUTORS.md +4 -2
- {array_api_extra-0.5.0 → array_api_extra-0.6.1}/PKG-INFO +20 -15
- {array_api_extra-0.5.0 → array_api_extra-0.6.1}/README.md +19 -3
- {array_api_extra-0.5.0 → array_api_extra-0.6.1}/RELEASING.md +2 -2
- {array_api_extra-0.5.0 → array_api_extra-0.6.1}/codecov.yml +2 -0
- {array_api_extra-0.5.0 → array_api_extra-0.6.1}/docs/api-reference.md +4 -0
- {array_api_extra-0.5.0 → array_api_extra-0.6.1}/docs/conf.py +3 -0
- {array_api_extra-0.5.0 → array_api_extra-0.6.1}/docs/contributing.md +47 -8
- {array_api_extra-0.5.0 → array_api_extra-0.6.1}/docs/index.md +46 -25
- array_api_extra-0.6.1/docs/testing-utils.md +14 -0
- {array_api_extra-0.5.0 → array_api_extra-0.6.1}/pixi.lock +7774 -2886
- {array_api_extra-0.5.0 → array_api_extra-0.6.1}/pyproject.toml +63 -62
- {array_api_extra-0.5.0 → array_api_extra-0.6.1}/src/array_api_extra/__init__.py +9 -4
- array_api_extra-0.6.1/src/array_api_extra/_delegation.py +174 -0
- array_api_extra-0.6.1/src/array_api_extra/_lib/__init__.py +5 -0
- array_api_extra-0.6.1/src/array_api_extra/_lib/_at.py +432 -0
- array_api_extra-0.6.1/src/array_api_extra/_lib/_backends.py +51 -0
- {array_api_extra-0.5.0/src/array_api_extra → array_api_extra-0.6.1/src/array_api_extra/_lib}/_funcs.py +224 -395
- array_api_extra-0.6.1/src/array_api_extra/_lib/_testing.py +192 -0
- array_api_extra-0.6.1/src/array_api_extra/_lib/_utils/__init__.py +1 -0
- array_api_extra-0.6.1/src/array_api_extra/_lib/_utils/_compat.py +67 -0
- array_api_extra-0.6.1/src/array_api_extra/_lib/_utils/_compat.pyi +36 -0
- array_api_extra-0.6.1/src/array_api_extra/_lib/_utils/_helpers.py +177 -0
- {array_api_extra-0.5.0/src/array_api_extra/_lib → array_api_extra-0.6.1/src/array_api_extra/_lib/_utils}/_typing.py +2 -2
- array_api_extra-0.6.1/src/array_api_extra/testing.py +262 -0
- array_api_extra-0.6.1/tests/__init__.py +1 -0
- array_api_extra-0.6.1/tests/conftest.py +158 -0
- array_api_extra-0.6.1/tests/test_at.py +261 -0
- array_api_extra-0.6.1/tests/test_funcs.py +768 -0
- array_api_extra-0.6.1/tests/test_helpers.py +150 -0
- array_api_extra-0.6.1/tests/test_testing.py +204 -0
- array_api_extra-0.6.1/vendor_tests/test_vendor.py +69 -0
- array_api_extra-0.5.0/src/array_api_extra/_lib/__init__.py +0 -1
- array_api_extra-0.5.0/src/array_api_extra/_lib/_compat.py +0 -25
- array_api_extra-0.5.0/src/array_api_extra/_lib/_compat.pyi +0 -22
- array_api_extra-0.5.0/src/array_api_extra/_lib/_utils.py +0 -89
- array_api_extra-0.5.0/tests/test_at.py +0 -158
- array_api_extra-0.5.0/tests/test_funcs.py +0 -418
- array_api_extra-0.5.0/tests/test_utils.py +0 -31
- array_api_extra-0.5.0/vendor_tests/test_vendor.py +0 -32
- {array_api_extra-0.5.0 → array_api_extra-0.6.1}/.gitattributes +0 -0
- {array_api_extra-0.5.0 → array_api_extra-0.6.1}/.github/dependabot.yml +0 -0
- {array_api_extra-0.5.0 → array_api_extra-0.6.1}/.github/workflows/dependabot-auto-merge.yml +0 -0
- {array_api_extra-0.5.0 → array_api_extra-0.6.1}/.gitignore +0 -0
- {array_api_extra-0.5.0 → array_api_extra-0.6.1}/.pre-commit-config.yaml +1 -1
- {array_api_extra-0.5.0 → array_api_extra-0.6.1}/LICENSE +0 -0
- {array_api_extra-0.5.0 → array_api_extra-0.6.1}/docs/contributors.md +0 -0
- {array_api_extra-0.5.0 → array_api_extra-0.6.1}/docs/requirements.txt +0 -0
- {array_api_extra-0.5.0 → array_api_extra-0.6.1}/src/array_api_extra/py.typed +0 -0
- {array_api_extra-0.5.0 → array_api_extra-0.6.1}/tests/test_version.py +0 -0
- {array_api_extra-0.5.0 → array_api_extra-0.6.1}/vendor_tests/__init__.py +0 -0
- {array_api_extra-0.5.0 → array_api_extra-0.6.1}/vendor_tests/_array_api_compat_vendor.py +0 -0
|
@@ -90,14 +90,17 @@
|
|
|
90
90
|
]
|
|
91
91
|
},
|
|
92
92
|
{
|
|
93
|
-
"login": "
|
|
94
|
-
"name": "
|
|
95
|
-
"avatar_url": "https://avatars.githubusercontent.com/u/
|
|
96
|
-
"profile": "https://github.com/
|
|
93
|
+
"login": "crusaderky",
|
|
94
|
+
"name": "Guido Imperiale",
|
|
95
|
+
"avatar_url": "https://avatars.githubusercontent.com/u/6213168?v=4",
|
|
96
|
+
"profile": "https://github.com/crusaderky",
|
|
97
97
|
"contributions": [
|
|
98
|
-
"
|
|
99
|
-
"
|
|
100
|
-
"
|
|
98
|
+
"code",
|
|
99
|
+
"doc",
|
|
100
|
+
"tool",
|
|
101
|
+
"test",
|
|
102
|
+
"example",
|
|
103
|
+
"bug"
|
|
101
104
|
]
|
|
102
105
|
},
|
|
103
106
|
{
|
|
@@ -155,6 +158,17 @@
|
|
|
155
158
|
"code"
|
|
156
159
|
]
|
|
157
160
|
},
|
|
161
|
+
{
|
|
162
|
+
"login": "rgommers",
|
|
163
|
+
"name": "Ralf Gommers",
|
|
164
|
+
"avatar_url": "https://avatars.githubusercontent.com/u/98330?v=4",
|
|
165
|
+
"profile": "https://github.com/rgommers/",
|
|
166
|
+
"contributions": [
|
|
167
|
+
"ideas",
|
|
168
|
+
"infra",
|
|
169
|
+
"review"
|
|
170
|
+
]
|
|
171
|
+
},
|
|
158
172
|
{
|
|
159
173
|
"login": "ogrisel",
|
|
160
174
|
"name": "Olivier Grisel",
|
|
@@ -164,19 +178,6 @@
|
|
|
164
178
|
"code"
|
|
165
179
|
]
|
|
166
180
|
},
|
|
167
|
-
{
|
|
168
|
-
"login": "crusaderky",
|
|
169
|
-
"name": "Guido Imperiale",
|
|
170
|
-
"avatar_url": "https://avatars.githubusercontent.com/u/6213168?v=4",
|
|
171
|
-
"profile": "https://github.com/crusaderky",
|
|
172
|
-
"contributions": [
|
|
173
|
-
"code",
|
|
174
|
-
"doc",
|
|
175
|
-
"tool",
|
|
176
|
-
"test",
|
|
177
|
-
"example"
|
|
178
|
-
]
|
|
179
|
-
},
|
|
180
181
|
{
|
|
181
182
|
"login": "ev-br",
|
|
182
183
|
"name": "Evgeni Burovski",
|
|
@@ -195,6 +196,24 @@
|
|
|
195
196
|
"contributions": [
|
|
196
197
|
"review"
|
|
197
198
|
]
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
"login": "kotlinisland",
|
|
202
|
+
"name": "kotlinisland",
|
|
203
|
+
"avatar_url": "https://avatars.githubusercontent.com/u/65446343?v=4",
|
|
204
|
+
"profile": "https://github.com/KotlinIsland",
|
|
205
|
+
"contributions": [
|
|
206
|
+
"review"
|
|
207
|
+
]
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
"login": "detachhead",
|
|
211
|
+
"name": "detachhead",
|
|
212
|
+
"avatar_url": "https://avatars.githubusercontent.com/u/57028336?v=4",
|
|
213
|
+
"profile": "https://github.com/DetachHead",
|
|
214
|
+
"contributions": [
|
|
215
|
+
"review"
|
|
216
|
+
]
|
|
198
217
|
}
|
|
199
218
|
]
|
|
200
219
|
}
|
|
@@ -30,9 +30,9 @@ jobs:
|
|
|
30
30
|
- uses: pre-commit/action@v3.0.1
|
|
31
31
|
with:
|
|
32
32
|
extra_args: --hook-stage manual --all-files
|
|
33
|
-
- uses: prefix-dev/setup-pixi@v0.8.
|
|
33
|
+
- uses: prefix-dev/setup-pixi@v0.8.3
|
|
34
34
|
with:
|
|
35
|
-
pixi-version: v0.
|
|
35
|
+
pixi-version: v0.40.3
|
|
36
36
|
cache: true
|
|
37
37
|
environments: lint
|
|
38
38
|
- name: Run Pylint, Mypy & Pyright
|
|
@@ -48,7 +48,7 @@ jobs:
|
|
|
48
48
|
strategy:
|
|
49
49
|
fail-fast: false
|
|
50
50
|
matrix:
|
|
51
|
-
environment: [
|
|
51
|
+
environment: [tests-py310, tests-py313, tests-backends]
|
|
52
52
|
runs-on: [ubuntu-latest]
|
|
53
53
|
|
|
54
54
|
steps:
|
|
@@ -56,9 +56,9 @@ jobs:
|
|
|
56
56
|
with:
|
|
57
57
|
fetch-depth: 0
|
|
58
58
|
|
|
59
|
-
- uses: prefix-dev/setup-pixi@v0.8.
|
|
59
|
+
- uses: prefix-dev/setup-pixi@v0.8.3
|
|
60
60
|
with:
|
|
61
|
-
pixi-version: v0.
|
|
61
|
+
pixi-version: v0.40.3
|
|
62
62
|
cache: true
|
|
63
63
|
environments: ${{ matrix.environment }}
|
|
64
64
|
|
|
@@ -66,6 +66,6 @@ jobs:
|
|
|
66
66
|
run: pixi run -e ${{ matrix.environment }} tests-ci
|
|
67
67
|
|
|
68
68
|
- name: Upload coverage report
|
|
69
|
-
uses: codecov/codecov-action@v5.1
|
|
69
|
+
uses: codecov/codecov-action@v5.3.1
|
|
70
70
|
with:
|
|
71
71
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
@@ -7,9 +7,9 @@ jobs:
|
|
|
7
7
|
runs-on: ubuntu-latest
|
|
8
8
|
steps:
|
|
9
9
|
- uses: actions/checkout@v4
|
|
10
|
-
- uses: prefix-dev/setup-pixi@v0.8.
|
|
10
|
+
- uses: prefix-dev/setup-pixi@v0.8.3
|
|
11
11
|
with:
|
|
12
|
-
pixi-version: v0.
|
|
12
|
+
pixi-version: v0.40.3
|
|
13
13
|
cache: true
|
|
14
14
|
environments: docs
|
|
15
15
|
- name: Build Docs
|
|
@@ -18,7 +18,7 @@ This project exists thanks to the following contributors
|
|
|
18
18
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/vnmabus"><img src="https://avatars.githubusercontent.com/u/2364173?v=4?s=100" width="100px;" alt="Carlos Ramos Carreño"/><br /><sub><b>Carlos Ramos Carreño</b></sub></a><br /><a href="#ideas-vnmabus" title="Ideas, Planning, & Feedback">🤔</a></td>
|
|
19
19
|
</tr>
|
|
20
20
|
<tr>
|
|
21
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/
|
|
21
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/crusaderky"><img src="https://avatars.githubusercontent.com/u/6213168?v=4?s=100" width="100px;" alt="Guido Imperiale"/><br /><sub><b>Guido Imperiale</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/commits?author=crusaderky" title="Code">💻</a> <a href="https://github.com/data-apis/array-api-extra/commits?author=crusaderky" title="Documentation">📖</a> <a href="#tool-crusaderky" title="Tools">🔧</a> <a href="https://github.com/data-apis/array-api-extra/commits?author=crusaderky" title="Tests">⚠️</a> <a href="#example-crusaderky" title="Examples">💡</a> <a href="https://github.com/data-apis/array-api-extra/issues?q=author%3Acrusaderky" title="Bug reports">🐛</a></td>
|
|
22
22
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jorenham"><img src="https://avatars.githubusercontent.com/u/6208662?v=4?s=100" width="100px;" alt="Joren Hammudoglu"/><br /><sub><b>Joren Hammudoglu</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/pulls?q=is%3Apr+reviewed-by%3Ajorenham" title="Reviewed Pull Requests">👀</a></td>
|
|
23
23
|
<td align="center" valign="top" width="14.28%"><a href="https://www.thomasjpfan.com/"><img src="https://avatars.githubusercontent.com/u/5402633?v=4?s=100" width="100px;" alt="Thomas J. Fan"/><br /><sub><b>Thomas J. Fan</b></sub></a><br /><a href="#ideas-thomasjpfan" title="Ideas, Planning, & Feedback">🤔</a></td>
|
|
24
24
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/izaid"><img src="https://avatars.githubusercontent.com/u/482179?v=4?s=100" width="100px;" alt="Irwin Zaid"/><br /><sub><b>Irwin Zaid</b></sub></a><br /><a href="#ideas-izaid" title="Ideas, Planning, & Feedback">🤔</a></td>
|
|
@@ -27,10 +27,12 @@ This project exists thanks to the following contributors
|
|
|
27
27
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/OmarManzoor"><img src="https://avatars.githubusercontent.com/u/17495884?v=4?s=100" width="100px;" alt="Omar Salman"/><br /><sub><b>Omar Salman</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/commits?author=OmarManzoor" title="Code">💻</a></td>
|
|
28
28
|
</tr>
|
|
29
29
|
<tr>
|
|
30
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/rgommers/"><img src="https://avatars.githubusercontent.com/u/98330?v=4?s=100" width="100px;" alt="Ralf Gommers"/><br /><sub><b>Ralf Gommers</b></sub></a><br /><a href="#ideas-rgommers" title="Ideas, Planning, & Feedback">🤔</a> <a href="#infra-rgommers" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="https://github.com/data-apis/array-api-extra/pulls?q=is%3Apr+reviewed-by%3Argommers" title="Reviewed Pull Requests">👀</a></td>
|
|
30
31
|
<td align="center" valign="top" width="14.28%"><a href="https://ogrisel.com"><img src="https://avatars.githubusercontent.com/u/89061?v=4?s=100" width="100px;" alt="Olivier Grisel"/><br /><sub><b>Olivier Grisel</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/commits?author=ogrisel" title="Code">💻</a></td>
|
|
31
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/crusaderky"><img src="https://avatars.githubusercontent.com/u/6213168?v=4?s=100" width="100px;" alt="Guido Imperiale"/><br /><sub><b>Guido Imperiale</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/commits?author=crusaderky" title="Code">💻</a> <a href="https://github.com/data-apis/array-api-extra/commits?author=crusaderky" title="Documentation">📖</a> <a href="#tool-crusaderky" title="Tools">🔧</a> <a href="https://github.com/data-apis/array-api-extra/commits?author=crusaderky" title="Tests">⚠️</a> <a href="#example-crusaderky" title="Examples">💡</a></td>
|
|
32
32
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ev-br"><img src="https://avatars.githubusercontent.com/u/2133832?v=4?s=100" width="100px;" alt="Evgeni Burovski"/><br /><sub><b>Evgeni Burovski</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/commits?author=ev-br" title="Code">💻</a> <a href="https://github.com/data-apis/array-api-extra/commits?author=ev-br" title="Documentation">📖</a></td>
|
|
33
33
|
<td align="center" valign="top" width="14.28%"><a href="http://www.vanderplas.com/"><img src="https://avatars.githubusercontent.com/u/781659?v=4?s=100" width="100px;" alt="Jake Vanderplas"/><br /><sub><b>Jake Vanderplas</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/pulls?q=is%3Apr+reviewed-by%3Ajakevdp" title="Reviewed Pull Requests">👀</a></td>
|
|
34
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/KotlinIsland"><img src="https://avatars.githubusercontent.com/u/65446343?v=4?s=100" width="100px;" alt="kotlinisland"/><br /><sub><b>kotlinisland</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/pulls?q=is%3Apr+reviewed-by%3Akotlinisland" title="Reviewed Pull Requests">👀</a></td>
|
|
35
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DetachHead"><img src="https://avatars.githubusercontent.com/u/57028336?v=4?s=100" width="100px;" alt="detachhead"/><br /><sub><b>detachhead</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/pulls?q=is%3Apr+reviewed-by%3Adetachhead" title="Reviewed Pull Requests">👀</a></td>
|
|
34
36
|
</tr>
|
|
35
37
|
</tbody>
|
|
36
38
|
</table>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: array-api-extra
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.6.1
|
|
4
4
|
Summary: Extra array functions built on top of the array API standard.
|
|
5
5
|
Project-URL: Homepage, https://github.com/data-apis/array-api-extra
|
|
6
6
|
Project-URL: Bug Tracker, https://github.com/data-apis/array-api-extra/issues
|
|
@@ -41,17 +41,6 @@ Classifier: Programming Language :: Python :: 3.13
|
|
|
41
41
|
Classifier: Typing :: Typed
|
|
42
42
|
Requires-Python: >=3.10
|
|
43
43
|
Requires-Dist: array-api-compat<2,>=1.10.0
|
|
44
|
-
Provides-Extra: docs
|
|
45
|
-
Requires-Dist: furo>=2023.08.17; extra == 'docs'
|
|
46
|
-
Requires-Dist: myst-parser>=0.13; extra == 'docs'
|
|
47
|
-
Requires-Dist: sphinx-autodoc-typehints; extra == 'docs'
|
|
48
|
-
Requires-Dist: sphinx-copybutton; extra == 'docs'
|
|
49
|
-
Requires-Dist: sphinx>=7.0; extra == 'docs'
|
|
50
|
-
Provides-Extra: tests
|
|
51
|
-
Requires-Dist: array-api-strict; extra == 'tests'
|
|
52
|
-
Requires-Dist: numpy; extra == 'tests'
|
|
53
|
-
Requires-Dist: pytest-cov>=3; extra == 'tests'
|
|
54
|
-
Requires-Dist: pytest>=6; extra == 'tests'
|
|
55
44
|
Description-Content-Type: text/markdown
|
|
56
45
|
|
|
57
46
|
# array-api-extra
|
|
@@ -66,6 +55,7 @@ Description-Content-Type: text/markdown
|
|
|
66
55
|
[![PyPI version][pypi-version]][pypi-link]
|
|
67
56
|
[![Conda-Forge][conda-badge]][conda-link]
|
|
68
57
|
[![PyPI platforms][pypi-platforms]][pypi-link]
|
|
58
|
+
[](https://jacobtomlinson.dev/effver)
|
|
69
59
|
|
|
70
60
|
<!-- SPHINX-START -->
|
|
71
61
|
|
|
@@ -90,7 +80,20 @@ Used by:
|
|
|
90
80
|
|
|
91
81
|
- [SciPy](https://github.com/scipy/scipy) - Fundamental algorithms for
|
|
92
82
|
scientific computing.
|
|
93
|
-
-
|
|
83
|
+
- _your library? Let us know!_
|
|
84
|
+
|
|
85
|
+
## Installation
|
|
86
|
+
|
|
87
|
+
See https://data-apis.org/array-api-extra/#installation.
|
|
88
|
+
|
|
89
|
+
## Versioning
|
|
90
|
+
|
|
91
|
+
This project uses [EffVer](https://jacobtomlinson.dev/effver/). TL;DR:
|
|
92
|
+
|
|
93
|
+
- To bump from version `x.y.z` to `x.(y+1).0` of array-api-extra, expect that
|
|
94
|
+
you may need to put in some work.
|
|
95
|
+
- To bump from version `x.y.z` to `x.y.(z+1)`, any work needed on your side
|
|
96
|
+
should be minimal. Please open an issue if this is not the case!
|
|
94
97
|
|
|
95
98
|
## Contributors
|
|
96
99
|
|
|
@@ -112,7 +115,7 @@ This project exists thanks to the following contributors
|
|
|
112
115
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/vnmabus"><img src="https://avatars.githubusercontent.com/u/2364173?v=4?s=100" width="100px;" alt="Carlos Ramos Carreño"/><br /><sub><b>Carlos Ramos Carreño</b></sub></a><br /><a href="#ideas-vnmabus" title="Ideas, Planning, & Feedback">🤔</a></td>
|
|
113
116
|
</tr>
|
|
114
117
|
<tr>
|
|
115
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/
|
|
118
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/crusaderky"><img src="https://avatars.githubusercontent.com/u/6213168?v=4?s=100" width="100px;" alt="Guido Imperiale"/><br /><sub><b>Guido Imperiale</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/commits?author=crusaderky" title="Code">💻</a> <a href="https://github.com/data-apis/array-api-extra/commits?author=crusaderky" title="Documentation">📖</a> <a href="#tool-crusaderky" title="Tools">🔧</a> <a href="https://github.com/data-apis/array-api-extra/commits?author=crusaderky" title="Tests">⚠️</a> <a href="#example-crusaderky" title="Examples">💡</a> <a href="https://github.com/data-apis/array-api-extra/issues?q=author%3Acrusaderky" title="Bug reports">🐛</a></td>
|
|
116
119
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jorenham"><img src="https://avatars.githubusercontent.com/u/6208662?v=4?s=100" width="100px;" alt="Joren Hammudoglu"/><br /><sub><b>Joren Hammudoglu</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/pulls?q=is%3Apr+reviewed-by%3Ajorenham" title="Reviewed Pull Requests">👀</a></td>
|
|
117
120
|
<td align="center" valign="top" width="14.28%"><a href="https://www.thomasjpfan.com/"><img src="https://avatars.githubusercontent.com/u/5402633?v=4?s=100" width="100px;" alt="Thomas J. Fan"/><br /><sub><b>Thomas J. Fan</b></sub></a><br /><a href="#ideas-thomasjpfan" title="Ideas, Planning, & Feedback">🤔</a></td>
|
|
118
121
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/izaid"><img src="https://avatars.githubusercontent.com/u/482179?v=4?s=100" width="100px;" alt="Irwin Zaid"/><br /><sub><b>Irwin Zaid</b></sub></a><br /><a href="#ideas-izaid" title="Ideas, Planning, & Feedback">🤔</a></td>
|
|
@@ -121,10 +124,12 @@ This project exists thanks to the following contributors
|
|
|
121
124
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/OmarManzoor"><img src="https://avatars.githubusercontent.com/u/17495884?v=4?s=100" width="100px;" alt="Omar Salman"/><br /><sub><b>Omar Salman</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/commits?author=OmarManzoor" title="Code">💻</a></td>
|
|
122
125
|
</tr>
|
|
123
126
|
<tr>
|
|
127
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/rgommers/"><img src="https://avatars.githubusercontent.com/u/98330?v=4?s=100" width="100px;" alt="Ralf Gommers"/><br /><sub><b>Ralf Gommers</b></sub></a><br /><a href="#ideas-rgommers" title="Ideas, Planning, & Feedback">🤔</a> <a href="#infra-rgommers" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="https://github.com/data-apis/array-api-extra/pulls?q=is%3Apr+reviewed-by%3Argommers" title="Reviewed Pull Requests">👀</a></td>
|
|
124
128
|
<td align="center" valign="top" width="14.28%"><a href="https://ogrisel.com"><img src="https://avatars.githubusercontent.com/u/89061?v=4?s=100" width="100px;" alt="Olivier Grisel"/><br /><sub><b>Olivier Grisel</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/commits?author=ogrisel" title="Code">💻</a></td>
|
|
125
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/crusaderky"><img src="https://avatars.githubusercontent.com/u/6213168?v=4?s=100" width="100px;" alt="Guido Imperiale"/><br /><sub><b>Guido Imperiale</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/commits?author=crusaderky" title="Code">💻</a> <a href="https://github.com/data-apis/array-api-extra/commits?author=crusaderky" title="Documentation">📖</a> <a href="#tool-crusaderky" title="Tools">🔧</a> <a href="https://github.com/data-apis/array-api-extra/commits?author=crusaderky" title="Tests">⚠️</a> <a href="#example-crusaderky" title="Examples">💡</a></td>
|
|
126
129
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ev-br"><img src="https://avatars.githubusercontent.com/u/2133832?v=4?s=100" width="100px;" alt="Evgeni Burovski"/><br /><sub><b>Evgeni Burovski</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/commits?author=ev-br" title="Code">💻</a> <a href="https://github.com/data-apis/array-api-extra/commits?author=ev-br" title="Documentation">📖</a></td>
|
|
127
130
|
<td align="center" valign="top" width="14.28%"><a href="http://www.vanderplas.com/"><img src="https://avatars.githubusercontent.com/u/781659?v=4?s=100" width="100px;" alt="Jake Vanderplas"/><br /><sub><b>Jake Vanderplas</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/pulls?q=is%3Apr+reviewed-by%3Ajakevdp" title="Reviewed Pull Requests">👀</a></td>
|
|
131
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/KotlinIsland"><img src="https://avatars.githubusercontent.com/u/65446343?v=4?s=100" width="100px;" alt="kotlinisland"/><br /><sub><b>kotlinisland</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/pulls?q=is%3Apr+reviewed-by%3Akotlinisland" title="Reviewed Pull Requests">👀</a></td>
|
|
132
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DetachHead"><img src="https://avatars.githubusercontent.com/u/57028336?v=4?s=100" width="100px;" alt="detachhead"/><br /><sub><b>detachhead</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/pulls?q=is%3Apr+reviewed-by%3Adetachhead" title="Reviewed Pull Requests">👀</a></td>
|
|
128
133
|
</tr>
|
|
129
134
|
</tbody>
|
|
130
135
|
</table>
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
[![PyPI version][pypi-version]][pypi-link]
|
|
11
11
|
[![Conda-Forge][conda-badge]][conda-link]
|
|
12
12
|
[![PyPI platforms][pypi-platforms]][pypi-link]
|
|
13
|
+
[](https://jacobtomlinson.dev/effver)
|
|
13
14
|
|
|
14
15
|
<!-- SPHINX-START -->
|
|
15
16
|
|
|
@@ -34,7 +35,20 @@ Used by:
|
|
|
34
35
|
|
|
35
36
|
- [SciPy](https://github.com/scipy/scipy) - Fundamental algorithms for
|
|
36
37
|
scientific computing.
|
|
37
|
-
-
|
|
38
|
+
- _your library? Let us know!_
|
|
39
|
+
|
|
40
|
+
## Installation
|
|
41
|
+
|
|
42
|
+
See https://data-apis.org/array-api-extra/#installation.
|
|
43
|
+
|
|
44
|
+
## Versioning
|
|
45
|
+
|
|
46
|
+
This project uses [EffVer](https://jacobtomlinson.dev/effver/). TL;DR:
|
|
47
|
+
|
|
48
|
+
- To bump from version `x.y.z` to `x.(y+1).0` of array-api-extra, expect that
|
|
49
|
+
you may need to put in some work.
|
|
50
|
+
- To bump from version `x.y.z` to `x.y.(z+1)`, any work needed on your side
|
|
51
|
+
should be minimal. Please open an issue if this is not the case!
|
|
38
52
|
|
|
39
53
|
## Contributors
|
|
40
54
|
|
|
@@ -56,7 +70,7 @@ This project exists thanks to the following contributors
|
|
|
56
70
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/vnmabus"><img src="https://avatars.githubusercontent.com/u/2364173?v=4?s=100" width="100px;" alt="Carlos Ramos Carreño"/><br /><sub><b>Carlos Ramos Carreño</b></sub></a><br /><a href="#ideas-vnmabus" title="Ideas, Planning, & Feedback">🤔</a></td>
|
|
57
71
|
</tr>
|
|
58
72
|
<tr>
|
|
59
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/
|
|
73
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/crusaderky"><img src="https://avatars.githubusercontent.com/u/6213168?v=4?s=100" width="100px;" alt="Guido Imperiale"/><br /><sub><b>Guido Imperiale</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/commits?author=crusaderky" title="Code">💻</a> <a href="https://github.com/data-apis/array-api-extra/commits?author=crusaderky" title="Documentation">📖</a> <a href="#tool-crusaderky" title="Tools">🔧</a> <a href="https://github.com/data-apis/array-api-extra/commits?author=crusaderky" title="Tests">⚠️</a> <a href="#example-crusaderky" title="Examples">💡</a> <a href="https://github.com/data-apis/array-api-extra/issues?q=author%3Acrusaderky" title="Bug reports">🐛</a></td>
|
|
60
74
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jorenham"><img src="https://avatars.githubusercontent.com/u/6208662?v=4?s=100" width="100px;" alt="Joren Hammudoglu"/><br /><sub><b>Joren Hammudoglu</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/pulls?q=is%3Apr+reviewed-by%3Ajorenham" title="Reviewed Pull Requests">👀</a></td>
|
|
61
75
|
<td align="center" valign="top" width="14.28%"><a href="https://www.thomasjpfan.com/"><img src="https://avatars.githubusercontent.com/u/5402633?v=4?s=100" width="100px;" alt="Thomas J. Fan"/><br /><sub><b>Thomas J. Fan</b></sub></a><br /><a href="#ideas-thomasjpfan" title="Ideas, Planning, & Feedback">🤔</a></td>
|
|
62
76
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/izaid"><img src="https://avatars.githubusercontent.com/u/482179?v=4?s=100" width="100px;" alt="Irwin Zaid"/><br /><sub><b>Irwin Zaid</b></sub></a><br /><a href="#ideas-izaid" title="Ideas, Planning, & Feedback">🤔</a></td>
|
|
@@ -65,10 +79,12 @@ This project exists thanks to the following contributors
|
|
|
65
79
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/OmarManzoor"><img src="https://avatars.githubusercontent.com/u/17495884?v=4?s=100" width="100px;" alt="Omar Salman"/><br /><sub><b>Omar Salman</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/commits?author=OmarManzoor" title="Code">💻</a></td>
|
|
66
80
|
</tr>
|
|
67
81
|
<tr>
|
|
82
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/rgommers/"><img src="https://avatars.githubusercontent.com/u/98330?v=4?s=100" width="100px;" alt="Ralf Gommers"/><br /><sub><b>Ralf Gommers</b></sub></a><br /><a href="#ideas-rgommers" title="Ideas, Planning, & Feedback">🤔</a> <a href="#infra-rgommers" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="https://github.com/data-apis/array-api-extra/pulls?q=is%3Apr+reviewed-by%3Argommers" title="Reviewed Pull Requests">👀</a></td>
|
|
68
83
|
<td align="center" valign="top" width="14.28%"><a href="https://ogrisel.com"><img src="https://avatars.githubusercontent.com/u/89061?v=4?s=100" width="100px;" alt="Olivier Grisel"/><br /><sub><b>Olivier Grisel</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/commits?author=ogrisel" title="Code">💻</a></td>
|
|
69
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/crusaderky"><img src="https://avatars.githubusercontent.com/u/6213168?v=4?s=100" width="100px;" alt="Guido Imperiale"/><br /><sub><b>Guido Imperiale</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/commits?author=crusaderky" title="Code">💻</a> <a href="https://github.com/data-apis/array-api-extra/commits?author=crusaderky" title="Documentation">📖</a> <a href="#tool-crusaderky" title="Tools">🔧</a> <a href="https://github.com/data-apis/array-api-extra/commits?author=crusaderky" title="Tests">⚠️</a> <a href="#example-crusaderky" title="Examples">💡</a></td>
|
|
70
84
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ev-br"><img src="https://avatars.githubusercontent.com/u/2133832?v=4?s=100" width="100px;" alt="Evgeni Burovski"/><br /><sub><b>Evgeni Burovski</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/commits?author=ev-br" title="Code">💻</a> <a href="https://github.com/data-apis/array-api-extra/commits?author=ev-br" title="Documentation">📖</a></td>
|
|
71
85
|
<td align="center" valign="top" width="14.28%"><a href="http://www.vanderplas.com/"><img src="https://avatars.githubusercontent.com/u/781659?v=4?s=100" width="100px;" alt="Jake Vanderplas"/><br /><sub><b>Jake Vanderplas</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/pulls?q=is%3Apr+reviewed-by%3Ajakevdp" title="Reviewed Pull Requests">👀</a></td>
|
|
86
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/KotlinIsland"><img src="https://avatars.githubusercontent.com/u/65446343?v=4?s=100" width="100px;" alt="kotlinisland"/><br /><sub><b>kotlinisland</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/pulls?q=is%3Apr+reviewed-by%3Akotlinisland" title="Reviewed Pull Requests">👀</a></td>
|
|
87
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DetachHead"><img src="https://avatars.githubusercontent.com/u/57028336?v=4?s=100" width="100px;" alt="detachhead"/><br /><sub><b>detachhead</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/pulls?q=is%3Apr+reviewed-by%3Adetachhead" title="Reviewed Pull Requests">👀</a></td>
|
|
72
88
|
</tr>
|
|
73
89
|
</tbody>
|
|
74
90
|
</table>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
1. Update the version in `src/array_api_extra/__init__.py`
|
|
2
|
-
2. Update the lockfile with `pixi update
|
|
2
|
+
2. Update the lockfile with `pixi update && pixi install`
|
|
3
3
|
3. Push your changes
|
|
4
4
|
4. Cut a release via the GitHub GUI
|
|
5
5
|
5. Update the version to `{next micro version}.dev0`
|
|
6
|
-
6.
|
|
6
|
+
6. `pixi clean cache --pypi && pixi update && pixi install`
|
|
7
7
|
7. Push your changes
|
|
8
8
|
8. Merge the automated PR to conda-forge/array-api-extra-feedstock
|
|
@@ -53,6 +53,9 @@ myst_enable_extensions = [
|
|
|
53
53
|
|
|
54
54
|
intersphinx_mapping = {
|
|
55
55
|
"python": ("https://docs.python.org/3", None),
|
|
56
|
+
"array-api": ("https://data-apis.org/array-api/draft", None),
|
|
57
|
+
"dask": ("https://docs.dask.org/en/stable", None),
|
|
58
|
+
"numpy": ("https://numpy.org/doc/stable", None),
|
|
56
59
|
"jax": ("https://jax.readthedocs.io/en/latest", None),
|
|
57
60
|
}
|
|
58
61
|
|
|
@@ -6,11 +6,14 @@ converting code to consume the standard.
|
|
|
6
6
|
|
|
7
7
|
Thanks to [all contributors](contributors.md) so far!
|
|
8
8
|
|
|
9
|
-
## How to contribute a function
|
|
9
|
+
## How to contribute a new function
|
|
10
10
|
|
|
11
11
|
- [Open an issue](https://github.com/data-apis/array-api-extra/issues/new) to
|
|
12
|
-
propose the new function.
|
|
13
|
-
|
|
12
|
+
propose the new function. You may want to wait for initial feedback on the
|
|
13
|
+
issue before diving into an implementation. Feel free to skip this step if
|
|
14
|
+
there is already an open issue for the function.
|
|
15
|
+
- Add the implementation of your function to
|
|
16
|
+
`src/array_api_extra/_lib/_funcs.py`.
|
|
14
17
|
- Ensure that your function includes type annotations and a
|
|
15
18
|
[numpydoc-style docstring](https://numpydoc.readthedocs.io/en/latest/format.html).
|
|
16
19
|
- Add your function to `__all__` at the top of the file.
|
|
@@ -20,6 +23,33 @@ Thanks to [all contributors](contributors.md) so far!
|
|
|
20
23
|
- Add your function to `docs/api-reference.md`.
|
|
21
24
|
- [Make a PR!](https://github.com/data-apis/array-api-extra/pulls)
|
|
22
25
|
|
|
26
|
+
## How to add delegation to a function
|
|
27
|
+
|
|
28
|
+
See [the tracker for adding delegation][delegation-tracker].
|
|
29
|
+
|
|
30
|
+
[delegation-tracker]: https://github.com/data-apis/array-api-extra/issues/100
|
|
31
|
+
|
|
32
|
+
- If you would like to discuss the task before diving into the implementation,
|
|
33
|
+
click on the three dots next to the function on the tracker issue, and choose
|
|
34
|
+
"Convert to sub-issue".
|
|
35
|
+
- Create a function in `src/array_api_extra/_delegation.py` with a signature
|
|
36
|
+
matching the function in `src/array_api_extra/_lib/_funcs.py`, and move the
|
|
37
|
+
docstring to the new function. Leave a one-line docstring in `_funcs.py`,
|
|
38
|
+
pointing to `_delegation.py` to see the full docstring.
|
|
39
|
+
- Also move the initial `array_namespace` call and any input validation over to
|
|
40
|
+
the new function.
|
|
41
|
+
- Add delegation to backends using the `if _delegate` pattern. See
|
|
42
|
+
`src/array_api_extra/_lib/_backends.py` for the full list of backends we have
|
|
43
|
+
worked with so far.
|
|
44
|
+
- After all delegation layers, return the result from the implementation in
|
|
45
|
+
`_funcs`.
|
|
46
|
+
- Simplify the signature in `_funcs.py` to remove impossible arguments now that
|
|
47
|
+
it is only called internally via `_delegation`. For example, the `xp`
|
|
48
|
+
parameter can be changed from type `ModuleType | None` to `ModuleType`.
|
|
49
|
+
- Don't worry if you are not sure how to do some of the above steps or think you
|
|
50
|
+
might have done something wrong -
|
|
51
|
+
[make a PR!](https://github.com/data-apis/array-api-extra/pulls)
|
|
52
|
+
|
|
23
53
|
## Development workflow
|
|
24
54
|
|
|
25
55
|
If you are an experienced contributor to Python packages, feel free to develop
|
|
@@ -76,7 +106,7 @@ pixi run pre-commit-install
|
|
|
76
106
|
- To run the lint suite:
|
|
77
107
|
|
|
78
108
|
```
|
|
79
|
-
pixi run lint
|
|
109
|
+
pixi run -e lint lint
|
|
80
110
|
```
|
|
81
111
|
|
|
82
112
|
- To enter an interactive Python prompt:
|
|
@@ -88,10 +118,10 @@ pixi run ipython
|
|
|
88
118
|
- To run individual parts of the lint suite separately:
|
|
89
119
|
|
|
90
120
|
```
|
|
91
|
-
pixi run pre-commit
|
|
92
|
-
pixi run pylint
|
|
93
|
-
pixi run mypy
|
|
94
|
-
pixi run pyright
|
|
121
|
+
pixi run -e lint pre-commit
|
|
122
|
+
pixi run -e lint pylint
|
|
123
|
+
pixi run -e lint mypy
|
|
124
|
+
pixi run -e lint pyright
|
|
95
125
|
```
|
|
96
126
|
|
|
97
127
|
Alternative environments are available with a subset of the dependencies and
|
|
@@ -100,5 +130,14 @@ tasks available in the `dev` environment:
|
|
|
100
130
|
```
|
|
101
131
|
pixi shell -e docs
|
|
102
132
|
pixi shell -e tests
|
|
133
|
+
pixi shell -e tests-backends
|
|
103
134
|
pixi shell -e lint
|
|
104
135
|
```
|
|
136
|
+
|
|
137
|
+
If you run on a host with CUDA hardware, you can enable extra tests:
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
pixi shell -e dev-cuda
|
|
141
|
+
pixi shell -e tests-cuda
|
|
142
|
+
pixi run -e tests-cuda tests
|
|
143
|
+
```
|