Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
7a602c9
MAINT: upgrade lock files
pre-commit-ci[bot] Jan 5, 2026
bb70144
MAINT: implement pre-commit autofixes
pre-commit-ci[bot] Jan 5, 2026
37ed1ba
ENH: use `StrPath` in typehint for `io.load/write()`
redeboer Jan 5, 2026
0786ee1
MAINT: upgrade lock files
redeboer Jan 6, 2026
695f633
FIX: ignore third-party `DeprecationWarnings`
redeboer Jan 6, 2026
182b980
MAINT: improve formatting of doctest
redeboer Jan 6, 2026
006e56e
MAINT: upgrade lock files
redeboer Jan 6, 2026
c5ee34c
MAINT: update lock files
web-flow Jan 6, 2026
27fe4d3
DX: use Poe the Poet executor options
redeboer Jan 6, 2026
992d6bc
DX: fail `linkcheck` on warning
redeboer Jan 6, 2026
361ec3b
FIX: remove PWA intersphinx links
redeboer Jan 6, 2026
606252f
MAINT: update lock files
web-flow Jan 6, 2026
9a773d7
MAINT: update Jupyter kernels
redeboer Jan 6, 2026
34be716
MAINT: clean up `types` dependency group
redeboer Jan 6, 2026
06a6612
FIX: ignore `myst.directive_unknown`
redeboer Jan 6, 2026
0e91b81
DX: remove `nbmake` from dependencies
redeboer Jan 6, 2026
911163e
FIX: install `ipython` in `test` dependencies
redeboer Jan 6, 2026
7b50a1a
MAINT: remove `sphinx-autobuild` from dependencies
redeboer Jan 8, 2026
b80baec
MAINT: update lock files
web-flow Jan 8, 2026
33be556
MAINT: upgrade lock files
redeboer Jan 10, 2026
75bc682
DX: outsource lock upgrades to Dependabot
redeboer Jan 11, 2026
bcb6d91
MAINT: upgrade lock files and dev config
redeboer Jan 16, 2026
c3911a5
MAINT: upgrade lock files
redeboer Feb 4, 2026
66caa0a
MAINT: upgrade lock files
redeboer Feb 5, 2026
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 .cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
"*particle*.*ml",
".editorconfig",
".envrc",
".github/dependabot.yml",
".gitignore",
".pre-commit-config.yaml",
".prettierignore",
Expand All @@ -39,7 +40,6 @@
"typings"
],
"ignoreWords": [
"MAINT",
"adrs",
"ampform",
"arange",
Expand Down
19 changes: 19 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
version: 2

multi-ecosystem-groups:
lock:
assignees: [redeboer]
commit-message: { prefix: MAINT }
schedule: { interval: quarterly }

updates:
- package-ecosystem: github-actions
directory: "/"
labels: [⬆️ Lock]
multi-ecosystem-group: lock
patterns: ["*"]
- package-ecosystem: uv
directory: "/"
labels: [⬆️ Lock]
multi-ecosystem-group: lock
patterns: ["*"]
8 changes: 4 additions & 4 deletions .github/workflows/cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ on:
jobs:
milestone:
if: startsWith(github.ref, 'refs/tags')
uses: ComPWA/actions/.github/workflows/close-milestone.yml@v3
uses: ComPWA/actions/.github/workflows/close-milestone.yml@v4
package-name:
uses: ComPWA/actions/.github/workflows/get-pypi-name.yml@v3
uses: ComPWA/actions/.github/workflows/get-pypi-name.yml@v4
pypi:
environment:
name: PyPI
Expand All @@ -24,9 +24,9 @@ jobs:
id-token: write
runs-on: ubuntu-24.04
steps:
- uses: ComPWA/actions/build-pypi-distribution@v3
- uses: ComPWA/actions/build-pypi-distribution@v4
- uses: pypa/gh-action-pypi-publish@release/v1
push:
if: startsWith(github.ref, 'refs/tags') && !github.event.release.prerelease
secrets: inherit
uses: ComPWA/actions/.github/workflows/push-to-version-branches.yml@v3
uses: ComPWA/actions/.github/workflows/push-to-version-branches.yml@v4
28 changes: 10 additions & 18 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,32 +17,24 @@ on:
- epic/*
- "[0-9]+.[0-9]+.x"
workflow_dispatch:
inputs:
specific-pip-packages:
description: Run CI with specific pip packages
required: false
type: string

jobs:
doc:
uses: ComPWA/actions/.github/workflows/ci-docs.yml@v3.0
uses: ComPWA/actions/.github/workflows/ci-docs.yml@v4.0
permissions:
pages: write
id-token: write
with:
apt-packages: graphviz
specific-pip-packages: ${{ inputs.specific-pip-packages }}
pytest:
uses: ComPWA/actions/.github/workflows/pytest.yml@v3.0
with:
coverage-target: qrules
macos-python-version: "3.10"
specific-pip-packages: ${{ inputs.specific-pip-packages }}
test-output-path: tests/output/
secrets:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
style:
if: inputs.specific-pip-packages == ''
secrets:
token: ${{ secrets.PAT }}
uses: ComPWA/actions/.github/workflows/pre-commit.yml@v3.0
uses: ComPWA/actions/.github/workflows/pre-commit.yml@v4.0
test:
uses: ComPWA/actions/.github/workflows/test.yml@v4.0
secrets:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
with:
coverage-python-version: "3.13"
macos-python-version: "3.10"
test-output-path: tests/output/
4 changes: 2 additions & 2 deletions .github/workflows/clean-caches.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ on:
jobs:
cleanup:
name: Remove caches
runs-on: ubuntu-24.04
runs-on: ubuntu-slim
steps:
- uses: ComPWA/actions/clean-caches@v3
- uses: ComPWA/actions/clean-caches@v4
with:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ref: ${{ inputs.ref }}
2 changes: 1 addition & 1 deletion .github/workflows/lock.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,6 @@ on:

jobs:
lock:
uses: ComPWA/actions/.github/workflows/lock.yml@v3
uses: ComPWA/actions/.github/workflows/lock.yml@v4
secrets:
token: ${{ secrets.PAT }}
2 changes: 1 addition & 1 deletion .github/workflows/pr-linting.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@ on:

jobs:
lint-pr:
uses: ComPWA/actions/.github/workflows/pr-linting.yml@v3
uses: ComPWA/actions/.github/workflows/pr-linting.yml@v4
2 changes: 1 addition & 1 deletion .github/workflows/release-drafter.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ on:

jobs:
update_release_draft:
runs-on: ubuntu-24.04
runs-on: ubuntu-slim
steps:
- uses: release-drafter/release-drafter@v6
env:
Expand Down
26 changes: 13 additions & 13 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
ci:
autofix_commit_msg: "MAINT: implement pre-commit autofixes"
autoupdate_commit_msg: "MAINT: upgrade lock files"
autoupdate_schedule: quarterly
skip:
- check-jsonschema
- mypy
Expand All @@ -15,14 +14,15 @@ repos:
- id: check-useless-excludes

- repo: https://github.com/ComPWA/policy
rev: 0.7.3
rev: 0.8.2rc15
hooks:
- id: check-dev-files
args:
- --doc-apt-packages=graphviz
- --repo-name=qrules
- --repo-title=QRules
- --update-lock-files=outsource
- --type-checker=mypy
- --type-checker=pyright
- id: colab-toc-visible
- id: fix-nbformat-version
- id: remove-empty-tags
Expand All @@ -32,9 +32,10 @@ repos:
- --additional-packages=IPython
- --extras-require=doc,viz
- id: set-nb-display-name
- id: strip-nb-whitespace

- repo: https://github.com/kynan/nbstripout
rev: 0.8.1
rev: 0.9.0
hooks:
- id: nbstripout
args:
Expand Down Expand Up @@ -62,7 +63,7 @@ repos:
metadata.vscode

- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.14.0
rev: v0.15.0
hooks:
- id: ruff-check
args: [--fix]
Expand Down Expand Up @@ -94,7 +95,7 @@ repos:
- id: trailing-whitespace

- repo: https://github.com/ComPWA/prettier-pre-commit
rev: v3.4.2
rev: v3.8.1
hooks:
- id: prettier

Expand All @@ -111,7 +112,7 @@ repos:
- --in-place

- repo: https://github.com/python-jsonschema/check-jsonschema
rev: 0.34.1
rev: 0.36.1
hooks:
- id: check-jsonschema
name: Check CITATION.cff
Expand All @@ -124,12 +125,12 @@ repos:
pass_filenames: false

- repo: https://github.com/streetsidesoftware/cspell-cli
rev: v9.2.0
rev: v9.6.0
hooks:
- id: cspell

- repo: https://github.com/editorconfig-checker/editorconfig-checker.python
rev: 3.4.0
rev: 3.6.0
hooks:
- id: editorconfig-checker
name: editorconfig
Expand All @@ -146,15 +147,14 @@ repos:
entry: mypy
language: system
require_serial: true
types:
- python
types: [python]

- repo: https://github.com/ComPWA/pyright-pre-commit
rev: v1.1.406
rev: v1.1.407
hooks:
- id: pyright

- repo: https://github.com/astral-sh/uv-pre-commit
rev: 0.9.3
rev: 0.9.30
hooks:
- id: uv-lock
6 changes: 1 addition & 5 deletions .readthedocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,7 @@ build:
pixi global install graphviz uv
- |-
export UV_LINK_MODE=copy
uv run \
--group doc \
--no-dev \
--with poethepoet \
poe doc
uvx --from poethepoet poe doc
mkdir -p $READTHEDOCS_OUTPUT
mv docs/_build/html $READTHEDOCS_OUTPUT

Expand Down
1 change: 1 addition & 0 deletions .vscode/extensions.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
"yzhang.markdown-all-in-one"
],
"unwantedRecommendations": [
"astral-sh.ty",
"bungcip.better-toml",
"davidanson.vscode-markdownlint",
"garaioag.garaio-vscode-unwanted-recommendations",
Expand Down
10 changes: 8 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ source .venv/bin/activate
Formatting and linting checks are automatically performed when committing changes. This is done with [pre-commit](https://pre-commit.com). To install the hooks in your local repository, run install `pre-commit` with `uv`:

```shell
uv tool install pre-commit --with pre-commit-uv --force-reinstall
uv tool install pre-commit --with pre-commit-uv --force-reinstall --python=3.13
```

and [`pre-commit install`](https://pre-commit.com/#3-install-the-git-hook-scripts) **once**:
Expand All @@ -31,7 +31,13 @@ and [`pre-commit install`](https://pre-commit.com/#3-install-the-git-hook-script
pre-commit install --install-hooks
```

[Poe the Poet](https://poethepoet.natn.io) is used as a task runner. You can see which local CI checks it defines by running
[Poe the Poet](https://poethepoet.natn.io) is used as a task runner. Install it globally (within your home folder) with `uv`:

```shell
uv tool install poethepoet --force-reinstall --python=3.13
```

You can see which local CI checks it defines by running

```shell
poe
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@
[![Documentation](https://readthedocs.org/projects/qrules/badge/?version=latest)](https://qrules.readthedocs.io)
[![pre-commit.ci status](https://results.pre-commit.ci/badge/github/ComPWA/qrules/main.svg)](https://results.pre-commit.ci/latest/github/ComPWA/qrules/main)
[![CI](https://github.com/ComPWA/qrules/actions/workflows/ci.yml/badge.svg)](https://github.com/ComPWA/qrules/actions/workflows/ci.yml)
[![Checked with mypy](http://www.mypy-lang.org/static/mypy_badge.svg)](https://mypy.readthedocs.io)
[![Type-checked with mypy](https://mypy-lang.org/static/mypy_badge.svg)](https://mypy.readthedocs.io)
[![Test coverage](https://codecov.io/gh/ComPWA/qrules/branch/main/graph/badge.svg)](https://codecov.io/gh/ComPWA/qrules)
[![Spelling checked](https://img.shields.io/badge/cspell-checked-brightgreen.svg)](https://github.com/streetsidesoftware/cspell/tree/master/packages/cspell)
[![Spelling checked](https://img.shields.io/badge/cspell-checked-brightgreen.svg)](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell)
[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)
[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/charliermarsh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
[![uv](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json)](https://github.com/astral-sh/uv)
Expand Down
5 changes: 4 additions & 1 deletion docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -248,7 +248,6 @@ def __get_newtypes(some_type: type) -> list:
"IPython": (f"https://ipython.readthedocs.io/en/{pin('IPython')}", None),
"jsonschema": ("https://python-jsonschema.readthedocs.io/en/stable", None),
"mypy": ("https://mypy.readthedocs.io/en/stable", None),
"pwa": ("https://pwa.readthedocs.io", None),
"python": ("https://docs.python.org/3", None),
}
linkcheck_anchors = False
Expand Down Expand Up @@ -280,6 +279,9 @@ def __get_newtypes(some_type: type) -> list:
nb_execution_show_tb = True
nb_execution_timeout = -1
nb_output_stderr = "remove"
nitpick_ignore = [
("py:class", "StrPath"),
]
nitpick_ignore_regex = [
(r"py:(class|obj)", "json.encoder.JSONEncoder"),
(r"py:(class|obj)", r"frozendict(\.frozendict)?"),
Expand All @@ -301,6 +303,7 @@ def __get_newtypes(some_type: type) -> list:
pygments_style = "sphinx"
release = get_package_version(PACKAGE)
suppress_warnings = [
"myst.directive_unknown",
"myst.domains",
# skipping unknown output mime type: application/json
# https://github.com/ComPWA/qrules/runs/8132605149?check_suite_focus=true#step:5:92
Expand Down
1 change: 0 additions & 1 deletion docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@ QRules consists of three major components:
one node (in correspondence to
[Feynman graphs](https://en.wikipedia.org/wiki/Feynman_diagram)). This way, a graph
describes the transition from one state to another.

- **Edges** correspond to states (particles with spin). In other words, edges are a
collection of properties such as the quantum numbers that characterize a state that
the particle is in.
Expand Down
4 changes: 2 additions & 2 deletions docs/usage.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"Next, you use the {mod}`ampform` package to convert these transitions into a mathematical description that you can use to fit your data and perform {doc}`Partial Wave Analysis <pwa:index>`!"
"Next, you use the {mod}`ampform` package to convert these transitions into a mathematical description that you can use to fit your data and perform [partial-wave analysis](https://pwa.rtfd.io)!"
]
},
{
Expand Down Expand Up @@ -277,7 +277,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.13.8"
"version": "3.13.11"
}
},
"nbformat": 4,
Expand Down
4 changes: 2 additions & 2 deletions docs/usage/reaction.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"A {doc}`Partial Wave Analysis <pwa:index>` starts by defining an amplitude model that describes the reaction process that is to be analyzed. Such a model is generally very complex and requires a fair amount of effort by the analyst (you). This gives a lot of room for mistakes.\n",
"A [partial-wave analysis](https://pwa.rtfd.io) starts by defining an amplitude model that describes the reaction process that is to be analyzed. Such a model is generally very complex and requires a fair amount of effort by the analyst (you). This gives a lot of room for mistakes.\n",
"\n",
"QRules is responsible to give you advice on the form of an amplitude model, based on the problem set you define (initial state, final state, allowed interactions, intermediate states, etc.). Internally, the system propagates the quantum numbers through the reaction graph while satisfying the specified conservation rules. How to control this procedure is explained in more detail below.\n",
"\n",
Expand Down Expand Up @@ -620,7 +620,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.13.8"
"version": "3.13.11"
}
},
"nbformat": 4,
Expand Down
Loading