diff --git a/.constraints/py3.10.txt b/.constraints/py3.10.txt index 11789b62..e3def6f5 100644 --- a/.constraints/py3.10.txt +++ b/.constraints/py3.10.txt @@ -18,6 +18,7 @@ beautifulsoup4==4.12.2 black==23.11.0 bleach==6.1.0 cachetools==5.3.2 +cattrs==23.2.3 certifi==2023.11.17 cffi==1.16.0 cfgv==3.4.0 @@ -40,6 +41,8 @@ fastjsonschema==2.19.0 filelock==3.13.1 fonttools==4.46.0 fqdn==1.5.1 +gitdb==4.0.11 +gitpython==3.1.40 graphviz==0.20.1 greenlet==3.0.1 identify==2.5.32 @@ -53,6 +56,7 @@ ipython==8.18.1 ipython-genutils==0.2.0 ipywidgets==8.1.1 isoduration==20.11.0 +isort==5.12.0 jedi==0.19.1 jinja2==3.1.2 json5==0.9.14 @@ -67,9 +71,11 @@ jupyter-core==5.5.0 jupyter-events==0.9.0 jupyter-lsp==2.2.1 jupyter-server==2.11.1 +jupyter-server-mathjax==0.2.6 jupyter-server-terminals==0.4.4 jupyterlab==4.0.9 jupyterlab-code-formatter==2.2.1 +jupyterlab-git==0.50.0 jupyterlab-lsp==5.0.1 jupyterlab-myst==2.1.0 jupyterlab-pygments==0.3.0 @@ -78,6 +84,7 @@ jupyterlab-widgets==3.0.9 kiwisolver==1.4.5 latexcodec==2.0.1 livereload==2.6.3 +lsprotocol==2023.0.0 markdown-it-py==2.2.0 markupsafe==2.1.3 matplotlib==3.8.2 @@ -91,6 +98,7 @@ myst-nb==1.0.0 myst-parser==1.0.0 nbclient==0.6.8 nbconvert==7.11.0 +nbdime==4.0.1 nbformat==5.9.2 nbmake==1.4.6 nest-asyncio==1.5.8 @@ -124,6 +132,7 @@ pytest==7.4.3 python-dateutil==2.8.2 python-json-logger==2.0.7 python-lsp-jsonrpc==1.1.2 +python-lsp-ruff==2.0.0 python-lsp-server==1.9.0 pytoolconfig==1.2.6 pyyaml==6.0.1 @@ -139,6 +148,7 @@ rpds-py==0.13.2 ruff==0.1.6 send2trash==1.8.2 six==1.16.0 +smmap==5.0.1 sniffio==1.3.0 snowballstemmer==2.2.0 soupsieve==2.5 diff --git a/.constraints/py3.11.txt b/.constraints/py3.11.txt index bc1e50f1..20d019cf 100644 --- a/.constraints/py3.11.txt +++ b/.constraints/py3.11.txt @@ -18,6 +18,7 @@ beautifulsoup4==4.12.2 black==23.11.0 bleach==6.1.0 cachetools==5.3.2 +cattrs==23.2.3 certifi==2023.11.17 cffi==1.16.0 cfgv==3.4.0 @@ -39,6 +40,8 @@ fastjsonschema==2.19.0 filelock==3.13.1 fonttools==4.46.0 fqdn==1.5.1 +gitdb==4.0.11 +gitpython==3.1.40 graphviz==0.20.1 greenlet==3.0.1 identify==2.5.32 @@ -52,6 +55,7 @@ ipython==8.18.1 ipython-genutils==0.2.0 ipywidgets==8.1.1 isoduration==20.11.0 +isort==5.12.0 jedi==0.19.1 jinja2==3.1.2 json5==0.9.14 @@ -66,9 +70,11 @@ jupyter-core==5.5.0 jupyter-events==0.9.0 jupyter-lsp==2.2.1 jupyter-server==2.11.1 +jupyter-server-mathjax==0.2.6 jupyter-server-terminals==0.4.4 jupyterlab==4.0.9 jupyterlab-code-formatter==2.2.1 +jupyterlab-git==0.50.0 jupyterlab-lsp==5.0.1 jupyterlab-myst==2.1.0 jupyterlab-pygments==0.3.0 @@ -77,6 +83,7 @@ jupyterlab-widgets==3.0.9 kiwisolver==1.4.5 latexcodec==2.0.1 livereload==2.6.3 +lsprotocol==2023.0.0 markdown-it-py==2.2.0 markupsafe==2.1.3 matplotlib==3.8.2 @@ -90,6 +97,7 @@ myst-nb==1.0.0 myst-parser==1.0.0 nbclient==0.6.8 nbconvert==7.11.0 +nbdime==4.0.1 nbformat==5.9.2 nbmake==1.4.6 nest-asyncio==1.5.8 @@ -123,6 +131,7 @@ pytest==7.4.3 python-dateutil==2.8.2 python-json-logger==2.0.7 python-lsp-jsonrpc==1.1.2 +python-lsp-ruff==2.0.0 python-lsp-server==1.9.0 pytoolconfig==1.2.6 pyyaml==6.0.1 @@ -138,6 +147,7 @@ rpds-py==0.13.2 ruff==0.1.6 send2trash==1.8.2 six==1.16.0 +smmap==5.0.1 sniffio==1.3.0 snowballstemmer==2.2.0 soupsieve==2.5 diff --git a/.constraints/py3.12.txt b/.constraints/py3.12.txt index 07829e7a..c2be91ee 100644 --- a/.constraints/py3.12.txt +++ b/.constraints/py3.12.txt @@ -18,6 +18,7 @@ beautifulsoup4==4.12.2 black==23.11.0 bleach==6.1.0 cachetools==5.3.2 +cattrs==23.2.3 certifi==2023.11.17 cffi==1.16.0 cfgv==3.4.0 @@ -39,6 +40,8 @@ fastjsonschema==2.19.0 filelock==3.13.1 fonttools==4.46.0 fqdn==1.5.1 +gitdb==4.0.11 +gitpython==3.1.40 graphviz==0.20.1 greenlet==3.0.1 identify==2.5.32 @@ -52,6 +55,7 @@ ipython==8.18.1 ipython-genutils==0.2.0 ipywidgets==8.1.1 isoduration==20.11.0 +isort==5.12.0 jedi==0.19.1 jinja2==3.1.2 json5==0.9.14 @@ -66,9 +70,11 @@ jupyter-core==5.5.0 jupyter-events==0.9.0 jupyter-lsp==2.2.1 jupyter-server==2.11.1 +jupyter-server-mathjax==0.2.6 jupyter-server-terminals==0.4.4 jupyterlab==4.0.9 jupyterlab-code-formatter==2.2.1 +jupyterlab-git==0.50.0 jupyterlab-lsp==5.0.1 jupyterlab-myst==2.1.0 jupyterlab-pygments==0.3.0 @@ -77,6 +83,7 @@ jupyterlab-widgets==3.0.9 kiwisolver==1.4.5 latexcodec==2.0.1 livereload==2.6.3 +lsprotocol==2023.0.0 markdown-it-py==2.2.0 markupsafe==2.1.3 matplotlib==3.8.2 @@ -90,6 +97,7 @@ myst-nb==1.0.0 myst-parser==1.0.0 nbclient==0.6.8 nbconvert==7.11.0 +nbdime==4.0.1 nbformat==5.9.2 nbmake==1.4.6 nest-asyncio==1.5.8 @@ -123,6 +131,7 @@ pytest==7.4.3 python-dateutil==2.8.2 python-json-logger==2.0.7 python-lsp-jsonrpc==1.1.2 +python-lsp-ruff==2.0.0 python-lsp-server==1.9.0 pytoolconfig==1.2.6 pyyaml==6.0.1 @@ -138,6 +147,7 @@ rpds-py==0.13.2 ruff==0.1.6 send2trash==1.8.2 six==1.16.0 +smmap==5.0.1 sniffio==1.3.0 snowballstemmer==2.2.0 soupsieve==2.5 diff --git a/.constraints/py3.7.txt b/.constraints/py3.7.txt index 34a19d45..a7ebed85 100644 --- a/.constraints/py3.7.txt +++ b/.constraints/py3.7.txt @@ -20,6 +20,7 @@ black==23.3.0 bleach==6.0.0 cached-property==1.5.2 cachetools==5.3.2 +cattrs==23.1.2 certifi==2023.11.17 cffi==1.15.1 cfgv==3.3.1 @@ -41,6 +42,8 @@ fastjsonschema==2.19.0 filelock==3.12.2 fonttools==4.38.0 fqdn==1.5.1 +gitdb==4.0.11 +gitpython==3.1.40 graphviz==0.20.1 greenlet==3.0.1 identify==2.5.24 @@ -55,6 +58,7 @@ ipython==7.34.0 ipython-genutils==0.2.0 ipywidgets==8.1.1 isoduration==20.11.0 +isort==5.11.5 jedi==0.18.2 jinja2==3.1.2 json5==0.9.14 @@ -69,10 +73,12 @@ jupyter-events==0.6.3 jupyter-lsp==1.5.1 jupyter-server==1.24.0 jupyter-server-fileid==0.9.0 +jupyter-server-mathjax==0.2.6 jupyter-server-ydoc==0.8.0 jupyter-ydoc==0.2.4 jupyterlab==3.6.6 jupyterlab-code-formatter==2.2.1 +jupyterlab-git==0.44.0 jupyterlab-lsp==3.10.2 jupyterlab-myst==1.2.0 jupyterlab-pygments==0.2.2 @@ -81,6 +87,7 @@ jupyterlab-widgets==3.0.9 kiwisolver==1.4.5 latexcodec==2.0.1 livereload==2.6.3 +lsprotocol==2023.0.0 markdown-it-py==2.2.0 markupsafe==2.1.3 matplotlib==3.5.3 @@ -95,6 +102,7 @@ myst-parser==0.18.1 nbclassic==1.0.0 nbclient==0.5.13 nbconvert==7.6.0 +nbdime==3.2.1 nbformat==5.8.0 nbmake==1.2.1 nest-asyncio==1.5.8 @@ -130,6 +138,7 @@ pytest==7.4.3 python-dateutil==2.8.2 python-json-logger==2.0.7 python-lsp-jsonrpc==1.0.0 +python-lsp-ruff==1.6.0 python-lsp-server==1.7.4 pytoolconfig==1.2.6 pytz==2023.3.post1 @@ -144,6 +153,7 @@ rope==1.9.0 ruff==0.1.6 send2trash==1.8.2 six==1.16.0 +smmap==5.0.1 sniffio==1.3.0 snowballstemmer==2.2.0 soupsieve==2.4.1 diff --git a/.constraints/py3.8.txt b/.constraints/py3.8.txt index 4f6975dd..5ffe238a 100644 --- a/.constraints/py3.8.txt +++ b/.constraints/py3.8.txt @@ -19,6 +19,7 @@ beautifulsoup4==4.12.2 black==23.11.0 bleach==6.1.0 cachetools==5.3.2 +cattrs==23.2.3 certifi==2023.11.17 cffi==1.16.0 cfgv==3.4.0 @@ -41,6 +42,8 @@ fastjsonschema==2.19.0 filelock==3.13.1 fonttools==4.46.0 fqdn==1.5.1 +gitdb==4.0.11 +gitpython==3.1.40 graphviz==0.20.1 greenlet==3.0.1 identify==2.5.32 @@ -55,6 +58,7 @@ ipython==8.12.3 ipython-genutils==0.2.0 ipywidgets==8.1.1 isoduration==20.11.0 +isort==5.12.0 jedi==0.19.1 jinja2==3.1.2 json5==0.9.14 @@ -69,9 +73,11 @@ jupyter-core==5.5.0 jupyter-events==0.9.0 jupyter-lsp==2.2.1 jupyter-server==2.11.1 +jupyter-server-mathjax==0.2.6 jupyter-server-terminals==0.4.4 jupyterlab==4.0.9 jupyterlab-code-formatter==2.2.1 +jupyterlab-git==0.50.0 jupyterlab-lsp==5.0.1 jupyterlab-myst==2.1.0 jupyterlab-pygments==0.3.0 @@ -80,6 +86,7 @@ jupyterlab-widgets==3.0.9 kiwisolver==1.4.5 latexcodec==2.0.1 livereload==2.6.3 +lsprotocol==2023.0.0 markdown-it-py==2.2.0 markupsafe==2.1.3 matplotlib==3.7.4 @@ -93,6 +100,7 @@ myst-nb==0.17.2 myst-parser==0.18.1 nbclient==0.6.8 nbconvert==7.11.0 +nbdime==4.0.1 nbformat==5.9.2 nbmake==1.4.6 nest-asyncio==1.5.8 @@ -128,6 +136,7 @@ pytest==7.4.3 python-dateutil==2.8.2 python-json-logger==2.0.7 python-lsp-jsonrpc==1.1.2 +python-lsp-ruff==2.0.0 python-lsp-server==1.9.0 pytoolconfig==1.2.6 pytz==2023.3.post1 @@ -144,6 +153,7 @@ rpds-py==0.13.2 ruff==0.1.6 send2trash==1.8.2 six==1.16.0 +smmap==5.0.1 sniffio==1.3.0 snowballstemmer==2.2.0 soupsieve==2.5 diff --git a/.constraints/py3.9.txt b/.constraints/py3.9.txt index 92ef3d9d..2d39b5f4 100644 --- a/.constraints/py3.9.txt +++ b/.constraints/py3.9.txt @@ -18,6 +18,7 @@ beautifulsoup4==4.12.2 black==23.11.0 bleach==6.1.0 cachetools==5.3.2 +cattrs==23.2.3 certifi==2023.11.17 cffi==1.16.0 cfgv==3.4.0 @@ -40,6 +41,8 @@ fastjsonschema==2.19.0 filelock==3.13.1 fonttools==4.46.0 fqdn==1.5.1 +gitdb==4.0.11 +gitpython==3.1.40 graphviz==0.20.1 greenlet==3.0.1 identify==2.5.32 @@ -54,6 +57,7 @@ ipython==8.18.1 ipython-genutils==0.2.0 ipywidgets==8.1.1 isoduration==20.11.0 +isort==5.12.0 jedi==0.19.1 jinja2==3.1.2 json5==0.9.14 @@ -68,9 +72,11 @@ jupyter-core==5.5.0 jupyter-events==0.9.0 jupyter-lsp==2.2.1 jupyter-server==2.11.1 +jupyter-server-mathjax==0.2.6 jupyter-server-terminals==0.4.4 jupyterlab==4.0.9 jupyterlab-code-formatter==2.2.1 +jupyterlab-git==0.50.0 jupyterlab-lsp==5.0.1 jupyterlab-myst==2.1.0 jupyterlab-pygments==0.3.0 @@ -79,6 +85,7 @@ jupyterlab-widgets==3.0.9 kiwisolver==1.4.5 latexcodec==2.0.1 livereload==2.6.3 +lsprotocol==2023.0.0 markdown-it-py==2.2.0 markupsafe==2.1.3 matplotlib==3.8.2 @@ -92,6 +99,7 @@ myst-nb==1.0.0 myst-parser==1.0.0 nbclient==0.6.8 nbconvert==7.11.0 +nbdime==4.0.1 nbformat==5.9.2 nbmake==1.4.6 nest-asyncio==1.5.8 @@ -125,6 +133,7 @@ pytest==7.4.3 python-dateutil==2.8.2 python-json-logger==2.0.7 python-lsp-jsonrpc==1.1.2 +python-lsp-ruff==2.0.0 python-lsp-server==1.9.0 pytoolconfig==1.2.6 pyyaml==6.0.1 @@ -140,6 +149,7 @@ rpds-py==0.13.2 ruff==0.1.6 send2trash==1.8.2 six==1.16.0 +smmap==5.0.1 sniffio==1.3.0 snowballstemmer==2.2.0 soupsieve==2.5 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 43061442..5401d0a7 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -39,7 +39,7 @@ repos: )$ - repo: https://github.com/ComPWA/repo-maintenance - rev: 0.1.5 + rev: 0.1.6 hooks: - id: check-dev-files args: @@ -52,16 +52,6 @@ repos: - id: pin-nb-requirements - id: set-nb-cells - - repo: https://github.com/nbQA-dev/nbQA - rev: 1.7.1 - hooks: - - id: nbqa-pyupgrade - args: - - --py37-plus - - id: nbqa-ruff - args: - - --fix - - repo: https://github.com/psf/black-pre-commit-mirror rev: 23.11.0 hooks: @@ -149,19 +139,12 @@ repos: hooks: - id: pyright - - repo: https://github.com/asottile/pyupgrade - rev: v3.15.0 - hooks: - - id: pyupgrade - args: - - --py37-plus - - repo: https://github.com/astral-sh/ruff-pre-commit rev: v0.1.6 hooks: - id: ruff - args: - - --fix + args: [--fix] + types_or: [python, pyi, jupyter] - repo: https://github.com/ComPWA/mirrors-taplo rev: v0.8.1 diff --git a/pyproject.toml b/pyproject.toml index 4e1eebb5..91f7c082 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -67,10 +67,13 @@ format = [ ] jupyter = [ "compwa-org[doc]", + "isort", "jupyterlab", "jupyterlab-code-formatter", + "jupyterlab-git", "jupyterlab-lsp", "jupyterlab-myst", + "python-lsp-ruff", "python-lsp-server[rope]", 'ypy-websocket <0.8.3; python_version <"3.8.0"', ] @@ -130,31 +133,6 @@ target-version = [ "py39", ] -[tool.nbqa.addopts] -ruff = [ - "--extend-ignore=A003", - "--extend-ignore=B008", - "--extend-ignore=B018", - "--extend-ignore=C408", - "--extend-ignore=C90", - "--extend-ignore=D", - "--extend-ignore=F404", - "--extend-ignore=F821", # cell magic - "--extend-ignore=ISC003", - "--extend-ignore=N802", - "--extend-ignore=N803", - "--extend-ignore=N806", - "--extend-ignore=N807", - "--extend-ignore=N815", - "--extend-ignore=N816", - "--extend-ignore=PLR09", - "--extend-ignore=PLR2004", - "--extend-ignore=PLW0602", - "--extend-ignore=PLW0603", - "--extend-ignore=PLW2901", - "--line-length=85", -] - [tool.pyright] exclude = [ "**/.git", @@ -210,6 +188,7 @@ norecursedirs = ["_build"] testpaths = ["docs"] [tool.ruff] +extend-include = ["*.ipynb"] extend-select = [ "A", "B", @@ -260,6 +239,33 @@ target-version = "py37" task-tags = ["cspell"] [tool.ruff.per-file-ignores] +"*.ipynb" = [ + "A003", + "B008", + "B018", + "C408", + "C90", + "D", + "E402", + "E703", + "F404", + "F821", + "ISC003", + "N802", + "N803", + "N806", + "N807", + "N815", + "N816", + "PLR09", + "PLR2004", + "PLW0602", + "PLW0603", + "PLW2901", + "S101", + "T201", + "TCH00", +] "docs/*" = [ "D", "E402",