From 3886502bd9714c0c155f487101ce0b20a88facbe Mon Sep 17 00:00:00 2001 From: Gemma Danks <8269577+gemmadanks@users.noreply.github.com> Date: Sat, 11 Oct 2025 14:25:47 +0100 Subject: [PATCH 1/3] fix: remove docs requirements file Removes requirements file for docs and pre-commit hook that generates it. Uses pyproject.toml optional extras for RTD instead. Prevents dependabot PRs failing checks. --- .github/workflows/ci.yaml | 6 +- .github/workflows/docs-pages.yaml | 2 +- .pre-commit-config.yaml | 12 --- .readthedocs.yaml | 4 +- README.md | 2 +- docs/requirements.txt | 132 ------------------------------ poetry.lock | 129 +++++++++++++++++------------ pyproject.toml | 4 +- 8 files changed, 86 insertions(+), 205 deletions(-) delete mode 100644 docs/requirements.txt diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index d3bd061..87c8cae 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -29,7 +29,7 @@ jobs: # Install dev deps so local hooks (e.g., pyright/pytest via poetry) can run - name: Install dev dependencies - run: poetry install --no-interaction --with dev + run: poetry install --no-interaction --with dev --all-extras # Run the same hooks as locally; include push stage so pre-push hooks run too - name: Run pre-commit (all files, commit & push stages) @@ -68,7 +68,7 @@ jobs: virtualenvs-in-project: true - name: Install dev dependencies - run: poetry install --no-interaction --with dev + run: poetry install --no-interaction --with dev --all-extras - name: Run tests (full suite) run: poetry run pytest --cov --cov-branch --cov-report=xml @@ -96,7 +96,7 @@ jobs: version: 2.2.0 - name: Install docs dependencies - run: poetry install --no-interaction --with docs + run: poetry install --no-interaction --extras docs - name: Build HTML (fail on warnings) run: poetry run mkdocs build --strict diff --git a/.github/workflows/docs-pages.yaml b/.github/workflows/docs-pages.yaml index 73f6e83..0c4cf03 100644 --- a/.github/workflows/docs-pages.yaml +++ b/.github/workflows/docs-pages.yaml @@ -34,7 +34,7 @@ jobs: version: 2.2.0 - name: Install docs deps - run: poetry install --no-interaction --with docs + run: poetry install --no-interaction --extras docs - name: Build & deploy with MkDocs # --force overwrites existing site; --clean removes stale files diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index aa29d65..11778fc 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -87,15 +87,3 @@ repos: - id: poetry-check - id: poetry-lock - id: poetry-install - - repo: https://github.com/python-poetry/poetry-plugin-export - rev: 1.9.0 - hooks: - - id: poetry-export - args: - - "-f" # format - - "requirements.txt" - - "-o" - - "docs/requirements.txt" - - "--with" - - "docs" - - "--without-hashes" diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 96feca4..f98d885 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -22,4 +22,6 @@ mkdocs: # See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html python: install: - - requirements: docs/requirements.txt + - method: pip + path: . + extra_requirements: [docs] diff --git a/README.md b/README.md index 74e5147..eadf71e 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ The goal is to help you start writing code immediately without having to spend t ```bash git clone https://github.com/gemmadanks/python-project-template cd python-project-template -poetry install --with dev,docs +poetry install --with dev --all-extras ``` ## 🏁 Quickstart diff --git a/docs/requirements.txt b/docs/requirements.txt deleted file mode 100644 index a9b82e9..0000000 --- a/docs/requirements.txt +++ /dev/null @@ -1,132 +0,0 @@ -anyio==4.10.0 ; python_version >= "3.11" -appnope==0.1.4 ; python_version >= "3.11" and platform_system == "Darwin" -argon2-cffi-bindings==25.1.0 ; python_version >= "3.11" -argon2-cffi==25.1.0 ; python_version >= "3.11" -arrow==1.3.0 ; python_version >= "3.11" -asttokens==3.0.0 ; python_version >= "3.11" -async-lru==2.0.5 ; python_version >= "3.11" -attrs==25.3.0 ; python_version >= "3.11" -babel==2.17.0 ; python_version >= "3.11" -backrefs==5.9 ; python_version >= "3.11" -beautifulsoup4==4.13.5 ; python_version >= "3.11" -bleach==6.2.0 ; python_version >= "3.11" -certifi==2025.8.3 ; python_version >= "3.11" -cffi==2.0.0 ; python_version >= "3.11" -charset-normalizer==3.4.3 ; python_version >= "3.11" -click==8.3.0 ; python_version >= "3.11" -colorama==0.4.6 ; python_version >= "3.11" -comm==0.2.3 ; python_version >= "3.11" -contourpy==1.3.3 ; python_version >= "3.11" -cycler==0.12.1 ; python_version >= "3.11" -debugpy==1.8.17 ; python_version >= "3.11" -decorator==5.2.1 ; python_version >= "3.11" -defusedxml==0.7.1 ; python_version >= "3.11" -executing==2.2.1 ; python_version >= "3.11" -fastjsonschema==2.21.2 ; python_version >= "3.11" -fonttools==4.60.0 ; python_version >= "3.11" -fqdn==1.4.0 ; python_version >= "3.14" -fqdn==1.5.1 ; python_version >= "3.11" and python_version < "3.14" -ghp-import==2.1.0 ; python_version >= "3.11" -griffe==1.14.0 ; python_version >= "3.11" -h11==0.16.0 ; python_version >= "3.11" -httpcore==1.0.9 ; python_version >= "3.11" -httpx==0.28.1 ; python_version >= "3.11" -idna==3.10 ; python_version >= "3.11" -ipykernel==6.30.1 ; python_version >= "3.11" -ipython-pygments-lexers==1.1.1 ; python_version >= "3.11" -ipython==9.5.0 ; python_version >= "3.11" -ipywidgets==8.1.7 ; python_version >= "3.11" -isoduration==20.11.0 ; python_version >= "3.11" -jedi==0.19.2 ; python_version >= "3.11" -jinja2==3.1.6 ; python_version >= "3.11" -json5==0.12.1 ; python_version >= "3.11" -jsonpointer==3.0.0 ; python_version >= "3.11" -jsonschema-specifications==2025.9.1 ; python_version >= "3.11" -jsonschema==4.25.1 ; python_version >= "3.11" -jupyter-client==8.6.3 ; python_version >= "3.11" -jupyter-console==6.6.3 ; python_version >= "3.11" -jupyter-core==5.8.1 ; python_version >= "3.11" -jupyter-events==0.12.0 ; python_version >= "3.11" -jupyter-lsp==2.3.0 ; python_version >= "3.11" -jupyter-server-terminals==0.5.3 ; python_version >= "3.11" -jupyter-server==2.17.0 ; python_version >= "3.11" -jupyter==1.1.1 ; python_version >= "3.11" -jupyterlab-pygments==0.3.0 ; python_version >= "3.11" -jupyterlab-server==2.27.3 ; python_version >= "3.11" -jupyterlab-widgets==3.0.15 ; python_version >= "3.11" -jupyterlab==4.4.7 ; python_version >= "3.11" -kiwisolver==1.4.9 ; python_version >= "3.11" -lark==1.3.0 ; python_version >= "3.11" -markdown==3.9 ; python_version >= "3.11" -markupsafe==3.0.2 ; python_version >= "3.11" -matplotlib-inline==0.1.7 ; python_version >= "3.11" -matplotlib==3.10.6 ; python_version >= "3.11" -mergedeep==1.3.4 ; python_version >= "3.11" -mistune==3.1.4 ; python_version >= "3.11" -mkdocs-autorefs==1.4.3 ; python_version >= "3.11" -mkdocs-get-deps==0.2.0 ; python_version >= "3.11" -mkdocs-material-extensions==1.3.1 ; python_version >= "3.11" -mkdocs-material==9.6.21 ; python_version >= "3.11" -mkdocs==1.6.1 ; python_version >= "3.11" -mkdocstrings-python==1.18.2 ; python_version >= "3.11" -mkdocstrings==0.30.1 ; python_version >= "3.11" -narwhals==2.5.0 ; python_version >= "3.11" -nbclient==0.10.2 ; python_version >= "3.11" -nbconvert==7.16.6 ; python_version >= "3.11" -nbformat==5.10.4 ; python_version >= "3.11" -nest-asyncio==1.6.0 ; python_version >= "3.11" -notebook-shim==0.2.4 ; python_version >= "3.11" -notebook==7.4.5 ; python_version >= "3.11" -numpy==2.3.3 ; python_version >= "3.11" -overrides==7.7.0 ; python_version == "3.11" -packaging==25.0 ; python_version >= "3.11" -paginate==0.5.7 ; python_version >= "3.11" -pandocfilters==1.5.1 ; python_version >= "3.11" -parso==0.8.5 ; python_version >= "3.11" -pathspec==0.12.1 ; python_version >= "3.11" -pexpect==4.9.0 ; python_version >= "3.11" and sys_platform != "win32" and sys_platform != "emscripten" -pillow==11.3.0 ; python_version >= "3.11" -platformdirs==4.4.0 ; python_version >= "3.11" -plotly==6.3.0 ; python_version >= "3.11" -prometheus-client==0.23.1 ; python_version >= "3.11" -prompt-toolkit==3.0.52 ; python_version >= "3.11" -psutil==7.1.0 ; python_version >= "3.11" -ptyprocess==0.7.0 ; (os_name != "nt" or sys_platform != "win32" and sys_platform != "emscripten") and python_version >= "3.11" -pure-eval==0.2.3 ; python_version >= "3.11" -pycparser==2.23 ; python_version >= "3.11" and implementation_name != "PyPy" -pygments==2.19.2 ; python_version >= "3.11" -pymdown-extensions==10.16.1 ; python_version >= "3.11" -pyparsing==3.2.5 ; python_version >= "3.11" -python-dateutil==2.9.0.post0 ; python_version >= "3.11" -python-json-logger==3.3.0 ; python_version >= "3.11" -pywin32==311 ; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_version >= "3.11" -pywinpty==3.0.0 ; python_version >= "3.11" and os_name == "nt" -pyyaml-env-tag==1.1 ; python_version >= "3.11" -pyyaml==6.0.2 ; python_version >= "3.11" -pyzmq==27.1.0 ; python_version >= "3.11" -referencing==0.36.2 ; python_version >= "3.11" -requests==2.32.5 ; python_version >= "3.11" -rfc3339-validator==0.1.4 ; python_version >= "3.11" -rfc3986-validator==0.1.1 ; python_version >= "3.11" -rfc3987-syntax==1.1.0 ; python_version >= "3.11" -rpds-py==0.27.1 ; python_version >= "3.11" -send2trash==1.8.3 ; python_version >= "3.11" -setuptools==80.9.0 ; python_version >= "3.11" -six==1.17.0 ; python_version >= "3.11" -sniffio==1.3.1 ; python_version >= "3.11" -soupsieve==2.8 ; python_version >= "3.11" -stack-data==0.6.3 ; python_version >= "3.11" -terminado==0.18.1 ; python_version >= "3.11" -tinycss2==1.4.0 ; python_version >= "3.11" -tornado==6.5.2 ; python_version >= "3.11" -traitlets==5.14.3 ; python_version >= "3.11" -types-python-dateutil==2.9.0.20250822 ; python_version >= "3.11" -typing-extensions==4.15.0 ; python_version >= "3.11" -uri-template==1.3.0 ; python_version >= "3.11" -urllib3==2.5.0 ; python_version >= "3.11" -watchdog==6.0.0 ; python_version >= "3.11" -wcwidth==0.2.14 ; python_version >= "3.11" -webcolors==24.11.1 ; python_version >= "3.11" -webencodings==0.5.1 ; python_version >= "3.11" -websocket-client==1.8.0 ; python_version >= "3.11" -widgetsnbextension==4.0.14 ; python_version >= "3.11" diff --git a/poetry.lock b/poetry.lock index eec5778..cf5dbb9 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.2.0 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.2.1 and should not be changed by hand. [[package]] name = "anyio" @@ -164,7 +164,7 @@ version = "2.17.0" description = "Internationalization utilities" optional = false python-versions = ">=3.8" -groups = ["main", "docs"] +groups = ["main"] files = [ {file = "babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2"}, {file = "babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d"}, @@ -177,9 +177,10 @@ dev = ["backports.zoneinfo ; python_version < \"3.9\"", "freezegun (>=1.0,<2.0)" name = "backrefs" version = "5.9" description = "A wrapper around re and regex that adds additional back references." -optional = false +optional = true python-versions = ">=3.9" -groups = ["docs"] +groups = ["main"] +markers = "extra == \"docs\"" files = [ {file = "backrefs-5.9-py310-none-any.whl", hash = "sha256:db8e8ba0e9de81fcd635f440deab5ae5f2591b54ac1ebe0550a2ca063488cd9f"}, {file = "backrefs-5.9-py311-none-any.whl", hash = "sha256:6907635edebbe9b2dc3de3a2befff44d74f30a4562adbb8b36f21252ea19c5cf"}, @@ -241,7 +242,7 @@ version = "2025.8.3" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.7" -groups = ["main", "docs"] +groups = ["main"] files = [ {file = "certifi-2025.8.3-py3-none-any.whl", hash = "sha256:f6c12493cfb1b06ba2ff328595af9350c65d6644968e5d3a2ffd78699af217a5"}, {file = "certifi-2025.8.3.tar.gz", hash = "sha256:e564105f78ded564e3ae7c923924435e1daa7463faeab5bb932bc53ffae63407"}, @@ -362,7 +363,7 @@ version = "3.4.3" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7" -groups = ["main", "docs"] +groups = ["main"] files = [ {file = "charset_normalizer-3.4.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:fb7f67a1bfa6e40b438170ebdc8158b78dc465a5a67b6dde178a46987b244a72"}, {file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cc9370a2da1ac13f0153780040f465839e6cccb4a1e44810124b4e22483c93fe"}, @@ -449,9 +450,10 @@ files = [ name = "click" version = "8.3.0" description = "Composable command line interface toolkit" -optional = false +optional = true python-versions = ">=3.10" -groups = ["docs"] +groups = ["main"] +markers = "extra == \"docs\"" files = [ {file = "click-8.3.0-py3-none-any.whl", hash = "sha256:9b9f285302c6e3064f4330c05f05b81945b2a39544279343e6e7c5f27a9baddc"}, {file = "click-8.3.0.tar.gz", hash = "sha256:e7b8232224eba16f4ebe410c25ced9f7875cb5f3263ffc93cc3e8da705e229c4"}, @@ -466,12 +468,12 @@ version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -groups = ["main", "dev", "docs"] +groups = ["main", "dev"] files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] -markers = {main = "sys_platform == \"win32\"", dev = "sys_platform == \"win32\""} +markers = {main = "extra == \"docs\" or sys_platform == \"win32\"", dev = "sys_platform == \"win32\""} [[package]] name = "comm" @@ -942,9 +944,10 @@ files = [ name = "ghp-import" version = "2.1.0" description = "Copy your docs directly to the gh-pages branch." -optional = false +optional = true python-versions = "*" -groups = ["docs"] +groups = ["main"] +markers = "extra == \"docs\"" files = [ {file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"}, {file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619"}, @@ -960,9 +963,10 @@ dev = ["flake8", "markdown", "twine", "wheel"] name = "griffe" version = "1.14.0" description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." -optional = false +optional = true python-versions = ">=3.9" -groups = ["docs"] +groups = ["main"] +markers = "extra == \"docs\"" files = [ {file = "griffe-1.14.0-py3-none-any.whl", hash = "sha256:0e9d52832cccf0f7188cfe585ba962d2674b241c01916d780925df34873bceb0"}, {file = "griffe-1.14.0.tar.gz", hash = "sha256:9d2a15c1eca966d68e00517de5d69dd1bc5c9f2335ef6c1775362ba5b8651a13"}, @@ -1051,7 +1055,7 @@ version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.6" -groups = ["main", "docs"] +groups = ["main"] files = [ {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, @@ -1217,7 +1221,7 @@ version = "3.1.6" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" -groups = ["main", "docs"] +groups = ["main"] files = [ {file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"}, {file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"}, @@ -1707,9 +1711,10 @@ regex = ["regex"] name = "markdown" version = "3.9" description = "Python implementation of John Gruber's Markdown." -optional = false +optional = true python-versions = ">=3.9" -groups = ["docs"] +groups = ["main"] +markers = "extra == \"docs\"" files = [ {file = "markdown-3.9-py3-none-any.whl", hash = "sha256:9f4d91ed810864ea88a6f32c07ba8bee1346c0cc1f6b1f9f6c822f2a9667d280"}, {file = "markdown-3.9.tar.gz", hash = "sha256:d2900fe1782bd33bdbbd56859defef70c2e78fc46668f8eb9df3128138f2cb6a"}, @@ -1725,7 +1730,7 @@ version = "3.0.2" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.9" -groups = ["main", "docs"] +groups = ["main"] files = [ {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"}, {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"}, @@ -1888,9 +1893,10 @@ traitlets = "*" name = "mergedeep" version = "1.3.4" description = "A deep merge function for 🐍." -optional = false +optional = true python-versions = ">=3.6" -groups = ["docs"] +groups = ["main"] +markers = "extra == \"docs\"" files = [ {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, @@ -1912,9 +1918,10 @@ files = [ name = "mkdocs" version = "1.6.1" description = "Project documentation with Markdown." -optional = false +optional = true python-versions = ">=3.8" -groups = ["docs"] +groups = ["main"] +markers = "extra == \"docs\"" files = [ {file = "mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e"}, {file = "mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2"}, @@ -1943,9 +1950,10 @@ min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4) ; platform name = "mkdocs-autorefs" version = "1.4.3" description = "Automatically link across pages in MkDocs." -optional = false +optional = true python-versions = ">=3.9" -groups = ["docs"] +groups = ["main"] +markers = "extra == \"docs\"" files = [ {file = "mkdocs_autorefs-1.4.3-py3-none-any.whl", hash = "sha256:469d85eb3114801d08e9cc55d102b3ba65917a869b893403b8987b601cf55dc9"}, {file = "mkdocs_autorefs-1.4.3.tar.gz", hash = "sha256:beee715b254455c4aa93b6ef3c67579c399ca092259cc41b7d9342573ff1fc75"}, @@ -1960,9 +1968,10 @@ mkdocs = ">=1.1" name = "mkdocs-get-deps" version = "0.2.0" description = "MkDocs extension that lists all dependencies according to a mkdocs.yml file" -optional = false +optional = true python-versions = ">=3.8" -groups = ["docs"] +groups = ["main"] +markers = "extra == \"docs\"" files = [ {file = "mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134"}, {file = "mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c"}, @@ -1977,9 +1986,10 @@ pyyaml = ">=5.1" name = "mkdocs-material" version = "9.6.21" description = "Documentation that simply works" -optional = false +optional = true python-versions = ">=3.8" -groups = ["docs"] +groups = ["main"] +markers = "extra == \"docs\"" files = [ {file = "mkdocs_material-9.6.21-py3-none-any.whl", hash = "sha256:aa6a5ab6fb4f6d381588ac51da8782a4d3757cb3d1b174f81a2ec126e1f22c92"}, {file = "mkdocs_material-9.6.21.tar.gz", hash = "sha256:b01aa6d2731322438056f360f0e623d3faae981f8f2d8c68b1b973f4f2657870"}, @@ -2007,9 +2017,10 @@ recommended = ["mkdocs-minify-plugin (>=0.7,<1.0)", "mkdocs-redirects (>=1.2,<2. name = "mkdocs-material-extensions" version = "1.3.1" description = "Extension pack for Python Markdown and MkDocs Material." -optional = false +optional = true python-versions = ">=3.8" -groups = ["docs"] +groups = ["main"] +markers = "extra == \"docs\"" files = [ {file = "mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31"}, {file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443"}, @@ -2019,9 +2030,10 @@ files = [ name = "mkdocstrings" version = "0.30.1" description = "Automatic documentation from sources, for MkDocs." -optional = false +optional = true python-versions = ">=3.9" -groups = ["docs"] +groups = ["main"] +markers = "extra == \"docs\"" files = [ {file = "mkdocstrings-0.30.1-py3-none-any.whl", hash = "sha256:41bd71f284ca4d44a668816193e4025c950b002252081e387433656ae9a70a82"}, {file = "mkdocstrings-0.30.1.tar.gz", hash = "sha256:84a007aae9b707fb0aebfc9da23db4b26fc9ab562eb56e335e9ec480cb19744f"}, @@ -2045,9 +2057,10 @@ python-legacy = ["mkdocstrings-python-legacy (>=0.2.1)"] name = "mkdocstrings-python" version = "1.18.2" description = "A Python handler for mkdocstrings." -optional = false +optional = true python-versions = ">=3.9" -groups = ["docs"] +groups = ["main"] +markers = "extra == \"docs\"" files = [ {file = "mkdocstrings_python-1.18.2-py3-none-any.whl", hash = "sha256:944fe6deb8f08f33fa936d538233c4036e9f53e840994f6146e8e94eb71b600d"}, {file = "mkdocstrings_python-1.18.2.tar.gz", hash = "sha256:4ad536920a07b6336f50d4c6d5603316fafb1172c5c882370cbbc954770ad323"}, @@ -2334,7 +2347,7 @@ version = "25.0" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" -groups = ["main", "dev", "docs"] +groups = ["main", "dev"] files = [ {file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484"}, {file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f"}, @@ -2344,9 +2357,10 @@ files = [ name = "paginate" version = "0.5.7" description = "Divides large result sets into pages for easier browsing" -optional = false +optional = true python-versions = "*" -groups = ["docs"] +groups = ["main"] +markers = "extra == \"docs\"" files = [ {file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591"}, {file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945"}, @@ -2388,9 +2402,10 @@ testing = ["docopt", "pytest"] name = "pathspec" version = "0.12.1" description = "Utility library for gitignore style pattern matching of file paths." -optional = false +optional = true python-versions = ">=3.8" -groups = ["docs"] +groups = ["main"] +markers = "extra == \"docs\"" files = [ {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, @@ -2543,7 +2558,7 @@ version = "4.4.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.9" -groups = ["main", "dev", "docs"] +groups = ["main", "dev"] files = [ {file = "platformdirs-4.4.0-py3-none-any.whl", hash = "sha256:abd01743f24e5287cd7a5db3752faf1a2d65353f38ec26d98e25a6db65958c85"}, {file = "platformdirs-4.4.0.tar.gz", hash = "sha256:ca753cf4d81dc309bc67b0ea38fd15dc97bc30ce419a7f58d13eb3bf14c4febf"}, @@ -2713,7 +2728,7 @@ version = "2.19.2" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.8" -groups = ["main", "dev", "docs"] +groups = ["main", "dev"] files = [ {file = "pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b"}, {file = "pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887"}, @@ -2726,9 +2741,10 @@ windows-terminal = ["colorama (>=0.4.6)"] name = "pymdown-extensions" version = "10.16.1" description = "Extension pack for Python Markdown." -optional = false +optional = true python-versions = ">=3.9" -groups = ["docs"] +groups = ["main"] +markers = "extra == \"docs\"" files = [ {file = "pymdown_extensions-10.16.1-py3-none-any.whl", hash = "sha256:d6ba157a6c03146a7fb122b2b9a121300056384eafeec9c9f9e584adfdb2a32d"}, {file = "pymdown_extensions-10.16.1.tar.gz", hash = "sha256:aace82bcccba3efc03e25d584e6a22d27a8e17caa3f4dd9f207e49b787aa9a91"}, @@ -2825,7 +2841,7 @@ version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -groups = ["main", "docs"] +groups = ["main"] files = [ {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, @@ -2904,7 +2920,7 @@ version = "6.0.2" description = "YAML parser and emitter for Python" optional = false python-versions = ">=3.8" -groups = ["main", "dev", "docs"] +groups = ["main", "dev"] files = [ {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, @@ -2965,9 +2981,10 @@ files = [ name = "pyyaml-env-tag" version = "1.1" description = "A custom YAML tag for referencing environment variables in YAML files." -optional = false +optional = true python-versions = ">=3.9" -groups = ["docs"] +groups = ["main"] +markers = "extra == \"docs\"" files = [ {file = "pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04"}, {file = "pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff"}, @@ -3104,7 +3121,7 @@ version = "2.32.5" description = "Python HTTP for Humans." optional = false python-versions = ">=3.9" -groups = ["main", "docs"] +groups = ["main"] files = [ {file = "requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6"}, {file = "requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf"}, @@ -3403,7 +3420,7 @@ version = "1.17.0" description = "Python 2 and 3 compatibility utilities" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -groups = ["main", "docs"] +groups = ["main"] files = [ {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, @@ -3577,7 +3594,7 @@ version = "2.5.0" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.9" -groups = ["main", "docs"] +groups = ["main"] files = [ {file = "urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc"}, {file = "urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760"}, @@ -3614,9 +3631,10 @@ test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess name = "watchdog" version = "6.0.0" description = "Filesystem events monitoring" -optional = false +optional = true python-versions = ">=3.9" -groups = ["docs"] +groups = ["main"] +markers = "extra == \"docs\"" files = [ {file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d1cdb490583ebd691c012b3d6dae011000fe42edb7a82ece80965b42abd61f26"}, {file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc64ab3bdb6a04d69d4023b29422170b74681784ffb9463ed4870cf2f3e66112"}, @@ -3718,7 +3736,10 @@ files = [ {file = "widgetsnbextension-4.0.14.tar.gz", hash = "sha256:a3629b04e3edb893212df862038c7232f62973373869db5084aed739b437b5af"}, ] +[extras] +docs = ["mkdocs", "mkdocs-material", "mkdocstrings"] + [metadata] lock-version = "2.1" python-versions = ">=3.11" -content-hash = "54e8638f1cbe434dd936e9383c8a3155ad9c91a882dc12bf3d8f4eb49d9175ef" +content-hash = "8fb2af672450975706360170a8fb787096fe1a077acbba11246010016e4ebae6" diff --git a/pyproject.toml b/pyproject.toml index ee614eb..be40141 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ description = "A python package." authors = [ {name = "Your Name",email = "you@example.com"} ] -license = {text = "BSD3"} +license = "BSD-3-Clause" readme = "README.md" requires-python = ">=3.11" dependencies = [ @@ -24,6 +24,8 @@ dev = [ "pyright (>=1.1.406,<2.0.0)", "pytest-cov (>=7.0.0,<8.0.0)" ] + +[project.optional-dependencies] docs = [ "mkdocs", "mkdocstrings[python]", From 5b29f5e35fd1667af76f1e340feb3f52f164e2f6 Mon Sep 17 00:00:00 2001 From: Gemma Danks <8269577+gemmadanks@users.noreply.github.com> Date: Sat, 11 Oct 2025 19:23:48 +0100 Subject: [PATCH 2/3] chore: update pyproject.toml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index be40141..199ef2e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,8 +25,8 @@ dev = [ "pytest-cov (>=7.0.0,<8.0.0)" ] -[project.optional-dependencies] -docs = [ +[tool.poetry.group.docs] +dependencies = [ "mkdocs", "mkdocstrings[python]", "mkdocs-material" From 1e3263ad09412c69c349e21577243cfb983dad38 Mon Sep 17 00:00:00 2001 From: Gemma Danks <8269577+gemmadanks@users.noreply.github.com> Date: Sat, 11 Oct 2025 19:40:14 +0100 Subject: [PATCH 3/3] chore: revert change to pyproject.toml --- .github/workflows/ci.yaml | 6 +- .github/workflows/docs-pages.yaml | 2 +- .readthedocs.yaml | 3 +- README.md | 2 +- poetry.lock | 127 +++++++++++++----------------- pyproject.toml | 4 +- 6 files changed, 62 insertions(+), 82 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 87c8cae..3c88f4f 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -29,7 +29,7 @@ jobs: # Install dev deps so local hooks (e.g., pyright/pytest via poetry) can run - name: Install dev dependencies - run: poetry install --no-interaction --with dev --all-extras + run: poetry install --no-interaction --with dev,docs # Run the same hooks as locally; include push stage so pre-push hooks run too - name: Run pre-commit (all files, commit & push stages) @@ -68,7 +68,7 @@ jobs: virtualenvs-in-project: true - name: Install dev dependencies - run: poetry install --no-interaction --with dev --all-extras + run: poetry install --no-interaction --with dev - name: Run tests (full suite) run: poetry run pytest --cov --cov-branch --cov-report=xml @@ -96,7 +96,7 @@ jobs: version: 2.2.0 - name: Install docs dependencies - run: poetry install --no-interaction --extras docs + run: poetry install --no-interaction --with docs - name: Build HTML (fail on warnings) run: poetry run mkdocs build --strict diff --git a/.github/workflows/docs-pages.yaml b/.github/workflows/docs-pages.yaml index 0c4cf03..73f6e83 100644 --- a/.github/workflows/docs-pages.yaml +++ b/.github/workflows/docs-pages.yaml @@ -34,7 +34,7 @@ jobs: version: 2.2.0 - name: Install docs deps - run: poetry install --no-interaction --extras docs + run: poetry install --no-interaction --with docs - name: Build & deploy with MkDocs # --force overwrites existing site; --clean removes stale files diff --git a/.readthedocs.yaml b/.readthedocs.yaml index f98d885..22c40b5 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -24,4 +24,5 @@ python: install: - method: pip path: . - extra_requirements: [docs] + extra_requirements: + - docs diff --git a/README.md b/README.md index eadf71e..74e5147 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ The goal is to help you start writing code immediately without having to spend t ```bash git clone https://github.com/gemmadanks/python-project-template cd python-project-template -poetry install --with dev --all-extras +poetry install --with dev,docs ``` ## 🏁 Quickstart diff --git a/poetry.lock b/poetry.lock index cf5dbb9..e4c7927 100644 --- a/poetry.lock +++ b/poetry.lock @@ -164,7 +164,7 @@ version = "2.17.0" description = "Internationalization utilities" optional = false python-versions = ">=3.8" -groups = ["main"] +groups = ["main", "docs"] files = [ {file = "babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2"}, {file = "babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d"}, @@ -177,10 +177,9 @@ dev = ["backports.zoneinfo ; python_version < \"3.9\"", "freezegun (>=1.0,<2.0)" name = "backrefs" version = "5.9" description = "A wrapper around re and regex that adds additional back references." -optional = true +optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"docs\"" +groups = ["docs"] files = [ {file = "backrefs-5.9-py310-none-any.whl", hash = "sha256:db8e8ba0e9de81fcd635f440deab5ae5f2591b54ac1ebe0550a2ca063488cd9f"}, {file = "backrefs-5.9-py311-none-any.whl", hash = "sha256:6907635edebbe9b2dc3de3a2befff44d74f30a4562adbb8b36f21252ea19c5cf"}, @@ -242,7 +241,7 @@ version = "2025.8.3" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.7" -groups = ["main"] +groups = ["main", "docs"] files = [ {file = "certifi-2025.8.3-py3-none-any.whl", hash = "sha256:f6c12493cfb1b06ba2ff328595af9350c65d6644968e5d3a2ffd78699af217a5"}, {file = "certifi-2025.8.3.tar.gz", hash = "sha256:e564105f78ded564e3ae7c923924435e1daa7463faeab5bb932bc53ffae63407"}, @@ -363,7 +362,7 @@ version = "3.4.3" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7" -groups = ["main"] +groups = ["main", "docs"] files = [ {file = "charset_normalizer-3.4.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:fb7f67a1bfa6e40b438170ebdc8158b78dc465a5a67b6dde178a46987b244a72"}, {file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cc9370a2da1ac13f0153780040f465839e6cccb4a1e44810124b4e22483c93fe"}, @@ -450,10 +449,9 @@ files = [ name = "click" version = "8.3.0" description = "Composable command line interface toolkit" -optional = true +optional = false python-versions = ">=3.10" -groups = ["main"] -markers = "extra == \"docs\"" +groups = ["docs"] files = [ {file = "click-8.3.0-py3-none-any.whl", hash = "sha256:9b9f285302c6e3064f4330c05f05b81945b2a39544279343e6e7c5f27a9baddc"}, {file = "click-8.3.0.tar.gz", hash = "sha256:e7b8232224eba16f4ebe410c25ced9f7875cb5f3263ffc93cc3e8da705e229c4"}, @@ -468,12 +466,12 @@ version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -groups = ["main", "dev"] +groups = ["main", "dev", "docs"] files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] -markers = {main = "extra == \"docs\" or sys_platform == \"win32\"", dev = "sys_platform == \"win32\""} +markers = {main = "sys_platform == \"win32\"", dev = "sys_platform == \"win32\""} [[package]] name = "comm" @@ -944,10 +942,9 @@ files = [ name = "ghp-import" version = "2.1.0" description = "Copy your docs directly to the gh-pages branch." -optional = true +optional = false python-versions = "*" -groups = ["main"] -markers = "extra == \"docs\"" +groups = ["docs"] files = [ {file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"}, {file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619"}, @@ -963,10 +960,9 @@ dev = ["flake8", "markdown", "twine", "wheel"] name = "griffe" version = "1.14.0" description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." -optional = true +optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"docs\"" +groups = ["docs"] files = [ {file = "griffe-1.14.0-py3-none-any.whl", hash = "sha256:0e9d52832cccf0f7188cfe585ba962d2674b241c01916d780925df34873bceb0"}, {file = "griffe-1.14.0.tar.gz", hash = "sha256:9d2a15c1eca966d68e00517de5d69dd1bc5c9f2335ef6c1775362ba5b8651a13"}, @@ -1055,7 +1051,7 @@ version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.6" -groups = ["main"] +groups = ["main", "docs"] files = [ {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, @@ -1221,7 +1217,7 @@ version = "3.1.6" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" -groups = ["main"] +groups = ["main", "docs"] files = [ {file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"}, {file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"}, @@ -1711,10 +1707,9 @@ regex = ["regex"] name = "markdown" version = "3.9" description = "Python implementation of John Gruber's Markdown." -optional = true +optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"docs\"" +groups = ["docs"] files = [ {file = "markdown-3.9-py3-none-any.whl", hash = "sha256:9f4d91ed810864ea88a6f32c07ba8bee1346c0cc1f6b1f9f6c822f2a9667d280"}, {file = "markdown-3.9.tar.gz", hash = "sha256:d2900fe1782bd33bdbbd56859defef70c2e78fc46668f8eb9df3128138f2cb6a"}, @@ -1730,7 +1725,7 @@ version = "3.0.2" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.9" -groups = ["main"] +groups = ["main", "docs"] files = [ {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"}, {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"}, @@ -1893,10 +1888,9 @@ traitlets = "*" name = "mergedeep" version = "1.3.4" description = "A deep merge function for 🐍." -optional = true +optional = false python-versions = ">=3.6" -groups = ["main"] -markers = "extra == \"docs\"" +groups = ["docs"] files = [ {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, @@ -1918,10 +1912,9 @@ files = [ name = "mkdocs" version = "1.6.1" description = "Project documentation with Markdown." -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"docs\"" +groups = ["docs"] files = [ {file = "mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e"}, {file = "mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2"}, @@ -1950,10 +1943,9 @@ min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4) ; platform name = "mkdocs-autorefs" version = "1.4.3" description = "Automatically link across pages in MkDocs." -optional = true +optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"docs\"" +groups = ["docs"] files = [ {file = "mkdocs_autorefs-1.4.3-py3-none-any.whl", hash = "sha256:469d85eb3114801d08e9cc55d102b3ba65917a869b893403b8987b601cf55dc9"}, {file = "mkdocs_autorefs-1.4.3.tar.gz", hash = "sha256:beee715b254455c4aa93b6ef3c67579c399ca092259cc41b7d9342573ff1fc75"}, @@ -1968,10 +1960,9 @@ mkdocs = ">=1.1" name = "mkdocs-get-deps" version = "0.2.0" description = "MkDocs extension that lists all dependencies according to a mkdocs.yml file" -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"docs\"" +groups = ["docs"] files = [ {file = "mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134"}, {file = "mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c"}, @@ -1986,10 +1977,9 @@ pyyaml = ">=5.1" name = "mkdocs-material" version = "9.6.21" description = "Documentation that simply works" -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"docs\"" +groups = ["docs"] files = [ {file = "mkdocs_material-9.6.21-py3-none-any.whl", hash = "sha256:aa6a5ab6fb4f6d381588ac51da8782a4d3757cb3d1b174f81a2ec126e1f22c92"}, {file = "mkdocs_material-9.6.21.tar.gz", hash = "sha256:b01aa6d2731322438056f360f0e623d3faae981f8f2d8c68b1b973f4f2657870"}, @@ -2017,10 +2007,9 @@ recommended = ["mkdocs-minify-plugin (>=0.7,<1.0)", "mkdocs-redirects (>=1.2,<2. name = "mkdocs-material-extensions" version = "1.3.1" description = "Extension pack for Python Markdown and MkDocs Material." -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"docs\"" +groups = ["docs"] files = [ {file = "mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31"}, {file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443"}, @@ -2030,10 +2019,9 @@ files = [ name = "mkdocstrings" version = "0.30.1" description = "Automatic documentation from sources, for MkDocs." -optional = true +optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"docs\"" +groups = ["docs"] files = [ {file = "mkdocstrings-0.30.1-py3-none-any.whl", hash = "sha256:41bd71f284ca4d44a668816193e4025c950b002252081e387433656ae9a70a82"}, {file = "mkdocstrings-0.30.1.tar.gz", hash = "sha256:84a007aae9b707fb0aebfc9da23db4b26fc9ab562eb56e335e9ec480cb19744f"}, @@ -2057,10 +2045,9 @@ python-legacy = ["mkdocstrings-python-legacy (>=0.2.1)"] name = "mkdocstrings-python" version = "1.18.2" description = "A Python handler for mkdocstrings." -optional = true +optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"docs\"" +groups = ["docs"] files = [ {file = "mkdocstrings_python-1.18.2-py3-none-any.whl", hash = "sha256:944fe6deb8f08f33fa936d538233c4036e9f53e840994f6146e8e94eb71b600d"}, {file = "mkdocstrings_python-1.18.2.tar.gz", hash = "sha256:4ad536920a07b6336f50d4c6d5603316fafb1172c5c882370cbbc954770ad323"}, @@ -2347,7 +2334,7 @@ version = "25.0" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" -groups = ["main", "dev"] +groups = ["main", "dev", "docs"] files = [ {file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484"}, {file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f"}, @@ -2357,10 +2344,9 @@ files = [ name = "paginate" version = "0.5.7" description = "Divides large result sets into pages for easier browsing" -optional = true +optional = false python-versions = "*" -groups = ["main"] -markers = "extra == \"docs\"" +groups = ["docs"] files = [ {file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591"}, {file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945"}, @@ -2402,10 +2388,9 @@ testing = ["docopt", "pytest"] name = "pathspec" version = "0.12.1" description = "Utility library for gitignore style pattern matching of file paths." -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"docs\"" +groups = ["docs"] files = [ {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, @@ -2558,7 +2543,7 @@ version = "4.4.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.9" -groups = ["main", "dev"] +groups = ["main", "dev", "docs"] files = [ {file = "platformdirs-4.4.0-py3-none-any.whl", hash = "sha256:abd01743f24e5287cd7a5db3752faf1a2d65353f38ec26d98e25a6db65958c85"}, {file = "platformdirs-4.4.0.tar.gz", hash = "sha256:ca753cf4d81dc309bc67b0ea38fd15dc97bc30ce419a7f58d13eb3bf14c4febf"}, @@ -2728,7 +2713,7 @@ version = "2.19.2" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.8" -groups = ["main", "dev"] +groups = ["main", "dev", "docs"] files = [ {file = "pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b"}, {file = "pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887"}, @@ -2741,10 +2726,9 @@ windows-terminal = ["colorama (>=0.4.6)"] name = "pymdown-extensions" version = "10.16.1" description = "Extension pack for Python Markdown." -optional = true +optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"docs\"" +groups = ["docs"] files = [ {file = "pymdown_extensions-10.16.1-py3-none-any.whl", hash = "sha256:d6ba157a6c03146a7fb122b2b9a121300056384eafeec9c9f9e584adfdb2a32d"}, {file = "pymdown_extensions-10.16.1.tar.gz", hash = "sha256:aace82bcccba3efc03e25d584e6a22d27a8e17caa3f4dd9f207e49b787aa9a91"}, @@ -2841,7 +2825,7 @@ version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -groups = ["main"] +groups = ["main", "docs"] files = [ {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, @@ -2920,7 +2904,7 @@ version = "6.0.2" description = "YAML parser and emitter for Python" optional = false python-versions = ">=3.8" -groups = ["main", "dev"] +groups = ["main", "dev", "docs"] files = [ {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, @@ -2981,10 +2965,9 @@ files = [ name = "pyyaml-env-tag" version = "1.1" description = "A custom YAML tag for referencing environment variables in YAML files." -optional = true +optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"docs\"" +groups = ["docs"] files = [ {file = "pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04"}, {file = "pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff"}, @@ -3121,7 +3104,7 @@ version = "2.32.5" description = "Python HTTP for Humans." optional = false python-versions = ">=3.9" -groups = ["main"] +groups = ["main", "docs"] files = [ {file = "requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6"}, {file = "requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf"}, @@ -3420,7 +3403,7 @@ version = "1.17.0" description = "Python 2 and 3 compatibility utilities" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -groups = ["main"] +groups = ["main", "docs"] files = [ {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, @@ -3594,7 +3577,7 @@ version = "2.5.0" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.9" -groups = ["main"] +groups = ["main", "docs"] files = [ {file = "urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc"}, {file = "urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760"}, @@ -3631,10 +3614,9 @@ test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess name = "watchdog" version = "6.0.0" description = "Filesystem events monitoring" -optional = true +optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"docs\"" +groups = ["docs"] files = [ {file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d1cdb490583ebd691c012b3d6dae011000fe42edb7a82ece80965b42abd61f26"}, {file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc64ab3bdb6a04d69d4023b29422170b74681784ffb9463ed4870cf2f3e66112"}, @@ -3736,10 +3718,7 @@ files = [ {file = "widgetsnbextension-4.0.14.tar.gz", hash = "sha256:a3629b04e3edb893212df862038c7232f62973373869db5084aed739b437b5af"}, ] -[extras] -docs = ["mkdocs", "mkdocs-material", "mkdocstrings"] - [metadata] lock-version = "2.1" python-versions = ">=3.11" -content-hash = "8fb2af672450975706360170a8fb787096fe1a077acbba11246010016e4ebae6" +content-hash = "54e8638f1cbe434dd936e9383c8a3155ad9c91a882dc12bf3d8f4eb49d9175ef" diff --git a/pyproject.toml b/pyproject.toml index 199ef2e..468268c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,13 +25,13 @@ dev = [ "pytest-cov (>=7.0.0,<8.0.0)" ] -[tool.poetry.group.docs] -dependencies = [ +docs = [ "mkdocs", "mkdocstrings[python]", "mkdocs-material" ] + [tool.coverage.run] source = ["package_name"] omit = [