From df3514e26f50a07986d6a4098a9ca512141b3c8e Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 9 Feb 2026 18:33:17 +0000 Subject: [PATCH 01/12] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/biomejs/pre-commit: v2.3.10 → v2.3.14](https://github.com/biomejs/pre-commit/compare/v2.3.10...v2.3.14) - [github.com/tox-dev/pyproject-fmt: v2.12.1 → v2.14.2](https://github.com/tox-dev/pyproject-fmt/compare/v2.12.1...v2.14.2) - [github.com/astral-sh/ruff-pre-commit: v0.14.14 → v0.15.0](https://github.com/astral-sh/ruff-pre-commit/compare/v0.14.14...v0.15.0) --- .pre-commit-config.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index fe5759d2..70fe7b61 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,17 +1,17 @@ repos: # Hooks that are run everywhere - repo: https://github.com/biomejs/pre-commit - rev: v2.3.10 + rev: v2.3.14 hooks: - id: biome-format # Hooks that are run for scripts - repo: https://github.com/tox-dev/pyproject-fmt - rev: v2.12.1 + rev: v2.14.2 hooks: - id: pyproject-fmt files: ^scripts/pyproject\.toml$ - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.14.14 + rev: v0.15.0 hooks: - id: ruff-check args: [--fix, --exit-non-zero-on-fix] From 8fab83bea8a0fdffced6d3e4e7f9ad0f09652b0a Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 9 Feb 2026 18:33:43 +0000 Subject: [PATCH 02/12] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- scripts/pyproject.toml | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/scripts/pyproject.toml b/scripts/pyproject.toml index 1c4cb416..67cf912f 100644 --- a/scripts/pyproject.toml +++ b/scripts/pyproject.toml @@ -34,15 +34,13 @@ urls.Source = "https://github.com/scverse/cookiecutter-scverse" scripts.make-rich-output = "scverse_template_scripts.make_rich_output:main" scripts.send-cruft-prs = "scverse_template_scripts.cruft_prs:cli" -[tool.hatch.version] -source = "vcs" -fallback-version = "0.0" +[tool.hatch] +version.source = "vcs" +version.fallback-version = "0.0" [tool.ruff] line-length = 120 - format.docstring-code-format = true - lint.select = [ "A", "ANN", @@ -84,7 +82,7 @@ lint.unfixable = [ "RUF001", # never “fix” “confusables” ] lint.allowed-confusables = [ "×", "’" ] -lint.flake8-type-checking.exempt-modules = [ ] +lint.flake8-type-checking.exempt-modules = [] lint.flake8-type-checking.runtime-evaluated-decorators = [ "cyclopts.App.default" ] lint.flake8-type-checking.strict = true lint.isort.known-first-party = [ "scverse_template_scripts", "testing.scverse_template_scripts" ] @@ -93,11 +91,11 @@ lint.isort.required-imports = [ "from __future__ import annotations" ] [tool.pyproject-fmt] column_width = 120 -[tool.pytest.ini_options] -addopts = [ +[tool.pytest] +ini_options.addopts = [ "--import-mode=importlib", ] -filterwarnings = [ +ini_options.filterwarnings = [ "error", # https://github.com/man-group/pytest-plugins/issues/224 "ignore::DeprecationWarning:pytest_shutil", From 75599b822ebd7746ff600a098fa6fc0e6d463297 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 9 Feb 2026 18:37:46 +0000 Subject: [PATCH 03/12] Apply automatic changes --- {{cookiecutter.project_name}}/.pre-commit-config.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/{{cookiecutter.project_name}}/.pre-commit-config.yaml b/{{cookiecutter.project_name}}/.pre-commit-config.yaml index 74ce081b..82c5c710 100644 --- a/{{cookiecutter.project_name}}/.pre-commit-config.yaml +++ b/{{cookiecutter.project_name}}/.pre-commit-config.yaml @@ -7,16 +7,16 @@ default_stages: minimum_pre_commit_version: 2.16.0 repos: - repo: https://github.com/biomejs/pre-commit - rev: v2.3.10 + rev: v2.3.14 hooks: - id: biome-format exclude: ^\.cruft\.json$ # inconsistent indentation with cruft - file never to be modified manually. - repo: https://github.com/tox-dev/pyproject-fmt - rev: v2.12.1 + rev: v2.15.0 hooks: - id: pyproject-fmt - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.14.14 + rev: v0.15.0 hooks: - id: ruff-check types_or: [python, pyi, jupyter] From 5f419963ea2ec6ff81817126e3361b0b4df3fd5d Mon Sep 17 00:00:00 2001 From: "Philipp A." Date: Tue, 10 Feb 2026 09:44:54 +0100 Subject: [PATCH 04/12] no more ini --- scripts/pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/pyproject.toml b/scripts/pyproject.toml index 67cf912f..57c3ef3b 100644 --- a/scripts/pyproject.toml +++ b/scripts/pyproject.toml @@ -92,10 +92,10 @@ lint.isort.required-imports = [ "from __future__ import annotations" ] column_width = 120 [tool.pytest] -ini_options.addopts = [ +addopts = [ "--import-mode=importlib", ] -ini_options.filterwarnings = [ +filterwarnings = [ "error", # https://github.com/man-group/pytest-plugins/issues/224 "ignore::DeprecationWarning:pytest_shutil", From 1bf6582f72cc5e2620fe31bf81df04c98f9c10c4 Mon Sep 17 00:00:00 2001 From: "Philipp A." Date: Tue, 10 Feb 2026 10:05:17 +0100 Subject: [PATCH 05/12] bump --- .pre-commit-config.yaml | 2 +- {{cookiecutter.project_name}}/.pre-commit-config.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 70fe7b61..7ab7de54 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -6,7 +6,7 @@ repos: - id: biome-format # Hooks that are run for scripts - repo: https://github.com/tox-dev/pyproject-fmt - rev: v2.14.2 + rev: v2.15.1 hooks: - id: pyproject-fmt files: ^scripts/pyproject\.toml$ diff --git a/{{cookiecutter.project_name}}/.pre-commit-config.yaml b/{{cookiecutter.project_name}}/.pre-commit-config.yaml index 82c5c710..e47a4f7a 100644 --- a/{{cookiecutter.project_name}}/.pre-commit-config.yaml +++ b/{{cookiecutter.project_name}}/.pre-commit-config.yaml @@ -12,7 +12,7 @@ repos: - id: biome-format exclude: ^\.cruft\.json$ # inconsistent indentation with cruft - file never to be modified manually. - repo: https://github.com/tox-dev/pyproject-fmt - rev: v2.15.0 + rev: v2.15.1 hooks: - id: pyproject-fmt - repo: https://github.com/astral-sh/ruff-pre-commit From 44e54664b103e6be7465840393f62cab0dc0b76a Mon Sep 17 00:00:00 2001 From: "Philipp A." Date: Tue, 10 Feb 2026 10:10:03 +0100 Subject: [PATCH 06/12] fmt --- .../assets/cookiecutter-scverse-instance.json | 2 +- {{cookiecutter.project_name}}/pyproject.toml | 50 +++++++------------ 2 files changed, 20 insertions(+), 32 deletions(-) diff --git a/.github/assets/cookiecutter-scverse-instance.json b/.github/assets/cookiecutter-scverse-instance.json index 3371cb54..d9c9f605 100644 --- a/.github/assets/cookiecutter-scverse-instance.json +++ b/.github/assets/cookiecutter-scverse-instance.json @@ -1,7 +1,7 @@ { "project_name": "cookiecutter-scverse-instance", "package_name": "cookiecutter_scverse_instance", - "project_description": "An example repo generated from the `cookiecutter-scverse` template. Feel free to look around this repo and check out the docs to find out if the template works for you!", + "project_description": "An example repo generated from the `cookiecutter-scverse` template.", "author_full_name": "scverse community", "author_email": "core-team@scverse.org", "github_user": "scverse", diff --git a/{{cookiecutter.project_name}}/pyproject.toml b/{{cookiecutter.project_name}}/pyproject.toml index 3de9ac3a..af840ec4 100644 --- a/{{cookiecutter.project_name}}/pyproject.toml +++ b/{{cookiecutter.project_name}}/pyproject.toml @@ -65,33 +65,23 @@ packages = [ "src/{{ cookiecutter.package_name }}" ] {% endif -%} -[tool.hatch.envs.default] -installer = "uv" -dependency-groups = [ "dev" ] - -[tool.hatch.envs.docs] -dependency-groups = [ "doc" ] -scripts.build = "sphinx-build -M html docs docs/_build -W {args}" -scripts.open = "python -m webbrowser -t docs/_build/html/index.html" -scripts.clean = "git clean -fdX -- {args:docs}" - -[tool.hatch.envs.hatch-test] -dependency-groups = [ "dev", "test" ] - -# Test the lowest and highest supported Python versions with normal deps -[[tool.hatch.envs.hatch-test.matrix]] -deps = [ "stable" ] -python = [ "3.11", "3.14" ] - -# Test the newest supported Python version also with pre-release deps -[[tool.hatch.envs.hatch-test.matrix]] -deps = [ "pre" ] -python = [ "3.14" ] - -[tool.hatch.envs.hatch-test.overrides] +[tool.hatch] +envs.default.installer = "uv" +envs.default.dependency-groups = [ "dev" ] +envs.docs.dependency-groups = [ "doc" ] +envs.docs.scripts.build = "sphinx-build -M html docs docs/_build -W {args}" +envs.docs.scripts.open = "python -m webbrowser -t docs/_build/html/index.html" +envs.docs.scripts.clean = "git clean -fdX -- {args:docs}" +envs.hatch-test.dependency-groups = [ "dev", "test" ] +envs.hatch-test.matrix = [ + # Test the lowest and highest supported Python versions with normal deps + { deps = [ "stable" ], python = [ "3.11", "3.14" ] }, + # Test the newest supported Python version also with pre-release deps + { deps = [ "pre" ], python = [ "3.14" ] }, +] # If the matrix variable `deps` is set to "pre", # set the environment variable `UV_PRERELEASE` to "allow". -matrix.deps.env-vars = [ +hatch-test.overrides.matrix.deps.env-vars = [ { key = "UV_PRERELEASE", value = "allow", if = [ "pre" ] }, ] @@ -99,9 +89,7 @@ matrix.deps.env-vars = [ line-length = 120 src = [ "src" ] extend-include = [ "*.ipynb" ] - format.docstring-code-format = true - lint.select = [ "B", # flake8-bugbear "BLE", # flake8-blind-except @@ -142,12 +130,12 @@ addopts = [ "--import-mode=importlib", # allow using test files with same name ] -[tool.coverage.run] -source = [ "{{ cookiecutter.package_name }}" ] -patch = [ "subprocess" ] -omit = [ +[tool.coverage] +run.omit = [ "**/test_*.py", ] +run.patch = [ "subprocess" ] +run.source = [ "{{ cookiecutter.package_name }}" ] [tool.cruft] skip = [ From 55ef642aeceaf4ee951adc27752619eb3f41a7d6 Mon Sep 17 00:00:00 2001 From: "Philipp A." Date: Tue, 10 Feb 2026 10:12:44 +0100 Subject: [PATCH 07/12] whoops --- {{cookiecutter.project_name}}/pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/{{cookiecutter.project_name}}/pyproject.toml b/{{cookiecutter.project_name}}/pyproject.toml index af840ec4..2146bf1e 100644 --- a/{{cookiecutter.project_name}}/pyproject.toml +++ b/{{cookiecutter.project_name}}/pyproject.toml @@ -81,7 +81,7 @@ envs.hatch-test.matrix = [ ] # If the matrix variable `deps` is set to "pre", # set the environment variable `UV_PRERELEASE` to "allow". -hatch-test.overrides.matrix.deps.env-vars = [ +envs.hatch-test.overrides.matrix.deps.env-vars = [ { key = "UV_PRERELEASE", value = "allow", if = [ "pre" ] }, ] From 74ab287c56edc7425855d2c75a45862b389f3d7c Mon Sep 17 00:00:00 2001 From: "Philipp A." Date: Tue, 10 Feb 2026 10:16:08 +0100 Subject: [PATCH 08/12] fmt --- {{cookiecutter.project_name}}/pyproject.toml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/{{cookiecutter.project_name}}/pyproject.toml b/{{cookiecutter.project_name}}/pyproject.toml index 2146bf1e..a3db4a97 100644 --- a/{{cookiecutter.project_name}}/pyproject.toml +++ b/{{cookiecutter.project_name}}/pyproject.toml @@ -59,12 +59,6 @@ doc = [ "sphinxext-opengraph", ] -{% if cookiecutter.project_name.lower().replace("-", "_") != cookiecutter.package_name -%} -[tool.hatch.build.targets.wheel] -packages = [ "src/{{ cookiecutter.package_name }}" ] - -{% endif -%} - [tool.hatch] envs.default.installer = "uv" envs.default.dependency-groups = [ "dev" ] @@ -84,6 +78,10 @@ envs.hatch-test.matrix = [ envs.hatch-test.overrides.matrix.deps.env-vars = [ { key = "UV_PRERELEASE", value = "allow", if = [ "pre" ] }, ] +{% if cookiecutter.project_name.lower().replace("-", "_") != cookiecutter.package_name -%} +build.targets.wheel.packages = [ "src/{{ cookiecutter.package_name }}" ] + +{% endif -%} [tool.ruff] line-length = 120 From 5bc3fafbc3db1c0e04881441220bdf718f6796b9 Mon Sep 17 00:00:00 2001 From: "Philipp A." Date: Tue, 10 Feb 2026 10:18:30 +0100 Subject: [PATCH 09/12] whitespace bullshit --- {{cookiecutter.project_name}}/pyproject.toml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/{{cookiecutter.project_name}}/pyproject.toml b/{{cookiecutter.project_name}}/pyproject.toml index a3db4a97..c77792a1 100644 --- a/{{cookiecutter.project_name}}/pyproject.toml +++ b/{{cookiecutter.project_name}}/pyproject.toml @@ -78,10 +78,9 @@ envs.hatch-test.matrix = [ envs.hatch-test.overrides.matrix.deps.env-vars = [ { key = "UV_PRERELEASE", value = "allow", if = [ "pre" ] }, ] -{% if cookiecutter.project_name.lower().replace("-", "_") != cookiecutter.package_name -%} +{%- if cookiecutter.project_name.lower().replace("-", "_") != cookiecutter.package_name %} build.targets.wheel.packages = [ "src/{{ cookiecutter.package_name }}" ] - -{% endif -%} +{%- endif %} [tool.ruff] line-length = 120 From 9731eee7fbd31e02c09aac035d2ef192820e4f11 Mon Sep 17 00:00:00 2001 From: "Philipp A." Date: Tue, 10 Feb 2026 10:23:10 +0100 Subject: [PATCH 10/12] argh --- {{cookiecutter.project_name}}/pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/{{cookiecutter.project_name}}/pyproject.toml b/{{cookiecutter.project_name}}/pyproject.toml index c77792a1..f26dfeaa 100644 --- a/{{cookiecutter.project_name}}/pyproject.toml +++ b/{{cookiecutter.project_name}}/pyproject.toml @@ -78,10 +78,10 @@ envs.hatch-test.matrix = [ envs.hatch-test.overrides.matrix.deps.env-vars = [ { key = "UV_PRERELEASE", value = "allow", if = [ "pre" ] }, ] -{%- if cookiecutter.project_name.lower().replace("-", "_") != cookiecutter.package_name %} +{% if cookiecutter.project_name.lower().replace("-", "_") != cookiecutter.package_name -%} build.targets.wheel.packages = [ "src/{{ cookiecutter.package_name }}" ] -{%- endif %} +{%- endif %} [tool.ruff] line-length = 120 src = [ "src" ] From 4fe8e88f6d0908d8a56ca5fcf589e78e4d8f5461 Mon Sep 17 00:00:00 2001 From: "Philipp A." Date: Tue, 10 Feb 2026 10:24:29 +0100 Subject: [PATCH 11/12] maybe trim works --- {{cookiecutter.project_name}}/pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/{{cookiecutter.project_name}}/pyproject.toml b/{{cookiecutter.project_name}}/pyproject.toml index f26dfeaa..0e44f053 100644 --- a/{{cookiecutter.project_name}}/pyproject.toml +++ b/{{cookiecutter.project_name}}/pyproject.toml @@ -80,8 +80,8 @@ envs.hatch-test.overrides.matrix.deps.env-vars = [ ] {% if cookiecutter.project_name.lower().replace("-", "_") != cookiecutter.package_name -%} build.targets.wheel.packages = [ "src/{{ cookiecutter.package_name }}" ] - {%- endif %} + [tool.ruff] line-length = 120 src = [ "src" ] From 76b62e6611dc10085a04ba7f653fe35cc18238bc Mon Sep 17 00:00:00 2001 From: "Philipp A." Date: Tue, 10 Feb 2026 10:27:54 +0100 Subject: [PATCH 12/12] hmm --- {{cookiecutter.project_name}}/pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/{{cookiecutter.project_name}}/pyproject.toml b/{{cookiecutter.project_name}}/pyproject.toml index 0e44f053..52763fb7 100644 --- a/{{cookiecutter.project_name}}/pyproject.toml +++ b/{{cookiecutter.project_name}}/pyproject.toml @@ -80,7 +80,7 @@ envs.hatch-test.overrides.matrix.deps.env-vars = [ ] {% if cookiecutter.project_name.lower().replace("-", "_") != cookiecutter.package_name -%} build.targets.wheel.packages = [ "src/{{ cookiecutter.package_name }}" ] -{%- endif %} +{% endif %} [tool.ruff] line-length = 120