From e2a0c24cae495b88b592cc77cb67fc19b46b90fe Mon Sep 17 00:00:00 2001 From: bnbong Date: Tue, 27 Oct 2026 00:35:31 +0900 Subject: [PATCH] [FIX, TEMPLATE] fix 40 dependabot alerts and template security scans Root project (pyproject floors, pdm.lock, uv.lock, requirements*.txt): - certifi 2026.2.25/2025.10.5 -> 2026.10.23 (GHSA-6q48-6c7w-9gw2, critical) - black 26.3.1 -> 26.10.1 (GHSA-cg8m-r9f2-5wm2) - filelock 3.28.0/3.32.6 -> 4.2.4 (GHSA-v4x8-3wr5-3wq8 + 2 related) - virtualenv 21.7.16 -> 21.14.13 (GHSA-8rjx-v5ww-45pp + 15 related) - distlib, packaging, python-discovery moved as virtualenv requirements Templates (requirements.txt-tpl / pyproject.toml-tpl / setup.cfg-tpl): - black 26.5.1 -> 26.10.1 in 11 templates, floors raised to >=26.10.1 - certifi 2026.7.22 -> 2026.10.23 in 9 templates - fastapi-dockerized: setuptools 84.0.0 -> 84.2.1 (GHSA-xmj3-9gf7-h52w) - fastapi-mcp: mcp 1.29.1 -> 1.30.0 (GHSA-84m7-p3x7-pcfv) Closes #86 Closes #88 Co-Authored-By: Claude Fable 5.1 --- pdm.lock | 95 ++++++++++--------- pyproject.toml | 19 ++-- requirements-docs.txt | 4 +- requirements.txt | 12 +-- .../fastapi-async-crud/pyproject.toml-tpl | 4 +- .../fastapi-async-crud/requirements.txt-tpl | 4 +- .../fastapi-auth-jwt/pyproject.toml-tpl | 4 +- .../fastapi-auth-jwt/requirements.txt-tpl | 2 +- .../pyproject.toml-tpl | 4 +- .../requirements.txt-tpl | 4 +- .../fastapi-default/pyproject.toml-tpl | 4 +- .../fastapi-default/requirements.txt-tpl | 4 +- .../fastapi-dockerized/pyproject.toml-tpl | 4 +- .../fastapi-dockerized/requirements.txt-tpl | 6 +- .../fastapi-domain-starter/pyproject.toml-tpl | 4 +- .../requirements.txt-tpl | 4 +- .../fastapi-empty/pyproject.toml-tpl | 4 +- .../fastapi-empty/requirements.txt-tpl | 4 +- .../fastapi-llm-agent/pyproject.toml-tpl | 4 +- .../fastapi-llm-agent/requirements.txt-tpl | 2 +- .../fastapi-mcp/pyproject.toml-tpl | 6 +- .../fastapi-mcp/requirements.txt-tpl | 6 +- .../fastapi-mcp/setup.cfg-tpl | 2 +- .../fastapi-psql-orm/pyproject.toml-tpl | 4 +- .../fastapi-psql-orm/requirements.txt-tpl | 4 +- .../requirements.txt-tpl | 2 +- .../fastapi-sqlmodel/pyproject.toml-tpl | 4 +- .../fastapi-sqlmodel/requirements.txt-tpl | 2 +- uv.lock | 81 ++++++++-------- 29 files changed, 158 insertions(+), 145 deletions(-) diff --git a/pdm.lock b/pdm.lock index 14332ab..2c2e83d 100644 --- a/pdm.lock +++ b/pdm.lock @@ -5,7 +5,7 @@ groups = ["default", "dev", "docs", "translation"] strategy = ["inherit_metadata"] lock_version = "4.5.0" -content_hash = "sha256:110de45e63dfa0456adaccb1332e234b1e0e96bf900bca03dd72af4b9777275d" +content_hash = "sha256:8bf82ea3cd663c76cfd56781e01ec4bd1d34a4797dbbb34a8c60dfa817c2b8c2" [[metadata.targets]] requires_python = ">=3.12" @@ -90,7 +90,7 @@ files = [ [[package]] name = "black" -version = "26.3.1" +version = "26.10.1" requires_python = ">=3.10" summary = "The uncompromising code formatter." groups = ["dev"] @@ -105,34 +105,34 @@ dependencies = [ "typing-extensions>=4.0.1; python_version < \"3.11\"", ] files = [ - {file = "black-26.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b5e6f89631eb88a7302d416594a32faeee9fb8fb848290da9d0a5f2903519fc1"}, - {file = "black-26.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:41cd2012d35b47d589cb8a16faf8a32ef7a336f56356babd9fcf70939ad1897f"}, - {file = "black-26.3.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f76ff19ec5297dd8e66eb64deda23631e642c9393ab592826fd4bdc97a4bce7"}, - {file = "black-26.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:ddb113db38838eb9f043623ba274cfaf7d51d5b0c22ecb30afe58b1bb8322983"}, - {file = "black-26.3.1-cp312-cp312-win_arm64.whl", hash = "sha256:dfdd51fc3e64ea4f35873d1b3fb25326773d55d2329ff8449139ebaad7357efb"}, - {file = "black-26.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:855822d90f884905362f602880ed8b5df1b7e3ee7d0db2502d4388a954cc8c54"}, - {file = "black-26.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:8a33d657f3276328ce00e4d37fe70361e1ec7614da5d7b6e78de5426cb56332f"}, - {file = "black-26.3.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f1cd08e99d2f9317292a311dfe578fd2a24b15dbce97792f9c4d752275c1fa56"}, - {file = "black-26.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:c7e72339f841b5a237ff14f7d3880ddd0fc7f98a1199e8c4327f9a4f478c1839"}, - {file = "black-26.3.1-cp313-cp313-win_arm64.whl", hash = "sha256:afc622538b430aa4c8c853f7f63bc582b3b8030fd8c80b70fb5fa5b834e575c2"}, - {file = "black-26.3.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:2d6bfaf7fd0993b420bed691f20f9492d53ce9a2bcccea4b797d34e947318a78"}, - {file = "black-26.3.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:f89f2ab047c76a9c03f78d0d66ca519e389519902fa27e7a91117ef7611c0568"}, - {file = "black-26.3.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b07fc0dab849d24a80a29cfab8d8a19187d1c4685d8a5e6385a5ce323c1f015f"}, - {file = "black-26.3.1-cp314-cp314-win_amd64.whl", hash = "sha256:0126ae5b7c09957da2bdbd91a9ba1207453feada9e9fe51992848658c6c8e01c"}, - {file = "black-26.3.1-cp314-cp314-win_arm64.whl", hash = "sha256:92c0ec1f2cc149551a2b7b47efc32c866406b6891b0ee4625e95967c8f4acfb1"}, - {file = "black-26.3.1-py3-none-any.whl", hash = "sha256:2bd5aa94fc267d38bb21a70d7410a89f1a1d318841855f698746f8e7f51acd1b"}, - {file = "black-26.3.1.tar.gz", hash = "sha256:2c50f5063a9641c7eed7795014ba37b0f5fa227f3d408b968936e24bc0566b07"}, + {file = "black-26.10.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fe85fc4019bee59bc495c0f2a8ee76c5cd02c7015508d94a967ba2376f39a52c"}, + {file = "black-26.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:182f6c32be38074b16d378498c498b32cb51928178ee611485344972c35ec9c6"}, + {file = "black-26.10.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b5347d760f0c02bb00dd249384cab71c3bf828b4f68d5b401eb116e0390f147d"}, + {file = "black-26.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:4d9a90516db1d99c25dbb20cc0998e0e01531dd903466c7744e56d66f864220a"}, + {file = "black-26.10.1-cp312-cp312-win_arm64.whl", hash = "sha256:2ffbc023a12d0c729408823b8f10514490bd0baa301d0d4e21a7240249f9507f"}, + {file = "black-26.10.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b6272cfd7e1e8e271f5b0e0207259fe2834687e5cb9b5f620b34a44db9754993"}, + {file = "black-26.10.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:978113a40223a6aaefc17364176a809a320e6b288683841427fff04c6d7b4130"}, + {file = "black-26.10.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:03c0ddd93bb392e71209903a691767eb366fe1a76deb9509ccbaae9e1f14bb52"}, + {file = "black-26.10.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6dba8138cdc99061ef07b958ac082d2aa057b6961d1936f9717c350f02bab5f"}, + {file = "black-26.10.1-cp313-cp313-win_arm64.whl", hash = "sha256:d42dd2fac7c342ae67e64ee99c9532e20b2a84e92c79ed3317fa2ef54c801d93"}, + {file = "black-26.10.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:8375962579d537364cc0efa19b1474481915d3a793f9fc0774901814c5e5b5f4"}, + {file = "black-26.10.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:d8b3a9074a680b3c5749633714e9ae3992a1e5a23343a97ad61cd9b119b444d2"}, + {file = "black-26.10.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:289282aa2e09d3162312a3be1788ff21b08e9ea9cc4a81e656024728b32428fb"}, + {file = "black-26.10.1-cp314-cp314-win_amd64.whl", hash = "sha256:5cd88fd7b444ca51f3fc883b6f6657ea53a258b0b2eef6d9f2dfcfa17ce0e27b"}, + {file = "black-26.10.1-cp314-cp314-win_arm64.whl", hash = "sha256:2520037aa62f8a1454d0811b8f5c88b444445b03a4bfba480d8d220893b64c34"}, + {file = "black-26.10.1-py3-none-any.whl", hash = "sha256:28842f9a8207cc1df6eb983a35a14c5a0dfcd603d214fe82d84bef552afd2e3a"}, + {file = "black-26.10.1.tar.gz", hash = "sha256:5f9f83beae62437e060dafd53d7f1fc327e3d3494f74d72ee5c2b73eb90fc4e7"}, ] [[package]] name = "certifi" -version = "2026.2.25" +version = "2026.10.23" requires_python = ">=3.7" summary = "Python package for providing Mozilla's CA Bundle." groups = ["docs", "translation"] files = [ - {file = "certifi-2026.2.25-py3-none-any.whl", hash = "sha256:027692e4402ad994f1c42e52a4997a9763c646b73e4096e4d5d6db8af1d6f0fa"}, - {file = "certifi-2026.2.25.tar.gz", hash = "sha256:e887ab5cee78ea814d3472169153c2d12cd43b14bd03329a39a9c6e2e80bfba7"}, + {file = "certifi-2026.10.23-py3-none-any.whl", hash = "sha256:e9b54de76e530bb6cf0ccd036787103acb58fd42ba930ea8bf948ddbaa2f61d1"}, + {file = "certifi-2026.10.23.tar.gz", hash = "sha256:a9895e6e2758b371e0545e321a3a8fd1fcfd9829ada8824a936dfb16aaaf36cd"}, ] [[package]] @@ -435,12 +435,12 @@ files = [ [[package]] name = "distlib" -version = "0.4.0" +version = "0.4.4" summary = "Distribution utilities" groups = ["dev"] files = [ - {file = "distlib-0.4.0-py2.py3-none-any.whl", hash = "sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16"}, - {file = "distlib-0.4.0.tar.gz", hash = "sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d"}, + {file = "distlib-0.4.4-py2.py3-none-any.whl", hash = "sha256:cf09d55b1e85a89576b036aeb71550bfd68320f3f21761ca329eadadad918638"}, + {file = "distlib-0.4.4.tar.gz", hash = "sha256:ca4175b4ac7f71223cc30ed7248c45d2b38c2439d8ee6e498ab67ed63cf3508d"}, ] [[package]] @@ -467,13 +467,13 @@ files = [ [[package]] name = "filelock" -version = "3.32.6" -requires_python = ">=3.10" +version = "4.2.4" +requires_python = ">=3.11" summary = "A platform independent file lock." groups = ["dev"] files = [ - {file = "filelock-3.32.6-py3-none-any.whl", hash = "sha256:3f16ecd0117feae0dfc147e8c62eb5daeccd8bd800378c3ddf416de9b4feb6b1"}, - {file = "filelock-3.32.6.tar.gz", hash = "sha256:a3f55a18af3652a94d8f47d6055df434f254ca1d02ef2524850c6d249ca2512c"}, + {file = "filelock-4.2.4-py3-none-any.whl", hash = "sha256:301241438c57936ef93f4243a94f2559022268bfcf9b375a9a72eb0f8db8358e"}, + {file = "filelock-4.2.4.tar.gz", hash = "sha256:c6d8663535e1650ee430507b4ffbac7b464dd64b7647ea0112a9f406499d163d"}, ] [[package]] @@ -1035,13 +1035,13 @@ files = [ [[package]] name = "packaging" -version = "26.1" -requires_python = ">=3.8" +version = "26.3" +requires_python = ">=3.9" summary = "Core utilities for Python packages" groups = ["dev", "docs"] files = [ - {file = "packaging-26.1-py3-none-any.whl", hash = "sha256:5d9c0669c6285e491e0ced2eee587eaf67b670d94a19e94e3984a481aba6802f"}, - {file = "packaging-26.1.tar.gz", hash = "sha256:f042152b681c4bfac5cae2742a55e103d27ab2ec0f3d88037136b6bfe7c9c5de"}, + {file = "packaging-26.3-py3-none-any.whl", hash = "sha256:d7193f7c8e4e93f444fde0262bf90af30e16fa0ad0ad44cb553c87339b23cd1c"}, + {file = "packaging-26.3.tar.gz", hash = "sha256:94edc256424af38762eb31306eed28beb9f0efc50a8837492c9d6fd6004aed79"}, ] [[package]] @@ -1273,16 +1273,16 @@ files = [ [[package]] name = "python-discovery" -version = "1.6.0" -requires_python = ">=3.8" +version = "1.6.4" +requires_python = ">=3.9" summary = "Python interpreter discovery" groups = ["dev"] dependencies = [ - "filelock>=3.15.4", + "filelock>=3.16.1", ] files = [ - {file = "python_discovery-1.6.0-py3-none-any.whl", hash = "sha256:d4e244cf17b8b29819ed78003d55fbacf86eda23425b075454fff9271b79377a"}, - {file = "python_discovery-1.6.0.tar.gz", hash = "sha256:6393b4eae1be8b2182670635e7baff89ac21cb9f8e86fd1ff40c7b1144febb4c"}, + {file = "python_discovery-1.6.4-py3-none-any.whl", hash = "sha256:530179cc51a1816d512b15635b3dc931295ae12efb183783ad31190a5d425d2b"}, + {file = "python_discovery-1.6.4.tar.gz", hash = "sha256:bc70d31f0ec5de11eda13d4d64c16e24b3506a65984684f2b6c98cb83b2ea9df"}, ] [[package]] @@ -1506,21 +1506,22 @@ files = [ [[package]] name = "virtualenv" -version = "21.7.16" +version = "21.14.13" requires_python = ">=3.9" summary = "Virtual Python Environment builder" groups = ["dev"] dependencies = [ - "distlib<1,>=0.3.7", - "filelock<4,>=3.24.2; python_version >= \"3.10\"", - "filelock<=3.19.1,>=3.16.1; python_version < \"3.10\"", - "platformdirs<5,>=3.9.1", - "python-discovery>=1.6", - "typing-extensions>=4.13.2; python_version < \"3.11\"", + "distlib<1,>=0.4.3", + "filelock<5,>=3.24.2; python_version >= \"3.10\"", + "filelock<=3.19.1,>=3.19.1; python_version < \"3.10\"", + "packaging>=26.3", + "platformdirs<5,>=4.4", + "python-discovery>=1.6.1", + "typing-extensions>=4.16; python_version < \"3.11\"", ] files = [ - {file = "virtualenv-21.7.16-py3-none-any.whl", hash = "sha256:752fd5d5352502fbd794422983eed65a249fc6f4685c5e2122fd6052e6477a11"}, - {file = "virtualenv-21.7.16.tar.gz", hash = "sha256:d3fcf6954a07121c2b61efcb96419e2f40b3718d558998f13a7314e32cc42723"}, + {file = "virtualenv-21.14.13-py3-none-any.whl", hash = "sha256:5fbb04138a4861580b78ba9110d529a26bc48fcc93c8ec36bc0202eeed96a788"}, + {file = "virtualenv-21.14.13.tar.gz", hash = "sha256:de5307ba4b9a0001d9c8ea02832d38f63ca432880f416c1bface61c4323fd905"}, ] [[package]] diff --git a/pyproject.toml b/pyproject.toml index 32fb8d7..f11918d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -24,19 +24,24 @@ Changelog = "https://bnbong.github.io/FastAPI-fastkit/changelog/" dev = [ # Pinned minimums reflect Dependabot security advisories: # pytest < 9.0.3 — tmpdir handling (GHSA) - # black < 26.3.1 — arbitrary file writes via cache file name + # black < 26.10.1 — arbitrary file writes via cache file name + # (GHSA-cg8m-r9f2-5wm2) # pygments < 2.20.0 — ReDoS in GUID regex (transitive via rich) - # virtualenv < 21.7.13 — activation-script command injection, unverified - # seed wheels, pyvenv.cfg injection (GHSA-p58f-9548-mpm2 - # and three related advisories; transitive via pre-commit) + # virtualenv < 21.14.9 — activation-script command injection, unverified + # seed wheels, pyvenv.cfg injection (GHSA-8rjx-v5ww-45pp, + # GHSA-c947-3pg5-gm8q, GHSA-5vjq-rrrf-7h2q, GHSA-vxj4-q4g9-crj7 + # and 12 related advisories; transitive via pre-commit) + # filelock < 4.2.1 — GHSA-v4x8-3wr5-3wq8 plus two related advisories; + # transitive via virtualenv "pytest>=9.0.3", "pytest-cov>=6.2.1", - "black>=26.3.1", + "black>=26.10.1", "pre-commit>=4.0.1", "mypy>=1.12.0", "isort>=5.13.2", "pygments>=2.20.0", - "virtualenv>=21.7.13", + "virtualenv>=21.14.9", + "filelock>=4.2.1", "types-pyyaml>=6.0.12.20260408", ] @@ -101,10 +106,12 @@ docs = [ # requests < 2.33.0 — insecure temp file reuse in extract_zipped_paths # idna < 3.15 — quadratic complexity in IDNA decoding (transitive via requests) # urllib3 < 2.8.0 — chunked Deflate streaming infinite loop (GHSA-gh4c-6fx4-qh6g), transitive via requests + # certifi < 2026.10.19 — GHSA-6q48-6c7w-9gw2 (critical); transitive via requests "pygments>=2.20.0", "requests>=2.33.0", "idna>=3.15", "urllib3>=2.8.0", + "certifi>=2026.10.19", # pymdown-extensions <= 11.0.0 — ReDoS plus two path-traversal advisories; # 10.17.2+ was already required because earlier releases crash on pygments # 2.20+ (NoneType filename passed to html.escape), see pymdown-extensions#2580. diff --git a/requirements-docs.txt b/requirements-docs.txt index 21e0a1f..2c3ff4b 100644 --- a/requirements-docs.txt +++ b/requirements-docs.txt @@ -3,7 +3,7 @@ babel==2.18.0 backrefs==6.2 -certifi==2026.2.25 +certifi==2026.10.23 charset-normalizer==3.4.7 click==8.3.2 colorama==0.4.6 @@ -20,7 +20,7 @@ mkdocs-get-deps==0.2.2 mkdocs-material==9.7.7 mkdocs-material-extensions==1.3.1 mkdocs-static-i18n==1.3.1 -packaging==26.1 +packaging==26.3 paginate==0.5.7 pathspec==1.0.4 platformdirs==4.9.6 diff --git a/requirements.txt b/requirements.txt index 1337dc2..2312018 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,13 +1,13 @@ # This file is @generated by PDM. # Please do not edit it manually. -black==26.3.1 +black==26.10.1 cfgv==3.5.0 click==8.3.2 colorama==0.4.6 coverage[toml]==7.13.5 -distlib==0.4.0 -filelock==3.28.0 +distlib==0.4.4 +filelock==4.2.4 identify==2.6.18 iniconfig==2.3.0 isort==8.0.1 @@ -17,7 +17,7 @@ mdurl==0.1.2 mypy==1.20.1 mypy-extensions==1.1.0 nodeenv==1.10.0 -packaging==26.1 +packaging==26.3 pathspec==1.0.4 platformdirs==4.9.6 pluggy==1.6.0 @@ -25,9 +25,9 @@ pre-commit==4.5.1 pygments==2.20.0 pytest==9.0.3 pytest-cov==7.1.0 -python-discovery==1.2.2 +python-discovery==1.6.4 pytokens==0.4.1 pyyaml==6.0.3 rich==15.0.0 typing-extensions==4.15.0 -virtualenv==21.7.16 +virtualenv==21.14.13 diff --git a/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/pyproject.toml-tpl b/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/pyproject.toml-tpl index 5c19f84..25c3795 100644 --- a/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/pyproject.toml-tpl +++ b/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/pyproject.toml-tpl @@ -23,7 +23,7 @@ dev = [ "pytest>=9.1.1", "pytest-asyncio>=1.4.0", "httpx>=0.28.1", - "black>=26.5.1", + "black>=26.10.1", "isort>=9.0.1", "mypy>=2.3.1", "PyYAML>=6.0.3", @@ -34,7 +34,7 @@ dev = [ "pytest>=9.1.1", "pytest-asyncio>=1.4.0", "httpx>=0.28.1", - "black>=26.5.1", + "black>=26.10.1", "isort>=9.0.1", "mypy>=2.3.1", "PyYAML>=6.0.3", diff --git a/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/requirements.txt-tpl b/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/requirements.txt-tpl index 2577b20..019a244 100644 --- a/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/requirements.txt-tpl +++ b/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/requirements.txt-tpl @@ -3,8 +3,8 @@ annotated-doc==0.0.5 annotated-types==0.8.0 anyio==4.15.0 ast-serialize==0.9.0 -black==26.5.1 -certifi==2026.7.22 +black==26.10.1 +certifi==2026.10.23 click==8.5.0 fastapi==0.141.1 h11==0.16.0 diff --git a/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/pyproject.toml-tpl b/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/pyproject.toml-tpl index c44a520..7ad988b 100644 --- a/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/pyproject.toml-tpl +++ b/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/pyproject.toml-tpl @@ -29,7 +29,7 @@ dev = [ "pytest>=9.1.1", "pytest-asyncio>=1.4.0", "httpx>=0.28.1", - "black>=26.5.1", + "black>=26.10.1", "isort>=9.0.1", "mypy>=2.3.1", ] @@ -39,7 +39,7 @@ dev = [ "pytest>=9.1.1", "pytest-asyncio>=1.4.0", "httpx>=0.28.1", - "black>=26.5.1", + "black>=26.10.1", "isort>=9.0.1", "mypy>=2.3.1", ] diff --git a/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/requirements.txt-tpl b/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/requirements.txt-tpl index c99969e..f1d5812 100644 --- a/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/requirements.txt-tpl +++ b/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/requirements.txt-tpl @@ -18,6 +18,6 @@ pwdlib[argon2]==0.3.1 pytest==9.1.1 pytest-asyncio==1.4.0 httpx==0.28.1 -black==26.5.1 +black==26.10.1 isort==9.0.1 mypy==2.3.1 diff --git a/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/pyproject.toml-tpl b/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/pyproject.toml-tpl index 5c19f84..25c3795 100644 --- a/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/pyproject.toml-tpl +++ b/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/pyproject.toml-tpl @@ -23,7 +23,7 @@ dev = [ "pytest>=9.1.1", "pytest-asyncio>=1.4.0", "httpx>=0.28.1", - "black>=26.5.1", + "black>=26.10.1", "isort>=9.0.1", "mypy>=2.3.1", "PyYAML>=6.0.3", @@ -34,7 +34,7 @@ dev = [ "pytest>=9.1.1", "pytest-asyncio>=1.4.0", "httpx>=0.28.1", - "black>=26.5.1", + "black>=26.10.1", "isort>=9.0.1", "mypy>=2.3.1", "PyYAML>=6.0.3", diff --git a/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/requirements.txt-tpl b/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/requirements.txt-tpl index 2577b20..019a244 100644 --- a/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/requirements.txt-tpl +++ b/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/requirements.txt-tpl @@ -3,8 +3,8 @@ annotated-doc==0.0.5 annotated-types==0.8.0 anyio==4.15.0 ast-serialize==0.9.0 -black==26.5.1 -certifi==2026.7.22 +black==26.10.1 +certifi==2026.10.23 click==8.5.0 fastapi==0.141.1 h11==0.16.0 diff --git a/src/fastapi_fastkit/fastapi_project_template/fastapi-default/pyproject.toml-tpl b/src/fastapi_fastkit/fastapi_project_template/fastapi-default/pyproject.toml-tpl index 40007b0..5c97e69 100644 --- a/src/fastapi_fastkit/fastapi_project_template/fastapi-default/pyproject.toml-tpl +++ b/src/fastapi_fastkit/fastapi_project_template/fastapi-default/pyproject.toml-tpl @@ -21,7 +21,7 @@ dependencies = [ dev = [ "pytest>=9.1.1", "httpx>=0.28.1", - "black>=26.5.1", + "black>=26.10.1", "isort>=9.0.1", "mypy>=2.3.1", "PyYAML>=6.0.3", @@ -31,7 +31,7 @@ dev = [ dev = [ "pytest>=9.1.1", "httpx>=0.28.1", - "black>=26.5.1", + "black>=26.10.1", "isort>=9.0.1", "mypy>=2.3.1", "PyYAML>=6.0.3", diff --git a/src/fastapi_fastkit/fastapi_project_template/fastapi-default/requirements.txt-tpl b/src/fastapi_fastkit/fastapi_project_template/fastapi-default/requirements.txt-tpl index 0bc0b18..ce370cd 100644 --- a/src/fastapi_fastkit/fastapi_project_template/fastapi-default/requirements.txt-tpl +++ b/src/fastapi_fastkit/fastapi_project_template/fastapi-default/requirements.txt-tpl @@ -2,8 +2,8 @@ annotated-doc==0.0.5 annotated-types==0.8.0 anyio==4.15.0 ast-serialize==0.9.0 -black==26.5.1 -certifi==2026.7.22 +black==26.10.1 +certifi==2026.10.23 click==8.5.0 fastapi==0.141.1 h11==0.16.0 diff --git a/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/pyproject.toml-tpl b/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/pyproject.toml-tpl index 88ac4ee..c7c5d16 100644 --- a/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/pyproject.toml-tpl +++ b/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/pyproject.toml-tpl @@ -22,7 +22,7 @@ dependencies = [ dev = [ "pytest>=9.1.1", "httpx>=0.28.1", - "black>=26.5.1", + "black>=26.10.1", "isort>=9.0.1", "mypy>=2.3.1", "PyYAML>=6.0.3", @@ -33,7 +33,7 @@ dev = [ dev = [ "pytest>=9.1.1", "httpx>=0.28.1", - "black>=26.5.1", + "black>=26.10.1", "isort>=9.0.1", "mypy>=2.3.1", "PyYAML>=6.0.3", diff --git a/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/requirements.txt-tpl b/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/requirements.txt-tpl index f02d44a..54e4950 100644 --- a/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/requirements.txt-tpl +++ b/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/requirements.txt-tpl @@ -2,8 +2,8 @@ annotated-doc==0.0.5 annotated-types==0.8.0 anyio==4.15.0 ast-serialize==0.9.0 -black==26.5.1 -certifi==2026.7.22 +black==26.10.1 +certifi==2026.10.23 click==8.5.0 fastapi==0.141.1 h11==0.16.0 @@ -28,7 +28,7 @@ pytest==9.1.1 python-dotenv==1.2.3 pytokens==0.4.1 PyYAML==6.0.3 -setuptools==84.0.0 +setuptools==84.2.1 setuptools-scm==10.2.3 SQLAlchemy==2.0.52 sqlmodel==0.0.42 diff --git a/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/pyproject.toml-tpl b/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/pyproject.toml-tpl index 81e4d24..8eb32ce 100644 --- a/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/pyproject.toml-tpl +++ b/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/pyproject.toml-tpl @@ -20,7 +20,7 @@ dependencies = [ dev = [ "pytest>=9.1.1", "httpx>=0.28.1", - "black>=26.5.1", + "black>=26.10.1", "isort>=9.0.1", "mypy>=2.3.1", ] @@ -29,7 +29,7 @@ dev = [ dev = [ "pytest>=9.1.1", "httpx>=0.28.1", - "black>=26.5.1", + "black>=26.10.1", "isort>=9.0.1", "mypy>=2.3.1", ] diff --git a/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/requirements.txt-tpl b/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/requirements.txt-tpl index 47fa897..bfce214 100644 --- a/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/requirements.txt-tpl +++ b/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/requirements.txt-tpl @@ -2,8 +2,8 @@ annotated-doc==0.0.5 annotated-types==0.8.0 anyio==4.15.0 ast-serialize==0.9.0 -black==26.5.1 -certifi==2026.7.22 +black==26.10.1 +certifi==2026.10.23 click==8.5.0 fastapi==0.141.1 h11==0.16.0 diff --git a/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/pyproject.toml-tpl b/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/pyproject.toml-tpl index a19a20f..f6c443e 100644 --- a/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/pyproject.toml-tpl +++ b/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/pyproject.toml-tpl @@ -19,7 +19,7 @@ dependencies = [ dev = [ "pytest>=9.1.1", "httpx>=0.28.1", - "black>=26.5.1", + "black>=26.10.1", "isort>=9.0.1", "mypy>=2.3.1", ] @@ -28,7 +28,7 @@ dev = [ dev = [ "pytest>=9.1.1", "httpx>=0.28.1", - "black>=26.5.1", + "black>=26.10.1", "isort>=9.0.1", "mypy>=2.3.1", ] diff --git a/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/requirements.txt-tpl b/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/requirements.txt-tpl index 47fa897..bfce214 100644 --- a/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/requirements.txt-tpl +++ b/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/requirements.txt-tpl @@ -2,8 +2,8 @@ annotated-doc==0.0.5 annotated-types==0.8.0 anyio==4.15.0 ast-serialize==0.9.0 -black==26.5.1 -certifi==2026.7.22 +black==26.10.1 +certifi==2026.10.23 click==8.5.0 fastapi==0.141.1 h11==0.16.0 diff --git a/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/pyproject.toml-tpl b/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/pyproject.toml-tpl index 1b5d627..a1722da 100644 --- a/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/pyproject.toml-tpl +++ b/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/pyproject.toml-tpl @@ -23,7 +23,7 @@ dev = [ "pytest>=9.1.1", "pytest-asyncio>=1.4.0", "httpx>=0.28.1", - "black>=26.5.1", + "black>=26.10.1", "isort>=9.0.1", "mypy>=2.3.1", ] @@ -33,7 +33,7 @@ dev = [ "pytest>=9.1.1", "pytest-asyncio>=1.4.0", "httpx>=0.28.1", - "black>=26.5.1", + "black>=26.10.1", "isort>=9.0.1", "mypy>=2.3.1", ] diff --git a/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/requirements.txt-tpl b/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/requirements.txt-tpl index e042ad6..e4f7026 100644 --- a/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/requirements.txt-tpl +++ b/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/requirements.txt-tpl @@ -10,6 +10,6 @@ sse-starlette==3.4.10 pytest==9.1.1 pytest-asyncio==1.4.0 httpx==0.28.1 -black==26.5.1 +black==26.10.1 isort==9.0.1 mypy==2.3.1 diff --git a/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/pyproject.toml-tpl b/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/pyproject.toml-tpl index 628a092..90a1c6b 100644 --- a/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/pyproject.toml-tpl +++ b/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/pyproject.toml-tpl @@ -16,7 +16,7 @@ dependencies = [ "SQLAlchemy>=2.0.52", "python-dotenv>=1.2.3", "fastapi-mcp>=0.3.7,<0.4.0", - "mcp>=1.29.1,<2.0.0", + "mcp>=1.30.0,<2.0.0", "pwdlib[argon2]>=0.3.1", "PyJWT[crypto]>=2.15.1", "python-multipart>=0.0.32", @@ -27,7 +27,7 @@ dev = [ "pytest>=9.1.1", "pytest-cov>=7.1.0", "httpx>=0.28.1", - "black>=26.5.1", + "black>=26.10.1", "isort>=9.0.1", "mypy>=2.3.1", "PyYAML>=6.0.3", @@ -38,7 +38,7 @@ dev = [ "pytest>=9.1.1", "pytest-cov>=7.1.0", "httpx>=0.28.1", - "black>=26.5.1", + "black>=26.10.1", "isort>=9.0.1", "mypy>=2.3.1", "PyYAML>=6.0.3", diff --git a/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/requirements.txt-tpl b/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/requirements.txt-tpl index 8d79b37..ad0749b 100644 --- a/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/requirements.txt-tpl +++ b/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/requirements.txt-tpl @@ -5,8 +5,8 @@ argon2-cffi==25.1.0 argon2-cffi-bindings==26.1.0 ast-serialize==0.9.0 attrs==26.1.0 -black==26.5.1 -certifi==2026.7.22 +black==26.10.1 +certifi==2026.10.23 cffi==2.1.1 charset-normalizer==3.5.1 click==8.5.0 @@ -26,7 +26,7 @@ jsonschema==4.26.0 jsonschema-specifications==2025.9.1 librt==0.15.0 markdown-it-py==4.2.0 -mcp==1.29.1 +mcp==1.30.0 mdurl==0.1.2 mypy==2.3.1 mypy-extensions==1.1.0 diff --git a/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/setup.cfg-tpl b/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/setup.cfg-tpl index 675b9fb..104d01a 100644 --- a/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/setup.cfg-tpl +++ b/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/setup.cfg-tpl @@ -37,7 +37,7 @@ install_requires = dev = pytest>=8.3.4 pytest-cov>=4.0.0 - black>=25.1.0 + black>=26.10.1 isort>=6.0.0 mypy>=1.15.0 httpx>=0.28.1 diff --git a/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/pyproject.toml-tpl b/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/pyproject.toml-tpl index fd86315..bd7a7a1 100644 --- a/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/pyproject.toml-tpl +++ b/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/pyproject.toml-tpl @@ -25,7 +25,7 @@ dependencies = [ dev = [ "pytest>=9.1.1", "httpx>=0.28.1", - "black>=26.5.1", + "black>=26.10.1", "isort>=9.0.1", "mypy>=2.3.1", "PyYAML>=6.0.3", @@ -35,7 +35,7 @@ dev = [ dev = [ "pytest>=9.1.1", "httpx>=0.28.1", - "black>=26.5.1", + "black>=26.10.1", "isort>=9.0.1", "mypy>=2.3.1", "PyYAML>=6.0.3", diff --git a/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/requirements.txt-tpl b/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/requirements.txt-tpl index 651490e..6039faa 100644 --- a/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/requirements.txt-tpl +++ b/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/requirements.txt-tpl @@ -3,8 +3,8 @@ annotated-doc==0.0.5 annotated-types==0.8.0 anyio==4.15.0 ast-serialize==0.9.0 -black==26.5.1 -certifi==2026.7.22 +black==26.10.1 +certifi==2026.10.23 click==8.5.0 fastapi==0.141.1 h11==0.16.0 diff --git a/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/requirements.txt-tpl b/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/requirements.txt-tpl index 09448a7..14643b9 100644 --- a/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/requirements.txt-tpl +++ b/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/requirements.txt-tpl @@ -1,7 +1,7 @@ annotated-doc==0.0.5 annotated-types==0.8.0 anyio==4.15.0 -certifi==2026.7.22 +certifi==2026.10.23 click==8.5.0 fastapi==0.141.1 h11==0.16.0 diff --git a/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/pyproject.toml-tpl b/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/pyproject.toml-tpl index 9c7be70..a7730a8 100644 --- a/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/pyproject.toml-tpl +++ b/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/pyproject.toml-tpl @@ -29,7 +29,7 @@ dev = [ "pytest>=9.1.1", "pytest-asyncio>=1.4.0", "httpx>=0.28.1", - "black>=26.5.1", + "black>=26.10.1", "isort>=9.0.1", "mypy>=2.3.1", ] @@ -39,7 +39,7 @@ dev = [ "pytest>=9.1.1", "pytest-asyncio>=1.4.0", "httpx>=0.28.1", - "black>=26.5.1", + "black>=26.10.1", "isort>=9.0.1", "mypy>=2.3.1", ] diff --git a/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/requirements.txt-tpl b/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/requirements.txt-tpl index 213039b..dcc8948 100644 --- a/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/requirements.txt-tpl +++ b/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/requirements.txt-tpl @@ -16,6 +16,6 @@ greenlet==3.5.5 pytest==9.1.1 pytest-asyncio==1.4.0 httpx==0.28.1 -black==26.5.1 +black==26.10.1 isort==9.0.1 mypy==2.3.1 diff --git a/uv.lock b/uv.lock index 85d461d..de6e617 100644 --- a/uv.lock +++ b/uv.lock @@ -68,7 +68,7 @@ wheels = [ [[package]] name = "black" -version = "26.3.1" +version = "26.10.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, @@ -78,33 +78,33 @@ dependencies = [ { name = "platformdirs" }, { name = "pytokens" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e1/c5/61175d618685d42b005847464b8fb4743a67b1b8fdb75e50e5a96c31a27a/black-26.3.1.tar.gz", hash = "sha256:2c50f5063a9641c7eed7795014ba37b0f5fa227f3d408b968936e24bc0566b07", size = 666155, upload-time = "2026-03-12T03:36:03.593Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/65/a9611a6ec0a8c88d86e59385da02d68d9533f7e86a05913d20c67be54029/black-26.10.1.tar.gz", hash = "sha256:5f9f83beae62437e060dafd53d7f1fc327e3d3494f74d72ee5c2b73eb90fc4e7", size = 741979, upload-time = "2026-10-10T04:13:40.776Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/dc/f8/da5eae4fc75e78e6dceb60624e1b9662ab00d6b452996046dfa9b8a6025b/black-26.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b5e6f89631eb88a7302d416594a32faeee9fb8fb848290da9d0a5f2903519fc1", size = 1895920, upload-time = "2026-03-12T03:40:13.921Z" }, - { url = "https://files.pythonhosted.org/packages/2c/9f/04e6f26534da2e1629b2b48255c264cabf5eedc5141d04516d9d68a24111/black-26.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:41cd2012d35b47d589cb8a16faf8a32ef7a336f56356babd9fcf70939ad1897f", size = 1718499, upload-time = "2026-03-12T03:40:15.239Z" }, - { url = "https://files.pythonhosted.org/packages/04/91/a5935b2a63e31b331060c4a9fdb5a6c725840858c599032a6f3aac94055f/black-26.3.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f76ff19ec5297dd8e66eb64deda23631e642c9393ab592826fd4bdc97a4bce7", size = 1794994, upload-time = "2026-03-12T03:40:17.124Z" }, - { url = "https://files.pythonhosted.org/packages/e7/0a/86e462cdd311a3c2a8ece708d22aba17d0b2a0d5348ca34b40cdcbea512e/black-26.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:ddb113db38838eb9f043623ba274cfaf7d51d5b0c22ecb30afe58b1bb8322983", size = 1420867, upload-time = "2026-03-12T03:40:18.83Z" }, - { url = "https://files.pythonhosted.org/packages/5b/e5/22515a19cb7eaee3440325a6b0d95d2c0e88dd180cb011b12ae488e031d1/black-26.3.1-cp312-cp312-win_arm64.whl", hash = "sha256:dfdd51fc3e64ea4f35873d1b3fb25326773d55d2329ff8449139ebaad7357efb", size = 1230124, upload-time = "2026-03-12T03:40:20.425Z" }, - { url = "https://files.pythonhosted.org/packages/f5/77/5728052a3c0450c53d9bb3945c4c46b91baa62b2cafab6801411b6271e45/black-26.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:855822d90f884905362f602880ed8b5df1b7e3ee7d0db2502d4388a954cc8c54", size = 1895034, upload-time = "2026-03-12T03:40:21.813Z" }, - { url = "https://files.pythonhosted.org/packages/52/73/7cae55fdfdfbe9d19e9a8d25d145018965fe2079fa908101c3733b0c55a0/black-26.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:8a33d657f3276328ce00e4d37fe70361e1ec7614da5d7b6e78de5426cb56332f", size = 1718503, upload-time = "2026-03-12T03:40:23.666Z" }, - { url = "https://files.pythonhosted.org/packages/e1/87/af89ad449e8254fdbc74654e6467e3c9381b61472cc532ee350d28cfdafb/black-26.3.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f1cd08e99d2f9317292a311dfe578fd2a24b15dbce97792f9c4d752275c1fa56", size = 1793557, upload-time = "2026-03-12T03:40:25.497Z" }, - { url = "https://files.pythonhosted.org/packages/43/10/d6c06a791d8124b843bf325ab4ac7d2f5b98731dff84d6064eafd687ded1/black-26.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:c7e72339f841b5a237ff14f7d3880ddd0fc7f98a1199e8c4327f9a4f478c1839", size = 1422766, upload-time = "2026-03-12T03:40:27.14Z" }, - { url = "https://files.pythonhosted.org/packages/59/4f/40a582c015f2d841ac24fed6390bd68f0fc896069ff3a886317959c9daf8/black-26.3.1-cp313-cp313-win_arm64.whl", hash = "sha256:afc622538b430aa4c8c853f7f63bc582b3b8030fd8c80b70fb5fa5b834e575c2", size = 1232140, upload-time = "2026-03-12T03:40:28.882Z" }, - { url = "https://files.pythonhosted.org/packages/d5/da/e36e27c9cebc1311b7579210df6f1c86e50f2d7143ae4fcf8a5017dc8809/black-26.3.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:2d6bfaf7fd0993b420bed691f20f9492d53ce9a2bcccea4b797d34e947318a78", size = 1889234, upload-time = "2026-03-12T03:40:30.964Z" }, - { url = "https://files.pythonhosted.org/packages/0e/7b/9871acf393f64a5fa33668c19350ca87177b181f44bb3d0c33b2d534f22c/black-26.3.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:f89f2ab047c76a9c03f78d0d66ca519e389519902fa27e7a91117ef7611c0568", size = 1720522, upload-time = "2026-03-12T03:40:32.346Z" }, - { url = "https://files.pythonhosted.org/packages/03/87/e766c7f2e90c07fb7586cc787c9ae6462b1eedab390191f2b7fc7f6170a9/black-26.3.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b07fc0dab849d24a80a29cfab8d8a19187d1c4685d8a5e6385a5ce323c1f015f", size = 1787824, upload-time = "2026-03-12T03:40:33.636Z" }, - { url = "https://files.pythonhosted.org/packages/ac/94/2424338fb2d1875e9e83eed4c8e9c67f6905ec25afd826a911aea2b02535/black-26.3.1-cp314-cp314-win_amd64.whl", hash = "sha256:0126ae5b7c09957da2bdbd91a9ba1207453feada9e9fe51992848658c6c8e01c", size = 1445855, upload-time = "2026-03-12T03:40:35.442Z" }, - { url = "https://files.pythonhosted.org/packages/86/43/0c3338bd928afb8ee7471f1a4eec3bdbe2245ccb4a646092a222e8669840/black-26.3.1-cp314-cp314-win_arm64.whl", hash = "sha256:92c0ec1f2cc149551a2b7b47efc32c866406b6891b0ee4625e95967c8f4acfb1", size = 1258109, upload-time = "2026-03-12T03:40:36.832Z" }, - { url = "https://files.pythonhosted.org/packages/8e/0d/52d98722666d6fc6c3dd4c76df339501d6efd40e0ff95e6186a7b7f0befd/black-26.3.1-py3-none-any.whl", hash = "sha256:2bd5aa94fc267d38bb21a70d7410a89f1a1d318841855f698746f8e7f51acd1b", size = 207542, upload-time = "2026-03-12T03:36:01.668Z" }, + { url = "https://files.pythonhosted.org/packages/f7/ca/357ccdd12e8f8429539f8f52edc153de58acba84f6670ac36c254a276691/black-26.10.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fe85fc4019bee59bc495c0f2a8ee76c5cd02c7015508d94a967ba2376f39a52c", size = 2167369, upload-time = "2026-10-10T04:18:45.948Z" }, + { url = "https://files.pythonhosted.org/packages/a5/a2/4709110a7ca326ba7b4f81a669fbebc20653c79a972b0f8de4ba5b5c5e68/black-26.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:182f6c32be38074b16d378498c498b32cb51928178ee611485344972c35ec9c6", size = 1990732, upload-time = "2026-10-10T04:18:48.252Z" }, + { url = "https://files.pythonhosted.org/packages/1e/96/9f8fa839c169d19c38ce6582d9449f2d7d70dabd313ac28f15a930260c1f/black-26.10.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b5347d760f0c02bb00dd249384cab71c3bf828b4f68d5b401eb116e0390f147d", size = 2065235, upload-time = "2026-10-10T04:18:50.064Z" }, + { url = "https://files.pythonhosted.org/packages/2b/ee/929eaf7de6f05a3141d6df72acf9248118f49a5e48f9375be3180e9babf7/black-26.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:4d9a90516db1d99c25dbb20cc0998e0e01531dd903466c7744e56d66f864220a", size = 1621579, upload-time = "2026-10-10T04:18:51.59Z" }, + { url = "https://files.pythonhosted.org/packages/90/3a/8b6a44abf9648b087311003b91298226c1763172cd8d223ece5b7cf8f795/black-26.10.1-cp312-cp312-win_arm64.whl", hash = "sha256:2ffbc023a12d0c729408823b8f10514490bd0baa301d0d4e21a7240249f9507f", size = 1469662, upload-time = "2026-10-10T04:18:53.245Z" }, + { url = "https://files.pythonhosted.org/packages/99/6b/bc0d39990bd7a71457d669639fa06acf6191bec28bafe8b8103f597cce76/black-26.10.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b6272cfd7e1e8e271f5b0e0207259fe2834687e5cb9b5f620b34a44db9754993", size = 2153812, upload-time = "2026-10-10T04:18:55.041Z" }, + { url = "https://files.pythonhosted.org/packages/85/0e/cc83b88a6b1a51fc051aa4e24663918f0bf4fa9fca98552ee93a125a6780/black-26.10.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:978113a40223a6aaefc17364176a809a320e6b288683841427fff04c6d7b4130", size = 1980352, upload-time = "2026-10-10T04:18:56.849Z" }, + { url = "https://files.pythonhosted.org/packages/7b/0f/4dd24ea0ebadbe05e293c3ea7fbebd4389f50508f714640c9b309a0849d2/black-26.10.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:03c0ddd93bb392e71209903a691767eb366fe1a76deb9509ccbaae9e1f14bb52", size = 2055268, upload-time = "2026-10-10T04:18:58.974Z" }, + { url = "https://files.pythonhosted.org/packages/a2/06/221f8e81891ecf5e4df9c258a11037997f1f218533ffe4fa1dc4db37f19c/black-26.10.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6dba8138cdc99061ef07b958ac082d2aa057b6961d1936f9717c350f02bab5f", size = 1625938, upload-time = "2026-10-10T04:19:00.65Z" }, + { url = "https://files.pythonhosted.org/packages/2b/3b/763d2dd073fc1e2cbf0fe5e584fe96913bf0d14cd725d1116f4b38453adf/black-26.10.1-cp313-cp313-win_arm64.whl", hash = "sha256:d42dd2fac7c342ae67e64ee99c9532e20b2a84e92c79ed3317fa2ef54c801d93", size = 1470752, upload-time = "2026-10-10T04:19:03.009Z" }, + { url = "https://files.pythonhosted.org/packages/76/7b/e8d275b23f3023881c0b0d8ce3bbda0d100c79bdef87fb6518bf9e0c5040/black-26.10.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:8375962579d537364cc0efa19b1474481915d3a793f9fc0774901814c5e5b5f4", size = 2147731, upload-time = "2026-10-10T04:19:04.643Z" }, + { url = "https://files.pythonhosted.org/packages/ee/62/e44f86ee5fc7b893ee0ee935a79c785932da7758d2c339749d90a20ef213/black-26.10.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:d8b3a9074a680b3c5749633714e9ae3992a1e5a23343a97ad61cd9b119b444d2", size = 1981714, upload-time = "2026-10-10T04:19:06.287Z" }, + { url = "https://files.pythonhosted.org/packages/89/2f/e12ca76edfcd037fe9e7e7635d9468d1d51255cf25a01b2f8f97a38f147d/black-26.10.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:289282aa2e09d3162312a3be1788ff21b08e9ea9cc4a81e656024728b32428fb", size = 2047807, upload-time = "2026-10-10T04:19:08.193Z" }, + { url = "https://files.pythonhosted.org/packages/c3/af/676d3c5cbb2ab0f17c8459b3ae8ea15ebdcc5a2f1c1c586228ec85b8897f/black-26.10.1-cp314-cp314-win_amd64.whl", hash = "sha256:5cd88fd7b444ca51f3fc883b6f6657ea53a258b0b2eef6d9f2dfcfa17ce0e27b", size = 1652537, upload-time = "2026-10-10T04:19:09.817Z" }, + { url = "https://files.pythonhosted.org/packages/ad/7b/860022d369fdd5fe14280b1e7109f58753c371ff91ce2311d68a056e488a/black-26.10.1-cp314-cp314-win_arm64.whl", hash = "sha256:2520037aa62f8a1454d0811b8f5c88b444445b03a4bfba480d8d220893b64c34", size = 1504226, upload-time = "2026-10-10T04:19:11.367Z" }, + { url = "https://files.pythonhosted.org/packages/b1/28/9dd29175c1db777e6189e2a0bb5f37101adf19c3e509b236c8920f778d0b/black-26.10.1-py3-none-any.whl", hash = "sha256:28842f9a8207cc1df6eb983a35a14c5a0dfcd603d214fe82d84bef552afd2e3a", size = 239267, upload-time = "2026-10-10T04:13:38.808Z" }, ] [[package]] name = "certifi" -version = "2025.10.5" +version = "2026.10.23" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/4c/5b/b6ce21586237c77ce67d01dc5507039d444b630dd76611bbca2d8e5dcd91/certifi-2025.10.5.tar.gz", hash = "sha256:47c09d31ccf2acf0be3f701ea53595ee7e0b8fa08801c6624be771df09ae7b43", size = 164519, upload-time = "2025-10-05T04:12:15.808Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fd/11/b524cbd9bbdaca58608e4cf4053fd463417549e1959fa8d3aa18319f9555/certifi-2026.10.23.tar.gz", hash = "sha256:a9895e6e2758b371e0545e321a3a8fd1fcfd9829ada8824a936dfb16aaaf36cd", size = 136225, upload-time = "2026-10-23T11:36:16.478Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e4/37/af0d2ef3967ac0d6113837b44a4f0bfe1328c2b9763bd5b1744520e5cfed/certifi-2025.10.5-py3-none-any.whl", hash = "sha256:0f212c2744a9bb6de0c56639a6f68afe01ecd92d91f14ae897c4fe7bbeeef0de", size = 163286, upload-time = "2025-10-05T04:12:14.03Z" }, + { url = "https://files.pythonhosted.org/packages/32/d1/a3652fe2c19134d0d15922177821d863cbd7e842d53a21bbe7e8e3a1b5ac/certifi-2026.10.23-py3-none-any.whl", hash = "sha256:e9b54de76e530bb6cf0ccd036787103acb58fd42ba930ea8bf948ddbaa2f61d1", size = 135082, upload-time = "2026-10-23T11:36:14.763Z" }, ] [[package]] @@ -279,11 +279,11 @@ wheels = [ [[package]] name = "distlib" -version = "0.4.0" +version = "0.4.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/96/8e/709914eb2b5749865801041647dc7f4e6d00b549cfe88b65ca192995f07c/distlib-0.4.0.tar.gz", hash = "sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d", size = 614605, upload-time = "2025-07-17T16:52:00.465Z" } +sdist = { url = "https://files.pythonhosted.org/packages/68/bc/d36966de7304047a1001a7559fbf266c464bb5d8cc85464536ef8c9bcc32/distlib-0.4.4.tar.gz", hash = "sha256:ca4175b4ac7f71223cc30ed7248c45d2b38c2439d8ee6e498ab67ed63cf3508d", size = 621304, upload-time = "2026-10-16T13:56:34.203Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl", hash = "sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16", size = 469047, upload-time = "2025-07-17T16:51:58.613Z" }, + { url = "https://files.pythonhosted.org/packages/c1/2b/238f02a4927fa2e27aa995371d240a468b52e42eae44a678434aff736b38/distlib-0.4.4-py2.py3-none-any.whl", hash = "sha256:cf09d55b1e85a89576b036aeb71550bfd68320f3f21761ca329eadadad918638", size = 472099, upload-time = "2026-10-16T13:56:32.053Z" }, ] [[package]] @@ -316,6 +316,7 @@ dependencies = [ [package.optional-dependencies] dev = [ { name = "black" }, + { name = "filelock" }, { name = "isort" }, { name = "mypy" }, { name = "pre-commit" }, @@ -328,6 +329,7 @@ dev = [ [package.dev-dependencies] docs = [ + { name = "certifi" }, { name = "idna" }, { name = "mdx-include" }, { name = "mkdocs" }, @@ -348,8 +350,9 @@ translation = [ [package.metadata] requires-dist = [ - { name = "black", marker = "extra == 'dev'", specifier = ">=26.3.1" }, + { name = "black", marker = "extra == 'dev'", specifier = ">=26.10.1" }, { name = "click", specifier = ">=8.1.7" }, + { name = "filelock", marker = "extra == 'dev'", specifier = ">=4.2.1" }, { name = "isort", marker = "extra == 'dev'", specifier = ">=5.13.2" }, { name = "jinja2", specifier = ">=3.1" }, { name = "mypy", marker = "extra == 'dev'", specifier = ">=1.12.0" }, @@ -359,12 +362,13 @@ requires-dist = [ { name = "pytest-cov", marker = "extra == 'dev'", specifier = ">=6.2.1" }, { name = "rich", specifier = ">=13.9.2" }, { name = "types-pyyaml", marker = "extra == 'dev'", specifier = ">=6.0.12.20260408" }, - { name = "virtualenv", marker = "extra == 'dev'", specifier = ">=21.7.13" }, + { name = "virtualenv", marker = "extra == 'dev'", specifier = ">=21.14.9" }, ] provides-extras = ["dev"] [package.metadata.requires-dev] docs = [ + { name = "certifi", specifier = ">=2026.10.19" }, { name = "idna", specifier = ">=3.15" }, { name = "mdx-include", specifier = ">=1.4.2" }, { name = "mkdocs", specifier = ">=1.6.1" }, @@ -385,11 +389,11 @@ translation = [ [[package]] name = "filelock" -version = "3.32.6" +version = "4.2.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/38/46/126b1831dca12060d4a8296bf9c4fe5c93c4f22197fa239cb0cc82042bba/filelock-3.32.6.tar.gz", hash = "sha256:a3f55a18af3652a94d8f47d6055df434f254ca1d02ef2524850c6d249ca2512c", size = 225172, upload-time = "2026-09-08T22:57:11.528Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/28/3893324bcadf8f89b1616637468d766af3f625008c0735bf704fdfa86617/filelock-4.2.4.tar.gz", hash = "sha256:c6d8663535e1650ee430507b4ffbac7b464dd64b7647ea0112a9f406499d163d", size = 652444, upload-time = "2026-10-19T01:57:51.001Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/06/4f138f618dbea66803291274f228f01daf29f306fe8b96bc30dab765df75/filelock-3.32.6-py3-none-any.whl", hash = "sha256:3f16ecd0117feae0dfc147e8c62eb5daeccd8bd800378c3ddf416de9b4feb6b1", size = 100189, upload-time = "2026-09-08T22:57:10.182Z" }, + { url = "https://files.pythonhosted.org/packages/e0/1b/5e74289a1878e666bb4b65fe5805a04cafcac2aa5f519ef1ead67ef91c56/filelock-4.2.4-py3-none-any.whl", hash = "sha256:301241438c57936ef93f4243a94f2559022268bfcf9b375a9a72eb0f8db8358e", size = 162475, upload-time = "2026-10-19T01:57:49.419Z" }, ] [[package]] @@ -825,11 +829,11 @@ wheels = [ [[package]] name = "packaging" -version = "25.0" +version = "26.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/fa/3944b40b07da9ce895c0e6303a5ab7d53da063554f534556b134a54d6093/packaging-26.3.tar.gz", hash = "sha256:94edc256424af38762eb31306eed28beb9f0efc50a8837492c9d6fd6004aed79", size = 313412, upload-time = "2026-08-04T18:15:28.737Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, + { url = "https://files.pythonhosted.org/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl", hash = "sha256:d7193f7c8e4e93f444fde0262bf90af30e16fa0ad0ad44cb553c87339b23cd1c", size = 129956, upload-time = "2026-08-04T18:15:27.159Z" }, ] [[package]] @@ -1036,14 +1040,14 @@ wheels = [ [[package]] name = "python-discovery" -version = "1.6.0" +version = "1.6.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "filelock" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/91/96/0f93e27c9f60a650838f2118159aa115fd5732c0716247917b7ba7ede665/python_discovery-1.6.0.tar.gz", hash = "sha256:6393b4eae1be8b2182670635e7baff89ac21cb9f8e86fd1ff40c7b1144febb4c", size = 82849, upload-time = "2026-08-28T17:30:02.366Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/ee/cf608372c88ce2c136ee13c69ab6f667dbc0d0c1176af188b4ddc8853e66/python_discovery-1.6.4.tar.gz", hash = "sha256:bc70d31f0ec5de11eda13d4d64c16e24b3506a65984684f2b6c98cb83b2ea9df", size = 89883, upload-time = "2026-10-19T01:45:14.855Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/43/5e/21abf578182fb15006a57faf3711a1e659e29d600d19b6e557eae908c81d/python_discovery-1.6.0-py3-none-any.whl", hash = "sha256:d4e244cf17b8b29819ed78003d55fbacf86eda23425b075454fff9271b79377a", size = 38451, upload-time = "2026-08-28T17:30:01.236Z" }, + { url = "https://files.pythonhosted.org/packages/60/91/1aa70d3dfcab0dbcf88a2cbc3bce7f7c69562287a90216e617eaa4937e25/python_discovery-1.6.4-py3-none-any.whl", hash = "sha256:530179cc51a1816d512b15635b3dc931295ae12efb183783ad31190a5d425d2b", size = 39385, upload-time = "2026-10-19T01:45:13.668Z" }, ] [[package]] @@ -1241,17 +1245,18 @@ wheels = [ [[package]] name = "virtualenv" -version = "21.7.16" +version = "21.14.13" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "distlib" }, { name = "filelock" }, + { name = "packaging" }, { name = "platformdirs" }, { name = "python-discovery" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/45/2b/f7ec483cb56fc84cab8676971b171156111cd125d069ca02fdaf0239f3e5/virtualenv-21.7.16.tar.gz", hash = "sha256:d3fcf6954a07121c2b61efcb96419e2f40b3718d558998f13a7314e32cc42723", size = 5363081, upload-time = "2026-09-19T06:59:08.339Z" } +sdist = { url = "https://files.pythonhosted.org/packages/70/aa/bff50daee0488e16d611258a9b6c5a1d0c9e128f8ca424e9f4e1c0444ef2/virtualenv-21.14.13.tar.gz", hash = "sha256:de5307ba4b9a0001d9c8ea02832d38f63ca432880f416c1bface61c4323fd905", size = 5570301, upload-time = "2026-10-22T20:10:16.952Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c7/46/a02c0bb29e6102616aa91d68a5e3f055393d92353d94b52ad6c51d540c20/virtualenv-21.7.16-py3-none-any.whl", hash = "sha256:752fd5d5352502fbd794422983eed65a249fc6f4685c5e2122fd6052e6477a11", size = 5330278, upload-time = "2026-09-19T06:59:06.096Z" }, + { url = "https://files.pythonhosted.org/packages/bb/a9/c10d8a44a29fb94a18b43fdf11f38caca53ae7c9406f11a72b1cb8f624f1/virtualenv-21.14.13-py3-none-any.whl", hash = "sha256:5fbb04138a4861580b78ba9110d529a26bc48fcc93c8ec36bc0202eeed96a788", size = 5557094, upload-time = "2026-10-22T20:10:15.096Z" }, ] [[package]]