From 0721fe9193bd25a3a63a25ab35407091202aeafc Mon Sep 17 00:00:00 2001
From: Remco de Boer <29308176+redeboer@users.noreply.github.com>
Date: Mon, 9 Sep 2024 07:49:43 -0400
Subject: [PATCH] MAINT: autoupdate constraints and pre-commit config

---
 .constraints/py3.10.txt | 76 ++++++++++++++++++++--------------------
 .constraints/py3.11.txt | 77 +++++++++++++++++++++--------------------
 .constraints/py3.12.txt | 76 ++++++++++++++++++++--------------------
 .constraints/py3.7.txt  | 28 +++++++--------
 .constraints/py3.8.txt  | 66 +++++++++++++++++------------------
 .constraints/py3.9.txt  | 74 +++++++++++++++++++--------------------
 .pre-commit-config.yaml | 12 +++----
 7 files changed, 205 insertions(+), 204 deletions(-)

diff --git a/.constraints/py3.10.txt b/.constraints/py3.10.txt
index 1bc95693..3588a1f9 100644
--- a/.constraints/py3.10.txt
+++ b/.constraints/py3.10.txt
@@ -9,13 +9,13 @@ arrow==1.3.0
 asttokens==2.4.1
 async-lru==2.0.4
 attrs==24.2.0
-babel==2.15.0
+babel==2.16.0
 beautifulsoup4==4.12.3
 bleach==6.1.0
-cachetools==5.4.0
-cattrs==23.2.3
-certifi==2024.7.4
-cffi==1.17.0
+cachetools==5.5.0
+cattrs==24.1.0
+certifi==2024.8.30
+cffi==1.17.1
 cfgv==3.4.0
 chardet==5.2.0
 charset-normalizer==3.3.2
@@ -31,9 +31,9 @@ docstring-to-markdown==0.15
 docutils==0.21.2
 exceptiongroup==1.2.2
 execnet==2.1.1
-executing==2.0.1
+executing==2.1.0
 fastjsonschema==2.20.0
-filelock==3.15.4
+filelock==3.16.0
 fqdn==1.5.1
 gitdb==4.0.11
 gitpython==3.1.43
@@ -43,15 +43,15 @@ greenlet==3.0.3
 h11==0.14.0
 hepunits==2.3.4
 httpcore==1.0.5
-httpx==0.27.0
+httpx==0.27.2
 identify==2.6.0
-idna==3.7
+idna==3.8
 imagesize==1.4.1
-importlib-metadata==8.2.0
+importlib-metadata==8.4.0
 iniconfig==2.0.0
 ipykernel==6.29.5
-ipython==8.26.0
-ipywidgets==8.1.3
+ipython==8.27.0
+ipywidgets==8.1.5
 isoduration==20.11.0
 jedi==0.19.1
 jinja2==3.1.4
@@ -67,14 +67,14 @@ jupyter-lsp==2.2.5
 jupyter-server==2.14.2
 jupyter-server-mathjax==0.2.6
 jupyter-server-terminals==0.5.3
-jupyterlab==4.2.4
-jupyterlab-code-formatter==3.0.1
+jupyterlab==4.2.5
+jupyterlab-code-formatter==3.0.2
 jupyterlab-git==0.50.1
 jupyterlab-lsp==5.1.0
 jupyterlab-myst==2.4.2
 jupyterlab-pygments==0.3.0
 jupyterlab-server==2.27.3
-jupyterlab-widgets==3.0.11
+jupyterlab-widgets==3.0.13
 latexcodec==3.0.0
 lsprotocol==2023.0.1
 markdown-it-py==3.0.0
@@ -83,13 +83,13 @@ matplotlib-inline==0.1.7
 mdit-py-plugins==0.4.1
 mdurl==0.1.2
 mistune==3.0.2
-mypy==1.11.1
+mypy==1.11.2
 mypy-extensions==1.0.0
 myst-nb==1.1.1
 myst-parser==4.0.0
 nbclient==0.6.8
 nbconvert==7.16.4
-nbdime==4.0.1
+nbdime==4.0.2
 nbformat==5.10.4
 nbmake==1.5.4
 nest-asyncio==1.6.0
@@ -99,9 +99,9 @@ overrides==7.7.0
 packaging==24.1
 pandocfilters==1.5.1
 parso==0.8.4
-particle==0.24.0
+particle==0.25.0
 pexpect==4.9.0
-platformdirs==4.2.2
+platformdirs==4.3.2
 pluggy==1.5.0
 pre-commit==3.8.0
 prometheus-client==0.20.0
@@ -115,7 +115,7 @@ pycparser==2.22
 pydata-sphinx-theme==0.15.4
 pydot==1.4.2
 pygments==2.18.0
-pyparsing==3.1.2
+pyparsing==3.1.4
 pyproject-api==1.7.1
 pytest==8.3.2
 pytest-cov==5.0.0
@@ -126,26 +126,26 @@ python-dateutil==2.9.0.post0
 python-json-logger==2.0.7
 python-lsp-jsonrpc==1.1.2
 python-lsp-ruff==2.2.2
-python-lsp-server==1.11.0
+python-lsp-server==1.12.0
 pytoolconfig==1.3.1
 pyyaml==6.0.2
-pyzmq==26.1.0
+pyzmq==26.2.0
 referencing==0.35.1
 requests==2.32.3
 rfc3339-validator==0.1.4
 rfc3986-validator==0.1.1
 rope==1.13.0
 rpds-py==0.20.0
-ruff==0.5.6
+ruff==0.6.4
 send2trash==1.8.3
 six==1.16.0
 smmap==5.0.1
 sniffio==1.3.1
 snowballstemmer==2.2.0
-soupsieve==2.5
+soupsieve==2.6
 sphinx==8.0.2
 sphinx-api-relink==0.0.9
-sphinx-autobuild==2024.4.16
+sphinx-autobuild==2024.9.3
 sphinx-book-theme==1.1.3
 sphinx-codeautolink==0.15.2
 sphinx-comments==0.0.3
@@ -162,35 +162,35 @@ sphinxcontrib-htmlhelp==2.1.0
 sphinxcontrib-jsmath==1.0.1
 sphinxcontrib-qthelp==2.0.0
 sphinxcontrib-serializinghtml==2.0.0
-sqlalchemy==2.0.32
+sqlalchemy==2.0.34
 stack-data==0.6.3
-starlette==0.38.2
+starlette==0.38.5
 tabulate==0.9.0
 terminado==0.18.1
 tinycss2==1.3.0
 tomli==2.0.1
 tornado==6.4.1
-tox==4.17.0
+tox==4.18.1
 tqdm==4.66.5
 traitlets==5.14.3
-types-python-dateutil==2.9.0.20240316
-types-pyyaml==6.0.12.20240724
-types-setuptools==71.1.0.20240806
+types-python-dateutil==2.9.0.20240906
+types-pyyaml==6.0.12.20240808
+types-setuptools==74.1.0.20240907
 typing-extensions==4.12.2
 ujson==5.10.0
 uri-template==1.3.0
 urllib3==2.2.2
-uvicorn==0.30.5
-virtualenv==20.26.3
-watchfiles==0.23.0
+uvicorn==0.30.6
+virtualenv==20.26.4
+watchfiles==0.24.0
 wcwidth==0.2.13
-webcolors==24.6.0
+webcolors==24.8.0
 webencodings==0.5.1
 websocket-client==1.8.0
-websockets==12.0
+websockets==13.0.1
 wheel==0.44.0
-widgetsnbextension==4.0.11
-zipp==3.19.2
+widgetsnbextension==4.0.13
+zipp==3.20.1
 
 # The following packages were excluded from the output:
 # setuptools
diff --git a/.constraints/py3.11.txt b/.constraints/py3.11.txt
index fd32efd0..b03e375b 100644
--- a/.constraints/py3.11.txt
+++ b/.constraints/py3.11.txt
@@ -9,13 +9,13 @@ arrow==1.3.0
 asttokens==2.4.1
 async-lru==2.0.4
 attrs==24.2.0
-babel==2.15.0
+babel==2.16.0
 beautifulsoup4==4.12.3
 bleach==6.1.0
-cachetools==5.4.0
-cattrs==23.2.3
-certifi==2024.7.4
-cffi==1.17.0
+cachetools==5.5.0
+cattrs==24.1.0
+certifi==2024.8.30
+cffi==1.17.1
 cfgv==3.4.0
 chardet==5.2.0
 charset-normalizer==3.3.2
@@ -30,9 +30,9 @@ distlib==0.3.8
 docstring-to-markdown==0.15
 docutils==0.21.2
 execnet==2.1.1
-executing==2.0.1
+executing==2.1.0
 fastjsonschema==2.20.0
-filelock==3.15.4
+filelock==3.16.0
 fqdn==1.5.1
 gitdb==4.0.11
 gitpython==3.1.43
@@ -42,15 +42,15 @@ greenlet==3.0.3
 h11==0.14.0
 hepunits==2.3.4
 httpcore==1.0.5
-httpx==0.27.0
+httpx==0.27.2
 identify==2.6.0
-idna==3.7
+idna==3.8
 imagesize==1.4.1
-importlib-metadata==8.2.0
+importlib-metadata==8.4.0
 iniconfig==2.0.0
 ipykernel==6.29.5
-ipython==8.26.0
-ipywidgets==8.1.3
+ipython==8.27.0
+ipywidgets==8.1.5
 isoduration==20.11.0
 jedi==0.19.1
 jinja2==3.1.4
@@ -66,14 +66,14 @@ jupyter-lsp==2.2.5
 jupyter-server==2.14.2
 jupyter-server-mathjax==0.2.6
 jupyter-server-terminals==0.5.3
-jupyterlab==4.2.4
-jupyterlab-code-formatter==3.0.1
+jupyterlab==4.2.5
+jupyterlab-code-formatter==3.0.2
 jupyterlab-git==0.50.1
 jupyterlab-lsp==5.1.0
 jupyterlab-myst==2.4.2
 jupyterlab-pygments==0.3.0
 jupyterlab-server==2.27.3
-jupyterlab-widgets==3.0.11
+jupyterlab-widgets==3.0.13
 latexcodec==3.0.0
 lsprotocol==2023.0.1
 markdown-it-py==3.0.0
@@ -82,13 +82,13 @@ matplotlib-inline==0.1.7
 mdit-py-plugins==0.4.1
 mdurl==0.1.2
 mistune==3.0.2
-mypy==1.11.1
+mypy==1.11.2
 mypy-extensions==1.0.0
 myst-nb==1.1.1
 myst-parser==4.0.0
 nbclient==0.6.8
 nbconvert==7.16.4
-nbdime==4.0.1
+nbdime==4.0.2
 nbformat==5.10.4
 nbmake==1.5.4
 nest-asyncio==1.6.0
@@ -98,9 +98,9 @@ overrides==7.7.0
 packaging==24.1
 pandocfilters==1.5.1
 parso==0.8.4
-particle==0.24.0
+particle==0.25.0
 pexpect==4.9.0
-platformdirs==4.2.2
+platformdirs==4.3.2
 pluggy==1.5.0
 pre-commit==3.8.0
 prometheus-client==0.20.0
@@ -114,7 +114,7 @@ pycparser==2.22
 pydata-sphinx-theme==0.15.4
 pydot==1.4.2
 pygments==2.18.0
-pyparsing==3.1.2
+pyparsing==3.1.4
 pyproject-api==1.7.1
 pytest==8.3.2
 pytest-cov==5.0.0
@@ -125,26 +125,26 @@ python-dateutil==2.9.0.post0
 python-json-logger==2.0.7
 python-lsp-jsonrpc==1.1.2
 python-lsp-ruff==2.2.2
-python-lsp-server==1.11.0
+python-lsp-server==1.12.0
 pytoolconfig==1.3.1
 pyyaml==6.0.2
-pyzmq==26.1.0
+pyzmq==26.2.0
 referencing==0.35.1
 requests==2.32.3
 rfc3339-validator==0.1.4
 rfc3986-validator==0.1.1
 rope==1.13.0
 rpds-py==0.20.0
-ruff==0.5.6
+ruff==0.6.4
 send2trash==1.8.3
 six==1.16.0
 smmap==5.0.1
 sniffio==1.3.1
 snowballstemmer==2.2.0
-soupsieve==2.5
+soupsieve==2.6
 sphinx==8.0.2
 sphinx-api-relink==0.0.9
-sphinx-autobuild==2024.4.16
+sphinx-autobuild==2024.9.3
 sphinx-book-theme==1.1.3
 sphinx-codeautolink==0.15.2
 sphinx-comments==0.0.3
@@ -161,34 +161,35 @@ sphinxcontrib-htmlhelp==2.1.0
 sphinxcontrib-jsmath==1.0.1
 sphinxcontrib-qthelp==2.0.0
 sphinxcontrib-serializinghtml==2.0.0
-sqlalchemy==2.0.32
+sqlalchemy==2.0.34
 stack-data==0.6.3
-starlette==0.38.2
+starlette==0.38.5
 tabulate==0.9.0
 terminado==0.18.1
 tinycss2==1.3.0
+tomli==2.0.1
 tornado==6.4.1
-tox==4.17.0
+tox==4.18.1
 tqdm==4.66.5
 traitlets==5.14.3
-types-python-dateutil==2.9.0.20240316
-types-pyyaml==6.0.12.20240724
-types-setuptools==71.1.0.20240806
+types-python-dateutil==2.9.0.20240906
+types-pyyaml==6.0.12.20240808
+types-setuptools==74.1.0.20240907
 typing-extensions==4.12.2
 ujson==5.10.0
 uri-template==1.3.0
 urllib3==2.2.2
-uvicorn==0.30.5
-virtualenv==20.26.3
-watchfiles==0.23.0
+uvicorn==0.30.6
+virtualenv==20.26.4
+watchfiles==0.24.0
 wcwidth==0.2.13
-webcolors==24.6.0
+webcolors==24.8.0
 webencodings==0.5.1
 websocket-client==1.8.0
-websockets==12.0
+websockets==13.0.1
 wheel==0.44.0
-widgetsnbextension==4.0.11
-zipp==3.19.2
+widgetsnbextension==4.0.13
+zipp==3.20.1
 
 # The following packages were excluded from the output:
 # setuptools
diff --git a/.constraints/py3.12.txt b/.constraints/py3.12.txt
index 187c11d8..32b467d7 100644
--- a/.constraints/py3.12.txt
+++ b/.constraints/py3.12.txt
@@ -9,13 +9,13 @@ arrow==1.3.0
 asttokens==2.4.1
 async-lru==2.0.4
 attrs==24.2.0
-babel==2.15.0
+babel==2.16.0
 beautifulsoup4==4.12.3
 bleach==6.1.0
-cachetools==5.4.0
-cattrs==23.2.3
-certifi==2024.7.4
-cffi==1.17.0
+cachetools==5.5.0
+cattrs==24.1.0
+certifi==2024.8.30
+cffi==1.17.1
 cfgv==3.4.0
 chardet==5.2.0
 charset-normalizer==3.3.2
@@ -30,9 +30,9 @@ distlib==0.3.8
 docstring-to-markdown==0.15
 docutils==0.21.2
 execnet==2.1.1
-executing==2.0.1
+executing==2.1.0
 fastjsonschema==2.20.0
-filelock==3.15.4
+filelock==3.16.0
 fqdn==1.5.1
 gitdb==4.0.11
 gitpython==3.1.43
@@ -42,15 +42,15 @@ greenlet==3.0.3
 h11==0.14.0
 hepunits==2.3.4
 httpcore==1.0.5
-httpx==0.27.0
+httpx==0.27.2
 identify==2.6.0
-idna==3.7
+idna==3.8
 imagesize==1.4.1
-importlib-metadata==8.2.0
+importlib-metadata==8.4.0
 iniconfig==2.0.0
 ipykernel==6.29.5
-ipython==8.26.0
-ipywidgets==8.1.3
+ipython==8.27.0
+ipywidgets==8.1.5
 isoduration==20.11.0
 jedi==0.19.1
 jinja2==3.1.4
@@ -66,14 +66,14 @@ jupyter-lsp==2.2.5
 jupyter-server==2.14.2
 jupyter-server-mathjax==0.2.6
 jupyter-server-terminals==0.5.3
-jupyterlab==4.2.4
-jupyterlab-code-formatter==3.0.1
+jupyterlab==4.2.5
+jupyterlab-code-formatter==3.0.2
 jupyterlab-git==0.50.1
 jupyterlab-lsp==5.1.0
 jupyterlab-myst==2.4.2
 jupyterlab-pygments==0.3.0
 jupyterlab-server==2.27.3
-jupyterlab-widgets==3.0.11
+jupyterlab-widgets==3.0.13
 latexcodec==3.0.0
 lsprotocol==2023.0.1
 markdown-it-py==3.0.0
@@ -82,13 +82,13 @@ matplotlib-inline==0.1.7
 mdit-py-plugins==0.4.1
 mdurl==0.1.2
 mistune==3.0.2
-mypy==1.11.1
+mypy==1.11.2
 mypy-extensions==1.0.0
 myst-nb==1.1.1
 myst-parser==4.0.0
 nbclient==0.6.8
 nbconvert==7.16.4
-nbdime==4.0.1
+nbdime==4.0.2
 nbformat==5.10.4
 nbmake==1.5.4
 nest-asyncio==1.6.0
@@ -98,9 +98,9 @@ overrides==7.7.0
 packaging==24.1
 pandocfilters==1.5.1
 parso==0.8.4
-particle==0.24.0
+particle==0.25.0
 pexpect==4.9.0
-platformdirs==4.2.2
+platformdirs==4.3.2
 pluggy==1.5.0
 pre-commit==3.8.0
 prometheus-client==0.20.0
@@ -114,7 +114,7 @@ pycparser==2.22
 pydata-sphinx-theme==0.15.4
 pydot==1.4.2
 pygments==2.18.0
-pyparsing==3.1.2
+pyparsing==3.1.4
 pyproject-api==1.7.1
 pytest==8.3.2
 pytest-cov==5.0.0
@@ -125,26 +125,26 @@ python-dateutil==2.9.0.post0
 python-json-logger==2.0.7
 python-lsp-jsonrpc==1.1.2
 python-lsp-ruff==2.2.2
-python-lsp-server==1.11.0
+python-lsp-server==1.12.0
 pytoolconfig==1.3.1
 pyyaml==6.0.2
-pyzmq==26.1.0
+pyzmq==26.2.0
 referencing==0.35.1
 requests==2.32.3
 rfc3339-validator==0.1.4
 rfc3986-validator==0.1.1
 rope==1.13.0
 rpds-py==0.20.0
-ruff==0.5.6
+ruff==0.6.4
 send2trash==1.8.3
 six==1.16.0
 smmap==5.0.1
 sniffio==1.3.1
 snowballstemmer==2.2.0
-soupsieve==2.5
+soupsieve==2.6
 sphinx==8.0.2
 sphinx-api-relink==0.0.9
-sphinx-autobuild==2024.4.16
+sphinx-autobuild==2024.9.3
 sphinx-book-theme==1.1.3
 sphinx-codeautolink==0.15.2
 sphinx-comments==0.0.3
@@ -161,34 +161,34 @@ sphinxcontrib-htmlhelp==2.1.0
 sphinxcontrib-jsmath==1.0.1
 sphinxcontrib-qthelp==2.0.0
 sphinxcontrib-serializinghtml==2.0.0
-sqlalchemy==2.0.32
+sqlalchemy==2.0.34
 stack-data==0.6.3
-starlette==0.38.2
+starlette==0.38.5
 tabulate==0.9.0
 terminado==0.18.1
 tinycss2==1.3.0
 tornado==6.4.1
-tox==4.17.0
+tox==4.18.1
 tqdm==4.66.5
 traitlets==5.14.3
-types-python-dateutil==2.9.0.20240316
-types-pyyaml==6.0.12.20240724
-types-setuptools==71.1.0.20240806
+types-python-dateutil==2.9.0.20240906
+types-pyyaml==6.0.12.20240808
+types-setuptools==74.1.0.20240907
 typing-extensions==4.12.2
 ujson==5.10.0
 uri-template==1.3.0
 urllib3==2.2.2
-uvicorn==0.30.5
-virtualenv==20.26.3
-watchfiles==0.23.0
+uvicorn==0.30.6
+virtualenv==20.26.4
+watchfiles==0.24.0
 wcwidth==0.2.13
-webcolors==24.6.0
+webcolors==24.8.0
 webencodings==0.5.1
 websocket-client==1.8.0
-websockets==12.0
+websockets==13.0.1
 wheel==0.44.0
-widgetsnbextension==4.0.11
-zipp==3.19.2
+widgetsnbextension==4.0.13
+zipp==3.20.1
 
 # The following packages were excluded from the output:
 # setuptools
diff --git a/.constraints/py3.7.txt b/.constraints/py3.7.txt
index da79b3a7..bb11c4d6 100644
--- a/.constraints/py3.7.txt
+++ b/.constraints/py3.7.txt
@@ -14,9 +14,9 @@ backcall==0.2.0
 beautifulsoup4==4.12.3
 bleach==6.0.0
 cached-property==1.5.2
-cachetools==5.4.0
+cachetools==5.5.0
 cattrs==23.1.2
-certifi==2024.7.4
+certifi==2024.8.30
 cffi==1.15.1
 cfgv==3.3.1
 chardet==5.2.0
@@ -44,7 +44,7 @@ graphviz==0.20.1
 greenlet==3.0.3
 hepunits==2.3.3
 identify==2.5.24
-idna==3.7
+idna==3.8
 imagesize==1.4.1
 importlib-metadata==6.7.0
 importlib-resources==5.12.0
@@ -52,7 +52,7 @@ iniconfig==2.0.0
 ipykernel==6.16.2
 ipython==7.34.0
 ipython-genutils==0.2.0
-ipywidgets==8.1.3
+ipywidgets==8.1.5
 isoduration==20.11.0
 jedi==0.18.2
 jinja2==3.1.4
@@ -65,18 +65,18 @@ jupyter-core==4.12.0
 jupyter-events==0.6.3
 jupyter-lsp==1.5.1
 jupyter-server==1.24.0
-jupyter-server-fileid==0.9.2
+jupyter-server-fileid==0.9.3
 jupyter-server-mathjax==0.2.6
 jupyter-server-ydoc==0.8.0
 jupyter-ydoc==0.2.5
-jupyterlab==3.6.7
-jupyterlab-code-formatter==3.0.1
+jupyterlab==3.6.8
+jupyterlab-code-formatter==3.0.2
 jupyterlab-git==0.44.0
 jupyterlab-lsp==3.10.2
 jupyterlab-myst==1.2.0
 jupyterlab-pygments==0.2.2
 jupyterlab-server==2.24.0
-jupyterlab-widgets==3.0.11
+jupyterlab-widgets==3.0.13
 latexcodec==3.0.0
 livereload==2.7.0
 lsprotocol==2023.0.1
@@ -117,11 +117,11 @@ ptyprocess==0.7.0
 pybtex==0.24.0
 pybtex-docutils==1.0.3
 pycparser==2.21
-pydantic==1.10.17
+pydantic==1.10.18
 pydata-sphinx-theme==0.13.3
 pydot==1.4.2
 pygments==2.17.2
-pyparsing==3.1.2
+pyparsing==3.1.4
 pyproject-api==1.5.3
 pyrsistent==0.19.3
 pytest==7.4.4
@@ -137,7 +137,7 @@ python-lsp-server==1.7.4
 pytoolconfig==1.3.0
 pytz==2024.1
 pyyaml==6.0.1
-pyzmq==26.1.0
+pyzmq==26.2.0
 requests==2.31.0
 rfc3339-validator==0.1.4
 rfc3986-validator==0.1.1
@@ -168,7 +168,7 @@ sphinxcontrib-htmlhelp==2.0.0
 sphinxcontrib-jsmath==1.0.1
 sphinxcontrib-qthelp==1.0.3
 sphinxcontrib-serializinghtml==1.1.5
-sqlalchemy==1.4.53
+sqlalchemy==1.4.54
 tabulate==0.9.0
 terminado==0.17.1
 tinycss2==1.2.1
@@ -184,13 +184,13 @@ typing-extensions==4.7.1
 ujson==5.7.0
 uri-template==1.3.0
 urllib3==2.0.7
-virtualenv==20.26.3
+virtualenv==20.26.4
 wcwidth==0.2.13
 webcolors==1.13
 webencodings==0.5.1
 websocket-client==1.6.1
 wheel==0.42.0
-widgetsnbextension==4.0.11
+widgetsnbextension==4.0.13
 y-py==0.6.2
 ypy-websocket==0.8.4
 zipp==3.15.0
diff --git a/.constraints/py3.8.txt b/.constraints/py3.8.txt
index 67b05998..0e6f1f3f 100644
--- a/.constraints/py3.8.txt
+++ b/.constraints/py3.8.txt
@@ -9,14 +9,14 @@ arrow==1.3.0
 asttokens==2.4.1
 async-lru==2.0.4
 attrs==24.2.0
-babel==2.15.0
+babel==2.16.0
 backcall==0.2.0
 beautifulsoup4==4.12.3
 bleach==6.1.0
-cachetools==5.4.0
-cattrs==23.2.3
-certifi==2024.7.4
-cffi==1.17.0
+cachetools==5.5.0
+cattrs==24.1.0
+certifi==2024.8.30
+cffi==1.17.1
 cfgv==3.4.0
 chardet==5.2.0
 charset-normalizer==3.3.2
@@ -32,9 +32,9 @@ docstring-to-markdown==0.15
 docutils==0.17.1
 exceptiongroup==1.2.2
 execnet==2.1.1
-executing==2.0.1
+executing==2.1.0
 fastjsonschema==2.20.0
-filelock==3.15.4
+filelock==3.16.0
 fqdn==1.5.1
 gitdb==4.0.11
 gitpython==3.1.43
@@ -44,16 +44,16 @@ greenlet==3.0.3
 h11==0.14.0
 hepunits==2.3.4
 httpcore==1.0.5
-httpx==0.27.0
+httpx==0.27.2
 identify==2.6.0
-idna==3.7
+idna==3.8
 imagesize==1.4.1
-importlib-metadata==8.2.0
-importlib-resources==6.4.0
+importlib-metadata==8.4.0
+importlib-resources==6.4.4
 iniconfig==2.0.0
 ipykernel==6.29.5
 ipython==8.12.3
-ipywidgets==8.1.3
+ipywidgets==8.1.5
 isoduration==20.11.0
 jedi==0.19.1
 jinja2==3.1.4
@@ -69,14 +69,14 @@ jupyter-lsp==2.2.5
 jupyter-server==2.14.2
 jupyter-server-mathjax==0.2.6
 jupyter-server-terminals==0.5.3
-jupyterlab==4.2.4
-jupyterlab-code-formatter==3.0.1
+jupyterlab==4.2.5
+jupyterlab-code-formatter==3.0.2
 jupyterlab-git==0.50.1
 jupyterlab-lsp==5.1.0
 jupyterlab-myst==2.4.2
 jupyterlab-pygments==0.3.0
 jupyterlab-server==2.27.3
-jupyterlab-widgets==3.0.11
+jupyterlab-widgets==3.0.13
 latexcodec==3.0.0
 livereload==2.7.0
 lsprotocol==2023.0.1
@@ -86,13 +86,13 @@ matplotlib-inline==0.1.7
 mdit-py-plugins==0.3.5
 mdurl==0.1.2
 mistune==3.0.2
-mypy==1.11.1
+mypy==1.11.2
 mypy-extensions==1.0.0
 myst-nb==0.17.2
 myst-parser==0.18.1
 nbclient==0.6.8
 nbconvert==7.16.4
-nbdime==4.0.1
+nbdime==4.0.2
 nbformat==5.10.4
 nbmake==1.5.4
 nest-asyncio==1.6.0
@@ -102,11 +102,11 @@ overrides==7.7.0
 packaging==24.1
 pandocfilters==1.5.1
 parso==0.8.4
-particle==0.24.0
+particle==0.25.0
 pexpect==4.9.0
 pickleshare==0.7.5
 pkgutil-resolve-name==1.3.10
-platformdirs==4.2.2
+platformdirs==4.3.2
 pluggy==1.5.0
 pre-commit==3.5.0
 prometheus-client==0.20.0
@@ -120,7 +120,7 @@ pycparser==2.22
 pydata-sphinx-theme==0.14.4
 pydot==1.4.2
 pygments==2.18.0
-pyparsing==3.1.2
+pyparsing==3.1.4
 pyproject-api==1.7.1
 pytest==8.3.2
 pytest-cov==5.0.0
@@ -131,24 +131,24 @@ python-dateutil==2.9.0.post0
 python-json-logger==2.0.7
 python-lsp-jsonrpc==1.1.2
 python-lsp-ruff==2.2.2
-python-lsp-server==1.11.0
+python-lsp-server==1.12.0
 pytoolconfig==1.3.1
 pytz==2024.1
 pyyaml==6.0.2
-pyzmq==26.1.0
+pyzmq==26.2.0
 referencing==0.35.1
 requests==2.32.3
 rfc3339-validator==0.1.4
 rfc3986-validator==0.1.1
 rope==1.13.0
 rpds-py==0.20.0
-ruff==0.5.6
+ruff==0.6.4
 send2trash==1.8.3
 six==1.16.0
 smmap==5.0.1
 sniffio==1.3.1
 snowballstemmer==2.2.0
-soupsieve==2.5
+soupsieve==2.6
 sphinx==5.3.0
 sphinx-api-relink==0.0.9
 sphinx-autobuild==2021.3.14
@@ -168,31 +168,31 @@ sphinxcontrib-htmlhelp==2.0.1
 sphinxcontrib-jsmath==1.0.1
 sphinxcontrib-qthelp==1.0.3
 sphinxcontrib-serializinghtml==1.1.5
-sqlalchemy==2.0.32
+sqlalchemy==2.0.34
 stack-data==0.6.3
 tabulate==0.9.0
 terminado==0.18.1
 tinycss2==1.3.0
 tomli==2.0.1
 tornado==6.4.1
-tox==4.17.0
+tox==4.18.1
 tqdm==4.66.5
 traitlets==5.14.3
-types-python-dateutil==2.9.0.20240316
-types-pyyaml==6.0.12.20240724
-types-setuptools==71.1.0.20240806
+types-python-dateutil==2.9.0.20240906
+types-pyyaml==6.0.12.20240808
+types-setuptools==74.1.0.20240907
 typing-extensions==4.12.2
 ujson==5.10.0
 uri-template==1.3.0
 urllib3==2.2.2
-virtualenv==20.26.3
+virtualenv==20.26.4
 wcwidth==0.2.13
-webcolors==24.6.0
+webcolors==24.8.0
 webencodings==0.5.1
 websocket-client==1.8.0
 wheel==0.44.0
-widgetsnbextension==4.0.11
-zipp==3.19.2
+widgetsnbextension==4.0.13
+zipp==3.20.1
 
 # The following packages were excluded from the output:
 # setuptools
diff --git a/.constraints/py3.9.txt b/.constraints/py3.9.txt
index 608df10d..725cb2f5 100644
--- a/.constraints/py3.9.txt
+++ b/.constraints/py3.9.txt
@@ -9,13 +9,13 @@ arrow==1.3.0
 asttokens==2.4.1
 async-lru==2.0.4
 attrs==24.2.0
-babel==2.15.0
+babel==2.16.0
 beautifulsoup4==4.12.3
 bleach==6.1.0
-cachetools==5.4.0
-cattrs==23.2.3
-certifi==2024.7.4
-cffi==1.17.0
+cachetools==5.5.0
+cattrs==24.1.0
+certifi==2024.8.30
+cffi==1.17.1
 cfgv==3.4.0
 chardet==5.2.0
 charset-normalizer==3.3.2
@@ -31,9 +31,9 @@ docstring-to-markdown==0.15
 docutils==0.21.2
 exceptiongroup==1.2.2
 execnet==2.1.1
-executing==2.0.1
+executing==2.1.0
 fastjsonschema==2.20.0
-filelock==3.15.4
+filelock==3.16.0
 fqdn==1.5.1
 gitdb==4.0.11
 gitpython==3.1.43
@@ -43,15 +43,15 @@ greenlet==3.0.3
 h11==0.14.0
 hepunits==2.3.4
 httpcore==1.0.5
-httpx==0.27.0
+httpx==0.27.2
 identify==2.6.0
-idna==3.7
+idna==3.8
 imagesize==1.4.1
-importlib-metadata==8.2.0
+importlib-metadata==8.4.0
 iniconfig==2.0.0
 ipykernel==6.29.5
 ipython==8.18.1
-ipywidgets==8.1.3
+ipywidgets==8.1.5
 isoduration==20.11.0
 jedi==0.19.1
 jinja2==3.1.4
@@ -67,14 +67,14 @@ jupyter-lsp==2.2.5
 jupyter-server==2.14.2
 jupyter-server-mathjax==0.2.6
 jupyter-server-terminals==0.5.3
-jupyterlab==4.2.4
-jupyterlab-code-formatter==3.0.1
+jupyterlab==4.2.5
+jupyterlab-code-formatter==3.0.2
 jupyterlab-git==0.50.1
 jupyterlab-lsp==5.1.0
 jupyterlab-myst==2.4.2
 jupyterlab-pygments==0.3.0
 jupyterlab-server==2.27.3
-jupyterlab-widgets==3.0.11
+jupyterlab-widgets==3.0.13
 latexcodec==3.0.0
 lsprotocol==2023.0.1
 markdown-it-py==3.0.0
@@ -83,13 +83,13 @@ matplotlib-inline==0.1.7
 mdit-py-plugins==0.4.1
 mdurl==0.1.2
 mistune==3.0.2
-mypy==1.11.1
+mypy==1.11.2
 mypy-extensions==1.0.0
 myst-nb==1.1.1
 myst-parser==3.0.1
 nbclient==0.6.8
 nbconvert==7.16.4
-nbdime==4.0.1
+nbdime==4.0.2
 nbformat==5.10.4
 nbmake==1.5.4
 nest-asyncio==1.6.0
@@ -99,9 +99,9 @@ overrides==7.7.0
 packaging==24.1
 pandocfilters==1.5.1
 parso==0.8.4
-particle==0.24.0
+particle==0.25.0
 pexpect==4.9.0
-platformdirs==4.2.2
+platformdirs==4.3.2
 pluggy==1.5.0
 pre-commit==3.8.0
 prometheus-client==0.20.0
@@ -115,7 +115,7 @@ pycparser==2.22
 pydata-sphinx-theme==0.15.4
 pydot==1.4.2
 pygments==2.18.0
-pyparsing==3.1.2
+pyparsing==3.1.4
 pyproject-api==1.7.1
 pytest==8.3.2
 pytest-cov==5.0.0
@@ -126,26 +126,26 @@ python-dateutil==2.9.0.post0
 python-json-logger==2.0.7
 python-lsp-jsonrpc==1.1.2
 python-lsp-ruff==2.2.2
-python-lsp-server==1.11.0
+python-lsp-server==1.12.0
 pytoolconfig==1.3.1
 pyyaml==6.0.2
-pyzmq==26.1.0
+pyzmq==26.2.0
 referencing==0.35.1
 requests==2.32.3
 rfc3339-validator==0.1.4
 rfc3986-validator==0.1.1
 rope==1.13.0
 rpds-py==0.20.0
-ruff==0.5.6
+ruff==0.6.4
 send2trash==1.8.3
 six==1.16.0
 smmap==5.0.1
 sniffio==1.3.1
 snowballstemmer==2.2.0
-soupsieve==2.5
+soupsieve==2.6
 sphinx==7.4.7
 sphinx-api-relink==0.0.9
-sphinx-autobuild==2024.4.16
+sphinx-autobuild==2024.9.3
 sphinx-book-theme==1.1.3
 sphinx-codeautolink==0.15.2
 sphinx-comments==0.0.3
@@ -162,35 +162,35 @@ sphinxcontrib-htmlhelp==2.1.0
 sphinxcontrib-jsmath==1.0.1
 sphinxcontrib-qthelp==2.0.0
 sphinxcontrib-serializinghtml==2.0.0
-sqlalchemy==2.0.32
+sqlalchemy==2.0.34
 stack-data==0.6.3
-starlette==0.38.2
+starlette==0.38.5
 tabulate==0.9.0
 terminado==0.18.1
 tinycss2==1.3.0
 tomli==2.0.1
 tornado==6.4.1
-tox==4.17.0
+tox==4.18.1
 tqdm==4.66.5
 traitlets==5.14.3
-types-python-dateutil==2.9.0.20240316
-types-pyyaml==6.0.12.20240724
-types-setuptools==71.1.0.20240806
+types-python-dateutil==2.9.0.20240906
+types-pyyaml==6.0.12.20240808
+types-setuptools==74.1.0.20240907
 typing-extensions==4.12.2
 ujson==5.10.0
 uri-template==1.3.0
 urllib3==2.2.2
-uvicorn==0.30.5
-virtualenv==20.26.3
-watchfiles==0.23.0
+uvicorn==0.30.6
+virtualenv==20.26.4
+watchfiles==0.24.0
 wcwidth==0.2.13
-webcolors==24.6.0
+webcolors==24.8.0
 webencodings==0.5.1
 websocket-client==1.8.0
-websockets==12.0
+websockets==13.0.1
 wheel==0.44.0
-widgetsnbextension==4.0.11
-zipp==3.19.2
+widgetsnbextension==4.0.13
+zipp==3.20.1
 
 # The following packages were excluded from the output:
 # setuptools
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 234ffcd2..1a45fa78 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -42,7 +42,7 @@ repos:
             metadata.vscode
 
   - repo: https://github.com/ComPWA/policy
-    rev: 0.3.18
+    rev: 0.4.0
     hooks:
       - id: check-dev-files
         args:
@@ -61,7 +61,7 @@ repos:
           - --extras-require=doc,viz
 
   - repo: https://github.com/astral-sh/ruff-pre-commit
-    rev: v0.5.6
+    rev: v0.6.4
     hooks:
       - id: ruff
         args: [--fix]
@@ -110,7 +110,7 @@ repos:
           - --in-place
 
   - repo: https://github.com/python-jsonschema/check-jsonschema
-    rev: 0.29.1
+    rev: 0.29.2
     hooks:
       - id: check-jsonschema
         name: Check CITATION.cff
@@ -123,12 +123,12 @@ repos:
         pass_filenames: false
 
   - repo: https://github.com/streetsidesoftware/cspell-cli
-    rev: v8.13.1
+    rev: v8.13.3
     hooks:
       - id: cspell
 
   - repo: https://github.com/editorconfig-checker/editorconfig-checker.python
-    rev: 2.7.3
+    rev: 3.0.3
     hooks:
       - id: editorconfig-checker
         name: editorconfig
@@ -149,6 +149,6 @@ repos:
           - python
 
   - repo: https://github.com/ComPWA/mirrors-pyright
-    rev: v1.1.374
+    rev: v1.1.379
     hooks:
       - id: pyright