array-api-extra 0.1.0__tar.gz → 0.2.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 (37) hide show
  1. array_api_extra-0.2.0/.all-contributorsrc +148 -0
  2. {array_api_extra-0.1.0 → array_api_extra-0.2.0}/.github/workflows/cd.yml +1 -1
  3. {array_api_extra-0.1.0 → array_api_extra-0.2.0}/.github/workflows/ci.yml +8 -8
  4. array_api_extra-0.2.0/.github/workflows/dependabot-auto-merge.yml +23 -0
  5. array_api_extra-0.2.0/.github/workflows/docs-build.yml +20 -0
  6. array_api_extra-0.2.0/.github/workflows/docs-deploy.yml +32 -0
  7. {array_api_extra-0.1.0 → array_api_extra-0.2.0}/.pre-commit-config.yaml +0 -1
  8. array_api_extra-0.2.0/CONTRIBUTORS.md +31 -0
  9. array_api_extra-0.2.0/PKG-INFO +117 -0
  10. array_api_extra-0.2.0/README.md +61 -0
  11. {array_api_extra-0.1.0 → array_api_extra-0.2.0}/docs/api-reference.md +5 -0
  12. array_api_extra-0.2.0/docs/contributing.md +87 -0
  13. array_api_extra-0.2.0/docs/contributors.md +3 -0
  14. array_api_extra-0.2.0/docs/index.md +130 -0
  15. array_api_extra-0.2.0/pixi.lock +5442 -0
  16. {array_api_extra-0.1.0 → array_api_extra-0.2.0}/pyproject.toml +26 -20
  17. array_api_extra-0.2.0/src/array_api_extra/__init__.py +15 -0
  18. array_api_extra-0.2.0/src/array_api_extra/_funcs.py +484 -0
  19. array_api_extra-0.2.0/src/array_api_extra/_typing.py +8 -0
  20. array_api_extra-0.2.0/tests/test_funcs.py +282 -0
  21. array_api_extra-0.1.0/.readthedocs.yaml +0 -24
  22. array_api_extra-0.1.0/PKG-INFO +0 -85
  23. array_api_extra-0.1.0/README.md +0 -28
  24. array_api_extra-0.1.0/docs/index.md +0 -11
  25. array_api_extra-0.1.0/pixi.lock +0 -5519
  26. array_api_extra-0.1.0/src/array_api_extra/__init__.py +0 -7
  27. array_api_extra-0.1.0/src/array_api_extra/_funcs.py +0 -48
  28. array_api_extra-0.1.0/src/array_api_extra/_typing.py +0 -9
  29. array_api_extra-0.1.0/tests/test_funcs.py +0 -69
  30. {array_api_extra-0.1.0 → array_api_extra-0.2.0}/.gitattributes +0 -0
  31. {array_api_extra-0.1.0 → array_api_extra-0.2.0}/.github/dependabot.yml +0 -0
  32. {array_api_extra-0.1.0 → array_api_extra-0.2.0}/.gitignore +0 -0
  33. {array_api_extra-0.1.0 → array_api_extra-0.2.0}/LICENSE +0 -0
  34. {array_api_extra-0.1.0 → array_api_extra-0.2.0}/docs/conf.py +0 -0
  35. {array_api_extra-0.1.0 → array_api_extra-0.2.0}/docs/requirements.txt +0 -0
  36. {array_api_extra-0.1.0 → array_api_extra-0.2.0}/src/array_api_extra/py.typed +0 -0
  37. {array_api_extra-0.1.0 → array_api_extra-0.2.0}/tests/test_version.py +0 -0
@@ -0,0 +1,148 @@
1
+ {
2
+ "projectName": "array-api-extra",
3
+ "projectOwner": "data-apis",
4
+ "repoType": "github",
5
+ "repoHost": "https://github.com",
6
+ "files": [
7
+ "README.md", "CONTRIBUTORS.md"
8
+ ],
9
+ "imageSize": 100,
10
+ "commitType": "docs",
11
+ "commitConvention": "angular",
12
+ "contributorsPerLine": 7,
13
+ "contributors": [
14
+ {
15
+ "login": "lucascolley",
16
+ "name": "Lucas Colley",
17
+ "avatar_url": "https://avatars.githubusercontent.com/u/51488791?v=4",
18
+ "profile": "https://lucascolley.github.io/",
19
+ "contributions": [
20
+ "code",
21
+ "doc",
22
+ "example",
23
+ "ideas",
24
+ "infra",
25
+ "maintenance",
26
+ "tool",
27
+ "test",
28
+ "bug"
29
+ ]
30
+ },
31
+ {
32
+ "login": "mdhaber",
33
+ "name": "Matt Haberland",
34
+ "avatar_url": "https://avatars.githubusercontent.com/u/6570539?v=4",
35
+ "profile": "https://github.com/mdhaber",
36
+ "contributions": [
37
+ "code",
38
+ "ideas"
39
+ ]
40
+ },
41
+ {
42
+ "login": "j-bowhay",
43
+ "name": "Jake Bowhay",
44
+ "avatar_url": "https://avatars.githubusercontent.com/u/60778417?v=4",
45
+ "profile": "https://github.com/j-bowhay",
46
+ "contributions": [
47
+ "code",
48
+ "review"
49
+ ]
50
+ },
51
+ {
52
+ "login": "asmeurer",
53
+ "name": "Aaron Meurer",
54
+ "avatar_url": "https://avatars.githubusercontent.com/u/71486?v=4",
55
+ "profile": "https://github.com/asmeurer",
56
+ "contributions": [
57
+ "review",
58
+ "ideas",
59
+ "infra"
60
+ ]
61
+ },
62
+ {
63
+ "login": "betatim",
64
+ "name": "Tim Head",
65
+ "avatar_url": "https://avatars.githubusercontent.com/u/1448859?v=4",
66
+ "profile": "https://github.com/betatim",
67
+ "contributions": [
68
+ "ideas"
69
+ ]
70
+ },
71
+ {
72
+ "login": "kgryte",
73
+ "name": "Athan",
74
+ "avatar_url": "https://avatars.githubusercontent.com/u/2643044?v=4",
75
+ "profile": "https://github.com/stdlib-js/stdlib",
76
+ "contributions": [
77
+ "review",
78
+ "ideas"
79
+ ]
80
+ },
81
+ {
82
+ "login": "vnmabus",
83
+ "name": "Carlos Ramos Carreño",
84
+ "avatar_url": "https://avatars.githubusercontent.com/u/2364173?v=4",
85
+ "profile": "https://github.com/vnmabus",
86
+ "contributions": [
87
+ "ideas"
88
+ ]
89
+ },
90
+ {
91
+ "login": "rgommers",
92
+ "name": "Ralf Gommers",
93
+ "avatar_url": "https://avatars.githubusercontent.com/u/98330?v=4",
94
+ "profile": "https://github.com/rgommers/",
95
+ "contributions": [
96
+ "ideas",
97
+ "infra",
98
+ "review"
99
+ ]
100
+ },
101
+ {
102
+ "login": "jorenham",
103
+ "name": "Joren Hammudoglu",
104
+ "avatar_url": "https://avatars.githubusercontent.com/u/6208662?v=4",
105
+ "profile": "https://github.com/jorenham",
106
+ "contributions": [
107
+ "review"
108
+ ]
109
+ },
110
+ {
111
+ "login": "thomasjpfan",
112
+ "name": "Thomas J. Fan",
113
+ "avatar_url": "https://avatars.githubusercontent.com/u/5402633?v=4",
114
+ "profile": "https://www.thomasjpfan.com/",
115
+ "contributions": [
116
+ "ideas"
117
+ ]
118
+ },
119
+ {
120
+ "login": "izaid",
121
+ "name": "Irwin Zaid",
122
+ "avatar_url": "https://avatars.githubusercontent.com/u/482179?v=4",
123
+ "profile": "https://github.com/izaid",
124
+ "contributions": [
125
+ "ideas"
126
+ ]
127
+ },
128
+ {
129
+ "login": "jakirkham",
130
+ "name": "jakirkham",
131
+ "avatar_url": "https://avatars.githubusercontent.com/u/3019665?v=4",
132
+ "profile": "https://github.com/jakirkham",
133
+ "contributions": [
134
+ "code",
135
+ "review"
136
+ ]
137
+ },
138
+ {
139
+ "login": "tupui",
140
+ "name": "Pamphile Roy",
141
+ "avatar_url": "https://avatars.githubusercontent.com/u/23188539?v=4",
142
+ "profile": "https://github.com/tupui",
143
+ "contributions": [
144
+ "code"
145
+ ]
146
+ }
147
+ ]
148
+ }
@@ -37,7 +37,7 @@ jobs:
37
37
  path: dist
38
38
 
39
39
  - name: Generate artifact attestation for sdist and wheel
40
- uses: actions/attest-build-provenance@v1.4.3
40
+ uses: actions/attest-build-provenance@v1.4.4
41
41
  with:
42
42
  subject-path: "dist/*"
43
43
 
@@ -32,7 +32,7 @@ jobs:
32
32
  extra_args: --hook-stage manual --all-files
33
33
  - uses: prefix-dev/setup-pixi@v0.8.1
34
34
  with:
35
- pixi-version: v0.30.0
35
+ pixi-version: v0.37.0
36
36
  cache: true
37
37
  - name: Run Pylint & Mypy
38
38
  run: |
@@ -46,7 +46,7 @@ jobs:
46
46
  strategy:
47
47
  fail-fast: false
48
48
  matrix:
49
- environment: [ci-py309, ci-py312]
49
+ environment: [ci-py310, ci-py313]
50
50
  runs-on: [ubuntu-latest]
51
51
 
52
52
  steps:
@@ -56,14 +56,14 @@ jobs:
56
56
 
57
57
  - uses: prefix-dev/setup-pixi@v0.8.1
58
58
  with:
59
- pixi-version: v0.30.0
59
+ pixi-version: v0.37.0
60
60
  cache: true
61
61
  environments: ${{ matrix.environment }}
62
62
 
63
63
  - name: Test package
64
- run: pixi run -e ${{ matrix.environment }} test-ci
64
+ run: pixi run -e ${{ matrix.environment }} tests-ci
65
65
 
66
- # - name: Upload coverage report
67
- # uses: codecov/codecov-action@v4.5.0
68
- # with:
69
- # token: ${{ secrets.CODECOV_TOKEN }}
66
+ - name: Upload coverage report
67
+ uses: codecov/codecov-action@v4.5.0
68
+ with:
69
+ token: ${{ secrets.CODECOV_TOKEN }}
@@ -0,0 +1,23 @@
1
+ # https://docs.github.com/en/code-security/dependabot/working-with-dependabot/automating-dependabot-with-github-actions#approve-a-pull-request
2
+ name: Dependabot auto-merge
3
+ on: pull_request
4
+
5
+ permissions:
6
+ contents: write
7
+ pull-requests: write
8
+
9
+ jobs:
10
+ dependabot:
11
+ runs-on: ubuntu-latest
12
+ if: github.actor == 'dependabot[bot]'
13
+ steps:
14
+ - name: Dependabot metadata
15
+ id: metadata
16
+ uses: dependabot/fetch-metadata@v2
17
+ with:
18
+ github-token: "${{ secrets.GITHUB_TOKEN }}"
19
+ - name: Enable auto-merge for Dependabot PRs
20
+ run: gh pr merge --auto --merge "$PR_URL"
21
+ env:
22
+ PR_URL: ${{github.event.pull_request.html_url}}
23
+ GH_TOKEN: ${{secrets.GITHUB_TOKEN}}
@@ -0,0 +1,20 @@
1
+ name: Docs Build
2
+
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ docs-build:
7
+ runs-on: ubuntu-latest
8
+ steps:
9
+ - uses: actions/checkout@v4
10
+ - uses: prefix-dev/setup-pixi@v0.8.1
11
+ with:
12
+ pixi-version: v0.37.0
13
+ cache: true
14
+ - name: Build Docs
15
+ run: pixi run -e docs docs
16
+ - name: Upload Artifact
17
+ uses: actions/upload-artifact@v4
18
+ with:
19
+ name: docs-build
20
+ path: docs/build/
@@ -0,0 +1,32 @@
1
+ name: Docs Deploy
2
+
3
+ on:
4
+ workflow_run:
5
+ workflows: ["Docs Build"]
6
+ types: [completed]
7
+ branches:
8
+ - "main"
9
+
10
+ jobs:
11
+ docs-deploy:
12
+ runs-on: ubuntu-latest
13
+ if: ${{ github.event.workflow_run.event == 'push' }}
14
+ environment:
15
+ name: docs-deploy
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+ - name: Download Artifact
19
+ uses: dawidd6/action-download-artifact@v6
20
+ with:
21
+ workflow: docs-build.yml
22
+ name: docs-build
23
+ path: docs/build/
24
+
25
+ # Note, the gh-pages deployment requires setting up a SSH deploy key.
26
+ # See
27
+ # https://github.com/JamesIves/github-pages-deploy-action/tree/dev#using-an-ssh-deploy-key-
28
+ - name: Deploy
29
+ uses: JamesIves/github-pages-deploy-action@v4
30
+ with:
31
+ folder: docs/build/
32
+ ssh-key: ${{ secrets.DEPLOY_KEY }}
@@ -78,4 +78,3 @@ repos:
78
78
  hooks:
79
79
  - id: check-dependabot
80
80
  - id: check-github-workflows
81
- - id: check-readthedocs
@@ -0,0 +1,31 @@
1
+ ## Contributors
2
+
3
+ <!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
4
+ <!-- prettier-ignore-start -->
5
+ <!-- markdownlint-disable -->
6
+ <table>
7
+ <tbody>
8
+ <tr>
9
+ <td align="center" valign="top" width="14.28%"><a href="https://lucascolley.github.io/"><img src="https://avatars.githubusercontent.com/u/51488791?v=4?s=100" width="100px;" alt="Lucas Colley"/><br /><sub><b>Lucas Colley</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/commits?author=lucascolley" title="Code">💻</a> <a href="https://github.com/data-apis/array-api-extra/commits?author=lucascolley" title="Documentation">📖</a> <a href="#example-lucascolley" title="Examples">💡</a> <a href="#ideas-lucascolley" title="Ideas, Planning, & Feedback">🤔</a> <a href="#infra-lucascolley" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#maintenance-lucascolley" title="Maintenance">🚧</a> <a href="#tool-lucascolley" title="Tools">🔧</a> <a href="https://github.com/data-apis/array-api-extra/commits?author=lucascolley" title="Tests">⚠️</a> <a href="https://github.com/data-apis/array-api-extra/issues?q=author%3Alucascolley" title="Bug reports">🐛</a></td>
10
+ <td align="center" valign="top" width="14.28%"><a href="https://github.com/mdhaber"><img src="https://avatars.githubusercontent.com/u/6570539?v=4?s=100" width="100px;" alt="Matt Haberland"/><br /><sub><b>Matt Haberland</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/commits?author=mdhaber" title="Code">💻</a> <a href="#ideas-mdhaber" title="Ideas, Planning, & Feedback">🤔</a></td>
11
+ <td align="center" valign="top" width="14.28%"><a href="https://github.com/j-bowhay"><img src="https://avatars.githubusercontent.com/u/60778417?v=4?s=100" width="100px;" alt="Jake Bowhay"/><br /><sub><b>Jake Bowhay</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/commits?author=j-bowhay" title="Code">💻</a> <a href="https://github.com/data-apis/array-api-extra/pulls?q=is%3Apr+reviewed-by%3Aj-bowhay" title="Reviewed Pull Requests">👀</a></td>
12
+ <td align="center" valign="top" width="14.28%"><a href="https://github.com/asmeurer"><img src="https://avatars.githubusercontent.com/u/71486?v=4?s=100" width="100px;" alt="Aaron Meurer"/><br /><sub><b>Aaron Meurer</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/pulls?q=is%3Apr+reviewed-by%3Aasmeurer" title="Reviewed Pull Requests">👀</a> <a href="#ideas-asmeurer" title="Ideas, Planning, & Feedback">🤔</a> <a href="#infra-asmeurer" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
13
+ <td align="center" valign="top" width="14.28%"><a href="https://github.com/betatim"><img src="https://avatars.githubusercontent.com/u/1448859?v=4?s=100" width="100px;" alt="Tim Head"/><br /><sub><b>Tim Head</b></sub></a><br /><a href="#ideas-betatim" title="Ideas, Planning, & Feedback">🤔</a></td>
14
+ <td align="center" valign="top" width="14.28%"><a href="https://github.com/stdlib-js/stdlib"><img src="https://avatars.githubusercontent.com/u/2643044?v=4?s=100" width="100px;" alt="Athan"/><br /><sub><b>Athan</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/pulls?q=is%3Apr+reviewed-by%3Akgryte" title="Reviewed Pull Requests">👀</a> <a href="#ideas-kgryte" title="Ideas, Planning, & Feedback">🤔</a></td>
15
+ <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>
16
+ </tr>
17
+ <tr>
18
+ <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>
19
+ <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>
20
+ <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>
21
+ <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>
22
+ <td align="center" valign="top" width="14.28%"><a href="https://github.com/jakirkham"><img src="https://avatars.githubusercontent.com/u/3019665?v=4?s=100" width="100px;" alt="jakirkham"/><br /><sub><b>jakirkham</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/commits?author=jakirkham" title="Code">💻</a> <a href="https://github.com/data-apis/array-api-extra/pulls?q=is%3Apr+reviewed-by%3Ajakirkham" title="Reviewed Pull Requests">👀</a></td>
23
+ <td align="center" valign="top" width="14.28%"><a href="https://github.com/tupui"><img src="https://avatars.githubusercontent.com/u/23188539?v=4?s=100" width="100px;" alt="Pamphile Roy"/><br /><sub><b>Pamphile Roy</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/commits?author=tupui" title="Code">💻</a></td>
24
+ </tr>
25
+ </tbody>
26
+ </table>
27
+
28
+ <!-- markdownlint-restore -->
29
+ <!-- prettier-ignore-end -->
30
+
31
+ <!-- ALL-CONTRIBUTORS-LIST:END -->
@@ -0,0 +1,117 @@
1
+ Metadata-Version: 2.3
2
+ Name: array-api-extra
3
+ Version: 0.2.0
4
+ Summary: Extra array functions built on top of the array API standard.
5
+ Project-URL: Homepage, https://github.com/data-apis/array-api-extra
6
+ Project-URL: Bug Tracker, https://github.com/data-apis/array-api-extra/issues
7
+ Project-URL: Discussions, https://github.com/data-apis/array-api-extra/discussions
8
+ Project-URL: Changelog, https://github.com/data-apis/array-api-extra/releases
9
+ Author: Open Source Contributors
10
+ Author-email: Lucas Colley <lucas.colley8@gmail.com>
11
+ License: MIT License
12
+
13
+ Copyright (c) 2024 Consortium for Python Data API Standards
14
+
15
+ Permission is hereby granted, free of charge, to any person obtaining a copy
16
+ of this software and associated documentation files (the "Software"), to deal
17
+ in the Software without restriction, including without limitation the rights
18
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
19
+ copies of the Software, and to permit persons to whom the Software is
20
+ furnished to do so, subject to the following conditions:
21
+
22
+ The above copyright notice and this permission notice shall be included in all
23
+ copies or substantial portions of the Software.
24
+
25
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
26
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
27
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
28
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
29
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
30
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
31
+ SOFTWARE.
32
+ Classifier: Intended Audience :: Developers
33
+ Classifier: License :: OSI Approved :: MIT License
34
+ Classifier: Operating System :: OS Independent
35
+ Classifier: Programming Language :: Python
36
+ Classifier: Programming Language :: Python :: 3
37
+ Classifier: Programming Language :: Python :: 3 :: Only
38
+ Classifier: Programming Language :: Python :: 3.10
39
+ Classifier: Programming Language :: Python :: 3.11
40
+ Classifier: Programming Language :: Python :: 3.12
41
+ Classifier: Programming Language :: Python :: 3.13
42
+ Classifier: Typing :: Typed
43
+ Requires-Python: >=3.10
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
+ Description-Content-Type: text/markdown
56
+
57
+ # array-api-extra
58
+
59
+ [![Actions Status][actions-badge]][actions-link]
60
+ [![docs - here!][docs-badge]][docs-link]
61
+ [![Pixi Badge](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/prefix-dev/pixi/main/assets/badge/v0.json)](https://pixi.sh)
62
+ [![All Contributors](https://img.shields.io/github/all-contributors/data-apis/array-api-extra?color=ee8449&style=flat-square)](#contributors)
63
+
64
+ [![PyPI version][pypi-version]][pypi-link]
65
+ [![Conda-Forge][conda-badge]][conda-link]
66
+ [![PyPI platforms][pypi-platforms]][pypi-link]
67
+
68
+ <!-- SPHINX-START -->
69
+
70
+ <!-- prettier-ignore-start -->
71
+ [actions-badge]: https://github.com/data-apis/array-api-extra/workflows/CI/badge.svg
72
+ [actions-link]: https://github.com/data-apis/array-api-extra/actions
73
+ [conda-badge]: https://img.shields.io/conda/vn/conda-forge/array-api-extra
74
+ [conda-link]: https://github.com/conda-forge/array-api-extra-feedstock
75
+ [github-discussions-badge]: https://img.shields.io/static/v1?label=Discussions&message=Ask&color=blue&logo=github
76
+ [github-discussions-link]: https://github.com/data-apis/array-api-extra/discussions
77
+ [pypi-link]: https://pypi.org/project/array-api-extra/
78
+ [pypi-platforms]: https://img.shields.io/pypi/pyversions/array-api-extra
79
+ [pypi-version]: https://img.shields.io/pypi/v/array-api-extra
80
+ [docs-badge]: https://img.shields.io/badge/docs-here!-2ea44f
81
+ [docs-link]: https://data-apis.org/array-api-extra/index.html
82
+
83
+ <!-- prettier-ignore-end -->
84
+
85
+ Extra array functions built on top of the array API standard.
86
+
87
+ ## Contributors
88
+
89
+ <!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
90
+ <!-- prettier-ignore-start -->
91
+ <!-- markdownlint-disable -->
92
+ <table>
93
+ <tbody>
94
+ <tr>
95
+ <td align="center" valign="top" width="14.28%"><a href="https://lucascolley.github.io/"><img src="https://avatars.githubusercontent.com/u/51488791?v=4?s=100" width="100px;" alt="Lucas Colley"/><br /><sub><b>Lucas Colley</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/commits?author=lucascolley" title="Code">💻</a> <a href="https://github.com/data-apis/array-api-extra/commits?author=lucascolley" title="Documentation">📖</a> <a href="#example-lucascolley" title="Examples">💡</a> <a href="#ideas-lucascolley" title="Ideas, Planning, & Feedback">🤔</a> <a href="#infra-lucascolley" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#maintenance-lucascolley" title="Maintenance">🚧</a> <a href="#tool-lucascolley" title="Tools">🔧</a> <a href="https://github.com/data-apis/array-api-extra/commits?author=lucascolley" title="Tests">⚠️</a> <a href="https://github.com/data-apis/array-api-extra/issues?q=author%3Alucascolley" title="Bug reports">🐛</a></td>
96
+ <td align="center" valign="top" width="14.28%"><a href="https://github.com/mdhaber"><img src="https://avatars.githubusercontent.com/u/6570539?v=4?s=100" width="100px;" alt="Matt Haberland"/><br /><sub><b>Matt Haberland</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/commits?author=mdhaber" title="Code">💻</a> <a href="#ideas-mdhaber" title="Ideas, Planning, & Feedback">🤔</a></td>
97
+ <td align="center" valign="top" width="14.28%"><a href="https://github.com/j-bowhay"><img src="https://avatars.githubusercontent.com/u/60778417?v=4?s=100" width="100px;" alt="Jake Bowhay"/><br /><sub><b>Jake Bowhay</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/commits?author=j-bowhay" title="Code">💻</a> <a href="https://github.com/data-apis/array-api-extra/pulls?q=is%3Apr+reviewed-by%3Aj-bowhay" title="Reviewed Pull Requests">👀</a></td>
98
+ <td align="center" valign="top" width="14.28%"><a href="https://github.com/asmeurer"><img src="https://avatars.githubusercontent.com/u/71486?v=4?s=100" width="100px;" alt="Aaron Meurer"/><br /><sub><b>Aaron Meurer</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/pulls?q=is%3Apr+reviewed-by%3Aasmeurer" title="Reviewed Pull Requests">👀</a> <a href="#ideas-asmeurer" title="Ideas, Planning, & Feedback">🤔</a> <a href="#infra-asmeurer" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
99
+ <td align="center" valign="top" width="14.28%"><a href="https://github.com/betatim"><img src="https://avatars.githubusercontent.com/u/1448859?v=4?s=100" width="100px;" alt="Tim Head"/><br /><sub><b>Tim Head</b></sub></a><br /><a href="#ideas-betatim" title="Ideas, Planning, & Feedback">🤔</a></td>
100
+ <td align="center" valign="top" width="14.28%"><a href="https://github.com/stdlib-js/stdlib"><img src="https://avatars.githubusercontent.com/u/2643044?v=4?s=100" width="100px;" alt="Athan"/><br /><sub><b>Athan</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/pulls?q=is%3Apr+reviewed-by%3Akgryte" title="Reviewed Pull Requests">👀</a> <a href="#ideas-kgryte" title="Ideas, Planning, & Feedback">🤔</a></td>
101
+ <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>
102
+ </tr>
103
+ <tr>
104
+ <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>
105
+ <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>
106
+ <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>
107
+ <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>
108
+ <td align="center" valign="top" width="14.28%"><a href="https://github.com/jakirkham"><img src="https://avatars.githubusercontent.com/u/3019665?v=4?s=100" width="100px;" alt="jakirkham"/><br /><sub><b>jakirkham</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/commits?author=jakirkham" title="Code">💻</a> <a href="https://github.com/data-apis/array-api-extra/pulls?q=is%3Apr+reviewed-by%3Ajakirkham" title="Reviewed Pull Requests">👀</a></td>
109
+ <td align="center" valign="top" width="14.28%"><a href="https://github.com/tupui"><img src="https://avatars.githubusercontent.com/u/23188539?v=4?s=100" width="100px;" alt="Pamphile Roy"/><br /><sub><b>Pamphile Roy</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/commits?author=tupui" title="Code">💻</a></td>
110
+ </tr>
111
+ </tbody>
112
+ </table>
113
+
114
+ <!-- markdownlint-restore -->
115
+ <!-- prettier-ignore-end -->
116
+
117
+ <!-- ALL-CONTRIBUTORS-LIST:END -->
@@ -0,0 +1,61 @@
1
+ # array-api-extra
2
+
3
+ [![Actions Status][actions-badge]][actions-link]
4
+ [![docs - here!][docs-badge]][docs-link]
5
+ [![Pixi Badge](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/prefix-dev/pixi/main/assets/badge/v0.json)](https://pixi.sh)
6
+ [![All Contributors](https://img.shields.io/github/all-contributors/data-apis/array-api-extra?color=ee8449&style=flat-square)](#contributors)
7
+
8
+ [![PyPI version][pypi-version]][pypi-link]
9
+ [![Conda-Forge][conda-badge]][conda-link]
10
+ [![PyPI platforms][pypi-platforms]][pypi-link]
11
+
12
+ <!-- SPHINX-START -->
13
+
14
+ <!-- prettier-ignore-start -->
15
+ [actions-badge]: https://github.com/data-apis/array-api-extra/workflows/CI/badge.svg
16
+ [actions-link]: https://github.com/data-apis/array-api-extra/actions
17
+ [conda-badge]: https://img.shields.io/conda/vn/conda-forge/array-api-extra
18
+ [conda-link]: https://github.com/conda-forge/array-api-extra-feedstock
19
+ [github-discussions-badge]: https://img.shields.io/static/v1?label=Discussions&message=Ask&color=blue&logo=github
20
+ [github-discussions-link]: https://github.com/data-apis/array-api-extra/discussions
21
+ [pypi-link]: https://pypi.org/project/array-api-extra/
22
+ [pypi-platforms]: https://img.shields.io/pypi/pyversions/array-api-extra
23
+ [pypi-version]: https://img.shields.io/pypi/v/array-api-extra
24
+ [docs-badge]: https://img.shields.io/badge/docs-here!-2ea44f
25
+ [docs-link]: https://data-apis.org/array-api-extra/index.html
26
+
27
+ <!-- prettier-ignore-end -->
28
+
29
+ Extra array functions built on top of the array API standard.
30
+
31
+ ## Contributors
32
+
33
+ <!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
34
+ <!-- prettier-ignore-start -->
35
+ <!-- markdownlint-disable -->
36
+ <table>
37
+ <tbody>
38
+ <tr>
39
+ <td align="center" valign="top" width="14.28%"><a href="https://lucascolley.github.io/"><img src="https://avatars.githubusercontent.com/u/51488791?v=4?s=100" width="100px;" alt="Lucas Colley"/><br /><sub><b>Lucas Colley</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/commits?author=lucascolley" title="Code">💻</a> <a href="https://github.com/data-apis/array-api-extra/commits?author=lucascolley" title="Documentation">📖</a> <a href="#example-lucascolley" title="Examples">💡</a> <a href="#ideas-lucascolley" title="Ideas, Planning, & Feedback">🤔</a> <a href="#infra-lucascolley" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#maintenance-lucascolley" title="Maintenance">🚧</a> <a href="#tool-lucascolley" title="Tools">🔧</a> <a href="https://github.com/data-apis/array-api-extra/commits?author=lucascolley" title="Tests">⚠️</a> <a href="https://github.com/data-apis/array-api-extra/issues?q=author%3Alucascolley" title="Bug reports">🐛</a></td>
40
+ <td align="center" valign="top" width="14.28%"><a href="https://github.com/mdhaber"><img src="https://avatars.githubusercontent.com/u/6570539?v=4?s=100" width="100px;" alt="Matt Haberland"/><br /><sub><b>Matt Haberland</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/commits?author=mdhaber" title="Code">💻</a> <a href="#ideas-mdhaber" title="Ideas, Planning, & Feedback">🤔</a></td>
41
+ <td align="center" valign="top" width="14.28%"><a href="https://github.com/j-bowhay"><img src="https://avatars.githubusercontent.com/u/60778417?v=4?s=100" width="100px;" alt="Jake Bowhay"/><br /><sub><b>Jake Bowhay</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/commits?author=j-bowhay" title="Code">💻</a> <a href="https://github.com/data-apis/array-api-extra/pulls?q=is%3Apr+reviewed-by%3Aj-bowhay" title="Reviewed Pull Requests">👀</a></td>
42
+ <td align="center" valign="top" width="14.28%"><a href="https://github.com/asmeurer"><img src="https://avatars.githubusercontent.com/u/71486?v=4?s=100" width="100px;" alt="Aaron Meurer"/><br /><sub><b>Aaron Meurer</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/pulls?q=is%3Apr+reviewed-by%3Aasmeurer" title="Reviewed Pull Requests">👀</a> <a href="#ideas-asmeurer" title="Ideas, Planning, & Feedback">🤔</a> <a href="#infra-asmeurer" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
43
+ <td align="center" valign="top" width="14.28%"><a href="https://github.com/betatim"><img src="https://avatars.githubusercontent.com/u/1448859?v=4?s=100" width="100px;" alt="Tim Head"/><br /><sub><b>Tim Head</b></sub></a><br /><a href="#ideas-betatim" title="Ideas, Planning, & Feedback">🤔</a></td>
44
+ <td align="center" valign="top" width="14.28%"><a href="https://github.com/stdlib-js/stdlib"><img src="https://avatars.githubusercontent.com/u/2643044?v=4?s=100" width="100px;" alt="Athan"/><br /><sub><b>Athan</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/pulls?q=is%3Apr+reviewed-by%3Akgryte" title="Reviewed Pull Requests">👀</a> <a href="#ideas-kgryte" title="Ideas, Planning, & Feedback">🤔</a></td>
45
+ <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>
46
+ </tr>
47
+ <tr>
48
+ <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>
49
+ <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>
50
+ <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>
51
+ <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>
52
+ <td align="center" valign="top" width="14.28%"><a href="https://github.com/jakirkham"><img src="https://avatars.githubusercontent.com/u/3019665?v=4?s=100" width="100px;" alt="jakirkham"/><br /><sub><b>jakirkham</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/commits?author=jakirkham" title="Code">💻</a> <a href="https://github.com/data-apis/array-api-extra/pulls?q=is%3Apr+reviewed-by%3Ajakirkham" title="Reviewed Pull Requests">👀</a></td>
53
+ <td align="center" valign="top" width="14.28%"><a href="https://github.com/tupui"><img src="https://avatars.githubusercontent.com/u/23188539?v=4?s=100" width="100px;" alt="Pamphile Roy"/><br /><sub><b>Pamphile Roy</b></sub></a><br /><a href="https://github.com/data-apis/array-api-extra/commits?author=tupui" title="Code">💻</a></td>
54
+ </tr>
55
+ </tbody>
56
+ </table>
57
+
58
+ <!-- markdownlint-restore -->
59
+ <!-- prettier-ignore-end -->
60
+
61
+ <!-- ALL-CONTRIBUTORS-LIST:END -->
@@ -7,4 +7,9 @@
7
7
  :toctree: generated
8
8
 
9
9
  atleast_nd
10
+ cov
11
+ create_diagonal
12
+ expand_dims
13
+ kron
14
+ sinc
10
15
  ```
@@ -0,0 +1,87 @@
1
+ # Contributing
2
+
3
+ Contributions are welcome from any "array-consuming" library contributors who
4
+ have found themselves writing private array-agnostic functions in the process of
5
+ converting code to consume the standard!
6
+
7
+ ## How to contribute a function
8
+
9
+ - Add the implementation of your function to `src/array_api_extra/_funcs.py`.
10
+ - Ensure that your function includes type annotations and a
11
+ [numpydoc-style docstring](https://numpydoc.readthedocs.io/en/latest/format.html).
12
+ - Add your function to `__all__` at the top of the file.
13
+ - Import your function to `src/array_api_extra/__init__.py` and add it to
14
+ `__all__` there.
15
+ - Add a test class for your function in `tests/test_funcs.py`.
16
+ - Add your function to `docs/api-reference.md`.
17
+ - [Make a PR!](https://github.com/data-apis/array-api-extra/pulls)
18
+
19
+ ## Development workflow
20
+
21
+ If you are an experienced contributor to Python packages, feel free to develop
22
+ however you feel comfortable! However, if you would like some guidance,
23
+ development of array-api-extra is made easy with
24
+ [Pixi](https://pixi.sh/latest/):
25
+
26
+ - [Clone the repository](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository)
27
+ at <https://github.com/data-apis/array-api-extra>.
28
+ - `cd array-api-extra`.
29
+ - [Install Pixi](https://pixi.sh/latest/#installation).
30
+ - To enter a development environment:
31
+
32
+ ```
33
+ pixi shell -e dev
34
+ ```
35
+
36
+ - To run the tests:
37
+
38
+ ```
39
+ pixi run tests
40
+ ```
41
+
42
+ - To build the docs locally:
43
+
44
+ ```
45
+ pixi run docs
46
+ ```
47
+
48
+ - To open and preview the locally-built docs:
49
+
50
+ ```
51
+ pixi run open-docs
52
+ ```
53
+
54
+ - To install a [pre-commit](https://pre-commit.com) hook:
55
+
56
+ ```
57
+ pixi run pre-commit-install
58
+ ```
59
+
60
+ - To run the lint suite:
61
+
62
+ ```
63
+ pixi run lint
64
+ ```
65
+
66
+ - To enter an interactive Python prompt:
67
+
68
+ ```
69
+ pixi run ipython
70
+ ```
71
+
72
+ - To run individual parts of the lint suite separately:
73
+
74
+ ```
75
+ pixi run pre-commit
76
+ pixi run pylint
77
+ pixi run mypy
78
+ ```
79
+
80
+ Alternative environments are available with a subset of the dependencies and
81
+ tasks available in the `dev` environment:
82
+
83
+ ```
84
+ pixi shell -e docs
85
+ pixi shell -e tests
86
+ pixi shell -e lint
87
+ ```
@@ -0,0 +1,3 @@
1
+ ```{include} ../CONTRIBUTORS.md
2
+
3
+ ```