From 30b23102f5a8b6fa4a0f74aa69097f6a95f6fb7a Mon Sep 17 00:00:00 2001 From: "scverse-pr-creator[bot]" <272303624+scverse-pr-creator[bot]@users.noreply.github.com> Date: Mon, 2 Nov 2026 21:28:51 +0000 Subject: [PATCH 1/3] Update instance repo from cookiecutter template --- .cruft.json | 4 ++-- .pre-commit-config.yaml | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.cruft.json b/.cruft.json index 72c6d78..e942f3a 100644 --- a/.cruft.json +++ b/.cruft.json @@ -1,6 +1,6 @@ { "template": "/home/runner/work/cookiecutter-scverse/cookiecutter-scverse", - "commit": "be7aa668a1f275bf9555e048fb2a3e2a02704778", + "commit": "2a1acc65b4307a9c44fbfdab82807133ebe6b16f", "checkout": null, "context": { "cookiecutter": { @@ -37,7 +37,7 @@ "trim_blocks": true }, "_template": "/home/runner/work/cookiecutter-scverse/cookiecutter-scverse", - "_commit": "be7aa668a1f275bf9555e048fb2a3e2a02704778" + "_commit": "2a1acc65b4307a9c44fbfdab82807133ebe6b16f" } }, "directory": null diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index c6bde62..cbbdb3c 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -7,18 +7,18 @@ default_stages: minimum_pre_commit_version: 2.16.0 repos: - repo: https://github.com/biomejs/pre-commit - rev: v2.5.11 + rev: v2.6.3 hooks: - id: biome-format exclude: ^\.cruft\.json$ # inconsistent indentation with cruft - file never to be modified manually. groups: [format] - repo: https://github.com/tox-dev/pyproject-fmt - rev: v2.29.2 + rev: v2.30.3 hooks: - id: pyproject-fmt groups: [format] - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.16.5 + rev: v0.17.2 hooks: - id: ruff-check args: [--fix, --exit-non-zero-on-fix] @@ -54,7 +54,7 @@ repos: args: [--assume-in-merge] - repo: https://github.com/zizmorcore/zizmor-pre-commit - rev: v1.30.0 + rev: v1.31.1 hooks: - id: zizmor args: [--no-progress, --fix] From 293835489387b38abc3c0c9b1fc43f2e133b2ad7 Mon Sep 17 00:00:00 2001 From: "scverse-pr-creator[bot]" <272303624+scverse-pr-creator[bot]@users.noreply.github.com> Date: Mon, 2 Nov 2026 21:48:07 +0000 Subject: [PATCH 2/3] Update instance repo from cookiecutter template --- .cruft.json | 4 ++-- .github/workflows/autofix.yaml | 2 +- .github/workflows/test.yaml | 12 ++++++------ .pre-commit-config.yaml | 2 +- biome.jsonc | 2 +- docs/contributing.md | 2 +- pyproject.toml | 1 + 7 files changed, 13 insertions(+), 12 deletions(-) diff --git a/.cruft.json b/.cruft.json index e942f3a..10193c0 100644 --- a/.cruft.json +++ b/.cruft.json @@ -1,6 +1,6 @@ { "template": "/home/runner/work/cookiecutter-scverse/cookiecutter-scverse", - "commit": "2a1acc65b4307a9c44fbfdab82807133ebe6b16f", + "commit": "a9da0ae1e14597665ffa6408828e30ad630c0fdf", "checkout": null, "context": { "cookiecutter": { @@ -37,7 +37,7 @@ "trim_blocks": true }, "_template": "/home/runner/work/cookiecutter-scverse/cookiecutter-scverse", - "_commit": "2a1acc65b4307a9c44fbfdab82807133ebe6b16f" + "_commit": "a9da0ae1e14597665ffa6408828e30ad630c0fdf" } }, "directory": null diff --git a/.github/workflows/autofix.yaml b/.github/workflows/autofix.yaml index 1ed0347..eb61d57 100644 --- a/.github/workflows/autofix.yaml +++ b/.github/workflows/autofix.yaml @@ -26,4 +26,4 @@ jobs: - name: Run pre-commit hooks run: uvx prek run --all-files --show-diff-on-failure --color=always - uses: autofix-ci/action@c5b2d67aa2274e7b5a18224e8171550871fc7e4a # v1.3.4 - if: '!cancelled()' + if: "!cancelled()" diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index e8d141e..3bf346b 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -52,8 +52,8 @@ jobs: test: needs: get-environments permissions: - id-token: write # for codecov OIDC - contents: read + id-token: write # for codecov OIDC + contents: read strategy: fail-fast: false @@ -63,7 +63,7 @@ jobs: name: ${{ matrix.env.label }} runs-on: ${{ matrix.os }} - continue-on-error: ${{ contains(matrix.env.name, 'pre') }} # make "all-green" pass even if pre-release job fails + continue-on-error: ${{ contains(matrix.env.name, 'pre') }} # make "all-green" pass even if pre-release job fails env: UV_PYTHON: ${{ matrix.env.python }} @@ -102,6 +102,6 @@ jobs: - test runs-on: ubuntu-latest steps: - - uses: re-actors/alls-green@05ac9388f0aebcb5727afa17fcccfecd6f8ec5fe # v1.2.2 - with: - jobs: ${{ toJSON(needs) }} + - uses: re-actors/alls-green@05ac9388f0aebcb5727afa17fcccfecd6f8ec5fe # v1.2.2 + with: + jobs: ${{ toJSON(needs) }} diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index cbbdb3c..b0dfac2 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -43,7 +43,7 @@ repos: - id: end-of-file-fixer groups: [format] - id: mixed-line-ending - exclude: ^\.cruft\.json$ # inconsistent file endings on windows - file never to be modified manually. + exclude: ^\.cruft\.json$ # inconsistent file endings on windows - file never to be modified manually. args: [--fix=lf] groups: [format] - id: trailing-whitespace diff --git a/biome.jsonc b/biome.jsonc index 9f8f220..77113ed 100644 --- a/biome.jsonc +++ b/biome.jsonc @@ -1,5 +1,5 @@ { - "$schema": "https://biomejs.dev/schemas/2.2.0/schema.json", + "$schema": "https://biomejs.dev/schemas/2.6.3/schema.json", "vcs": { "enabled": true, "clientKind": "git", "useIgnoreFile": true }, "formatter": { "useEditorconfig": true }, "overrides": [ diff --git a/docs/contributing.md b/docs/contributing.md index 4423c40..738268c 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -11,7 +11,7 @@ the [scientific Python tutorials][], or the [scanpy developer guide][]. [scientific Python tutorials]: https://learn.scientific-python.org/development/tutorials/ [scanpy developer guide]: https://scanpy.scverse.org/page/dev/ -:::{tip} The *hatch* project manager +:::{tip} The _hatch_ project manager We highly recommend to familiarize yourself with [`hatch`][hatch]. Hatch is a Python project manager that diff --git a/pyproject.toml b/pyproject.toml index 1172c9c..059c46a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -20,6 +20,7 @@ classifiers = [ "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", + "Programming Language :: Python :: 3.15", "Typing :: Typed", ] dependencies = [ From bf039a31944e3b8303e5e71b3d213923ca4949df Mon Sep 17 00:00:00 2001 From: "scverse-pr-creator[bot]" <272303624+scverse-pr-creator[bot]@users.noreply.github.com> Date: Mon, 2 Nov 2026 21:52:34 +0000 Subject: [PATCH 3/3] Update instance repo from cookiecutter template --- docs/template_usage.md | 89 +++++++++++++++++++++--------------------- 1 file changed, 44 insertions(+), 45 deletions(-) diff --git a/docs/template_usage.md b/docs/template_usage.md index f08dcb3..3e7e40b 100644 --- a/docs/template_usage.md +++ b/docs/template_usage.md @@ -172,7 +172,7 @@ To set this up, login to [PyPI][], and proceed depending on whether you already - If yes, navigate to the project. In the left sidebar, choose "Publishing", then proceed to add the repository details. - If not, go to your [PyPI publishing settings][] and fill out the “Add a new pending publisher” form. -Enter everything *exactly* as it is displayed on GitHub (i.e. use the correct casing for your repository name). +Enter everything _exactly_ as it is displayed on GitHub (i.e. use the correct casing for your repository name). The "Workflow name" needs to bet set to `release.yaml`. Set "Environment name" to “pypi” to match `environment: pypi` in `.github/workflows/release.yaml`. For more details, please refer to the official [PyPI guide for setting up trusted publishing][trusted publisher]. @@ -182,7 +182,6 @@ the project will be published only once you release your package for the first t [github-releases]: https://docs.github.com/en/repositories/releasing-projects-on-github/about-releases [pypi-trusted-publishing-guide]: https://docs.pypi.org/trusted-publishers/adding-a-publisher/ - [PyPI]: https://pypi.org/ [PyPI publishing settings]: https://pypi.org/manage/account/publishing/ [trusted publisher]: https://docs.pypi.org/trusted-publishers/ @@ -218,38 +217,38 @@ The following pre-commit hooks are for code style and format: code formatter for non-Python files (e.g. JSON). - [ruff][] formatting (`ruff-format`) which implements all rules of the also widely used [Black formatter](https://github.com/psf/black) - [ruff][] based checks: - - [isort](https://beta.ruff.rs/docs/rules/#isort-i) (rule category: `I`): - sort module imports into sections and types. - - [pydocstyle](https://beta.ruff.rs/docs/rules/#pydocstyle-d) (rule category: `D`): - pydocstyle extension of flake8. - - [flake8-tidy-imports](https://beta.ruff.rs/docs/rules/#flake8-tidy-imports-tid) (rule category: `TID`): - tidy module imports. - - [flake8-comprehensions](https://beta.ruff.rs/docs/rules/#flake8-comprehensions-c4) (rule category: `C4`): - write better list/set/dict comprehensions. - - [pyupgrade](https://beta.ruff.rs/docs/rules/#pyupgrade-up) (rule category: `UP`): - upgrade syntax for newer versions of the language. + - [isort](https://beta.ruff.rs/docs/rules/#isort-i) (rule category: `I`): + sort module imports into sections and types. + - [pydocstyle](https://beta.ruff.rs/docs/rules/#pydocstyle-d) (rule category: `D`): + pydocstyle extension of flake8. + - [flake8-tidy-imports](https://beta.ruff.rs/docs/rules/#flake8-tidy-imports-tid) (rule category: `TID`): + tidy module imports. + - [flake8-comprehensions](https://beta.ruff.rs/docs/rules/#flake8-comprehensions-c4) (rule category: `C4`): + write better list/set/dict comprehensions. + - [pyupgrade](https://beta.ruff.rs/docs/rules/#pyupgrade-up) (rule category: `UP`): + upgrade syntax for newer versions of the language. - [pyproject-fmt][] formats the `pyproject.toml` file in a consistent way. The following pre-commit hooks are for errors and inconsistencies: - [pre-commit-hooks](https://github.com/pre-commit/pre-commit-hooks): generic pre-commit hooks for text files. - - **detect-private-key**: checks for the existence of private keys. - - **check-ast**: check whether files parse as valid python. - - **end-of-file-fixer**: check files end in a newline and only a newline. - - **mixed-line-ending**: checks mixed line ending. - - **trailing-whitespace**: trims trailing whitespace. - - **check-case-conflict**: check files that would conflict with case-insensitive file systems. + - **detect-private-key**: checks for the existence of private keys. + - **check-ast**: check whether files parse as valid python. + - **end-of-file-fixer**: check files end in a newline and only a newline. + - **mixed-line-ending**: checks mixed line ending. + - **trailing-whitespace**: trims trailing whitespace. + - **check-case-conflict**: check files that would conflict with case-insensitive file systems. - [ruff][] based checks: - - [pyflakes](https://beta.ruff.rs/docs/rules/#pyflakes-f) (rule category: `F`): - various checks for errors. - - [pycodestyle](https://beta.ruff.rs/docs/rules/#pycodestyle-e-w) (rule category: `E`, `W`): - various checks for errors. - - [flake8-bugbear](https://beta.ruff.rs/docs/rules/#flake8-bugbear-b) (rule category: `B`): - find possible bugs and design issues in program. - - [flake8-blind-except](https://beta.ruff.rs/docs/rules/#flake8-blind-except-ble) (rule category: `BLE`): - checks for blind, catch-all `except` statements. - - [Ruff-specific rules](https://beta.ruff.rs/docs/rules/#ruff-specific-rules-ruf) (rule category: `RUF`): - - `RUF100`: remove unnecessary `# noqa` comments () + - [pyflakes](https://beta.ruff.rs/docs/rules/#pyflakes-f) (rule category: `F`): + various checks for errors. + - [pycodestyle](https://beta.ruff.rs/docs/rules/#pycodestyle-e-w) (rule category: `E`, `W`): + various checks for errors. + - [flake8-bugbear](https://beta.ruff.rs/docs/rules/#flake8-bugbear-b) (rule category: `B`): + find possible bugs and design issues in program. + - [flake8-blind-except](https://beta.ruff.rs/docs/rules/#flake8-blind-except-ble) (rule category: `BLE`): + checks for blind, catch-all `except` statements. + - [Ruff-specific rules](https://beta.ruff.rs/docs/rules/#ruff-specific-rules-ruf) (rule category: `RUF`): + - `RUF100`: remove unnecessary `# noqa` comments () - [mypy][]: static type checker that verifies the type annotations of the package under `src/` and the `tests/`. @@ -456,29 +455,29 @@ Here's one way how to do it: 2. Clone your repository a second time to `${REPO}_cookiecutterized` 3. Initialize an empty repository from this cookiecutter template: - ```bash - mkdir template && cd template - uvx --with prek cruft create https://github.com/scverse/cookiecutter-scverse - ``` + ```bash + mkdir template && cd template + uvx --with prek cruft create https://github.com/scverse/cookiecutter-scverse + ``` 4. remove everything from the existing repo - ```bash - cd ${REPO}_cookiecutterized - git switch -c cookiecutterize - git rm -r "*" - git add -A - git commit -m "clean repo" - ``` + ```bash + cd ${REPO}_cookiecutterized + git switch -c cookiecutterize + git rm -r "*" + git add -A + git commit -m "clean repo" + ``` 5. move template over from generated folder - ```bash - # move everything, including hidden folders, excluding `.git`. - rsync -av --exclude='.git' ../template/$REPO/ ./ - git add -A - git commit -m "init from template" - ``` + ```bash + # move everything, including hidden folders, excluding `.git`. + rsync -av --exclude='.git' ../template/$REPO/ ./ + git add -A + git commit -m "init from template" + ``` 6. Migrate your project: Move over files from `$REPO` to `${REPO}_cookiecutterized`. Omit files that are not needed anymore and manually merge files where required.