Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/rhiza_benchmark.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,5 @@ on:

jobs:
benchmark:
uses: jebel-quant/rhiza/.github/workflows/rhiza_benchmark.yml@v1.2.2
uses: jebel-quant/rhiza/.github/workflows/rhiza_benchmark.yml@v1.2.5
secrets: inherit
2 changes: 1 addition & 1 deletion .github/workflows/rhiza_book.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ on:

jobs:
book:
uses: jebel-quant/rhiza/.github/workflows/rhiza_book.yml@v1.2.2
uses: jebel-quant/rhiza/.github/workflows/rhiza_book.yml@v1.2.5
secrets: inherit
permissions:
contents: read
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/rhiza_ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,5 +26,5 @@ on:

jobs:
ci:
uses: jebel-quant/rhiza/.github/workflows/rhiza_ci.yml@v1.2.2
uses: jebel-quant/rhiza/.github/workflows/rhiza_ci.yml@v1.2.5
secrets: inherit
2 changes: 1 addition & 1 deletion .github/workflows/rhiza_codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ on:

jobs:
codeql:
uses: jebel-quant/rhiza/.github/workflows/rhiza_codeql.yml@v1.2.2
uses: jebel-quant/rhiza/.github/workflows/rhiza_codeql.yml@v1.2.5
secrets: inherit
permissions:
security-events: write # Upload CodeQL results to code scanning
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/rhiza_marimo.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,5 +28,5 @@ on:

jobs:
marimo:
uses: jebel-quant/rhiza/.github/workflows/rhiza_marimo.yml@v1.2.2
uses: jebel-quant/rhiza/.github/workflows/rhiza_marimo.yml@v1.2.5
secrets: inherit
2 changes: 1 addition & 1 deletion .github/workflows/rhiza_mutation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ jobs:
# this repo sets the `MUTATION_ENABLED` variable to 'true'. Gating here in
# the caller keeps it optional regardless of the pinned reusable workflow.
if: ${{ vars.MUTATION_ENABLED == 'true' }}
uses: jebel-quant/rhiza/.github/workflows/rhiza_mutation.yml@v1.2.2
uses: jebel-quant/rhiza/.github/workflows/rhiza_mutation.yml@v1.2.5
secrets: inherit
permissions:
contents: read
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/rhiza_paper.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ on:

jobs:
paper:
uses: jebel-quant/rhiza/.github/workflows/rhiza_paper.yml@v1.2.2
uses: jebel-quant/rhiza/.github/workflows/rhiza_paper.yml@v1.2.5
secrets: inherit
permissions:
contents: write
2 changes: 1 addition & 1 deletion .github/workflows/rhiza_release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,7 @@ jobs:
version: "0.11.16"

- name: Configure git auth for private packages
uses: jebel-quant/rhiza/.github/actions/configure-git-auth@v1.2.2
uses: jebel-quant/actions/configure-git-auth@6d52725ca371d609489c5b50236965ad70bbe528 # v1
with:
token: ${{ secrets.GH_PAT }}

Expand Down
6 changes: 3 additions & 3 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ repos:
pass_filenames: false

- repo: https://github.com/astral-sh/ruff-pre-commit
rev: 'v0.15.21'
rev: 'v0.16.0'
hooks:
- id: ruff
args: [ --fix, --exit-non-zero-on-fix, --unsafe-fixes ]
Expand Down Expand Up @@ -71,12 +71,12 @@ repos:
args: ["--ini", ".bandit", "--exclude", ".venv,tests,.rhiza/tests,.git,.pytest_cache"]

- repo: https://github.com/betterleaks/betterleaks
rev: v1.6.1
rev: v1.7.2
hooks:
- id: betterleaks

- repo: https://github.com/astral-sh/uv-pre-commit
rev: 0.11.28
rev: 0.12.0
hooks:
- id: uv-lock

Expand Down
16 changes: 14 additions & 2 deletions .rhiza/.cfg.toml
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,22 @@ values = [
"prod"
]

# Anchored to the [project] table on purpose. `search`/`replace` are applied to
# EVERY occurrence in the file, so the obvious `version = "{current_version}"`
# also rewrites any [tool.*] table that happens to share the current number.
# Dependency pins (httpx>=1.2.0, rich==1.2.0) are never at risk either way —
# they are not line-anchored `version = ` assignments — but a second table is.
[[tool.bumpversion.files]]
filename = "pyproject.toml"
search = 'version = "{current_version}"'
replace = 'version = "{new_version}"'
regex = true
search = '(?ms)^\[project\]((?:(?!^\[)[\s\S])*?)^version = "{current_version}"'
replace = '[project]\1version = "{new_version}"'

# NOTE for downstream projects: do NOT add a glob over your own
# .github/workflows/*.yml here. Those stubs pin jebel-quant/rhiza's version
# (the template you sync from), not your project's, so rewriting them with your
# version would point them at a rhiza tag that does not exist. The template ref
# is managed by /rhiza:update via .rhiza/template.yml instead.

# Keep the reusable-workflow stubs in the bundles pinned to the current release.
# These stubs are synced into downstream repos and must reference an existing tag.
Expand Down
27 changes: 0 additions & 27 deletions .rhiza/make.d/releasing.mk

This file was deleted.

7 changes: 3 additions & 4 deletions .rhiza/template.lock
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
sha: e0fe02300840e39fe75d19db2741e9a790f87794
sha: e5d7005e2d9fc3d5a23b96d13b203b4f2afe3cce
repo: jebel-quant/rhiza
host: github
ref: v1.2.1
ref: v1.2.5
include: []
exclude:
- bundles/github/.github/workflows/rhiza_fuzzing.yml
Expand Down Expand Up @@ -57,7 +57,6 @@ files:
- .rhiza/make.d/marimo.mk
- .rhiza/make.d/paper.mk
- .rhiza/make.d/quality.mk
- .rhiza/make.d/releasing.mk
- .rhiza/make.d/test.mk
- .rhiza/rhiza.mk
- .rhiza/semgrep.yml
Expand All @@ -77,5 +76,5 @@ files:
- docs/mkdocs-base.yml
- pytest.ini
- ruff.toml
synced_at: '2026-07-17T12:57:28Z'
synced_at: '2026-07-30T04:16:36Z'
strategy: merge
2 changes: 1 addition & 1 deletion .rhiza/template.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
repository: "jebel-quant/rhiza"
ref: "v1.2.1"
ref: "v1.2.5"

profiles:
- github-project
Expand Down
15 changes: 11 additions & 4 deletions .rhiza/tests/test_pyproject.py
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ def test_repository_configured(self, urls: dict) -> None:


class TestProjectClassifiers:
"""Tests for [project].classifiers — Python version and licence entries."""
"""Tests for [project].classifiers — Python version entries."""

@pytest.fixture
def classifiers(self, project: dict) -> list[str]:
Expand All @@ -157,10 +157,17 @@ def test_python_version_classifier_present(self, classifiers: list[str]) -> None
"classifiers must include at least one 'Programming Language :: Python :: 3.X' entry"
)

def test_license_classifier_present(self, classifiers: list[str]) -> None:
"""At least one 'License :: ' classifier must be present."""
def test_no_license_classifier(self, project: dict) -> None:
"""No deprecated 'License :: ' classifier may be present.

PyPI has deprecated the ``License ::`` trove classifiers in favor of the SPDX
``license`` expression field, so the shipped pyproject must not declare one.
"""
classifiers = project.get("classifiers", [])
license_classifiers = [c for c in classifiers if c.startswith("License ::")]
assert len(license_classifiers) >= 1, "classifiers must include at least one 'License :: ' entry"
assert not license_classifiers, (
f"classifiers must not include any deprecated 'License :: ' entry; found {license_classifiers}"
)


class TestDependencyGroups:
Expand Down
3 changes: 1 addition & 2 deletions ruff.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@
#
# Maximum line length for the entire project
line-length = 120
# Target Python version
target-version = "py311"
# Target Python version is inferred from project.requires-python.
Comment on lines 4 to +6

# Exclude directories with Jinja template variables in their names
exclude = ["**/[{][{]*/", "**/*[}][}]*/"]
Expand Down