From c8ce5b9da93dbe202b2187428605556e0f3a4dbc Mon Sep 17 00:00:00 2001 From: Thomas Buchberger Date: Fri, 13 Mar 2026 09:26:59 +0100 Subject: [PATCH 1/2] Migrate pyproject.toml to PEP 621 --- poetry.lock | 286 +++++++++++++++++++++++++++++-------------------- poetry.toml | 2 + pyproject.toml | 43 ++++---- 3 files changed, 193 insertions(+), 138 deletions(-) create mode 100644 poetry.toml diff --git a/poetry.lock b/poetry.lock index b62b118..55de482 100644 --- a/poetry.lock +++ b/poetry.lock @@ -19,9 +19,10 @@ dev = ["backports.zoneinfo ; python_version < \"3.9\"", "freezegun (>=1.0,<2.0)" name = "black" version = "25.12.0" description = "The uncompromising code formatter." -optional = false +optional = true python-versions = ">=3.10" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "black-25.12.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f85ba1ad15d446756b4ab5f3044731bf68b777f8f9ac9cdabd2425b97cd9c4e8"}, {file = "black-25.12.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:546eecfe9a3a6b46f9d69d8a642585a6eaf348bcbbc4d87a19635570e02d9f4a"}, @@ -70,9 +71,10 @@ uvloop = ["uvloop (>=0.15.2)"] name = "build" version = "1.4.0" description = "A simple, correct Python build frontend" -optional = false +optional = true python-versions = ">=3.9" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "build-1.4.0-py3-none-any.whl", hash = "sha256:6a07c1b8eb6f2b311b96fcbdbce5dab5fe637ffda0fd83c9cac622e927501596"}, {file = "build-1.4.0.tar.gz", hash = "sha256:f1b91b925aa322be454f8330c6fb48b465da993d1e7e7e6fa35027ec49f3c936"}, @@ -91,9 +93,10 @@ virtualenv = ["virtualenv (>=20.11) ; python_version < \"3.10\"", "virtualenv (> name = "certifi" version = "2026.1.4" description = "Python package for providing Mozilla's CA Bundle." -optional = false +optional = true python-versions = ">=3.7" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "certifi-2026.1.4-py3-none-any.whl", hash = "sha256:9943707519e4add1115f44c2bc244f782c0249876bf51b6599fee1ffbedd685c"}, {file = "certifi-2026.1.4.tar.gz", hash = "sha256:ac726dd470482006e014ad384921ed6438c457018f4b3d204aea4281258b2120"}, @@ -103,9 +106,10 @@ files = [ name = "cffi" version = "2.0.0" description = "Foreign Function Interface for Python calling C code." -optional = false +optional = true python-versions = ">=3.9" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "cffi-2.0.0-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:0cf2d91ecc3fcc0625c2c530fe004f82c110405f101548512cce44322fa8ac44"}, {file = "cffi-2.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f73b96c41e3b2adedc34a7356e64c8eb96e03a3782b535e043a986276ce12a49"}, @@ -200,9 +204,10 @@ pycparser = {version = "*", markers = "implementation_name != \"PyPy\""} name = "charset-normalizer" version = "3.4.4" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -optional = false +optional = true python-versions = ">=3.7" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "charset_normalizer-3.4.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e824f1492727fa856dd6eda4f7cee25f8518a12f3c4a56a74e8095695089cf6d"}, {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4bd5d4137d500351a30687c2d3971758aac9a19208fc110ccb9d7188fbe709e8"}, @@ -323,9 +328,10 @@ files = [ name = "click" version = "8.3.1" description = "Composable command line interface toolkit" -optional = false +optional = true python-versions = ">=3.10" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "click-8.3.1-py3-none-any.whl", hash = "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6"}, {file = "click-8.3.1.tar.gz", hash = "sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a"}, @@ -338,9 +344,10 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} name = "cmarkgfm" version = "2025.10.22" description = "Minimal bindings to GitHub's fork of cmark" -optional = false +optional = true python-versions = ">=3.9" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "cmarkgfm-2025.10.22-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:37e0b126a3868e1497f8e10c11a49b007f6f4b3104032d3a51bb84404c0f4486"}, {file = "cmarkgfm-2025.10.22-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1214acf1ef779b129e13a1a51e446425feaed64fd11124f44f78c93021bba853"}, @@ -401,9 +408,10 @@ cffi = ">=2.0.0" name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." -optional = false +optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"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"}, @@ -413,9 +421,10 @@ files = [ name = "cryptography" version = "46.0.5" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." -optional = false +optional = true python-versions = "!=3.9.0,!=3.9.1,>=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\" and sys_platform == \"linux\"" files = [ {file = "cryptography-46.0.5-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:351695ada9ea9618b3500b490ad54c739860883df6c1f555e088eaf25b1bbaad"}, {file = "cryptography-46.0.5-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c18ff11e86df2e28854939acde2d003f7984f721eba450b56a200ad90eeb0e6b"}, @@ -485,9 +494,10 @@ test-randomorder = ["pytest-randomly"] name = "docutils" version = "0.22.4" description = "Docutils -- Python Documentation Utilities" -optional = false +optional = true python-versions = ">=3.9" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "docutils-0.22.4-py3-none-any.whl", hash = "sha256:d0013f540772d1420576855455d050a2180186c91c15779301ac2ccb3eeb68de"}, {file = "docutils-0.22.4.tar.gz", hash = "sha256:4db53b1fde9abecbb74d91230d32ab626d94f6badfc575d6db9194a49df29968"}, @@ -497,9 +507,10 @@ files = [ name = "flake8" version = "7.3.0" description = "the modular source code checker: pep8 pyflakes and co" -optional = false +optional = true python-versions = ">=3.9" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "flake8-7.3.0-py2.py3-none-any.whl", hash = "sha256:b9696257b9ce8beb888cdbe31cf885c90d31928fe202be0889a7cdafad32f01e"}, {file = "flake8-7.3.0.tar.gz", hash = "sha256:fe044858146b9fc69b551a4b490d69cf960fcb78ad1edcb84e7fbb1b4a8e3872"}, @@ -514,9 +525,10 @@ pyflakes = ">=3.4.0,<3.5.0" name = "id" version = "1.6.1" description = "A tool for generating OIDC identities" -optional = false +optional = true python-versions = ">=3.9" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "id-1.6.1-py3-none-any.whl", hash = "sha256:f5ec41ed2629a508f5d0988eda142e190c9c6da971100612c4de9ad9f9b237ca"}, {file = "id-1.6.1.tar.gz", hash = "sha256:d0732d624fb46fd4e7bc4e5152f00214450953b9e772c182c1c22964def1a069"}, @@ -534,9 +546,10 @@ test = ["coverage[toml]", "pretend", "pytest", "pytest-cov"] name = "idna" version = "3.11" description = "Internationalized Domain Names in Applications (IDNA)" -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea"}, {file = "idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902"}, @@ -549,9 +562,10 @@ all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2 name = "iniconfig" version = "2.3.0" description = "brain-dead simple config-ini parsing" -optional = false +optional = true python-versions = ">=3.10" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12"}, {file = "iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730"}, @@ -561,9 +575,10 @@ files = [ name = "isort" version = "6.1.0" description = "A Python utility / library to sort Python imports." -optional = false +optional = true python-versions = ">=3.9.0" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "isort-6.1.0-py3-none-any.whl", hash = "sha256:58d8927ecce74e5087aef019f778d4081a3b6c98f15a80ba35782ca8a2097784"}, {file = "isort-6.1.0.tar.gz", hash = "sha256:9b8f96a14cfee0677e78e941ff62f03769a06d412aabb9e2a90487b3b7e8d481"}, @@ -577,10 +592,10 @@ plugins = ["setuptools"] name = "jaraco-classes" version = "3.4.0" description = "Utility functions for Python class constructs" -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] -markers = "platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" +groups = ["main"] +markers = "extra == \"dev\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "jaraco.classes-3.4.0-py3-none-any.whl", hash = "sha256:f662826b6bed8cace05e7ff873ce0f9283b5c924470fe664fff1c2f00f581790"}, {file = "jaraco.classes-3.4.0.tar.gz", hash = "sha256:47a024b51d0239c0dd8c8540c6c7f484be3b8fcf0b2d85c13825780d3b3f3acd"}, @@ -597,10 +612,10 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-ena name = "jaraco-context" version = "6.1.0" description = "Useful decorators and context managers" -optional = false +optional = true python-versions = ">=3.9" -groups = ["dev"] -markers = "platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" +groups = ["main"] +markers = "extra == \"dev\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "jaraco_context-6.1.0-py3-none-any.whl", hash = "sha256:a43b5ed85815223d0d3cfdb6d7ca0d2bc8946f28f30b6f3216bda070f68badda"}, {file = "jaraco_context-6.1.0.tar.gz", hash = "sha256:129a341b0a85a7db7879e22acd66902fda67882db771754574338898b2d5d86f"}, @@ -618,10 +633,10 @@ type = ["mypy (<1.19) ; platform_python_implementation == \"PyPy\"", "pytest-myp name = "jaraco-functools" version = "4.4.0" description = "Functools like those found in stdlib" -optional = false +optional = true python-versions = ">=3.9" -groups = ["dev"] -markers = "platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" +groups = ["main"] +markers = "extra == \"dev\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "jaraco_functools-4.4.0-py3-none-any.whl", hash = "sha256:9eec1e36f45c818d9bf307c8948eb03b2b56cd44087b3cdc989abca1f20b9176"}, {file = "jaraco_functools-4.4.0.tar.gz", hash = "sha256:da21933b0417b89515562656547a77b4931f98176eb173644c0d35032a33d6bb"}, @@ -642,10 +657,10 @@ type = ["mypy (<1.19) ; platform_python_implementation == \"PyPy\"", "pytest-myp name = "jeepney" version = "0.9.0" description = "Low-level, pure Python DBus protocol wrapper." -optional = false +optional = true python-versions = ">=3.7" -groups = ["dev"] -markers = "platform_machine != \"ppc64le\" and platform_machine != \"s390x\" and sys_platform == \"linux\"" +groups = ["main"] +markers = "extra == \"dev\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\" and sys_platform == \"linux\"" files = [ {file = "jeepney-0.9.0-py3-none-any.whl", hash = "sha256:97e5714520c16fc0a45695e5365a2e11b81ea79bba796e26f9f1d178cb182683"}, {file = "jeepney-0.9.0.tar.gz", hash = "sha256:cf0e9e845622b81e4a28df94c40345400256ec608d0e55bb8a3feaa9163f5732"}, @@ -659,9 +674,10 @@ trio = ["trio"] name = "jinja2" version = "3.1.6" description = "A very fast and expressive template engine." -optional = false +optional = true python-versions = ">=3.7" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"}, {file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"}, @@ -677,10 +693,10 @@ i18n = ["Babel (>=2.7)"] name = "keyring" version = "25.7.0" description = "Store and access your passwords safely." -optional = false +optional = true python-versions = ">=3.9" -groups = ["dev"] -markers = "platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" +groups = ["main"] +markers = "extra == \"dev\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "keyring-25.7.0-py3-none-any.whl", hash = "sha256:be4a0b195f149690c166e850609a477c532ddbfbaed96a404d4e43f8d5e2689f"}, {file = "keyring-25.7.0.tar.gz", hash = "sha256:fe01bd85eb3f8fb3dd0405defdeac9a5b4f6f0439edbb3149577f244a2e8245b"}, @@ -863,9 +879,10 @@ htmlsoup = ["BeautifulSoup4"] name = "markdown-it-py" version = "4.0.0" description = "Python port of markdown-it. Markdown parsing, done right!" -optional = false +optional = true python-versions = ">=3.10" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "markdown_it_py-4.0.0-py3-none-any.whl", hash = "sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147"}, {file = "markdown_it_py-4.0.0.tar.gz", hash = "sha256:cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3"}, @@ -887,9 +904,10 @@ testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions", "requests"] name = "markupsafe" version = "3.0.3" description = "Safely add untrusted strings to HTML/XML markup." -optional = false +optional = true python-versions = ">=3.9" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "markupsafe-3.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2f981d352f04553a7171b8e44369f2af4055f888dfb147d55e42d29e29e74559"}, {file = "markupsafe-3.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e1c1493fb6e50ab01d20a22826e57520f1284df32f2d8601fdd90b6304601419"}, @@ -986,9 +1004,10 @@ files = [ name = "mccabe" version = "0.7.0" description = "McCabe checker, plugin for flake8" -optional = false +optional = true python-versions = ">=3.6" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, @@ -998,9 +1017,10 @@ files = [ name = "mdurl" version = "0.1.2" description = "Markdown URL utilities" -optional = false +optional = true python-versions = ">=3.7" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, @@ -1010,10 +1030,10 @@ files = [ name = "more-itertools" version = "10.8.0" description = "More routines for operating on iterables, beyond itertools" -optional = false +optional = true python-versions = ">=3.9" -groups = ["dev"] -markers = "platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" +groups = ["main"] +markers = "extra == \"dev\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ {file = "more_itertools-10.8.0-py3-none-any.whl", hash = "sha256:52d4362373dcf7c52546bc4af9a86ee7c4579df9a8dc268be0a2f949d376cc9b"}, {file = "more_itertools-10.8.0.tar.gz", hash = "sha256:f638ddf8a1a0d134181275fb5d58b086ead7c6a72429ad725c67503f13ba30bd"}, @@ -1023,9 +1043,10 @@ files = [ name = "mypy-extensions" version = "1.1.0" description = "Type system extensions for programs checked with the mypy type checker." -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505"}, {file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558"}, @@ -1035,9 +1056,10 @@ files = [ name = "nh3" version = "0.3.2" description = "Python binding to Ammonia HTML sanitizer Rust crate" -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "nh3-0.3.2-cp314-cp314t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:d18957a90806d943d141cc5e4a0fefa1d77cf0d7a156878bf9a66eed52c9cc7d"}, {file = "nh3-0.3.2-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45c953e57028c31d473d6b648552d9cab1efe20a42ad139d78e11d8f42a36130"}, @@ -1071,9 +1093,10 @@ files = [ name = "packaging" version = "26.0" description = "Core utilities for Python packages" -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529"}, {file = "packaging-26.0.tar.gz", hash = "sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4"}, @@ -1083,9 +1106,10 @@ files = [ name = "pathspec" version = "1.0.4" description = "Utility library for gitignore style pattern matching of file paths." -optional = false +optional = true python-versions = ">=3.9" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "pathspec-1.0.4-py3-none-any.whl", hash = "sha256:fb6ae2fd4e7c921a165808a552060e722767cfa526f99ca5156ed2ce45a5c723"}, {file = "pathspec-1.0.4.tar.gz", hash = "sha256:0210e2ae8a21a9137c0d470578cb0e595af87edaa6ebf12ff176f14a02e0e645"}, @@ -1101,9 +1125,10 @@ tests = ["pytest (>=9)", "typing-extensions (>=4.15)"] name = "platformdirs" version = "4.5.1" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." -optional = false +optional = true python-versions = ">=3.10" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "platformdirs-4.5.1-py3-none-any.whl", hash = "sha256:d03afa3963c806a9bed9d5125c8f4cb2fdaf74a55ab60e5d59b3fde758104d31"}, {file = "platformdirs-4.5.1.tar.gz", hash = "sha256:61d5cdcc6065745cdd94f0f878977f8de9437be93de97c1c12f853c9c0cdcbda"}, @@ -1118,9 +1143,10 @@ type = ["mypy (>=1.18.2)"] name = "pluggy" version = "1.6.0" description = "plugin and hook calling mechanisms for python" -optional = false +optional = true python-versions = ">=3.9" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746"}, {file = "pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3"}, @@ -1134,9 +1160,10 @@ testing = ["coverage", "pytest", "pytest-benchmark"] name = "pycodestyle" version = "2.14.0" description = "Python style guide checker" -optional = false +optional = true python-versions = ">=3.9" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "pycodestyle-2.14.0-py2.py3-none-any.whl", hash = "sha256:dd6bf7cb4ee77f8e016f9c8e74a35ddd9f67e1d5fd4184d86c3b98e07099f42d"}, {file = "pycodestyle-2.14.0.tar.gz", hash = "sha256:c4b5b517d278089ff9d0abdec919cd97262a3367449ea1c8b49b91529167b783"}, @@ -1146,10 +1173,10 @@ files = [ name = "pycparser" version = "3.0" description = "C parser in Python" -optional = false +optional = true python-versions = ">=3.10" -groups = ["dev"] -markers = "implementation_name != \"PyPy\"" +groups = ["main"] +markers = "extra == \"dev\" and implementation_name != \"PyPy\"" files = [ {file = "pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992"}, {file = "pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29"}, @@ -1159,9 +1186,10 @@ files = [ name = "pyflakes" version = "3.4.0" description = "passive checker of Python programs" -optional = false +optional = true python-versions = ">=3.9" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "pyflakes-3.4.0-py2.py3-none-any.whl", hash = "sha256:f742a7dbd0d9cb9ea41e9a24a918996e8170c799fa528688d40dd582c8265f4f"}, {file = "pyflakes-3.4.0.tar.gz", hash = "sha256:b24f96fafb7d2ab0ec5075b7350b3d2d2218eab42003821c06344973d3ea2f58"}, @@ -1171,9 +1199,10 @@ files = [ name = "pygments" version = "2.19.2" description = "Pygments is a syntax highlighting package written in Python." -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b"}, {file = "pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887"}, @@ -1186,9 +1215,10 @@ windows-terminal = ["colorama (>=0.4.6)"] name = "pyproject-hooks" version = "1.2.0" description = "Wrappers to call pyproject.toml-based build backend hooks." -optional = false +optional = true python-versions = ">=3.7" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "pyproject_hooks-1.2.0-py3-none-any.whl", hash = "sha256:9e5c6bfa8dcc30091c74b0cf803c81fdd29d94f01992a7707bc97babb1141913"}, {file = "pyproject_hooks-1.2.0.tar.gz", hash = "sha256:1e859bd5c40fae9448642dd871adf459e5e2084186e8d2c2a79a824c970da1f8"}, @@ -1198,9 +1228,10 @@ files = [ name = "pytest" version = "9.0.2" description = "pytest: simple powerful testing with Python" -optional = false +optional = true python-versions = ">=3.10" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "pytest-9.0.2-py3-none-any.whl", hash = "sha256:711ffd45bf766d5264d487b917733b453d917afd2b0ad65223959f59089f875b"}, {file = "pytest-9.0.2.tar.gz", hash = "sha256:75186651a92bd89611d1d9fc20f0b4345fd827c41ccd5c299a868a05d70edf11"}, @@ -1236,9 +1267,10 @@ typing_extensions = ">=4.9.0" name = "pytokens" version = "0.4.1" description = "A Fast, spec compliant Python 3.14+ tokenizer that runs on older Pythons." -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "pytokens-0.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2a44ed93ea23415c54f3face3b65ef2b844d96aeb3455b8a69b3df6beab6acc5"}, {file = "pytokens-0.4.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:add8bf86b71a5d9fb5b89f023a80b791e04fba57960aa790cc6125f7f1d39dfe"}, @@ -1291,10 +1323,10 @@ dev = ["black", "build", "mypy", "pytest", "pytest-cov", "setuptools", "tox", "t name = "pywin32-ctypes" version = "0.2.3" description = "A (partial) reimplementation of pywin32 using ctypes/cffi" -optional = false +optional = true python-versions = ">=3.6" -groups = ["dev"] -markers = "platform_machine != \"ppc64le\" and platform_machine != \"s390x\" and sys_platform == \"win32\"" +groups = ["main"] +markers = "extra == \"dev\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\" and sys_platform == \"win32\"" files = [ {file = "pywin32-ctypes-0.2.3.tar.gz", hash = "sha256:d162dc04946d704503b2edc4d55f3dba5c1d539ead017afa00142c38b9885755"}, {file = "pywin32_ctypes-0.2.3-py3-none-any.whl", hash = "sha256:8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8"}, @@ -1304,9 +1336,10 @@ files = [ name = "readme-renderer" version = "44.0" description = "readme_renderer is a library for rendering readme descriptions for Warehouse" -optional = false +optional = true python-versions = ">=3.9" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "readme_renderer-44.0-py3-none-any.whl", hash = "sha256:2fbca89b81a08526aadf1357a8c2ae889ec05fb03f5da67f9769c9a592166151"}, {file = "readme_renderer-44.0.tar.gz", hash = "sha256:8712034eabbfa6805cacf1402b4eeb2a73028f72d1166d6f5cb7f9c047c5d1e1"}, @@ -1325,9 +1358,10 @@ md = ["cmarkgfm (>=0.8.0)"] name = "requests" version = "2.32.5" description = "Python HTTP for Humans." -optional = false +optional = true python-versions = ">=3.9" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6"}, {file = "requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf"}, @@ -1347,9 +1381,10 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] name = "requests-toolbelt" version = "1.0.0" description = "A utility belt for advanced users of python-requests" -optional = false +optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, @@ -1362,9 +1397,10 @@ requests = ">=2.0.1,<3.0.0" name = "rfc3986" version = "2.0.0" description = "Validating URI References per RFC 3986" -optional = false +optional = true python-versions = ">=3.7" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "rfc3986-2.0.0-py2.py3-none-any.whl", hash = "sha256:50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd"}, {file = "rfc3986-2.0.0.tar.gz", hash = "sha256:97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c"}, @@ -1377,9 +1413,10 @@ idna2008 = ["idna"] name = "rich" version = "14.3.2" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" -optional = false +optional = true python-versions = ">=3.8.0" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "rich-14.3.2-py3-none-any.whl", hash = "sha256:08e67c3e90884651da3239ea668222d19bea7b589149d8014a21c633420dbb69"}, {file = "rich-14.3.2.tar.gz", hash = "sha256:e712f11c1a562a11843306f5ed999475f09ac31ffb64281f73ab29ffdda8b3b8"}, @@ -1396,10 +1433,10 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"] name = "secretstorage" version = "3.5.0" description = "Python bindings to FreeDesktop.org Secret Service API" -optional = false +optional = true python-versions = ">=3.10" -groups = ["dev"] -markers = "platform_machine != \"ppc64le\" and platform_machine != \"s390x\" and sys_platform == \"linux\"" +groups = ["main"] +markers = "extra == \"dev\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\" and sys_platform == \"linux\"" files = [ {file = "secretstorage-3.5.0-py3-none-any.whl", hash = "sha256:0ce65888c0725fcb2c5bc0fdb8e5438eece02c523557ea40ce0703c266248137"}, {file = "secretstorage-3.5.0.tar.gz", hash = "sha256:f04b8e4689cbce351744d5537bf6b1329c6fc68f91fa666f60a380edddcd11be"}, @@ -1413,9 +1450,10 @@ jeepney = ">=0.6" name = "setuptools" version = "82.0.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" -optional = false +optional = true python-versions = ">=3.9" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "setuptools-82.0.0-py3-none-any.whl", hash = "sha256:70b18734b607bd1da571d097d236cfcfacaf01de45717d59e6e04b96877532e0"}, {file = "setuptools-82.0.0.tar.gz", hash = "sha256:22e0a2d69474c6ae4feb01951cb69d515ed23728cf96d05513d36e42b62b37cb"}, @@ -1446,9 +1484,10 @@ files = [ name = "tomli" version = "2.4.0" description = "A lil' TOML parser" -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "tomli-2.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b5ef256a3fd497d4973c11bf142e9ed78b150d36f5773f1ca6088c230ffc5867"}, {file = "tomli-2.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5572e41282d5268eb09a697c89a7bee84fae66511f87533a6f88bd2f7b652da9"}, @@ -1503,9 +1542,10 @@ files = [ name = "towncrier" version = "25.8.0" description = "Building newsfiles for your project." -optional = false +optional = true python-versions = ">=3.9" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "towncrier-25.8.0-py3-none-any.whl", hash = "sha256:b953d133d98f9aeae9084b56a3563fd2519dfc6ec33f61c9cd2c61ff243fb513"}, {file = "towncrier-25.8.0.tar.gz", hash = "sha256:eef16d29f831ad57abb3ae32a0565739866219f1ebfbdd297d32894eb9940eb1"}, @@ -1522,9 +1562,10 @@ dev = ["furo (>=2024.05.06)", "nox", "packaging", "sphinx (>=5)", "twisted"] name = "twine" version = "6.2.0" description = "Collection of utilities for publishing packages on PyPI" -optional = false +optional = true python-versions = ">=3.9" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "twine-6.2.0-py3-none-any.whl", hash = "sha256:418ebf08ccda9a8caaebe414433b0ba5e25eb5e4a927667122fbe8f829f985d8"}, {file = "twine-6.2.0.tar.gz", hash = "sha256:e5ed0d2fd70c9959770dce51c8f39c8945c574e18173a7b81802dab51b4b75cf"}, @@ -1560,9 +1601,10 @@ files = [ name = "urllib3" version = "2.6.3" description = "HTTP library with thread-safe connection pooling, file post, and more." -optional = false +optional = true python-versions = ">=3.9" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4"}, {file = "urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed"}, @@ -1578,9 +1620,10 @@ zstd = ["backports-zstd (>=1.0.0) ; python_version < \"3.14\""] name = "wheel" version = "0.46.3" description = "Command line tool for manipulating wheel files" -optional = false +optional = true python-versions = ">=3.9" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "wheel-0.46.3-py3-none-any.whl", hash = "sha256:4b399d56c9d9338230118d705d9737a2a468ccca63d5e813e2a4fc7815d8bc4d"}, {file = "wheel-0.46.3.tar.gz", hash = "sha256:e3e79874b07d776c40bd6033f8ddf76a7dad46a7b8aa1b2787a83083519a1803"}, @@ -1596,9 +1639,10 @@ test = ["pytest (>=6.0.0)", "setuptools (>=77)"] name = "zest-releaser" version = "9.8.0" description = "Software releasing made easy and repeatable" -optional = false +optional = true python-versions = ">=3.9" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "zest_releaser-9.8.0-py3-none-any.whl", hash = "sha256:a725e25bb52e901a75fed4b37ed91a5717860e296398c4cc78976323124eeb5b"}, {file = "zest_releaser-9.8.0.tar.gz", hash = "sha256:1eea651d82723b71aa94ab1429d3e6752af935f9f61ab52c0f66b6c5abd50a15"}, @@ -1622,9 +1666,10 @@ test = ["zope.testing", "zope.testrunner"] name = "zestreleaser-towncrier" version = "1.3.0" description = "zest.releaser plugin to call towncrier" -optional = false +optional = true python-versions = "*" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "zestreleaser.towncrier-1.3.0.tar.gz", hash = "sha256:7a2fb65a760efc3b6448f8977b6181d801dd9a46625a404154240785f365d357"}, ] @@ -1635,7 +1680,10 @@ tomli = {version = "*", markers = "python_version >= \"3.6\""} towncrier = ">=19.9.0" "zest.releaser" = ">=6.17.0" +[extras] +dev = ["black", "flake8", "isort", "pytest", "towncrier", "zest-releaser", "zestreleaser-towncrier"] + [metadata] lock-version = "2.1" -python-versions = ">=3.12, <4" -content-hash = "20c8db96373e5ac64bc72e00909777e93f9d911efb84b5e7e47e11e56fb4b1ce" +python-versions = ">=3.12,<4.0" +content-hash = "dde8c17b4c02355a59b86d28bac0b9706ab23cc9610603ab460b64333bea9d28" diff --git a/poetry.toml b/poetry.toml new file mode 100644 index 0000000..ab1033b --- /dev/null +++ b/poetry.toml @@ -0,0 +1,2 @@ +[virtualenvs] +in-project = true diff --git a/pyproject.toml b/pyproject.toml index 7031053..edf543f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,29 +1,34 @@ -[tool.poetry] +[project] name = "docxcompose" version = "2.0.2" description = "Compose .docx documents" -authors = ["4teamwork AG"] +authors = [{name="Thomas Buchberger", email=""}] +license = "MIT license" readme = "README.rst" -packages = [{include = "docxcompose"}] +requires-python = ">=3.12,<4.0" +dependencies = [ + "babel (>=2.10.0)", + "lxml", + "python-docx (>=1.0.0)", + "six", +] + +[project.optional-dependencies] +dev = [ + "black (>=25.1.0)", + "flake8 (>=7.3.0,<8.0.0)", + "isort (>=6.0.1,<7.0.0)", + "pytest (>=9.0.2,<10.0.0)", + "towncrier (>=25.8.0)", + "zest-releaser (>=9.6.2,<10.0.0)", + "zestreleaser-towncrier (>=1.3.0,<2.0.0)", +] -[tool.poetry.dependencies] -babel = "^2" -lxml = ">=5" -python = ">=3.12, <4" -python-docx = "^1" -six = "^1" - -[tool.poetry.group.dev.dependencies] -black = "^25.1.0" -flake8 = "7.3.0" -isort = "^6.0.1" -pytest = "^9.0.2" -towncrier = "^25.8.0" -zest-releaser = "^9.6.2" -zestreleaser-towncrier = "^1.3.0" +[tool.poetry] +packages = [{include = "docxcompose"}] [build-system] -requires = ["poetry-core"] +requires = ["poetry-core>=2.0.0,<3.0.0"] build-backend = "poetry.core.masonry.api" [tool.isort] From 057f9d048dcdbe51592d7a918476d87658d96de7 Mon Sep 17 00:00:00 2001 From: Thomas Buchberger Date: Fri, 13 Mar 2026 09:32:39 +0100 Subject: [PATCH 2/2] Install dev dependencies for tests --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 8e7f444..b7f1453 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -22,7 +22,7 @@ jobs: with: poetry-version: 2.1 - name: Install dependencies - run: poetry install + run: poetry install -E dev - name: isort run: poetry run isort --check-only --quiet --settings pyproject.toml . - name: flake8