Skip to content

Commit 1a53432

Browse files
committed
first commit
0 parents  commit 1a53432

140 files changed

Lines changed: 5599 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.editorconfig

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
root = true
2+
3+
[*]
4+
indent_style = space
5+
indent_size = 4
6+
end_of_line = lf
7+
charset = utf-8
8+
trim_trailing_whitespace = true
9+
insert_final_newline = true
10+
11+
[*.{yml,yaml}]
12+
indent_size = 2
13+
14+
[Makefile]
15+
indent_style = tab

.github/pull_request_template.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<!--
2+
To add a new package to the list, please add a `meta.yaml` file to the `packages` directory and
3+
copy the checklist from the README here and fill it out.
4+
-->

.github/workflows/make-json.yml

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
name: Make JSON
2+
on:
3+
pull_request:
4+
branches: [main]
5+
push:
6+
branches: [main]
7+
8+
concurrency:
9+
group: ${{ github.workflow }}-${{ github.ref }}
10+
cancel-in-progress: true
11+
12+
jobs:
13+
mkjson:
14+
runs-on: ubuntu-latest
15+
steps:
16+
- uses: actions/checkout@v5
17+
- uses: astral-sh/setup-uv@v7
18+
- name: Execute validation script and create output directory
19+
run: |
20+
uvx --from ./scripts validate-registry --registry-dir packages --outdir=build
21+
env:
22+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
23+
FORCE_COLOR: "1"
24+
COLUMNS: "150"
25+
- name: Upload GitHub Pages artifact
26+
uses: actions/upload-pages-artifact@v4
27+
with:
28+
path: "build"
29+
30+
deploy:
31+
runs-on: ubuntu-latest
32+
needs: mkjson
33+
34+
# Grant GITHUB_TOKEN the permissions required to make a Pages deployment
35+
permissions:
36+
pages: write # to deploy to Pages
37+
id-token: write
38+
39+
environment:
40+
name: github-pages
41+
url: ${{ steps.deployment.outputs.page_url }}
42+
43+
if: github.ref == 'refs/heads/main'
44+
steps:
45+
- name: Deploy to GitHub Pages
46+
id: deployment
47+
uses: actions/deploy-pages@v4
48+
- name: Trigger website build
49+
run: |
50+
curl -XPOST \
51+
-u "scverse-bot:${{ secrets.BOT_GH_TOKEN }}" \
52+
-H "Accept: application/vnd.github.everest-preview+json" \
53+
-H "Content-Type: application/json" \
54+
https://api.github.com/repos/scverse/scverse.github.io/actions/workflows/gh-pages.yml/dispatches \
55+
--data '{"ref": "main"}'
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
name: Register template repos
2+
3+
on:
4+
schedule:
5+
# Twice a month: https://crontab.guru/#0_5_1,15_*_*
6+
- cron: "0 5 1,15 * *"
7+
workflow_dispatch:
8+
9+
jobs:
10+
register-template-repos:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- uses: actions/checkout@v5
14+
with:
15+
token: ${{ secrets.BOT_GH_TOKEN }}
16+
- name: Install uv
17+
uses: astral-sh/setup-uv@v7
18+
- name: Update template repo registry
19+
run: uvx --from ./scripts register-template-repos template-repos.yml
20+
env:
21+
GITHUB_TOKEN: "${{ secrets.BOT_GH_TOKEN }}"
22+
FORCE_COLOR: "1"
23+
COLUMNS: "150"
24+
- uses: EndBug/add-and-commit@v9
25+
with:
26+
add: ./template-repos.yml
27+
author_name: scverse-bot
28+
author_email: core-team@scverse.org
29+
message: "Updated template-repos.yml"
30+
push: true
31+
- name: Show diff
32+
run: git diff HEAD~1

.gitignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
.DS_STORE
2+
__pycache__/
3+
.*cache/
4+
5+
/.vscode/
6+
.venv
7+
schema.pyi

.pre-commit-config.yaml

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
fail_fast: false
2+
default_language_version:
3+
python: python3
4+
default_stages:
5+
- pre-commit
6+
- pre-push
7+
minimum_pre_commit_version: 2.16.0
8+
repos:
9+
# all files
10+
- repo: https://github.com/pre-commit/pre-commit-hooks
11+
rev: v6.0.0
12+
hooks:
13+
- id: detect-private-key
14+
- id: check-ast
15+
- id: end-of-file-fixer
16+
- id: mixed-line-ending
17+
args: [--fix=lf]
18+
- id: trailing-whitespace
19+
- id: check-case-conflict
20+
- repo: https://github.com/rbubley/mirrors-prettier
21+
rev: v3.7.4
22+
hooks:
23+
- id: prettier
24+
# package metadata
25+
- repo: https://github.com/python-jsonschema/check-jsonschema
26+
rev: 0.36.0
27+
hooks:
28+
- id: check-jsonschema
29+
files: "scripts/src/ecosystem_scripts/schema.json"
30+
args: ["--check-metaschema"]
31+
- repo: https://github.com/python-jsonschema/check-jsonschema
32+
rev: 0.36.0
33+
hooks:
34+
- id: check-jsonschema
35+
files: "packages/.*/meta.yaml"
36+
args: ["--schemafile", "scripts/src/ecosystem_scripts/schema.json"]
37+
- repo: local
38+
hooks:
39+
- id: forbid-to-commit
40+
name: Check files in `packages` directory
41+
entry: |
42+
Only `meta.yaml` and logo files are permitted in the packages directory
43+
language: fail
44+
files: "^packages/.*$"
45+
exclude: "^packages/.*/(meta.yaml|logo\\..*)$"
46+
# scripts
47+
- repo: https://github.com/astral-sh/ruff-pre-commit
48+
rev: v0.14.10
49+
hooks:
50+
- id: ruff-check
51+
args: [--fix, --exit-non-zero-on-fix]
52+
files: ^scripts/.*$
53+
- id: ruff-format
54+
files: ^scripts/.*$
55+
- repo: https://github.com/tox-dev/pyproject-fmt
56+
rev: v2.11.1
57+
hooks:
58+
- id: pyproject-fmt
59+
- repo: https://github.com/camptocamp/jsonschema-gentypes
60+
rev: "2.13.0"
61+
hooks:
62+
- id: jsonschema-gentypes
63+
args:
64+
- --json-schema=scripts/src/ecosystem_scripts/schema.json
65+
- --python=scripts/src/ecosystem_scripts/schema.pyi
66+
files: ^scripts/.*/schema.json$
67+
- repo: https://github.com/pre-commit/mirrors-mypy
68+
rev: v1.19.1
69+
hooks:
70+
- id: mypy
71+
args: [--config-file=scripts/pyproject.toml, scripts]
72+
pass_filenames: false
73+
additional_dependencies:
74+
- httpx
75+
- httpx-retries
76+
- types-jsonschema
77+
- pillow
78+
- pygithub
79+
- types-PyYAML
80+
- rich
81+
files: ^scripts/.*$

LICENSE

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
BSD 3-Clause License
2+
3+
Copyright (c) 2022, scverse
4+
All rights reserved.
5+
6+
Redistribution and use in source and binary forms, with or without
7+
modification, are permitted provided that the following conditions are met:
8+
9+
1. Redistributions of source code must retain the above copyright notice, this
10+
list of conditions and the following disclaimer.
11+
12+
2. Redistributions in binary form must reproduce the above copyright notice,
13+
this list of conditions and the following disclaimer in the documentation
14+
and/or other materials provided with the distribution.
15+
16+
3. Neither the name of the copyright holder nor the names of its
17+
contributors may be used to endorse or promote products derived from
18+
this software without specific prior written permission.
19+
20+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

README.md

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
# Scverse Ecosystem Packages
2+
3+
This repository contains the list of scverse ecosystem packages that are displayed on scverse.org and are part of
4+
the scverse® project.
5+
The goal is to increase visibility of ecosystem packages and make it easier for users to find appropriate software.
6+
Registered ecosystem packages can also get their own tag to use on the [scverse forum](https://discourse.scverse.org) for user discussion.
7+
Authors of these packages can be added to the [scverse github organization](https://github.com/scverse).
8+
In the future, we may also test releases of core packages against the test suites of ecosystem packages.
9+
10+
If a package is part of this list, it means it fulfills certain minimum requirements as outlined below.
11+
It **does not** imply endorsement or that an in-depth review has been performed.
12+
13+
**Hint:** If you want to receive notifications about new ecosystem packages, simply use GitHub's "watch" functionality for this repository.
14+
15+
## How can my package become part of the list?
16+
17+
Submit a pull-request adding a `meta.yaml` file for your package to the `packages` directory.
18+
19+
- Please copy the checklist from below into the pull request description and answer all questions.
20+
- Please refer to other entries for examples
21+
- The full definition of available fields is available in [`schema.json`](scripts/src/ecosystem_scripts/schema.json)
22+
- You can add a logo in svg/png/webp format if you like. Currently it is not used on our website, though.
23+
24+
## What are the requirements for an ecosystem package?
25+
26+
For a package to become an approved ecosystem package, it must fulfill all mandatory requirements from the checklist below.
27+
28+
Ecosystem packages can be written in non-Python languages as long as they fulfill the above requirements.
29+
30+
If you cannot or do not want to comply with these requirements, you are still free to make your package interoperable with scverse by using our datastructures, but we will not list your package on our ecosystem page.
31+
32+
## Checklist for adding packages
33+
34+
### Mandatory
35+
36+
Name of the tool: XXX
37+
38+
Short description: XXX
39+
40+
How does the package use scverse data structures (please describe in a few sentences): XXX
41+
42+
- [ ] The code is publicly available under an [OSI-approved](https://opensource.org/licenses/alphabetical) license
43+
- [ ] The package provides versioned releases
44+
- [ ] The package can be installed from a standard registry (e.g. PyPI, conda-forge, bioconda)
45+
- [ ] Automated tests cover essential functions of the package and a reasonable range of inputs and conditions [^1]
46+
- [ ] Continuous integration (CI) automatically executes these tests on each push or pull request [^2]
47+
- [ ] The package provides API documentation via a website or README[^3]
48+
- [ ] The package uses scverse datastructures where appropriate (i.e. AnnData, MuData or SpatialData and their modality-specific extensions)
49+
- [ ] I am an author or maintainer of the tool and agree on listing the package on the scverse website
50+
51+
### Recommended
52+
53+
- [ ] Please announce this package on scverse communication channels (zulip, discourse, twitter)
54+
- [ ] Please tag the author(s) these announcements. Handles (e.g. `@scverse_team`) to include are:
55+
- Zulip:
56+
- Discourse:
57+
- Mastodon:
58+
- Bluesky:
59+
- Twitter:
60+
61+
- [ ] The package provides tutorials (or "vignettes") that help getting users started quickly
62+
- [ ] The package uses the [scverse cookiecutter template](https://github.com/scverse/cookiecutter-scverse).
63+
64+
[^1]: We recommend thtat tests cover at least all user facing (public) functions. Minimal tests ensure that the function does not fail on an example data set. Ideally, tests also ensure the correctness of the results, e.g. by comparing against a snapshot.
65+
66+
[^2]: Continuous integration means that software tests are automatically executed on every push to the git repository. This guarantees they are always run and that they are run in a clean environment. Scverse ecosystem packages most commonly use [GitHub Actions](https://github.com/features/actions) for CI. For an example, check out our [cookiecutter template](https://github.com/scverse/cookiecutter-scverse).
67+
68+
[^3]: By API documentation, we mean an overview of _all_ public functions provided a package, with documentation of their parameters. For an example, see the [Scanpy documentation](https://scanpy.readthedocs.io/en/stable/api/preprocessing.html). In simple cases, this can be done manually in a README file. For anything more complex, we recommend the [Sphinx Autodoc plugin](https://www.sphinx-doc.org/en/master/usage/extensions/autodoc.html)

0 commit comments

Comments
 (0)