summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/b2sdk/Manifest2
-rw-r--r--dev-python/b2sdk/b2sdk-2.13.2.ebuild (renamed from dev-python/b2sdk/b2sdk-2.13.0.ebuild)1
-rw-r--r--dev-python/bracex/Manifest2
-rw-r--r--dev-python/bracex/bracex-3.2.ebuild29
-rw-r--r--dev-python/fastapi/Manifest4
-rw-r--r--dev-python/fastapi/fastapi-0.146.0.ebuild126
-rw-r--r--dev-python/fastapi/fastapi-0.150.0.ebuild128
-rw-r--r--dev-python/fastapi/fastapi-0.159.1.ebuild (renamed from dev-python/fastapi/fastapi-0.143.3.ebuild)6
-rw-r--r--dev-python/fastbencode/Manifest13
-rw-r--r--dev-python/fastbencode/fastbencode-0.3.12.ebuild92
-rw-r--r--dev-python/httpx2/Manifest1
-rw-r--r--dev-python/httpx2/httpx2-2.16.0.ebuild103
-rw-r--r--dev-python/hypothesis-gentoo/Manifest1
-rw-r--r--dev-python/hypothesis-gentoo/hypothesis-gentoo-3.ebuild24
-rw-r--r--dev-python/hypothesis-gentoo/hypothesis-gentoo-4.ebuild3
-rw-r--r--dev-python/inflect/Manifest1
-rw-r--r--dev-python/inflect/inflect-7.6.0.ebuild31
-rw-r--r--dev-python/pbs-installer/Manifest6
-rw-r--r--dev-python/pbs-installer/pbs-installer-2026.10.1.ebuild33
-rw-r--r--dev-python/pbs-installer/pbs-installer-2026.10.21.ebuild (renamed from dev-python/pbs-installer/pbs-installer-2026.9.29.ebuild)0
-rw-r--r--dev-python/pypdf/Manifest2
-rw-r--r--dev-python/pypdf/pypdf-6.21.2.ebuild66
-rw-r--r--dev-python/python-dateutil/Manifest2
-rw-r--r--dev-python/python-dateutil/python-dateutil-3.0.0.ebuild59
-rw-r--r--dev-python/shtab/Manifest6
-rw-r--r--dev-python/shtab/shtab-1.10.0.ebuild31
-rw-r--r--dev-python/shtab/shtab-1.13.0.ebuild (renamed from dev-python/shtab/shtab-1.11.0.ebuild)5
-rw-r--r--dev-python/soupsieve/Manifest1
-rw-r--r--dev-python/soupsieve/soupsieve-3.0.4.ebuild34
-rw-r--r--dev-python/sqlalchemy/Manifest1
-rw-r--r--dev-python/sqlalchemy/sqlalchemy-2.1.6.ebuild103
-rw-r--r--dev-python/tornado/Manifest6
-rw-r--r--dev-python/tornado/tornado-6.5.8.ebuild61
-rw-r--r--dev-python/tornado/tornado-6.6.ebuild (renamed from dev-python/tornado/tornado-6.5.9.ebuild)5
-rw-r--r--dev-python/types-python-dateutil/Manifest1
-rw-r--r--dev-python/types-python-dateutil/types-python-dateutil-2.9.0.20261021.ebuild23
-rw-r--r--dev-python/uv-build/Manifest1
-rw-r--r--dev-python/uv-build/uv-build-0.13.4.ebuild2
-rw-r--r--dev-python/uv-build/uv-build-0.13.5.ebuild100
-rw-r--r--dev-python/uv/Manifest2
-rw-r--r--dev-python/uv/uv-0.13.4-r1.ebuild2
-rw-r--r--dev-python/uv/uv-0.13.5.ebuild161
-rw-r--r--dev-python/vcsgraph/Manifest3
-rw-r--r--dev-python/vcsgraph/vcsgraph-0.3.3.ebuild45
-rw-r--r--dev-python/virtualenv/Manifest2
-rw-r--r--dev-python/virtualenv/virtualenv-21.14.12.ebuild131
-rw-r--r--dev-python/wcmatch/Manifest1
-rw-r--r--dev-python/wcmatch/wcmatch-11.2.ebuild50
-rw-r--r--dev-python/xlsxwriter/Manifest1
-rw-r--r--dev-python/xlsxwriter/xlsxwriter-3.3.0.ebuild29
-rw-r--r--dev-python/zipp/Manifest1
-rw-r--r--dev-python/zipp/zipp-4.1.2.ebuild54
52 files changed, 1169 insertions, 428 deletions
diff --git a/dev-python/b2sdk/Manifest b/dev-python/b2sdk/Manifest
index 9a99b7283c87..a55dfe86f292 100644
--- a/dev-python/b2sdk/Manifest
+++ b/dev-python/b2sdk/Manifest
@@ -1,2 +1,2 @@
-DIST b2sdk-2.13.0.gh.tar.gz 497308 BLAKE2B c34f4144bd54305668f041a61a77b08871857ad08746e4deeaa83ca499ba09d985c4fcfa86d761c589248258296bd24a21093e7b52cad45296d011001fe62e22 SHA512 7e615a1fa43ff1288d5f34ea7530dc0ed90195db331f21eeaa26f32083a27fdbc5d18c81f30a591d7d10c84637af24bcc67db2597b23a8697ba04001c2c23923
DIST b2sdk-2.13.1.gh.tar.gz 556425 BLAKE2B 660ee67f87060a8b3168afb60006449641ab182d113ee88b765269b84f44eaafaccb2ba3b5cae34e91885decfb8610b42abec8ee546c7204b7ade5a89310a2b0 SHA512 04efb0da37a96451f390713585072f1cec00e9139fb6c4481cc6e06977f823faa8f483fe210bbed76b4fcd0c21fe1714baef70b27305555ea2111724de8d550e
+DIST b2sdk-2.13.2.gh.tar.gz 556998 BLAKE2B 1283d73077635347fd849947c831079257902d4e210bcb61e1e1b698c097d559928c5e9286bd8936644b0c68c7755d2cea1a1b22c80d0fea66c970e5b2f0cd6d SHA512 814382606b387a6020c9cbd8675ed8f52d41e6f93f9cbfe3f633f458b1bda6e1f6e5bdfcb0d8eaa059bed48431ba4e29026368f41d3da3f38541c9086abb7e91
diff --git a/dev-python/b2sdk/b2sdk-2.13.0.ebuild b/dev-python/b2sdk/b2sdk-2.13.2.ebuild
index 1c369300e6f9..4a89df5755bf 100644
--- a/dev-python/b2sdk/b2sdk-2.13.0.ebuild
+++ b/dev-python/b2sdk/b2sdk-2.13.2.ebuild
@@ -24,6 +24,7 @@ KEYWORDS="~amd64"
# pydantic can be used but it has a fallback
RDEPEND="
>=dev-python/annotated-types-0.5.0[${PYTHON_USEDEP}]
+ >=dev-python/certifi-2026.10.19[${PYTHON_USEDEP}]
>=dev-python/logfury-1.0.1[${PYTHON_USEDEP}]
>=dev-python/requests-2.33.0[${PYTHON_USEDEP}]
>=dev-python/tenacity-9.1.2[${PYTHON_USEDEP}]
diff --git a/dev-python/bracex/Manifest b/dev-python/bracex/Manifest
index 42199b83d543..7800f5df69c7 100644
--- a/dev-python/bracex/Manifest
+++ b/dev-python/bracex/Manifest
@@ -2,3 +2,5 @@ DIST bracex-3.0.1.tar.gz 44019 BLAKE2B 12a8d7510c80e48b2461efbc85078aee51f0bf93b
DIST bracex-3.0.1.tar.gz.provenance 9626 BLAKE2B 24fee61e3b213b97bc72a053c8377ea82c397eb2e1361c639c040a68dc81e25a318e41c3699cfad9f9d8f7ba934f163c7bac5d2a78edbf5e54223b7924bd4daf SHA512 377c69a0f72fb83cfb74659b6c76c6a733f92b85174dd42952746e7e905a2b9d60e4ca8d76df126857d685de557daa6da192f50d1903124addf7bf48efa77861
DIST bracex-3.1.tar.gz 29040 BLAKE2B 63c4440f9a4b2e374cf576c912b064240010d664be6bf578ea6b58110c2e4a72142693651fc0bbf692d9cc4caef23e192bdca6acbed0fab3e7e6c4d6a5d2ac5c SHA512 ea08acb29cabe0a0903af382b73c9e63ec02c4af6784728cd332949a0c19db44d1beef487455075f66b08599132ae3524d616b1646f41c39e86f9c691739a8c3
DIST bracex-3.1.tar.gz.provenance 9559 BLAKE2B 784da80e4cc9a89a66dcbc3cfb6cc9482762c53598d60608c7d88f7332d17b87128b647f78d202a993eb98d9b7874fe23f5eb29b8293a4bd64bdb0a1401efbd8 SHA512 440ee763aa7b6ff243e48db7584faa2e7b73604b95354c19fa93bd72eec4b95f0b87da952b85b225ec0236f3ff281aa09921161a23a9101901d8f5092524745f
+DIST bracex-3.2.tar.gz 29771 BLAKE2B aff9fed33dcae630bad4050f6b431be59357b8ba1591ea31af95a98f9d04550f47909fe27cfa0d6bce1adf925c5b8786037197bce4e8dd1cd16e66908b5b7cca SHA512 bde1249d3d599a6b5ae3ca1c0d5b14314d758394ea96981a043b4db2bfb4c82b1bdfb6e4800c2a41b58471497eb120b4a69bfbc4a436cb88773872f81fd0e7ba
+DIST bracex-3.2.tar.gz.provenance 9515 BLAKE2B d2478c25e923a95820fc04a775ed7fa9e70dbb295f22b30c89b4d128f2a0003a0e0686522ca7e16d9bcb2bb2235f448a81877f4570172327da086cbe07d53a90 SHA512 179af3706a336581c9b96bf5254f09184f491ca55cabf7cd69d3dad6cf36b2228d174bc9a76737894da566845e985e846fea94e0d3145bbd47b444a11bf52f9a
diff --git a/dev-python/bracex/bracex-3.2.ebuild b/dev-python/bracex/bracex-3.2.ebuild
new file mode 100644
index 000000000000..06fae3104a7d
--- /dev/null
+++ b/dev-python/bracex/bracex-3.2.ebuild
@@ -0,0 +1,29 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYPI_VERIFY_REPO=https://github.com/facelessuser/bracex
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Bash style brace expansion for Python"
+HOMEPAGE="
+ https://github.com/facelessuser/bracex/
+ https://pypi.org/project/bracex/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+BDEPEND="
+ test? (
+ dev-vcs/git
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
diff --git a/dev-python/fastapi/Manifest b/dev-python/fastapi/Manifest
index b77ca9390610..507a763c986d 100644
--- a/dev-python/fastapi/Manifest
+++ b/dev-python/fastapi/Manifest
@@ -1,4 +1,2 @@
-DIST fastapi-0.143.3.tar.gz 469834 BLAKE2B 6384f8b551b38c1fc83779ef2a4a318e0cb4b01067e852e876b809d8dc8c2bf59dcbb109780337df3dd83b70ff61b30676fceb95745478439f580de2ad544c16 SHA512 f70e98e10e6d5d5b1db0fd6795179dff1bf7f737a0fee452732a49a22dca092efded647d27cf8fdb61b5eeba29311230fcca9d974ac258dc131d05080a134e7e
-DIST fastapi-0.146.0.tar.gz 471622 BLAKE2B dc332799da2b2c3da0c0374bd4dba73d5189357664dbb4bdc34a0facb229fb13507835e8a04d829ef80eae1c1ea8e8657f73ba2d15c222d4a1119d5e2abd4e1e SHA512 bf7c8a7e137ac5541bc36e7cd0c0042ca02da6d8b7bd6bd5b7fea11578d69854bbfde980981a81735b5dc889611a3a21364be4c5388add324d1552550a2736cc
-DIST fastapi-0.150.0.tar.gz 483799 BLAKE2B e3c7522a21be4a890abc9344a090e3d005791d318ea2a6616bb4dd39bace457c630cfd8d9c96df6166f98fe74e221e2d5912a904cc39a068428ab26a09bc0ca2 SHA512 926b2e6261725efb705ebb3a2048b36a9c18efc55598208c3de1541ce5de130d0c418cdb63d5be98ea20d1e7ec4959903308655f4154f40567ee00755bd1ce32
DIST fastapi-0.156.4.tar.gz 500884 BLAKE2B b566123362fbd40001981e13d6df980956c8d2b58ffc494caa724eca4c6910cd5b7dd784a6191c90610e12ed8ac5ce69d9790b66b94338b02a1a96711b381ded SHA512 443976e73fd51878d6f6dc5d92fdecad0d7f31734eecbf5bbf64b32dd4281253ad2bb3f90cf3b5aa288ef4386b30aeddd509903c31204f7439657714ba35e5fc
+DIST fastapi-0.159.1.tar.gz 522004 BLAKE2B e96c6265c9b2cfe56136a492360f4aee38477bb6bd1df293d9f8627b7d49bb71766bc753875cb4339770d730682a650d15e636d4eca7314bf235642c4079fc73 SHA512 cc63af68adf7b1c94a66d1a35dbd8f06eaa99a67d06de1fa5a04c30916f8c261556e0d0489f163dce600f4ee9a97f30093a21fdf30a4f9f1b04da0a382161f5b
diff --git a/dev-python/fastapi/fastapi-0.146.0.ebuild b/dev-python/fastapi/fastapi-0.146.0.ebuild
deleted file mode 100644
index c7146bfca44a..000000000000
--- a/dev-python/fastapi/fastapi-0.146.0.ebuild
+++ /dev/null
@@ -1,126 +0,0 @@
-# Copyright 2025-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=pdm-backend
-PYTHON_COMPAT=( python3_{13..14} )
-#may be not stricly required
-PYTHON_REQ_USE="threads(+)"
-
-inherit distutils-r1 optfeature pypi
-
-DESCRIPTION="High performance framework, easy to learn, fast to code, ready for production"
-HOMEPAGE="
- https://fastapi.tiangolo.com/
- https://github.com/fastapi/fastapi/
- https://pypi.org/project/fastapi/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~amd64"
-
-RDEPEND="
- >=dev-python/annotated-doc-0.0.4[${PYTHON_USEDEP}]
- >=dev-python/opentelemetry-api-1.44.0[${PYTHON_USEDEP}]
- >=dev-python/pydantic-2.9.0[${PYTHON_USEDEP}]
- >=dev-python/starlette-0.46.0[${PYTHON_USEDEP}]
- >=dev-python/typing-extensions-4.8.0[${PYTHON_USEDEP}]
- >=dev-python/typing-inspection-0.4.2[${PYTHON_USEDEP}]
-"
-
-#FIXME: add missing deps
-BDEPEND="
- test? (
- dev-python/a2wsgi[${PYTHON_USEDEP}]
- dev-python/dirty-equals[${PYTHON_USEDEP}]
- dev-python/flask[${PYTHON_USEDEP}]
- dev-python/httpx[${PYTHON_USEDEP}]
- dev-python/httpx2[${PYTHON_USEDEP}]
- dev-python/pydantic-settings[${PYTHON_USEDEP}]
- dev-python/python-multipart[${PYTHON_USEDEP}]
- dev-python/sqlalchemy[${PYTHON_USEDEP}]
- dev-python/typer[${PYTHON_USEDEP}]
- )
-"
-
-EPYTEST_PLUGINS=( anyio inline-snapshot pytest-timeout )
-# workaround broken toml config
-: ${EPYTEST_TIMEOUT:=30}
-# the test suite is flaky as hell
-EPYTEST_RERUNS=5
-# 3k tests+, so use xdist to speed them up
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-# There are some JSON response tests that will exercise orjson or ujson if they are available.
-# These are properly skipped if the optional dependencies are not installed at the cost of a little spam.
-python_test() {
- local EPYTEST_IGNORE=(
- # python/strawberry-graphql (in guru, test dep only)
- tests/test_tutorial/test_graphql/test_tutorial001.py
- # dev-python/sqlmodel (in guru, test dep only)
- tests/test_tutorial/test_sql_databases/test_tutorial001.py
- tests/test_tutorial/test_sql_databases/test_tutorial002.py
- # dev-python/fastapi-cli (missing, test and optfeature)
- tests/test_fastapi_cli.py
- # dev-python/pwdlib (in guru, test dep only)
- tests/test_tutorial/test_security/test_tutorial004.py
- tests/test_tutorial/test_security/test_tutorial005.py
- # Wants dev-python/multipart _just_ to complain that it's not the right multipart lib.
- tests/test_multipart_installation.py
- # scripts/tests use CliRunner.isolated_filesystem() removed in recent typer
- scripts/tests
- )
- local EPYTEST_DESELECT=(
- # Requires investigation - missing ./image.png test file (?)
- tests/test_tutorial/test_additional_responses/test_tutorial004.py::test_path_operation_img
-
- # Broken by brotli being available, also fragile to random ordering
- tests/test_tutorial/test_header_param_models/test_tutorial001.py::test_header_param_model_invalid
- tests/test_tutorial/test_header_param_models/test_tutorial003.py::test_header_param_model_invalid
- tests/test_tutorial/test_header_param_models/test_tutorial003.py::test_header_param_model_no_underscore
- # opentelemetry-*
- tests/test_telemetry/test_background.py::test_background_task_integrations
- tests/test_telemetry/test_data.py::test_request_objects_are_not_exported
- tests/test_telemetry/test_environment_integrations.py
- tests/test_telemetry/test_integrations.py::test_current_contrib
- tests/test_telemetry/test_integrations.py::test_current_logfire
- tests/test_telemetry/test_integrations.py::test_current_sentry
- tests/test_telemetry/test_integrations.py::test_inactive_sentry_does_not_disable_native
- tests/test_telemetry/test_integrations.py::test_logfire_global_provider_without_fastapi_instrumentor
- tests/test_telemetry/test_native_integrations.py
- tests/test_telemetry/test_runtime.py::test_concurrent_provider_owner_wins
- tests/test_telemetry/test_runtime.py::test_environment_export_initializes_after_fork
- tests/test_telemetry/test_runtime.py::test_failed_registration_closes_new_exporter
- tests/test_telemetry/test_runtime.py::test_real_otlp_exception_export_without_traces_or_metrics
- tests/test_telemetry/test_runtime.py::test_real_otlp_export_and_repeated_lifespans
- tests/test_telemetry/test_runtime.py::test_registration_provider_prefers_public_metric_reader
- tests/test_telemetry/test_runtime.py::test_unsupported_provider_warns_without_preventing_startup
- )
- epytest
-}
-
-pkg_postinst() {
- # not part of any upstream extra
- optfeature "alternative JSON library" "dev-python/ujson" # orjson, too but it's deprecated
-
- # pyproject.toml:project.optional-dependencies.standard
- # Following optfeatures should be exposed, but missing deps
- # optfeature "fastAPI CLI" "dev-python/fastapi-cli" - missing - depends on this package!
- # optfeature "compressed file support" "dev-python/fastar" - missing
- # optfeature "pydantic extra types support" "dev-python/pydantic-extra-types" - in guru
- optfeature_header "standard extras"
- optfeature "ASGI server support" "dev-python/uvicorn"
- optfeature "email validation support" "dev-python/email-validator"
- optfeature "TestClient for testing FastAPI applications" "dev-python/httpx"
- optfeature "templating support" "dev-python/jinja2"
- optfeature "multipart form data support" "dev-python/python-multipart"
- optfeature "settings management support" "dev-python/pydantic-settings"
-
- # pyproject.toml:project.optional-dependencies.all - includes all the above plus:
- optfeature_header "all extras"
- optfeature "session middleware support" "dev-python/itsdangerous"
- optfeature "YAML support" "dev-python/pyyaml"
-}
diff --git a/dev-python/fastapi/fastapi-0.150.0.ebuild b/dev-python/fastapi/fastapi-0.150.0.ebuild
deleted file mode 100644
index 6c8cef00f625..000000000000
--- a/dev-python/fastapi/fastapi-0.150.0.ebuild
+++ /dev/null
@@ -1,128 +0,0 @@
-# Copyright 2025-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=pdm-backend
-PYTHON_COMPAT=( python3_{13..14} )
-#may be not stricly required
-PYTHON_REQ_USE="threads(+)"
-
-inherit distutils-r1 optfeature pypi
-
-DESCRIPTION="High performance framework, easy to learn, fast to code, ready for production"
-HOMEPAGE="
- https://fastapi.tiangolo.com/
- https://github.com/fastapi/fastapi/
- https://pypi.org/project/fastapi/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~amd64"
-
-RDEPEND="
- >=dev-python/annotated-doc-0.0.4[${PYTHON_USEDEP}]
- >=dev-python/opentelemetry-api-1.44.0[${PYTHON_USEDEP}]
- >=dev-python/pydantic-2.9.0[${PYTHON_USEDEP}]
- >=dev-python/starlette-0.46.0[${PYTHON_USEDEP}]
- >=dev-python/typing-extensions-4.8.0[${PYTHON_USEDEP}]
- >=dev-python/typing-inspection-0.4.2[${PYTHON_USEDEP}]
-"
-
-#FIXME: add missing deps
-BDEPEND="
- test? (
- dev-python/a2wsgi[${PYTHON_USEDEP}]
- dev-python/dirty-equals[${PYTHON_USEDEP}]
- dev-python/flask[${PYTHON_USEDEP}]
- dev-python/httpx[${PYTHON_USEDEP}]
- dev-python/httpx2[${PYTHON_USEDEP}]
- dev-python/pydantic-settings[${PYTHON_USEDEP}]
- dev-python/python-multipart[${PYTHON_USEDEP}]
- dev-python/sqlalchemy[${PYTHON_USEDEP}]
- dev-python/typer[${PYTHON_USEDEP}]
- )
-"
-
-EPYTEST_PLUGINS=( anyio inline-snapshot pytest-timeout )
-# workaround broken toml config
-: ${EPYTEST_TIMEOUT:=30}
-# the test suite is flaky as hell
-EPYTEST_RERUNS=5
-# 3k tests+, so use xdist to speed them up
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-# There are some JSON response tests that will exercise orjson or ujson if they are available.
-# These are properly skipped if the optional dependencies are not installed at the cost of a little spam.
-python_test() {
- local EPYTEST_IGNORE=(
- # python/strawberry-graphql (in guru, test dep only)
- tests/test_tutorial/test_graphql/test_tutorial001.py
- # dev-python/sqlmodel (in guru, test dep only)
- tests/test_tutorial/test_sql_databases/test_tutorial001.py
- tests/test_tutorial/test_sql_databases/test_tutorial002.py
- # dev-python/fastapi-cli (missing, test and optfeature)
- tests/test_fastapi_cli.py
- # dev-python/pwdlib (in guru, test dep only)
- tests/test_tutorial/test_security/test_tutorial004.py
- tests/test_tutorial/test_security/test_tutorial005.py
- # Wants dev-python/multipart _just_ to complain that it's not the right multipart lib.
- tests/test_multipart_installation.py
- # scripts/tests use CliRunner.isolated_filesystem() removed in recent typer
- scripts/tests
- )
- local EPYTEST_DESELECT=(
- # Requires investigation - missing ./image.png test file (?)
- tests/test_tutorial/test_additional_responses/test_tutorial004.py::test_path_operation_img
- # Broken by brotli being available, also fragile to random ordering
- tests/test_tutorial/test_header_param_models/test_tutorial001.py::test_header_param_model_invalid
- tests/test_tutorial/test_header_param_models/test_tutorial003.py::test_header_param_model_invalid
- tests/test_tutorial/test_header_param_models/test_tutorial003.py::test_header_param_model_no_underscore
- # opentelemetry-*
- tests/test_telemetry/test_background.py::test_background_task_integrations
- tests/test_telemetry/test_data.py::test_request_objects_are_not_exported
- tests/test_telemetry/test_environment_integrations.py
- tests/test_telemetry/test_integrations.py::test_current_contrib
- tests/test_telemetry/test_integrations.py::test_current_logfire
- tests/test_telemetry/test_integrations.py::test_current_sentry
- tests/test_telemetry/test_integrations.py::test_inactive_sentry_does_not_disable_native
- tests/test_telemetry/test_integrations.py::test_logfire_global_provider_without_fastapi_instrumentor
- tests/test_telemetry/test_native_integrations.py
- tests/test_telemetry/test_runtime.py::test_concurrent_provider_owner_wins
- tests/test_telemetry/test_runtime.py::test_environment_export_initializes_after_fork
- tests/test_telemetry/test_runtime.py::test_failed_registration_closes_new_exporter
- tests/test_telemetry/test_runtime.py::test_real_otlp_exception_export_without_traces_or_metrics
- tests/test_telemetry/test_runtime.py::test_real_otlp_export_and_repeated_lifespans
- tests/test_telemetry/test_runtime.py::test_registration_provider_prefers_public_metric_reader
- tests/test_telemetry/test_runtime.py::test_unsupported_provider_warns_without_preventing_startup
- # TODO
- 'tests/test_tutorial/test_testing_dependencies/test_tutorial001.py::test_override_in_items_run[tutorial001_py310]'
- 'tests/test_tutorial/test_testing_dependencies/test_tutorial001.py::test_override_in_items_run[tutorial001_en_py310]'
- )
- epytest
-}
-
-pkg_postinst() {
- # not part of any upstream extra
- optfeature "alternative JSON library" "dev-python/ujson" # orjson, too but it's deprecated
-
- # pyproject.toml:project.optional-dependencies.standard
- # Following optfeatures should be exposed, but missing deps
- # optfeature "fastAPI CLI" "dev-python/fastapi-cli" - missing - depends on this package!
- # optfeature "compressed file support" "dev-python/fastar" - missing
- # optfeature "pydantic extra types support" "dev-python/pydantic-extra-types" - in guru
- optfeature_header "standard extras"
- optfeature "ASGI server support" "dev-python/uvicorn"
- optfeature "email validation support" "dev-python/email-validator"
- optfeature "TestClient for testing FastAPI applications" "dev-python/httpx"
- optfeature "templating support" "dev-python/jinja2"
- optfeature "multipart form data support" "dev-python/python-multipart"
- optfeature "settings management support" "dev-python/pydantic-settings"
-
- # pyproject.toml:project.optional-dependencies.all - includes all the above plus:
- optfeature_header "all extras"
- optfeature "session middleware support" "dev-python/itsdangerous"
- optfeature "YAML support" "dev-python/pyyaml"
-}
diff --git a/dev-python/fastapi/fastapi-0.143.3.ebuild b/dev-python/fastapi/fastapi-0.159.1.ebuild
index c7146bfca44a..1e1bf586041a 100644
--- a/dev-python/fastapi/fastapi-0.143.3.ebuild
+++ b/dev-python/fastapi/fastapi-0.159.1.ebuild
@@ -76,7 +76,6 @@ python_test() {
local EPYTEST_DESELECT=(
# Requires investigation - missing ./image.png test file (?)
tests/test_tutorial/test_additional_responses/test_tutorial004.py::test_path_operation_img
-
# Broken by brotli being available, also fragile to random ordering
tests/test_tutorial/test_header_param_models/test_tutorial001.py::test_header_param_model_invalid
tests/test_tutorial/test_header_param_models/test_tutorial003.py::test_header_param_model_invalid
@@ -98,6 +97,11 @@ python_test() {
tests/test_telemetry/test_runtime.py::test_real_otlp_export_and_repeated_lifespans
tests/test_telemetry/test_runtime.py::test_registration_provider_prefers_public_metric_reader
tests/test_telemetry/test_runtime.py::test_unsupported_provider_warns_without_preventing_startup
+ # TODO
+ tests/test_dependency_contextmanager.py::test_{a,}sync_state
+ tests/test_dependency_contextmanager.py::test_{a,}sync_raise_other
+ # tutorial tests are flaky
+ tests/test_tutorial/
)
epytest
}
diff --git a/dev-python/fastbencode/Manifest b/dev-python/fastbencode/Manifest
index d43ee83ec364..37d4e60f4a6f 100644
--- a/dev-python/fastbencode/Manifest
+++ b/dev-python/fastbencode/Manifest
@@ -2,17 +2,30 @@ DIST fastbencode-0.3.10.tar.gz 17005 BLAKE2B bfd1f207260bb3dd435c01160b8d3868534
DIST fastbencode-0.3.10.tar.gz.provenance 9673 BLAKE2B f6ae595eed244d5f730d6aff79cf2c0e82ae5f387cc590deeed83273508eae157f84f03f0d77f03412e7878257e6f889e93b1c4b9c73f29053678920bd302a32 SHA512 1bcafc77ae527a3c8532cab32d4119e25f3b8f44538614023b0d6a5f69ed3f31927f8b0808a482e682f3f8078d5ea4ea6da235ff44ece416d67c45327a197c65
DIST fastbencode-0.3.11.tar.gz 20011 BLAKE2B 04d82eafc36dad08ec2af0b0749ed5120bd545ee240d030fb6e2f9bdc86dc0cce873871f4dd5072c65165510402e9151dfe4409b63d6e0024c14bfb93a5d3e23 SHA512 e21b7e5a9333f1e350f359145716656ebf824ef9a607007cb8268b8884b90a4f5b8507f4523457ff7ac89e6b34e071bc7c53aa57f4118d1f43f8418e3604af0a
DIST fastbencode-0.3.11.tar.gz.provenance 10049 BLAKE2B de896250abe4d4c2ff3cb93a16134041acbd3960ea6f940ff9ff0743518f0124074774681807fab4c4f390bb951b08c58ebdd8879b2af371aa9dd9c1a0c3ae79 SHA512 4f631ea12506c03f593d182c70a227a9feab80be6792e7a6320f5be9f86c6e6ef855a8e25dd8f47f1e1135643bde9c544bfd8fdbc6ef6a05652d94f86782fc67
+DIST fastbencode-0.3.12.tar.gz 20074 BLAKE2B 1bf676880d98138539b51de2a3c4d10187fdb1cdbf026869015f3463d097b28d900bfffd073d994922af2e226c6532ef3b99b21d023792e88132394b22e18170 SHA512 d07796dc4ba51cb5188586f19abac1feb86397de2a9ff289a8fbb77f635052870a721cb480606557df4acf12b3e24cd2db7fae85d0b7a0ea37a058f50e6def00
+DIST fastbencode-0.3.12.tar.gz.provenance 10033 BLAKE2B c49dee70bcf5a78a15d6d5998bfc17ca4baa36f58bdbe7c342a1bb2922ac69366599dfc71385f04aa8c77317f03ba5159f2c3059fd97159da6de3fa4c082f0c3 SHA512 61ce1cf099a2ef95a8ab35bbc2afb1b40fba208e1c7f5f4f2893af54f86ab314132fb2d8f51504036e0bad31d148247d83e216afc418dc8e45732498cf2c5743
DIST heck-0.5.0.crate 11517 BLAKE2B 5365ec43b2239a76b33a174f1a4292ece4147f9d382a68c6c60db78fdc8bad0afb1d51a65bcb25e96675372faa4ea37c318265030b0546ba51942f7c929e1835 SHA512 f044fc9c3d22466629fd8f772ec0555350fd611c0cfadca51d99a3d2f10e155f77c1091916c8a95a6b9b499f366c2e99a5fbf45b010f988bfb9b2501bf9f6a76
DIST libc-0.2.183.crate 816918 BLAKE2B d0c26ca25b0808575aa540a5f0f43acaaa5a972269c5f101122538a1733b37b6aac3696a0d7298fe16974b06efb0b92072252eef40b17b977af24cc857963daf SHA512 017986d4fa8c362f8900c1c82c7381066382a7272cfe114243b8d47637d042c87b5ebef7881cf46727e00e541a0a8270a32db694ce8d78372672cf08224a90b2
+DIST libc-0.2.191.crate 855401 BLAKE2B 04788709363e27f063bd30d2e568d27b8a217d2702ccc32c28ac0f82c5f786e534f053d9133aa086d2186c060724adf0bd2c6fdf705ac6cde563561ecaba4e94 SHA512 f90bff0e667425a6680514097c44ad99454dfe9d2bec02a72633e94f300a6e39cba0a7887a7124ee3c2235d41836faff706649fa86b9970df7a7f72a460ea964
DIST once_cell-1.21.4.crate 35010 BLAKE2B 9117ed1d478e626b7b7be2e3ff8b68a382b051112c7ca4425367bdae86977671f8b5c576131c82fb437740b6d98b72501f718f4172d39781decac2385e8fbd4d SHA512 af67669b0107f44268ba74c355200cb2ed1aab235a6989a8bc54323eb2c9a45677010f8672e7790edadd4c981e939436e0c3a099d33c06dce9c14fd5ede86155
DIST portable-atomic-1.13.1.crate 197001 BLAKE2B 6d0898c2a537a9bf204b7749cca5f5fddf280772b56eb7ce8fdd9cf7d71561137b26ef89f415c40277a1c89981333eef78e5bb4624515a294ba28fdaeb4c70ea SHA512 2a1b31ac9814af884640b3398ab824a9795c72d260527a0966b193113808cfbb3345d50cd1beaebb45863437c3d06c8706d34b26efecceefc649319a4bc274a3
+DIST portable-atomic-1.15.0.crate 202705 BLAKE2B bf956c2bf08953b0ae1384d5c1703edf12c4a9b9d1f035b49043f4fb5e0a1ad005263affaf02331a77f098471fe2da8eee7b16861c33df9ef0d76444c614e291 SHA512 257cd168d0362b7b1d5e6ed9032cde9b0ac6e69d90b7e27347c39702a5ea020159c271e37e8045cf10661170f9354638791cfc972587bff3cba01da137f5a2c0
DIST proc-macro2-1.0.106.crate 59765 BLAKE2B 87f95795621c4c992c370dc3a1240a2d5580e3362356525efe640f8f26ad0492b3c88755d575c080ff7db11376b0d82f31141bf6f86c895249b85e46c081220f SHA512 b726e2c92af434bfa88cd4f53c3fe6db647503567675fb439890dee3d15f5111137e3242b28d164114ce081c10acf3fd11950753ddb349190c87ee04e7d97744
+DIST proc-macro2-1.0.107.crate 59588 BLAKE2B 91df0c573e3e1f09c1aeedcad0381cf18186d72c3d50b077b1d232fbb67d1c87ed09f3c6dc515140041c2dab5ce7706042c8235b93099df7d1c962d4a3a99160 SHA512 c109d5509624a57156e0eae22a3aec89a1a163623e8b4e376a13d872a46e4bf6855ee3cd4428c07cdf5c22f2284b6ce755f9cc7e075480e4587ce4f2d40fa903
DIST pyo3-0.28.2.crate 1202843 BLAKE2B 18158e22631ab35348eab1f117f16b311932de832d910f37a71cf481ec04ced03c37baaf63f1c8afc7ecccef039fc8f9072cbe0dd5109a74e7fb9f6b3ddb18a4 SHA512 fd4a03eb1cdfa40c1ed67b588cd4da31c90972f95c669b20a1099fb9304cd9506337f674e0bc9efd1d22a453162aac79a36ab18ca97eaca3515d640e2e9b923f
+DIST pyo3-0.30.1.crate 1345706 BLAKE2B 42f28e632d23a90b6e1ec4eae54ee17c1c75312f3f53d896dcfc43e047f0fe72d94e33c793f47f108a5b3c98885bc78d978e347a68f771d710228c3e1d97ba9e SHA512 68799fc448f68b204d4825ce4e1a0b000febf18d968740fa9f94df9507b3a2697fb1c4b642d88ad1f1fb2b214fcd1b9a3a8089eccd8b0418c08b4ae69b7bfdec
DIST pyo3-build-config-0.28.2.crate 35958 BLAKE2B 87163e11ff52061e11943f54e0fea1101ec6f877b4e6ecda33e32a19d1a8af3a6a83ab23d17f744fb0176e35f819669e931f88c55d611c8f7ea52eacd1c683a3 SHA512 f9b4863baffdf474ba9121edc19323d91565dd1411acabda03a307c8aae4969657167a80e197d4c8656e711e424053aced6a1de7978cedd38815304835fc5dbb
+DIST pyo3-build-config-0.30.1.crate 42996 BLAKE2B e49f6b13e5a4379f3a0db2c305a96cd0b19955f22b3fd08fba4373a1ec886847abf619beddb7fc111e99bc174b47211d9de68230db8ea03e12e534bb5ceab7bf SHA512 9801d582931f1d6b835792ffa04439310544b068c9f94f1329487328d43010646dd81233575a4338c44e7fe86714a579186c04ee07604b94f8af5066730eb699
DIST pyo3-ffi-0.28.2.crate 80837 BLAKE2B ac17690399e5cf84602a974860d84856d9489c7d94ec618cdb3b4c5bcee81d3767a727f22dca0a06d492ee28ecf24c84f48cd391a6d81229b1464fbb17654ac5 SHA512 f6b4fdea320922b81395e593fe135fd4b4f483250fe94d84019c97a3a9f98b6e2122134e09613021f194782038ffea1d32d3c65b1458e15ce3021d39fd582738
+DIST pyo3-ffi-0.30.1.crate 93717 BLAKE2B 383cac05d9e768c9059cfd5f714e30848c87584bfcb0b8e421805f2da9f3b5a9a3f27d467cf9432b0f41b68003f9141dfdfeb29cdb1248cc68b01072dc01ec34 SHA512 32945d4b6f08723ae1129810ac71e12f5dc9c5de3710cadedb91bba17cbcf21acbf269598241117b45dc36141d28e6d1a58f1c07957b8664de62e991f30c82e9
DIST pyo3-macros-0.28.2.crate 8960 BLAKE2B 54fdb3f2d04c1f04d3cdb4d8422cd9fe1098df2f2740eaf61e2868e19f0a93c677486cef56576e39ba2010e426901c95846b7b81285858094ef1fdf48edc65b1 SHA512 7125a41bd5ceaa5c85a2ac5ed1bf07708cf95f58dd18a8ba9000a3139ebc06e90776b4254820410e940c80ed45f7c09165c8fe57d8f79069622849c6c0861bcb
+DIST pyo3-macros-0.30.1.crate 9055 BLAKE2B f49eedcd8922df4e0b9b0e119a6b5d06be3afe3f0d6d3fcd332716aae593fffc8fea94b02a4de7410bd678f7ab0ffb499c3e11bc45f72c2d8fa4e41c400dca9b SHA512 26f3b4d1aa86da4a305b01d780ce7de3359d3bfeadcbdbb39b9803d0a7634cf3611dfd5a285d21e97d51f61a6c590fdef8ddda45ec9abe870575519e6bbb4f33
DIST pyo3-macros-backend-0.28.2.crate 87939 BLAKE2B c70e46d44c935e58957cd53a76a1e6d2e97ee1bdc39c926b1a23ce391785f212c30e150286fc78724e945679ac1ff04a10ec958b6d3dfe30c4acee795f6c2e63 SHA512 24203c47d91be9acc949cfc70ec8b4aa32e089275cf9b0061a9909f5e60895c56446692be0056e13cc4df8efc0698e0655626f9524241b54cd172d8a25e42f98
+DIST pyo3-macros-backend-0.30.1.crate 97593 BLAKE2B 6ff2e6e445f40b15ab8347a13b4786359875d16621ada11c0b8a5fc0efca84e306f95c1f2d5e87431bbd6303ead0d80aa469e3c53e0cb4360d6ea9524e0c9eb7 SHA512 29f96ff877d55ea3141435a30b8482743590f2dfd3fd9d24291cba8c834148cc2e0790125c8c0c3af650bf1c9b5e521a1a2ff3874dfa58bb3673dc11876ddf89
DIST quote-1.0.45.crate 31564 BLAKE2B 1b2c2c3e6ebabfe10affa4c43ca0bfd1f52d8fd49e1df463e13e63a82de41272089c8e09e4c02e8a33cfee768ace26d4d42a50752de8fb5a776c59806139ad5d SHA512 df96ede01ebd0ed642b758bf1d0862d0e116fc2b3343e14edb657ce5438ccabe743dec4a0a40de4dee98c134d169af9aba459faadf9c7a832b26377e755d49b0
+DIST quote-1.0.47.crate 31622 BLAKE2B d912f17bdb5f2db29f5349e976e12da52db9d2197dd9900cb00e907d1e9b06ab177e9b020c1d53f6a6cd087e3a973aed5af63eac282da77792b2a6d6e1b35b07 SHA512 544f4324d425ae011905e0d1b52e367d4660bc34457b2f802af94e1def1e6c4e39ffba3beeb40d75753967d15b6dccce18fea273e7f3d46b63d5c89898d19441
DIST syn-2.0.117.crate 306011 BLAKE2B bbaec02c4322f522bdfc87caa4ce6fd1e09bbf8f4a102d9ed8728efacdd843a2750f616dce5b2d3a3e46bbb7d57439fbd10e328bc1d4a01e980986cd815798af SHA512 035c2e63542592b6a4058a2a82d4c2c1f5793f84fb1b04cbd393337a26fcf661a1f3bea439ce98a1fe943b1c4d36d2bda16df3bbc3fa6ca35e1548d530dc8416
+DIST syn-3.0.9.crate 313970 BLAKE2B 63ba393b429909b75de710e1da70bbf5b5d4ba76917786ae5ac165ad57806a02b54af3fb7eaa5213f1e59e086ddf6807f08d4e37de2fc4b0a7270a290850fa91 SHA512 94ff1cfd429e4ca9c3a72c7e7012c5ccac2178134d4fb82683601bf466094e6178dd5bbc558e973a7f03e890e4e08cf8622dba2a2898fdde608a33b244e42cc5
DIST target-lexicon-0.13.5.crate 26928 BLAKE2B f8c62cb91f68a635e6ce3fc254df9ce378b5e8f62c1147404c967484b9ed97fb33d7993b4671611db76566063e999d658d201f856f70196ec678d72cc758cf6d SHA512 956df27c01e1186c5356117ffd07810fc0b62fb919d5bfd215955ba85be00ef675212a3c0dc36679986be7b825442fec5c93c7643b7e1e19c04572e6463546fc
DIST unicode-ident-1.0.24.crate 49298 BLAKE2B 34ba2906a3ebc06f52a4ba77dff96a8f3fb977718d260886fa9e051c5830765641b65a63977110f3a79f31fa177b385f81b01d56c80f6a0324d36eae72e2ebf0 SHA512 7be712d8d0075ac9341790180e312f66264d3e0255c91b38df0951baa5e446dec24551bb2125a66a1cb9b6ca2f1ea37c0cc15fa3dd74f398ecf4d5302c7dc259
+DIST unicode-ident-1.0.27.crate 48807 BLAKE2B 2f756c8e8a8a4653e616e15c217d72a01af3e6538105c6cfbad6e89b1cf6bb5ba591855b5b7580989b44eef37279789a550331778ed924ee4906cd68dc8d2aa8 SHA512 c952d72be2eea9d70114072a1aabd17573ac672e23f3a549d2a2b6375d14215eb1f0a2dc00c89819eb40f26341a6e24c54cb7be1fe92494d9c01b5941ce25670
diff --git a/dev-python/fastbencode/fastbencode-0.3.12.ebuild b/dev-python/fastbencode/fastbencode-0.3.12.ebuild
new file mode 100644
index 000000000000..e134f9d7d233
--- /dev/null
+++ b/dev-python/fastbencode/fastbencode-0.3.12.ebuild
@@ -0,0 +1,92 @@
+# Copyright 2025-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+CARGO_OPTIONAL=1
+RUST_MIN_VER=1.83.0
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYPI_VERIFY_REPO=https://github.com/breezy-team/fastbencode
+PYTHON_COMPAT=( python3_{13..14} )
+
+CRATES="
+ heck@0.5.0
+ libc@0.2.191
+ once_cell@1.21.4
+ portable-atomic@1.15.0
+ proc-macro2@1.0.107
+ pyo3-build-config@0.30.1
+ pyo3-ffi@0.30.1
+ pyo3-macros-backend@0.30.1
+ pyo3-macros@0.30.1
+ pyo3@0.30.1
+ quote@1.0.47
+ syn@3.0.9
+ target-lexicon@0.13.5
+ unicode-ident@1.0.27
+"
+
+inherit cargo distutils-r1 pypi
+
+DESCRIPTION="Implementation of bencode with Rust implementation"
+HOMEPAGE="
+ https://github.com/breezy-team/fastbencode/
+ https://pypi.org/project/fastbencode/
+"
+SRC_URI+="
+ native-extensions? (
+ ${CARGO_CRATE_URIS}
+ )
+"
+
+LICENSE="Apache-2.0"
+LICENSE+=" native-extensions? ("
+# Dependent crate licenses
+LICENSE+="
+ Apache-2.0-with-LLVM-exceptions Unicode-3.0
+ || ( Apache-2.0 MIT )
+"
+LICENSE+=" )"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE="+native-extensions"
+
+BDEPEND="
+ native-extensions? (
+ ${RUST_DEPEND}
+ dev-python/setuptools-rust[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests unittest
+
+QA_FLAGS_IGNORED="usr/lib.*/py.*/site-packages/fastbencode/_bencode_rs.*.so"
+
+pkg_setup() {
+ use native-extensions && rust_pkg_setup
+}
+
+src_unpack() {
+ pypi_src_unpack
+ cargo_crate_unpack
+ cargo_gen_config
+}
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # treat build failures as fatal
+ sed -i -e '/optional/d' setup.py || die
+
+ if ! use native-extensions; then
+ # setup.py is only used for setuptools-rust
+ rm setup.py || die
+ fi
+}
+
+src_test() {
+ rm -r fastbencode || die
+ distutils-r1_src_test
+}
diff --git a/dev-python/httpx2/Manifest b/dev-python/httpx2/Manifest
index e7bdaf9964db..7ff96488307b 100644
--- a/dev-python/httpx2/Manifest
+++ b/dev-python/httpx2/Manifest
@@ -4,3 +4,4 @@ DIST httpx2-2.13.0.gh.tar.gz 2103962 BLAKE2B 6d940bdcc39f36ddcf50377457931ee9e2c
DIST httpx2-2.13.1.gh.tar.gz 2105524 BLAKE2B d9f3c016df2add101bc785582ccd14e5ef400e6b6f6cb8c470a4dce89bfecd73fff210a279cefe0fb316d478f2ba6a10e2579157f18647b769e5c1c520a77e0d SHA512 7be45b81164b24e800c2de533c4c7ef2fdc2cb6e9d24d95287c15ca1efb79eabdce33fcf50b85d288727bea3a9dc6c8365190c587c50ba1d327a36b31c614a8c
DIST httpx2-2.14.0.gh.tar.gz 2133484 BLAKE2B 1bf1b2dd3a368dde55f318ba48b14d85397a6181723de5326f818b5421531a0dabea246dc6f240565d4d1881c7e9634d0a3bbc3f27ad4384cee71f952a68f337 SHA512 9b85631b99be2e0ee89ba9ed30405edc71c811e31587c03adf97dc45069e25b3eebad4ef6b83cb4c10c3c6cde9eb0f46d1151c1674b048aaac19b33ec3f05083
DIST httpx2-2.15.1.gh.tar.gz 2095535 BLAKE2B 16c619d85792eb7533d157e8b298869f1ea2e50c63324bf6cf144ef0d06d496154a63a277ceef0dc9f6cba2c36adc43d9dee5b5bba1b4230387526a00ea96080 SHA512 f034a31a762b637d67e280d54c13f355ce5cb6d609dc18bbe3ac510fe8b35207acada045c7e3296e8de89c948348318af6f6bfec6ee6a2a2afbb3a09fd9d80c0
+DIST httpx2-2.16.0.gh.tar.gz 2097489 BLAKE2B c7dc51bcc515b303c8488161bba1ae994050d669a6af40f02ba36d65fe342d92a00ca29e527740e3283b82c2be4995e5bdb628ff710b80fca1b384f552ceb920 SHA512 1c95223e18d394ce75fc3dfae44374198fa9e0dace3d6e375a9d1f64fac80ad4af9146f8e591ed7eb60dc583478a3db1a04e3ba9f2385c2e74d65fa97ee0a51a
diff --git a/dev-python/httpx2/httpx2-2.16.0.ebuild b/dev-python/httpx2/httpx2-2.16.0.ebuild
new file mode 100644
index 000000000000..157aa4c1af39
--- /dev/null
+++ b/dev-python/httpx2/httpx2-2.16.0.ebuild
@@ -0,0 +1,103 @@
+# Copyright 2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1
+
+# This package combines httpx2 and httpcore2 (because of exact version pin).
+DESCRIPTION="The next generation HTTP client (Pydantic fork)"
+HOMEPAGE="
+ https://pypi.org/project/httpx2/
+ https://pypi.org/project/httpcore2/
+ https://github.com/pydantic/httpx2/
+"
+SRC_URI="
+ https://github.com/pydantic/httpx2/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="cli"
+
+RDEPEND="
+ >=dev-python/anyio-4.10[${PYTHON_USEDEP}]
+ >=dev-python/idna-3.18[${PYTHON_USEDEP}]
+ >=dev-python/h11-0.16[${PYTHON_USEDEP}]
+ >=dev-python/truststore-0.10[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ >=dev-python/typing-extensions-4.5.0[${PYTHON_USEDEP}]
+ ' 3.12)
+ cli? (
+ >=dev-python/click-8.4[${PYTHON_USEDEP}]
+ =dev-python/pygments-2*[${PYTHON_USEDEP}]
+ >=dev-python/rich-10[${PYTHON_USEDEP}]
+ )
+"
+BDEPEND="
+ dev-python/hatch-fancy-pypi-readme[${PYTHON_USEDEP}]
+ dev-python/uv-dynamic-versioning[${PYTHON_USEDEP}]
+ test? (
+ >=app-arch/brotli-1.2.0[python,${PYTHON_USEDEP}]
+ >=dev-python/brotlicffi-1.2.0.0[${PYTHON_USEDEP}]
+ dev-python/chardet[${PYTHON_USEDEP}]
+ dev-python/cryptography[${PYTHON_USEDEP}]
+ dev-python/h2[${PYTHON_USEDEP}]
+ dev-python/starlette[${PYTHON_USEDEP}]
+ dev-python/socksio[${PYTHON_USEDEP}]
+ dev-python/trio[${PYTHON_USEDEP}]
+ dev-python/trustme[${PYTHON_USEDEP}]
+ dev-python/typing-extensions[${PYTHON_USEDEP}]
+ dev-python/uvicorn[${PYTHON_USEDEP}]
+ dev-python/websockets[${PYTHON_USEDEP}]
+ >=dev-python/wsproto-1.2[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ >=dev-python/backports-zstd-1.0.0[${PYTHON_USEDEP}]
+ ' 3.12 3.13)
+ )
+"
+
+EPYTEST_PLUGINS=( anyio flaky pytest-{httpbin,trio} )
+EPYTEST_RERUNS=5
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_compile() {
+ local -x UV_DYNAMIC_VERSIONING_BYPASS=${PV}
+
+ cd src/httpcore2 || die
+ distutils-r1_python_compile
+ cd ../httpx2 || die
+ distutils-r1_python_compile
+ cd ../.. || die
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # Internet
+ tests/httpx2/client/test_proxies.py::test_async_proxy_close
+ tests/httpx2/client/test_proxies.py::test_sync_proxy_close
+ # random charset case mismatch
+ tests/httpx2/models/test_responses.py::test_response_decode_text_using_autodetect
+ tests/httpx2/client/test_client.py::test_client_decode_text_using_autodetect
+ tests/httpx2/client/test_client.py::test_client_decode_text_using_explicit_encoding
+ # *shrug* looks like assertion misfiring
+ tests/httpx2/test_alias.py::test_alias_finder_handles_top_level_import
+ tests/httpx2/test_alias.py::test_alias_httpcore_top_level_import
+ tests/httpx2/test_alias.py::test_alias_top_level_import
+ )
+
+ local EPYTEST_IGNORE=()
+ if ! use cli; then
+ EPYTEST_IGNORE+=(
+ tests/httpx2/test_main.py
+ )
+ fi
+
+ epytest tests/{httpcore2,httpx2}
+}
diff --git a/dev-python/hypothesis-gentoo/Manifest b/dev-python/hypothesis-gentoo/Manifest
index 6d6ef0d64df3..01587df49337 100644
--- a/dev-python/hypothesis-gentoo/Manifest
+++ b/dev-python/hypothesis-gentoo/Manifest
@@ -1,2 +1 @@
-DIST hypothesis_gentoo-3.tar.gz 2201 BLAKE2B 7fc480dbbf559ffca71be6eb5cc5c6186e892ad53776bc5d84ddc649be8d1fe9a181cecacb82806c161078d57a9b286434b921f15cd4b57a6ad6005baa300e05 SHA512 2b3df0b18bf3513de77712e3fdda1c14ac049f957c85fe50da4126146e2a95354079a69ebc3c8af962c30808ba97df21a8084ce0c6c5013c0a45fb8e83e9c02a
DIST hypothesis_gentoo-4.tar.gz 2183 BLAKE2B 1037b30bf586eba5fa682bac338296ad43add9ce81422cf2b7a1ed44fb531e65c696f1cf3af04d1d94103162f9273a67165b830e359031083386c70c575c04c2 SHA512 68df70dbcdad5f53de0851730896883549686ad4b50be9663fb8ff4e7d9133e44c44158df2bf1741a91bd8b80fd5e0c064b141ecbda3c068d111ec70bc46d4a6
diff --git a/dev-python/hypothesis-gentoo/hypothesis-gentoo-3.ebuild b/dev-python/hypothesis-gentoo/hypothesis-gentoo-3.ebuild
deleted file mode 100644
index 18025c328ad0..000000000000
--- a/dev-python/hypothesis-gentoo/hypothesis-gentoo-3.ebuild
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright 2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=flit
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Plugin to create 'gentoo' hypothesis profile, disabling health checks"
-HOMEPAGE="
- https://github.com/projg2/hypothesis-gentoo/
- https://pypi.org/project/hypothesis-gentoo/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
-
-# No RDEP on hypothesis -- it is only imported in the hypothesis hook
-
-EPYTEST_PLUGINS=( hypothesis )
-distutils_enable_tests pytest
diff --git a/dev-python/hypothesis-gentoo/hypothesis-gentoo-4.ebuild b/dev-python/hypothesis-gentoo/hypothesis-gentoo-4.ebuild
index 0c052f77302a..9f042eabb145 100644
--- a/dev-python/hypothesis-gentoo/hypothesis-gentoo-4.ebuild
+++ b/dev-python/hypothesis-gentoo/hypothesis-gentoo-4.ebuild
@@ -10,7 +10,8 @@ inherit distutils-r1 pypi
DESCRIPTION="Plugin to create 'gentoo' hypothesis profile, disabling health checks"
HOMEPAGE="
- https://github.com/projg2/hypothesis-gentoo/
+ https://gitweb.gentoo.org/proj/hypothesis-gentoo.git/
+ https://github.com/gentoo/hypothesis-gentoo/
https://pypi.org/project/hypothesis-gentoo/
"
diff --git a/dev-python/inflect/Manifest b/dev-python/inflect/Manifest
index 4b9be661ac51..06ffe1addaaf 100644
--- a/dev-python/inflect/Manifest
+++ b/dev-python/inflect/Manifest
@@ -1 +1,2 @@
DIST inflect-7.5.0.tar.gz 73751 BLAKE2B a17c5cb5bfcd10530f29537335ffd1b4725fb1f53e78ef7ce1f40a3031fa486baae3400878e575c8ce6a77b4953332f051ec65dcba024a14c527301e51079edb SHA512 ee9f69dff451017a2aad2226d8c6ae02b4b7b4bc4d4c49f3efee50d85eeef43c49c6c6ef3e7f30fa2c5ef21e065ff5242140d5a98bc71af17c7e70d9e75e54c1
+DIST inflect-7.6.0.tar.gz 83035 BLAKE2B 618f5d773cae5abdad423fbf8c439c2ddbc56b3dee974550f837c49264f6d14c65e5f50a71770f181494a96c055ded8e2d4dde0c90cc6edbe5dd25d0dca19f36 SHA512 8a768c5a096548c4b7cbde75a07ead131813d4ed5478ecdb6e722cee9ed6e073afaf171d353096872362017e4854aba02400a8e9af05590cc2e4770f4d21d44a
diff --git a/dev-python/inflect/inflect-7.6.0.ebuild b/dev-python/inflect/inflect-7.6.0.ebuild
new file mode 100644
index 000000000000..1a23334f4b1c
--- /dev/null
+++ b/dev-python/inflect/inflect-7.6.0.ebuild
@@ -0,0 +1,31 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Correctly inflect words and numbers"
+HOMEPAGE="
+ https://pypi.org/project/inflect/
+ https://github.com/jaraco/inflect/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos ~x64-solaris"
+
+RDEPEND="
+ dev-python/jaraco-functools[${PYTHON_USEDEP}]
+ >=dev-python/typeguard-4.0.1[${PYTHON_USEDEP}]
+ >=dev-python/more-itertools-8.5.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ >=dev-python/setuptools-scm-3.4.1[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
diff --git a/dev-python/pbs-installer/Manifest b/dev-python/pbs-installer/Manifest
index 6165021d6a82..1ba02fb1252c 100644
--- a/dev-python/pbs-installer/Manifest
+++ b/dev-python/pbs-installer/Manifest
@@ -1,8 +1,6 @@
-DIST pbs_installer-2026.10.1.tar.gz 81120 BLAKE2B f439ff09203b8b628184b587fdcb6e59c296406a22d6dc0d2b49eaab8d55f9621acef6e1d9b533a1be6fb417cf2d8a64d940fc57e4f681f256d4a907df41741c SHA512 2ee04905365d3cc627dd606a64ea4b9be96dc63508f9a86b2f7b944ab4cbb07a09f8336366a0780aecfd2cab90b66416ee01a6b9d7e72581ec7ec3ad0cd594cd
-DIST pbs_installer-2026.10.1.tar.gz.provenance 9959 BLAKE2B dbd0e4d6682ea9f692f7c372e1136cfffeaa5dca96c15d56f297359b24bc7fbc12ae54b97750febe8130cc92bb09d2b46054bd942c05ba4d7978d8114769c84f SHA512 f9a8af41b085d413989577c992be521c6237135811b6a2a83af04d1526188b9c4293087a246ef99d61548ec33b169bf5a9dca97b708a7284af8e9ea7e1b12272
DIST pbs_installer-2026.10.13.tar.gz 82375 BLAKE2B a84a7e86b809cc2600b6ac5fd87f214519d3d866c01c421976b3496f6ec05139aeac4707c1b550d20146720211556a62168a7c7a21b8d38e9e95e770e913cceb SHA512 9fd739f02ee1617915670b88527333fdf0ad727640c1475cce60c1855b9065566b7d7fdebc141773f6c037c870950034e710a58e4a909d90a545611581ac1dca
DIST pbs_installer-2026.10.13.tar.gz.provenance 9835 BLAKE2B d7990b681753b6bb50fd3e06190d064636021b511e3c013d61a8a7d908d476a1329cdd188f91b9647bf2dd9db15bcb7e397d3364a52d9e18db0daa05ace28b16 SHA512 2b6355efcc9022e5a2275b3cb6fcc6d50d8a0d1db0bd4ad4d7696f577267fd71bb64cef4007acf6003227e7c5a487d8f028c69d7727b1269d672ef550a900c02
+DIST pbs_installer-2026.10.21.tar.gz 84379 BLAKE2B 244a6e13c84704ddc85f82692badf187130c5742274ed1b420a3db0286c5da01c44c1b7d6eb6585b588ef05cb85230bd65d0374d1be443cff478e5890a6c9611 SHA512 0dc4878a9933699be4d530123220e7080772dc6b68dc85fb32431a584cbb33b84154693c5eec4804840259b0aed38d8255e4063ccd112f74efe5eb674b1f915d
+DIST pbs_installer-2026.10.21.tar.gz.provenance 9835 BLAKE2B 8c2d73ba0b5e1068d24dbde4ef3a7624cb4190cd6a2c7c4401e545c1f0758fbf9bab595889bce8b8a61538265271447682c441d3f558d85b95b398a84495092a SHA512 4f9e11ac6ba51a5ae1e0e8dc22bdeba242694ea2032b65b379524b309b79df4146403620440b2ac03f097f9cd304a70d47245fe2f6c6868352b3ba91b16a4c3f
DIST pbs_installer-2026.10.3.tar.gz 81131 BLAKE2B cc8e52bc72ea442ba1854d9a1f9aeada361def24b145f5cc68885740f8472abf34e48619f780bc11bceb0131a6c1da0dae593df91d1777380554a3059547d23a SHA512 d05194ac0b36f0c510cbe90263bf7b5d4a8cfa7f55a170c128905cd291d026a64a757217a41b1a9c36aed51c353a32ed8c27cfda210f51686d603eee4c18a2fa
DIST pbs_installer-2026.10.3.tar.gz.provenance 9994 BLAKE2B eb89d404d27042c7428187a46ddd036d6c4df7730e85519bc0e8fc8aeea2d30e3e34d396e0f5d37ad59a6c7899f9c244ede7da68e32f36a016af9e0f385f9c6e SHA512 4912cdd2730b36c2f015df898c2d230b3e0db2253e27177edf09f4f628146aef721e770b8d5da49a288f554d37e1633956bdfeb97b54d5cc76c47de63ac0cb28
-DIST pbs_installer-2026.9.29.tar.gz 77902 BLAKE2B cf42ecc98a55c39a0a90cc82f8fa082b856cf15e74bca224627defa2113ad6b662d57bcf0dc1dcfb86a9cf8ae87555c2585c029e3260b8b55c4dba163c45bf07 SHA512 108c2d89e94ffaefd297ce372b8d3805f46f7555b53f95863e086b853f23832a342ae5271ecc712612e376687808b6ab8957731b8f317613ad34df8b46ed8998
-DIST pbs_installer-2026.9.29.tar.gz.provenance 10037 BLAKE2B e31a0b3a56944ce3a99b09757664250dde0f79999e6648457a3869ad9647259d10466576f2896e5e456687d18477b52da961b9fe0a94362f5d9416eded202a3b SHA512 a8ffe65f3015b6c17b5b35c3a7c985ced3399a93ca7da74e1a0b8a05a1e022117e618445b0fc51f8c453617a199380b1ba337f913c733ec6525578e56cd0e0aa
diff --git a/dev-python/pbs-installer/pbs-installer-2026.10.1.ebuild b/dev-python/pbs-installer/pbs-installer-2026.10.1.ebuild
deleted file mode 100644
index ad138f3a6f5d..000000000000
--- a/dev-python/pbs-installer/pbs-installer-2026.10.1.ebuild
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright 2024-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=pdm-backend
-PYPI_VERIFY_REPO=https://github.com/frostming/pbs-installer
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Installer for Python Build Standalone"
-HOMEPAGE="
- https://pypi.org/project/pbs-installer/
- https://github.com/frostming/pbs-installer/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~x86"
-
-# httpx is needed to download builds
-# zstandard is needed to install them
-RDEPEND="
- $(python_gen_cond_dep '
- >=dev-python/backports-zstd-1.0.0[${PYTHON_USEDEP}]
- ' 3.12 3.13)
- <dev-python/httpx-1[${PYTHON_USEDEP}]
- >=dev-python/httpx-0.27.0[${PYTHON_USEDEP}]
-"
-
-EPYTEST_PLUGINS=()
-distutils_enable_tests import-check
diff --git a/dev-python/pbs-installer/pbs-installer-2026.9.29.ebuild b/dev-python/pbs-installer/pbs-installer-2026.10.21.ebuild
index 6d8f79ea02ba..6d8f79ea02ba 100644
--- a/dev-python/pbs-installer/pbs-installer-2026.9.29.ebuild
+++ b/dev-python/pbs-installer/pbs-installer-2026.10.21.ebuild
diff --git a/dev-python/pypdf/Manifest b/dev-python/pypdf/Manifest
index e87d1d65c43f..5af33842c8b2 100644
--- a/dev-python/pypdf/Manifest
+++ b/dev-python/pypdf/Manifest
@@ -8,4 +8,6 @@ DIST pypdf-6.21.0.tar.gz 7088285 BLAKE2B d88a8775a88855a3d3c68ad428d2e3cc71287e2
DIST pypdf-6.21.0.tar.gz.provenance 9668 BLAKE2B ae490f77ca9169550fb48cdbd1b159e0f5bcef6a09a9e838f0d1bfb741dc41fc0fdc96a871f5d287cb4658894ac9014bffc28a1956013350422485b2da1dfeb8 SHA512 619a8e31272eae7b659cf7374a2409db6a287c8b6c7241d51b526f6cf1826f3d4f9f955a117b2eee8d04b1fea8e98d5e83ca61947923a92964a23ce1b84fd6fa
DIST pypdf-6.21.1.tar.gz 7088597 BLAKE2B e3cdea6c02aca7c3f16c2531ef3c8250dbd1a0faaaf3895797a9ede3be33b7fd1bc37e2e60c42425868b0c0d5b0c3f1a399ed93095b9d38a5605488ae69136f4 SHA512 55c7729de15efcc03cea0f368f08cc51ad7236f898bc71f972b02345303e544bf4f5084104189a36b3c7f2813434ab400a0034d2e5763582b67ef008923f27bb
DIST pypdf-6.21.1.tar.gz.provenance 9621 BLAKE2B 34db44b123f964f28d53fa1e9e9d514196943e2e1e64cba2ba77bbff26a31d51cf9ef2a0f6ddffe162a10f40e45b56184bc569eab8336938dd7fff7b2fa4270b SHA512 9b34342f0cb640e5f7c293f8199d1d6a15a0422f21901651d483237983fa9c6b7d5ab44c0c0a44eecc6366822d4ccaea25903f78d758cf9de4abde69d9868b5a
+DIST pypdf-6.21.2.tar.gz 7144571 BLAKE2B c50233a589b15580d36bb26f91570b117af093ee58d6d47a1874fdf5c82771c64c854465189b08f9f08a1e6df530b3cde4ad2d46fe82d91aab925c5fc3660f67 SHA512 3c2ecd1837ee6786139f40a8b9360f70752addfeb2d9696f38f86c5c5d7193842e5ce44372673fa300e913c05fda51f97118cb9833557de1384c836dd2c1e402
+DIST pypdf-6.21.2.tar.gz.provenance 9715 BLAKE2B 1f06c2ee2b6d11d72b6fdd2ee246e13b9c925705089632fff0c3af666f1fd3dc7917166cd0960dae066fac3255abac6eb84c9a1b14919e147ea6a34d93678283 SHA512 bb6b414fa2d278195c4c4c0ea3e431ff309fd6632d8b8d4474ebc624448ddfbdcc0770aecba814e60f48ecf5fda9d0fca9e5a1bc0e872f87706601e9dbc72e19
DIST pypdf-sample-files-818dc013ad1f537198e9fcfae8a6b0dffe25ffa3.gh.tar.gz 11850954 BLAKE2B fbd0af91de44f2d224b3266727f0dfc462efb4d23176f4ebff147cbfa37337d891859c468b545d0c00796048584e6b621dc622d667e3d45c0b89b92f29ca3030 SHA512 bc601bfaf17f31c6358f594eaf879479e97028d7f5e5825c309a5d1eb843bfea5080c9e151287a0d915ecbc3f4d4755e326ac8fa1ceeb696c76b9f5ecc0d7e9f
diff --git a/dev-python/pypdf/pypdf-6.21.2.ebuild b/dev-python/pypdf/pypdf-6.21.2.ebuild
new file mode 100644
index 000000000000..716a7acd1c4e
--- /dev/null
+++ b/dev-python/pypdf/pypdf-6.21.2.ebuild
@@ -0,0 +1,66 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=flit-core
+PYPI_VERIFY_REPO=https://github.com/py-pdf/pypdf
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+SAMPLE_COMMIT=818dc013ad1f537198e9fcfae8a6b0dffe25ffa3
+DESCRIPTION="Python library to work with PDF files"
+HOMEPAGE="
+ https://pypi.org/project/pypdf/
+ https://github.com/py-pdf/pypdf/
+"
+SRC_URI+="
+ test? (
+ https://github.com/py-pdf/sample-files/archive/${SAMPLE_COMMIT}.tar.gz
+ -> ${PN}-sample-files-${SAMPLE_COMMIT}.gh.tar.gz
+ )
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
+
+BDEPEND="
+ test? (
+ >=dev-python/cryptography-3.1[${PYTHON_USEDEP}]
+ dev-python/fonttools[${PYTHON_USEDEP}]
+ >=dev-python/pillow-8.0.0[jpeg,jpeg2k,tiff,zlib,${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ media-libs/jbig2dec[png]
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-timeout )
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # probably requires extra deps
+ tests/test_appearance_stream.py::test_appearance_stream_rtl
+ # speed test, uses tons of memory
+ tests/test_filters.py::test_flatedecode__decode_png_prediction__speed
+ # apparently we get half the limit somehow?
+ tests/generic/test_data_structures.py::test_dictionary_object__read_from_stream__missing_length__limit
+ tests/generic/test_data_structures.py::test_dictionary_object__read_from_stream__read_unsized__limit
+ tests/test_configuration.py::test_apply_configuration
+ tests/test_configuration.py::test_apply_configuration__nested
+ tests/test_configuration.py::test_get_configuration
+ tests/test_configuration.py::test_overwrite_configuration
+)
+
+src_unpack() {
+ default
+ if use test; then
+ mv "sample-files-${SAMPLE_COMMIT}" "${S}"/sample-files || die
+ fi
+}
+
+python_test() {
+ epytest -o addopts= -m "not enable_socket"
+}
diff --git a/dev-python/python-dateutil/Manifest b/dev-python/python-dateutil/Manifest
index 82d26649de2c..75b164019f13 100644
--- a/dev-python/python-dateutil/Manifest
+++ b/dev-python/python-dateutil/Manifest
@@ -1 +1,3 @@
DIST python-dateutil-2.9.0.post0.tar.gz 342432 BLAKE2B b3469ff9900afd98f474f162083570c28ac93378efc772b5f365fa0d5d4354a96867a024065adc430b71d7bde6909195ac4ebe3ad1d17e638fded0b4b40f9954 SHA512 f76522de0ff21547327eaf6966e80a15c57f8f92588d520eabd354a732e5c4b51d9c3ac5effd9eaa6dd451d1bce329a54a3f4c6bf4f1bd08ff06b0305c994e5a
+DIST python_dateutil-3.0.0.tar.gz 271066 BLAKE2B e544a0b27bd0aa7454a3009ee656bfb3ba585e8b3dff09387ff36ce0fd85e6fb5aee9b59b81a7a6858ef60978d47a7e59e5c0a942278618a53b0819aab76a79f SHA512 638dcea7a840163bfd79d174b3ccd43254d712b92c1739dc93f937ecce122994ff25d19a579705cd6ba77336901e879ab4c7f68ca599b5576656a3b6783c2c69
+DIST python_dateutil-3.0.0.tar.gz.provenance 9820 BLAKE2B 07fde7908756488b73ee54def14c4a9078cb0874b94d663b12c41bc09099431795879af08f9ca89051874fdf9ad78b432a274703cb097d65cec9f29c17318765 SHA512 12931ab7f8c33f03339fae727acb592ed858940f8bb13b8512955ea62c1d9fa6266c597e2df24e149d68fcd4356cdb321fbb54640bb6a049152ea82f4213fef8
diff --git a/dev-python/python-dateutil/python-dateutil-3.0.0.ebuild b/dev-python/python-dateutil/python-dateutil-3.0.0.ebuild
new file mode 100644
index 000000000000..1b282f70b2ad
--- /dev/null
+++ b/dev-python/python-dateutil/python-dateutil-3.0.0.ebuild
@@ -0,0 +1,59 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_VERIFY_REPO=https://github.com/dateutil/dateutil
+PYTHON_FULLY_TESTED=( python3_{12..15} python3_{14..15}t )
+# TODO: restore pypy3.12 somehow
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Extensions to the standard Python datetime module"
+HOMEPAGE="
+ https://dateutil.readthedocs.io/
+ https://pypi.org/project/python-dateutil/
+ https://github.com/dateutil/dateutil/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos"
+
+RDEPEND="
+ >=dev-python/six-1.5[${PYTHON_USEDEP}]
+ dev-python/tzdata[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ dev-python/setuptools-scm[${PYTHON_USEDEP}]
+ test? (
+ dev-python/attrs[${PYTHON_USEDEP}]
+ dev-python/freezegun[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/hypothesis[${PYTHON_USEDEP}]
+ ' "${PYTHON_FULLY_TESTED[@]}")
+ )
+"
+
+PATCHES=(
+ "${FILESDIR}/python-dateutil-2.9.0-no-pytest-cov.patch"
+)
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_IGNORE=()
+ local EPYTEST_PLUGINS=( "${EPYTEST_PLUGINS[@]}" )
+ if has_version "dev-python/hypothesis[${PYTHON_USEDEP}]"; then
+ EPYTEST_PLUGINS+=( hypothesis )
+ else
+ EPYTEST_IGNORE+=(
+ tests/property
+ )
+ fi
+
+ epytest
+}
diff --git a/dev-python/shtab/Manifest b/dev-python/shtab/Manifest
index a2594b11f23a..fed2b87b91b1 100644
--- a/dev-python/shtab/Manifest
+++ b/dev-python/shtab/Manifest
@@ -1,6 +1,4 @@
-DIST shtab-1.10.0.tar.gz 56370 BLAKE2B e4312d778aced10e250fa6a50717ed0aac8e13351f9fc6740019689ff893e9665bcbb23fa9e4d18305fc7b1ef5ce0fe1e283434eec5992cb74b8f86956aef90a SHA512 831b2913339e1f6861bebb6f60528d5aeadd2ffbaf4725993dd47cd628201b2c79e781cdbeb630bed17513ea32e3db99dad3457b958392009206eefe0a6c68e8
-DIST shtab-1.10.0.tar.gz.provenance 9014 BLAKE2B f1adca976da5202048c371d19225fbdf45204cedae04b6a6b72f90cdd6c1348e812fbad32299469d35d86155d2998e2daf742aa8b0a6459fc689b09a26c60d83 SHA512 23bc47830f5dc2f3cef04d243c325efacc117d162ff092c20b856ac5c9eba97efb96ac7b586b4038d349ad0fff3fd83ddb0fc90ab18eb68c36a463182ba7a1b8
-DIST shtab-1.11.0.tar.gz 58653 BLAKE2B 8e93804da4bd3122e7e0b4618a89bb775f15c50759008e2e5546df7ddff5dd8f9ac0951a8df71d9a8ff0db4b6efa3cc2d160c369f5ef40923de975261062ddd3 SHA512 eac92034b92297acafc57c6d2ad6d40084294fd7ee05392fbad3657185f78848c39f4cb73a6fff034dec0df886bfcc552a6367c50e58cf779b74f679d04ffd8b
-DIST shtab-1.11.0.tar.gz.provenance 9263 BLAKE2B 938172b2866834a73845731006fb74279f372b85290beb651d5ee5e35ef80b924b222b17bf1fbc30fc2e73d93d68f5c2584b83ea3d08ee64865febf9c3f7c783 SHA512 90f85d016c37fc3411f9e8a124866ff6096b7833adebca3b16fdedc6eea12020784459ed3508a5c0e9bf169f1d7a2872eebcfccac8d6a43307f16c49bd559c28
DIST shtab-1.12.1.tar.gz 66195 BLAKE2B dd884496a7c7feb07b91913376776c379d6e475f71109dc335f1d0737de0cd6737b19179d050bb01c1457ac44e0e53e8a41d2708ef333cf631fd3938fa9e324a SHA512 3b7efd1c8e5985912eab61a6ceb7609031e0b1a29c5fc28d809db36c87774ed3b32cc8cd816b71cf306015e250012c400c456b1138cf69666f2aca568e5b41b6
DIST shtab-1.12.1.tar.gz.provenance 9310 BLAKE2B 97a746947bb7b03c06d2692c7351ea4fd1a12616b07cec67d6ee89c0f788b4a7d064afb97c47b8dbd0e627aac370cd9a594b912b31e0257bebb1708f4a90896b SHA512 6f6cdf627b74ef55a85ff27abb745a1e6ef63d48df99645cac74c335416d2aa4caeaca077242928401fe2bd5c4a79ffc20a0fdf6a882c74c409cb3f52982b393
+DIST shtab-1.13.0.tar.gz 67655 BLAKE2B 770ac69b625bf19fd3adcda3ab03c95acefb81940d0b6a7321da53cfa6b2bc43026220bc2704f6769448a32a61bf8e14239b700bd1f5b72a92ec2de8ada2e981 SHA512 21b241a07d0bdc7c3a89ae45bc0ab53fc6d5c9515cd14bcfb1167e6d8349d8ccd7027b519d3ee85c4c4ec5a6f8f0db7eed436c145832c2fe86e75926441379df
+DIST shtab-1.13.0.tar.gz.provenance 9480 BLAKE2B a9f4d0dcf37d781dd761a2b0d32240d573fb48e02b2a2c94f4423b986f918b4c264c6f2cf53572889260629bec8271119764cd5391cc0819c3efba005b75fd7e SHA512 9948247769709a786bce6cfe45a5c84f06842b32f6557b4201ab2947cd6066d82c57d05d5438e7b01d2a25285252afbe6a08d29eae49964a6d429ec028306587
diff --git a/dev-python/shtab/shtab-1.10.0.ebuild b/dev-python/shtab/shtab-1.10.0.ebuild
deleted file mode 100644
index 54cd635fb7e8..000000000000
--- a/dev-python/shtab/shtab-1.10.0.ebuild
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright 2024-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYPI_VERIFY_REPO=https://github.com/tqdm/shtab
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Automagic shell tab completion for Python CLI applications"
-HOMEPAGE="
- https://github.com/tqdm/shtab/
- https://pypi.org/project/shtab/
-"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="amd64 ~arm arm64 ~loong ~ppc64 ~riscv x86"
-
-BDEPEND="
- dev-python/setuptools-scm[${PYTHON_USEDEP}]
-"
-
-EPYTEST_PLUGINS=()
-distutils_enable_tests pytest
-
-python_test() {
- epytest -o addopts=
-}
diff --git a/dev-python/shtab/shtab-1.11.0.ebuild b/dev-python/shtab/shtab-1.13.0.ebuild
index 54cd635fb7e8..6799197f5470 100644
--- a/dev-python/shtab/shtab-1.11.0.ebuild
+++ b/dev-python/shtab/shtab-1.13.0.ebuild
@@ -17,10 +17,13 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="amd64 ~arm arm64 ~loong ~ppc64 ~riscv x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
BDEPEND="
dev-python/setuptools-scm[${PYTHON_USEDEP}]
+ test? (
+ dev-python/click[${PYTHON_USEDEP}]
+ )
"
EPYTEST_PLUGINS=()
diff --git a/dev-python/soupsieve/Manifest b/dev-python/soupsieve/Manifest
index d2c311bfa9a5..dde29782db88 100644
--- a/dev-python/soupsieve/Manifest
+++ b/dev-python/soupsieve/Manifest
@@ -3,3 +3,4 @@ DIST soupsieve-2.9.2.gh.tar.gz 157707 BLAKE2B b57eef6a67ddf33c03bdd418a22229877b
DIST soupsieve-3.0.1.gh.tar.gz 119766 BLAKE2B 01a1f300d336182a3e055fcad4ee5d321c311ace28363f5c800e36cc5c7c813b66786b3e8f464c90511be236ff64709122759a5332c7127f7d4c11fc27dab461 SHA512 4609a5c9701e1b51a1dfa447bb33993a2ce3a781c9f0b8fa1fdee1fed3bdd05b9e79f25967d82f64252be8c66b823f652365236dcfd4a82c5b835a5fc8504955
DIST soupsieve-3.0.2.gh.tar.gz 119863 BLAKE2B 0a3f4628f5727e1b757ab7c91ceb95aace7be3e8606d6bd3d965444203dcd595a4acd8b4b45ede24da4bc6ff52843942c45c675082d25c1b6bff43f4dde7f7b3 SHA512 891bdf03ffc4497141aecc888ee5c55b3d138031e24a79562b38d2c17bfc364fd6025fcd15210bdce238b5534882ef9088e1b6f2e887ed09d86ee432a8177aa5
DIST soupsieve-3.0.3.gh.tar.gz 120295 BLAKE2B 65a48c2a450c2026cb60c404ea6bd375e02af65d7f57cedb3931d7349ad1178fc78068d6ba803b2fad4c37f8cfcedecf1cd41f1280bf472ed76fab596a73e274 SHA512 64dd71a019cad6e7279f09c4342aa0d0a8cf4fbc7ed0ab12ae7fb3bb0e9e6ba22b2f2c42c44738322a2c17ed3ec8bfb1bd01bc20f62b384edd6804a9fe1e7cdb
+DIST soupsieve-3.0.4.gh.tar.gz 123598 BLAKE2B cb2bcda9aa825fea667a8099a6996135dd5ff579d68401c01f6fa3b92400b24bcc8e383d82b17ccb90844251fc20fc51da60238c99abbbbe920e1ec4eba7bc2e SHA512 00b35d354395668c55304dfbc83172415b1d553e29ad4fe95d67f47607f86567127b7109fde93cd3251d8dcc0803eb42a40146e5e03249356c15c6646bb9b377
diff --git a/dev-python/soupsieve/soupsieve-3.0.4.ebuild b/dev-python/soupsieve/soupsieve-3.0.4.ebuild
new file mode 100644
index 000000000000..a386cbdf6652
--- /dev/null
+++ b/dev-python/soupsieve/soupsieve-3.0.4.ebuild
@@ -0,0 +1,34 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="A modern CSS selector implementation for BeautifulSoup"
+HOMEPAGE="
+ https://github.com/facelessuser/soupsieve/
+ https://pypi.org/project/soupsieve/
+"
+SRC_URI="
+ https://github.com/facelessuser/soupsieve/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+BDEPEND="
+ test? (
+ dev-python/beautifulsoup4[${PYTHON_USEDEP}]
+ dev-python/lxml[${PYTHON_USEDEP}]
+ dev-python/html5lib[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
diff --git a/dev-python/sqlalchemy/Manifest b/dev-python/sqlalchemy/Manifest
index c145e350d5d0..94add9e2fb05 100644
--- a/dev-python/sqlalchemy/Manifest
+++ b/dev-python/sqlalchemy/Manifest
@@ -7,3 +7,4 @@ DIST sqlalchemy-2.1.1.tar.gz 10503203 BLAKE2B 18c76e58bb243bc9fff745f3c04435a407
DIST sqlalchemy-2.1.3.tar.gz 10525778 BLAKE2B 7093aecf1b69b410852a6926d0cb4e4c2e0b7b091c9eda4cd6e5a224dbdbe1a29f17ed350abfdf5d0565a2dcfa7f1a00ea31f3c5e553b70652b56be6fac8ad7b SHA512 abce5dac76e71c7bd059da30b0b61291f5fb1f49417fe1c02220ea4903b142a2b58ec2d2c288b65113420e0ddf9e7b09b89a38a8093686f9ee2d872b5e1d791d
DIST sqlalchemy-2.1.4.tar.gz 10544216 BLAKE2B 70414f34f9b1007ca105873c2c7c1789f44656340a6ed6d9fbb28a276f6db0afef69e21fb90abd0f325d2f53a4475f45a7da87db670fc600ae904ab20ef66647 SHA512 fbdafec12fb50654ef73eec69a4bbe885a5fce15cf4a48a26ee322a7e758a6aacab5efb441cff0bbd921065b85dab45b327818c01a1dc856294cf7781a2c1e60
DIST sqlalchemy-2.1.5.tar.gz 10569593 BLAKE2B 8c483c039900d5535af9ed430d918d9421b81627bcb29b4c7ac32ac1249ff75d08ed76e83c62034940a27a520ec9af049f4364ed21a3b247a5a1c145c0c98cb1 SHA512 2961597ee9bf72fa6cfd1a325a74d5ca1f52066483b6cf343a88c90bdd3084e0e87bcc877743528bbfd1808f11a37c37b4d6cb699a3478840879eb2a010a5b3a
+DIST sqlalchemy-2.1.6.tar.gz 10589700 BLAKE2B 7d0ca8d28d9fa29a9214af70bc7adfa4ee5b5400fe2fc3ae262f55ec9b3962367d2b1afb830939fab8bf901ad7faf78b562cdd70660d49c961a5963fef7b574c SHA512 f575cba9dfb34482dfe9edf64963fc1228be1eb315552c9c37f9f2a47f9e7fdb224a54582c6e41a88d3e58574d06c6b17172e98ebf7543adc5a645790594def7
diff --git a/dev-python/sqlalchemy/sqlalchemy-2.1.6.ebuild b/dev-python/sqlalchemy/sqlalchemy-2.1.6.ebuild
new file mode 100644
index 000000000000..d9cf5b3c5b56
--- /dev/null
+++ b/dev-python/sqlalchemy/sqlalchemy-2.1.6.ebuild
@@ -0,0 +1,103 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYPI_PN=SQLAlchemy
+PYTHON_COMPAT=( python3_{13..14} )
+PYTHON_REQ_USE="sqlite?"
+
+inherit distutils-r1 optfeature pypi
+
+DESCRIPTION="Python SQL toolkit and Object Relational Mapper"
+HOMEPAGE="
+ https://www.sqlalchemy.org/
+ https://pypi.org/project/SQLAlchemy/
+ https://github.com/sqlalchemy/sqlalchemy/
+"
+
+LICENSE="MIT"
+SLOT="0"
+if [[ ${PV} != *_beta* ]]; then
+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos ~x64-solaris"
+fi
+IUSE="examples +sqlite test"
+
+RDEPEND="
+ >=dev-python/typing-extensions-4.6.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ dev-python/cython[${PYTHON_USEDEP}]
+ test? (
+ $(python_gen_impl_dep sqlite)
+ )
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_RERUNS=5
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_IGNORE=(
+ test/ext/mypy/test_mypy_plugin_py3k.py
+ test/typing/test_mypy.py
+ # hardcode call counts specific to Python versions
+ test/aaa_profiling
+ )
+ local EPYTEST_DESELECT=(
+ # warning tests are unreliable
+ test/base/test_warnings.py
+ # TODO: flaky? xdist?
+ test/base/test_concurrency_py3k.py::TestAsyncioCompat::test_await_fallback_no_greenlet
+ )
+ local sqlite_version=$(sqlite3 --version | cut -d' ' -f1)
+ case ${EPYTHON} in
+ python3.15)
+ EPYTEST_DESELECT+=(
+ # repr() changes
+ test/orm/declarative/test_dc_transforms.py::DCTransformsTest::test_basic_constructor_repr_base_cls
+ test/orm/declarative/test_dc_transforms_future_anno_sync.py::DCTransformsTest::test_basic_constructor_repr_base_cls
+ # exception message changes
+ test/engine/test_processors.py::PyDateProcessorTest::test_no_string
+ )
+ ;;
+ esac
+ if ! has_version "dev-python/greenlet[${PYTHON_USEDEP}]"; then
+ EPYTEST_DESELECT+=(
+ test/ext/asyncio/test_engine_py3k.py::TextSyncDBAPI::test_sync_driver_execution
+ test/ext/asyncio/test_engine_py3k.py::TextSyncDBAPI::test_sync_driver_run_sync
+ "test/engine/test_pool.py::PoolEventsTest::test_checkin_event_gc[False-True]"
+ "test/engine/test_pool.py::PoolEventsTest::test_checkin_event_gc[True-True]"
+ "test/engine/test_pool.py::PoolEventsTest::test_checkin_event_gc[has_terminate-is_asyncio]"
+ "test/engine/test_pool.py::PoolEventsTest::test_checkin_event_gc[not_has_terminate-is_asyncio]"
+ "test/engine/test_pool.py::QueuePoolTest::test_userspace_disconnectionerror_weakref_finalizer[True-_exclusions0]"
+ "test/engine/test_pool.py::QueuePoolTest::test_userspace_disconnectionerror_weakref_finalizer[True]"
+ )
+ fi
+
+ # upstream's test suite is horribly hacky; it relies on disabling
+ # the warnings plugin and turning warnings into errors; this also
+ # means that any DeprecationWarnings from third-party plugins cause
+ # everything to explode
+ epytest --reruns-delay=2 -m "not gc_intensive and not timing_intensive and not mypy"
+}
+
+python_install_all() {
+ if use examples; then
+ docompress -x "/usr/share/doc/${PF}/examples"
+ dodoc -r examples
+ fi
+
+ distutils-r1_python_install_all
+}
+
+pkg_postinst() {
+ optfeature "asyncio support" dev-python/greenlet
+ optfeature "MySQL support" \
+ dev-python/mysqlclient \
+ dev-python/pymysql
+ optfeature "postgresql support" dev-python/psycopg:2
+}
diff --git a/dev-python/tornado/Manifest b/dev-python/tornado/Manifest
index 62d409037691..ffdb1c51e433 100644
--- a/dev-python/tornado/Manifest
+++ b/dev-python/tornado/Manifest
@@ -1,6 +1,4 @@
DIST tornado-6.5.10.tar.gz 537910 BLAKE2B 6ec1bcba8c7dc2175206528b97be64e6dbbfb51ae6c9cdd1d0dc0bdc4eff55c1a9a0ebe9c700ea18e88fef3197b0d7efe1812fab5196dfab5cdfd71b6d1568bc SHA512 0a3a38162a91d7d82f0d790d37788c5761bd9663af0356641bd6bd0ec5f6d490e5013965db1f91f28959d925127640cffbd4b661415b43ca5b50ee812841f445
DIST tornado-6.5.10.tar.gz.provenance 9454 BLAKE2B 4a8faa5670534337aead096a06c10b3f77c0ba8dc13e70d94dc92fae59a28e072333ef37635cf2db12fe20de17e175e96da6b575e73c8426103320b6a58f71ac SHA512 c03ebd606a6543a816ffff74217061702ffbdfbeb209ac7541f50d6beca4caf8568e32b40712a3b9ef567f15d50453fe789a84f6e4c2420201216a50776c6951
-DIST tornado-6.5.8.tar.gz 520493 BLAKE2B e48ca20fe0551b8536162071e0b9267ccd167df617c25f930481668e733c656904109014e65462e561d47acc557cfe32f86a422e8f7e840b4262acbafb2b720a SHA512 88c096ca30357644c07b6013cd514b5e64135b26a77d9ff17640951632d6f68c9a68d7fa80224743f7900fbf5ddde838088bd9838395651d87d876c8d1d1a2fe
-DIST tornado-6.5.8.tar.gz.provenance 9416 BLAKE2B 1f4d1d9289f8aa8fdde1dda19454da15e9056111f0225e0701eb385ef42b0fae26a6bb9dc5df3ffb9796e4d805db5aa7406aa466ec9389802df1033cdb5231a6 SHA512 b1c364aed55ecb3cbab7343de9ebfaa181579ca81a57e498953c7d0e657bd8b08ee9fb6e5f72d8205f379fbd25237054bfecdb9982fc973e4bb55a00a0411444
-DIST tornado-6.5.9.tar.gz 536145 BLAKE2B 13071c50a8f0701d750f26aa5fb3669ee5c78c4d249d570b519a672d8fdfa76d38f90633ad21fa1c7d551c50c5f6d0dab53ebb694685d52f1cc1269cb0728564 SHA512 e497f0cacca0ca0d34b65117a72e9ebe0056f77ced09eb5d200dea24da8c28182d5704d1b17510fc139841718fce6a19c7f154d416e59292f4236eb717a0a75c
-DIST tornado-6.5.9.tar.gz.provenance 9473 BLAKE2B 9c58b5c0753dee0f9e111cd5007512fffc91964cad3eeed7e11758aff96f239692492f35f220f08ef10bfd249013d3d1c550a4f79a3669c86abd5ef5fd2922a7 SHA512 20cb384accabf2c8659f90446c2f39d3b3535662114e0707521a870e291879da15a8c6c0fac61a6e64a26e4f64ccfc8d8f1dd3db60717b3121a52263422fb061
+DIST tornado-6.6.tar.gz 617998 BLAKE2B 988b37f28f57a5aee35e068d93bbbf3b28ab9c52bc830ecf9474e48b47b68c944a1fac7309531f9da1cd253fd49eae079c01b4e8bc2896a59fdf77299ef16c7d SHA512 8c679f13e158f2cd9a7106e057d74c8a6a8c3ed53bfd0fc7963f876e814b0604db3a75e55de376dbf4c644130de9a7d9d64145fbce276533a05787dec1e60f79
+DIST tornado-6.6.tar.gz.provenance 9611 BLAKE2B 71c82dae3d52f8fcce94c75054192a7b4fa47d507a1161892cd15d373ea3c6efa810419b3381d9942982e635e8df778992d0cecee0c48aab263c850eb94704dc SHA512 466427fad2a37ee372bf268e899745b031a6c1c16463d42e3a3f74a2aa9207b21d62164cdc476c5523b8e0dece8c39847753a6f47a97d69442cddc257f331a70
diff --git a/dev-python/tornado/tornado-6.5.8.ebuild b/dev-python/tornado/tornado-6.5.8.ebuild
deleted file mode 100644
index f73a5bc3e333..000000000000
--- a/dev-python/tornado/tornado-6.5.8.ebuild
+++ /dev/null
@@ -1,61 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=setuptools
-PYPI_VERIFY_REPO=https://github.com/tornadoweb/tornado
-PYTHON_COMPAT=( python3_{13..14} )
-PYTHON_REQ_USE="threads(+)"
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Python web framework and asynchronous networking library"
-HOMEPAGE="
- https://www.tornadoweb.org/
- https://github.com/tornadoweb/tornado/
- https://pypi.org/project/tornado/
-"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos"
-IUSE="test"
-RESTRICT="!test? ( test )"
-
-RDEPEND="
- >=dev-python/twisted-16.0.0[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- ${RDEPEND}
- $(python_gen_cond_dep '
- >=dev-python/pycurl-7.19.3.1[${PYTHON_USEDEP}]
- ' 'python*')
- )
-"
-
-PATCHES=(
- "${FILESDIR}/${PN}-6.3.2-ignore-deprecationwarning.patch"
-)
-
-src_prepare() {
- # network-sandbox? ipv6?
- sed -i -e 's:test_localhost:_&:' \
- tornado/test/netutil_test.py || die
-
- distutils-r1_src_prepare
-}
-
-python_test() {
- local -x ASYNC_TEST_TIMEOUT=60
- # Avoid time-sensitive tests
- # https://github.com/tornadoweb/tornado/blob/10974e6ebee80a26a2a65bb9bd715cf858fafde5/tornado/test/util.py#L19
- local -x TRAVIS=1
- local -x NO_NETWORK=1
-
- cd "${T}" || die
- "${EPYTHON}" -m tornado.test.runtests --verbose ||
- die "tests failed under ${EPYTHON}"
-}
diff --git a/dev-python/tornado/tornado-6.5.9.ebuild b/dev-python/tornado/tornado-6.6.ebuild
index 34eff013d738..f2af848e67e8 100644
--- a/dev-python/tornado/tornado-6.5.9.ebuild
+++ b/dev-python/tornado/tornado-6.6.ebuild
@@ -30,9 +30,8 @@ RDEPEND="
BDEPEND="
test? (
${RDEPEND}
- $(python_gen_cond_dep '
- >=dev-python/pycurl-7.19.3.1[${PYTHON_USEDEP}]
- ' 'python*')
+ dev-python/hypothesis[${PYTHON_USEDEP}]
+ >=dev-python/pycurl-7.19.3.1[${PYTHON_USEDEP}]
)
"
diff --git a/dev-python/types-python-dateutil/Manifest b/dev-python/types-python-dateutil/Manifest
index b6bbe1776292..317e31638100 100644
--- a/dev-python/types-python-dateutil/Manifest
+++ b/dev-python/types-python-dateutil/Manifest
@@ -1 +1,2 @@
DIST types_python_dateutil-2.9.0.20260807.tar.gz 17618 BLAKE2B 17d3866132f2501a5a78574386279cd49a77a555e20e68085e238d7f0851895c70b1cdbe8560158cb3f122fc312914e158170e04721d0a2909f2a4010a7c92a1 SHA512 3903f9d2295885416e9f1de5c67f55dd4f243d734267e3197b0788275fc5124837fedf27c964045cf47da355ee83fef654540d80ba82ed78501539fc2f151999
+DIST types_python_dateutil-2.9.0.20261021.tar.gz 17792 BLAKE2B 9333a25b887891916311a5f5a446d36ea1d28e6cddf33fd700e99efc706b350356d2c8dc31a32730c8f099c62710b5763ba4f983c4066a61894de78d2c01f08e SHA512 06f753afe882c48e5b78b573528c9dffa4f06208018898db5f10f514f6c154ba3bec3e98650a634210265c0b0f9fbf1d7424a303d21b971aadca67c41313beba
diff --git a/dev-python/types-python-dateutil/types-python-dateutil-2.9.0.20261021.ebuild b/dev-python/types-python-dateutil/types-python-dateutil-2.9.0.20261021.ebuild
new file mode 100644
index 000000000000..866a75258277
--- /dev/null
+++ b/dev-python/types-python-dateutil/types-python-dateutil-2.9.0.20261021.ebuild
@@ -0,0 +1,23 @@
+# Copyright 2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Typing stubs for python-dateutil"
+HOMEPAGE="
+ https://github.com/python/typeshed/
+ https://pypi.org/project/types-python-dateutil/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos"
+
+BDEPEND="
+ >=dev-python/setuptools-82.0.1[${PYTHON_USEDEP}]
+"
diff --git a/dev-python/uv-build/Manifest b/dev-python/uv-build/Manifest
index a199ed0a136a..670371f241cc 100644
--- a/dev-python/uv-build/Manifest
+++ b/dev-python/uv-build/Manifest
@@ -1,2 +1,3 @@
DIST uv_build-0.12.17.tar.gz 434807 BLAKE2B 8823907abc14637a684723b683284cc8b6a40b2467adbab74059b139388aeb1ff8870bdc09a497bad3e06af60c4e9c360c8d57cc6dd62e26e9239f4cf041f827 SHA512 a833a0578c6d543eabe51089d330f0d93d141bea5ff2bc1a194ad27a7ad4a1c7189321cdcf6012465b819bffd620affb42d4fb148bce69beeee0e32537a74668
DIST uv_build-0.13.4.tar.gz 464427 BLAKE2B 899bd8d7628bc5a291a6f974e569484a61d1aff51745e004cb663167128470147f2dae454457e010fa495e9d9de19527e9185e90c88018e51b4352359ceca349 SHA512 2e74b38cd01468281f481fa3b1ea289e1d262986e97bf3bfd27812c08676825567c547144bc9ed090bede4eb8db3114e6e8330eeaf96a91602bdd5212ae76433
+DIST uv_build-0.13.5.tar.gz 466761 BLAKE2B 85333e905fa03c1615a2ce67b19d4266d84757419bd2c04737ceee3fc000ce543aebb0e51f7bccdf7a681ab691aeee1491f8c335f4ffc3b1d52ebe75d5fb4ad7 SHA512 a7e3c3029179dc9a2c91519f7d161f707cce9b87e0b6a1802b257a63b8a468ba0fa64ea2010571426b30746ed3f83742c26c2c3045f06b587375c60231e52f9f
diff --git a/dev-python/uv-build/uv-build-0.13.4.ebuild b/dev-python/uv-build/uv-build-0.13.4.ebuild
index dd466669a80f..6c1b820ad15b 100644
--- a/dev-python/uv-build/uv-build-0.13.4.ebuild
+++ b/dev-python/uv-build/uv-build-0.13.4.ebuild
@@ -19,7 +19,7 @@ HOMEPAGE="
LICENSE="|| ( Apache-2.0 MIT )"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ~ppc ppc64 ~riscv ~s390 x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc64 ~riscv ~s390 x86"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/uv-build/uv-build-0.13.5.ebuild b/dev-python/uv-build/uv-build-0.13.5.ebuild
new file mode 100644
index 000000000000..0250a02341f9
--- /dev/null
+++ b/dev-python/uv-build/uv-build-0.13.5.ebuild
@@ -0,0 +1,100 @@
+# Copyright 2025-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# Maturin compiles uv-build executable for every impl, we do not want
+# that, so we use another backend. And since we use another backend,
+# why not dogfood it in the first place?
+DISTUTILS_USE_PEP517=standalone
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="PEP517 uv build backend"
+HOMEPAGE="
+ https://github.com/astral-sh/uv/
+ https://pypi.org/project/uv-build/
+"
+
+LICENSE="|| ( Apache-2.0 MIT )"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~s390 ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-python/uv-${PV}
+"
+BDEPEND="
+ test? (
+ app-arch/unzip
+ dev-python/build[${PYTHON_USEDEP}]
+ )
+"
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # use the executable from dev-python/uv instead of building
+ # a largely overlapping uv-build executable (at least for now)
+ sed -i -e '/USE_UV_EXECUTABLE/s:False:True:' python/uv_build/__init__.py || die
+
+ # replace the build-system section
+ sed -i -e '/\[build-system\]/,$d' pyproject.toml || die
+ cat >> pyproject.toml <<-EOF || die
+ [build-system]
+ requires = ["uv_build<9999"]
+ build-backend = "uv_build"
+ backend-path = ["src"]
+ EOF
+
+ # rename to make uv-build find it
+ mv python src || die
+}
+
+python_test() {
+ "${EPYTHON}" -m build -n || die "Self-build failed with ${EPYTHON}"
+
+ local zip_result=$(
+ unzip -t "dist/uv_build-${PV}-py3-none-any.whl" || die
+ )
+ local zip_expected="\
+Archive: dist/uv_build-${PV}-py3-none-any.whl
+ testing: uv_build/ OK
+ testing: uv_build/__init__.py OK
+ testing: uv_build/__main__.py OK
+ testing: uv_build/py.typed OK
+ testing: uv_build-${PV}.dist-info/ OK
+ testing: uv_build-${PV}.dist-info/WHEEL OK
+ testing: uv_build-${PV}.dist-info/METADATA OK
+ testing: uv_build-${PV}.dist-info/RECORD OK
+No errors detected in compressed data of dist/uv_build-${PV}-py3-none-any.whl.\
+"
+ if [[ ${zip_result} != ${zip_expected} ]]; then
+ eerror ".zip result:\n${zip_result}"
+ eerror ".zip expected:\n${zip_expected}"
+ die ".whl result mismatch"
+ fi
+
+ local tar_result=$(
+ tar -tf "dist/uv_build-${PV}.tar.gz" || die
+ )
+ local tar_expected="\
+uv_build-${PV}/PKG-INFO
+uv_build-${PV}/pyproject.toml
+uv_build-${PV}/pyproject.toml.orig
+uv_build-${PV}/
+uv_build-${PV}/README.md
+uv_build-${PV}/src
+uv_build-${PV}/src/uv_build
+uv_build-${PV}/src/uv_build/__init__.py
+uv_build-${PV}/src/uv_build/__main__.py
+uv_build-${PV}/src/uv_build/py.typed\
+"
+ if [[ ${tar_result} != ${tar_expected} ]]; then
+ eerror ".tar.gz result:\n${tar_result}"
+ eerror ".tar.gz expected:\n${tar_expected}"
+ die ".tar.gz result mismatch"
+ fi
+}
diff --git a/dev-python/uv/Manifest b/dev-python/uv/Manifest
index 7158f373e5c9..3b0355c8f40b 100644
--- a/dev-python/uv/Manifest
+++ b/dev-python/uv/Manifest
@@ -2,3 +2,5 @@ DIST uv-0.12.17-crates.tar.xz 43846848 BLAKE2B f899f093a14a7195cb93d81aa71c31d68
DIST uv-0.12.17.gh.tar.gz 8706123 BLAKE2B e45aae4ea550252440e8f646a505ba4d295e1eafe94092798e79e5db26320dae4b899cc7d04d96387791996e55e4ced2cbcff6ffcd9edc056c9580f5e175751f SHA512 ae554aa9d096afa7e1c35a1e50ba11c0553cd182ba75e5dd425613add092d38c46b3cbd47b026f03674394d6d0852162d5953c4cacef511c7157378d1790b8a1
DIST uv-0.13.4-crates.tar.xz 44003088 BLAKE2B 671f829d9f64a3f5aa2d1ec7e3f705eadb63529c43f65796a25ef0307f763ce4611f2ee41ee38ffeb19a2eac91d918129be4deb128c6a879c5bcd204862854ea SHA512 94d07b0fa8edbf6364366268be678055125e7baa854c8bc30aaf6721210fc63a1ef0dd5f07e0a511b2cd132f2fcf25690b6c2fa828b97b3893785ed18d40a51e
DIST uv-0.13.4.gh.tar.gz 8930524 BLAKE2B 6db88a4d14037a65f0c2f1a5e98a1a3a6c0697300906af3f753d7ce87320b4086067abe13a60fd335d713f427fc1e2bda7a4917eb1d985daf03aa795672eb188 SHA512 06bc16f6e10b31cbdf1265623990cfe52bc0e040a53edd63b952807b340aec274d412ff7f17111e235596c7f054186fb7024abb0e563f43abb03309df7070f8a
+DIST uv-0.13.5-crates.tar.xz 44020328 BLAKE2B 054a712a0df9ab235bdc65da39218ec4e76bdf9df7946ab137e1744359fb5b6ebf35e3b8f91cc17f3ab484654e4ab35aaa2f071e3a9034d395d99b14a5133c5f SHA512 272bd68eb45f516d885c587392b08857e5e6db825878a9b686686e588e7a87c1944b38ae063f780060d87615eec51e0a9cff786480adb9e1e4d13bd17c2b23a6
+DIST uv-0.13.5.gh.tar.gz 8966770 BLAKE2B 18e1ad6a5a68f5750ca3c2e97856418a0fc04dd0e59dacd4cc04fecf09c9c4e1dece02959e96d2d86cf41c83b4da5f5f767279058cf34845f76420172bd5d613 SHA512 22ae38ec22e9aa1f816e39516357a8f05c296cbf7cffe1f48657a10d3b80252492397ba5dd6dace15846626c6cdcc0c456a38c4ba51d856dd72d3ad025b9e6c7
diff --git a/dev-python/uv/uv-0.13.4-r1.ebuild b/dev-python/uv/uv-0.13.4-r1.ebuild
index 92843ccbe947..dcf7667bf5e3 100644
--- a/dev-python/uv/uv-0.13.4-r1.ebuild
+++ b/dev-python/uv/uv-0.13.4-r1.ebuild
@@ -39,7 +39,7 @@ LICENSE+="
# ring crate
LICENSE+=" openssl"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ~ppc ppc64 ~riscv ~s390 x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc64 ~riscv ~s390 x86"
IUSE="test"
RESTRICT="test"
PROPERTIES="test_network"
diff --git a/dev-python/uv/uv-0.13.5.ebuild b/dev-python/uv/uv-0.13.5.ebuild
new file mode 100644
index 000000000000..c3bba465dc41
--- /dev/null
+++ b/dev-python/uv/uv-0.13.5.ebuild
@@ -0,0 +1,161 @@
+# Copyright 2024-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+CRATES="
+"
+RUST_MIN_VER="1.97.0"
+
+inherit cargo check-reqs
+
+CRATE_PV=${PV}
+DESCRIPTION="A Python package installer and resolver, written in Rust"
+HOMEPAGE="
+ https://github.com/astral-sh/uv/
+ https://pypi.org/project/uv/
+"
+# pypi sdist misses scripts/, needed for tests
+SRC_URI="
+ https://github.com/astral-sh/uv/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+ ${CARGO_CRATE_URIS}
+"
+if [[ ${PKGBUMPING} != ${PVR} ]]; then
+ SRC_URI+="
+ https://github.com/gentoo-crate-dist/uv/releases/download/${CRATE_PV}/uv-${CRATE_PV}-crates.tar.xz
+ "
+fi
+
+# most of the code
+LICENSE="|| ( Apache-2.0 MIT )"
+# crates/pep508-rs is || ( Apache-2.0 BSD-2 ) which is covered below
+# Dependent crate licenses
+LICENSE+="
+ Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD-2 BSD CC0-1.0
+ CDLA-Permissive-2.0 ISC MIT MPL-2.0 Unicode-3.0 Unicode-DFS-2016
+ ZLIB
+"
+# ring crate
+LICENSE+=" openssl"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~s390 ~x86"
+IUSE="test"
+RESTRICT="test"
+PROPERTIES="test_network"
+
+DEPEND="
+ app-arch/bzip2:=
+ app-arch/xz-utils:=
+ app-arch/zstd:=
+"
+RDEPEND="
+ ${DEPEND}
+"
+# git/curl: https://bugs.gentoo.org/984287
+BDEPEND="
+ virtual/pkgconfig
+ test? (
+ dev-lang/python:3.9
+ dev-lang/python:3.10
+ dev-lang/python:3.11
+ dev-lang/python:3.12
+ dev-lang/python:3.13
+ !!~dev-python/uv-0.5.0
+ || (
+ >=dev-vcs/git-2.57
+ <net-misc/curl-8.23
+ )
+ )
+"
+
+QA_FLAGS_IGNORED="usr/bin/.*"
+
+check_space() {
+ local CHECKREQS_DISK_BUILD=3G
+ use debug && CHECKREQS_DISK_BUILD=9G
+ check-reqs_pkg_setup
+}
+
+pkg_pretend() {
+ check_space
+}
+
+pkg_setup() {
+ check_space
+ rust_pkg_setup
+}
+
+src_prepare() {
+ default
+
+ # force thin lto, makes build much faster and less memory hungry
+ # (i.e. makes it possible to actually build uv on 32-bit PPC)
+ sed -i -e '/lto/s:fat:thin:' Cargo.toml || die
+
+ # enable system libraries where supported
+ export ZSTD_SYS_USE_PKG_CONFIG=1
+ # TODO: unbundle tikv-jemalloc-sys?
+
+ # remove unbundled sources, just in case
+ find "${ECARGO_VENDOR}"/zstd-sys-*/ -name '*.c' -delete || die
+}
+
+src_configure() {
+ local myfeatures=(
+ test-git
+ test-pypi
+ test-python
+ )
+
+ cargo_src_configure --no-default-features
+ # otherwise, rustc/llvm runs out of address space
+ use arm && export RUSTFLAGS="${RUSTFLAGS} -Copt-level=0"
+}
+
+src_compile() {
+ cd crates/uv || die
+ cargo_src_compile
+}
+
+src_test() {
+ cd crates/uv || die
+ cargo_src_test --no-fail-fast
+}
+
+src_install() {
+ dobin "$(cargo_target_dir)"/{uv,uvx}
+
+ insinto /etc/xdg/uv
+ newins - uv.toml <<-EOF || die
+ # These defaults match Fedora, see:
+ # https://src.fedoraproject.org/rpms/uv/pull-request/18
+
+ # By default ("automatic"), uv downloads missing Python versions
+ # automatically and keeps them in the user's home directory.
+ # Disable that to make downloading opt-in, and especially
+ # to avoid unnecessarily fetching custom Python when the distro
+ # package would be preferable. Python builds can still be
+ # downloaded manually via "uv python install".
+ #
+ # https://docs.astral.sh/uv/reference/settings/#python-downloads
+ python-downloads = "manual"
+
+ # By default ("managed"), uv always prefers self-installed
+ # Python versions over the system Python, independently
+ # of versions. Since we generally expect users to use that
+ # to install old Python versions not in ::gentoo anymore,
+ # this effectively means that uv would end up preferring very
+ # old Python versions over the newer ones that are provided
+ # by the system. Default to using the system versions to avoid
+ # this counter-intuitive behavior.
+ #
+ # https://docs.astral.sh/uv/reference/settings/#python-preference
+ python-preference = "system"
+
+ # Always use system certificates.
+ #
+ # https://docs.astral.sh/uv/reference/settings/#system-certs
+ system-certs = true
+ EOF
+}
diff --git a/dev-python/vcsgraph/Manifest b/dev-python/vcsgraph/Manifest
index be9baeb3ed50..fe0d7b7405c6 100644
--- a/dev-python/vcsgraph/Manifest
+++ b/dev-python/vcsgraph/Manifest
@@ -1,3 +1,6 @@
DIST vcsgraph-0.3.2-crates.tar.xz 1958984 BLAKE2B e315d3dca011e5ad422e4944a2972ca8698c3b8993e7c7f8be6c81a9dd04e6188a2ad41432ed6364713ecc7037f484c6c4812af5f783f15779b4ddaaead9bb0c SHA512 73e3a54e2a5aae51135c73c72316f49e0d52f4ccef7dc3a1540b1040d47a334d7a19ddaca841009dc01fa7aa36daea337df417cfd976c90b9fc0e57f0bb82d00
DIST vcsgraph-0.3.2.tar.gz 99202 BLAKE2B 670a41a48f10c24ff15a590db7393bcc2d5ff1ae8f8c816ed4e3a574b963f6b5b183435a4832998b316f7e3971626010410a8dd8a741a574ab4b2b283079a7db SHA512 2aa4802221d4a4cc4bc0f341ef521912bc493cbe1765a7880b4dedc1f598e7f398c7781d6a0a222a2cd4afcc17178fb50347c6c06bda1071d0b22c65885c654c
DIST vcsgraph-0.3.2.tar.gz.provenance 9838 BLAKE2B 4724f8083025ca24eb3881aa8f964ae4b13d74384ea722d422587ffec345840963461cd34e62be92361754618a24c3107eb6f29e538d4f05bca1616f2be51568 SHA512 5553f43e89d8e236c5e7bb5f061f6f9e8b6bbf667b77e13defeb1c0c3de69734911d344c54772eb31e8a447371e2d322dad1fe9eb9bd647ad77939288a13deb4
+DIST vcsgraph-0.3.3-crates.tar.xz 2089584 BLAKE2B 4f300434ae93b427fe71815f99425d3f1d527c9c22084e396c91ea1d22b02497a90029de94f6b7d26e9eb0e2d731a4092ae8f6fc05361d37790101fe61f334ed SHA512 4ca79c24e87590e01a11d543cfb4c2c00d9f03d00c6b141a1b74d3cc86e6f80d4fe54c34b35f5c01e7d19ae778f47c472babff6ac75bc2ccccd51ada963a56d0
+DIST vcsgraph-0.3.3.tar.gz 99280 BLAKE2B d77f09a184afd7c30851fd59e0a97352ab3c51c56513ae5218efb189d2f1a56c115dc1b7fdbbc7c1b78c9c84a9a8a22c2dc39bcb7f9e8288060619b01baedabd SHA512 977a8f5dad82525192b51769ed6b745c200ea7d6a04570d85074403af054f973f548e89ab97d1e11b53ecc9545a26c7089c153a420f4e6746fcf51d56fa58aa3
+DIST vcsgraph-0.3.3.tar.gz.provenance 9810 BLAKE2B 8b928a7c95447db0e1b656ff07135e6cd61f1a200741ef72f5dcd5078b19d57ae891b94d6767c43096b383c8aaf32beed9a2811a22a82bf1dfa0aa1c523ebc91 SHA512 cefb068f2e2b392004cb715f1107712fcf30e9befa6ea881e178e285388bc7787e2a511e1900868ca9313b5fa45a38f47c8fdd2bd02de8925693786b55113343
diff --git a/dev-python/vcsgraph/vcsgraph-0.3.3.ebuild b/dev-python/vcsgraph/vcsgraph-0.3.3.ebuild
new file mode 100644
index 000000000000..2a45f28a9d42
--- /dev/null
+++ b/dev-python/vcsgraph/vcsgraph-0.3.3.ebuild
@@ -0,0 +1,45 @@
+# Copyright 2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYPI_VERIFY_REPO=https://github.com/breezy-team/vcsgraph
+PYTHON_COMPAT=( python3_{13..14} )
+
+RUST_MIN_VER="1.83"
+CRATES=""
+
+inherit cargo distutils-r1 pypi
+
+DESCRIPTION="Graph algorithms for version control systems"
+HOMEPAGE="
+ https://pypi.org/project/vcsgraph/
+ https://github.com/breezy-team/vcsgraph/
+"
+SRC_URI+="
+ https://github.com/gentoo-crate-dist/${PN}/releases/download/v${PV}/${P}-crates.tar.xz
+"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+BDEPEND="
+ dev-python/setuptools-rust[${PYTHON_USEDEP}]
+"
+
+distutils_enable_tests unittest
+
+QA_FLAGS_IGNORED="usr/lib.*/py.*/site-packages/vcsgraph/_graph_rs.*.so"
+
+src_unpack() {
+ pypi_src_unpack
+ cargo_gen_config
+}
+
+python_test() {
+ cd "${BUILD_DIR}/install$(python_get_sitedir)" || die
+ eunittest
+}
diff --git a/dev-python/virtualenv/Manifest b/dev-python/virtualenv/Manifest
index f621e97955e9..2b84f4a853bd 100644
--- a/dev-python/virtualenv/Manifest
+++ b/dev-python/virtualenv/Manifest
@@ -8,6 +8,8 @@ DIST virtualenv-21.14.10.tar.gz 5501185 BLAKE2B e7e0af87a1d923ca899db15ac92a1a87
DIST virtualenv-21.14.10.tar.gz.provenance 9622 BLAKE2B cefdd192e473a913d659fcd9f9da0dfd44a96f8b2c3638a94adced0246d0ec585c3f01893ee390a848d01f5340ea4b1324fe2c4acb9b3280af18eb789c09eacb SHA512 c856eb9343a104cf8f5388be5bfa0cfb6f5286d2cbdfb425d4613b32b38d0be0a530eb6bf9f89d2deef040dc009e6bb657b23334120c3cedb1e3a96cb316e8f3
DIST virtualenv-21.14.11.tar.gz 5503091 BLAKE2B 73e59fbf96059002e43819076f17912a2fb1a70cc6b188e10d62eb9d39badf3156dcbcdf5f7280b5bba793a42c0a6cdec734f90534eab59c5c67616f577961a2 SHA512 426cf1fa668754df3defb33f8fb92808b57c8093d573269005345206bbf4adab6fca1a8aaa669fd94678681c3fcd685cb545bf4ed1092b01608e32743d9fe65d
DIST virtualenv-21.14.11.tar.gz.provenance 9939 BLAKE2B f1b9d5aacc24af5f6da163863444c58827b272312a03fd5986dd4425298b28d4948e66ccf61614adc76c3f341e084e7fccf6a0a8da20834cb798dcfc3b9d8ea6 SHA512 84f2025ce55b8285dd5fd82f8a5c7c8a6e1743ac775aa9fb3a502f9314dc72d0c83584e9534c907cf3572b7b2226786102614f178730f7a10d68feb60774bf88
+DIST virtualenv-21.14.12.tar.gz 5562800 BLAKE2B e74bae47559d4e42d62cb55b4eb454c89010e7bbe4c01e77353f1330d7d7b5b1d8674a44ab434f8348ae799c03630312a6fc1beccf833c19551a6bfab8e5efe5 SHA512 8ad3ba141e199b74861ca2480a940f022ce117d13c225973eedc96537b6ec99132255d7f34296199e6e6c3dede3db76d3f9c131f3504a805cb56b9d7bb8c8394
+DIST virtualenv-21.14.12.tar.gz.provenance 9575 BLAKE2B f92c135942161076edaf72fc7b458384804533d21d44e283f8be940a01d5bdf76502f4f70fa8ba88173ef2872b7253bfd1e47b36b229543e103ecac90eb27afc SHA512 4cdd9414ea7d623ddcae7d3ea52056843a196f2fe00415a2ed7b2835aaa093d48c595043b9a5fc0dd421627b2d0f32b123ceea4b141c327fafa0fd241af025bf
DIST virtualenv-21.14.3.tar.gz 5464634 BLAKE2B e82707e1a51d55efef6b902fd8f5aa617003fa43d61558a504d7c26186fd64cbf5c559ccb17b0710b2bde0dea7130652d606cc71dfd82936ffe51c046bb74499 SHA512 6ed46584d704a2ea4b4241348a0c8a3dcc7ae0fb5096fe096f60cac1e589b7f634ef46c377b31f3db220b8b0d2cc2f4f1a46294171c662d8fbd8d2d4a569caec
DIST virtualenv-21.14.3.tar.gz.provenance 9808 BLAKE2B 2bd41496285aa992dcebae332feda3bc0b6f6c06483ae09278ebb4e9835df510a66d29806033afda3cce87ea3899aeb4d5eee8f53ce1df2d2543ee32e13127fd SHA512 98c0db6aed32e36ce3b88ae8193a725e9abecff06cbe7e3821e172c82f9bfa03e2e247f50314740f700a0c2d828b254d6bbfb0e74a7919d10d5d33ebac54701b
DIST virtualenv-21.14.5.tar.gz 5467127 BLAKE2B 029434d3c647a5898664b98ddd9fcb7577bc6cbe4e7e5cce308bcac83181e48d55556a9936b4928c26f9f5365bf3551047742d29a82b2233cb047df88336db3c SHA512 d58e9332fc6d79a04d534db9b597cbc7e4abebab11858223baa29cf0284bca72646a909c844c0d141c35e63f7b999879af1eed53d0c51e8e4213c3a494ee615f
diff --git a/dev-python/virtualenv/virtualenv-21.14.12.ebuild b/dev-python/virtualenv/virtualenv-21.14.12.ebuild
new file mode 100644
index 000000000000..f7348466af1b
--- /dev/null
+++ b/dev-python/virtualenv/virtualenv-21.14.12.ebuild
@@ -0,0 +1,131 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYPI_VERIFY_REPO=https://github.com/pypa/virtualenv
+PYTHON_TESTED=( python3_{13..14} )
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Virtual Python Environment builder"
+HOMEPAGE="
+ https://virtualenv.pypa.io/en/stable/
+ https://pypi.org/project/virtualenv/
+ https://github.com/pypa/virtualenv/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-python/distlib-0.3.7[${PYTHON_USEDEP}]
+ >=dev-python/filelock-3.24.2[${PYTHON_USEDEP}]
+ >=dev-python/packaging-23.1[${PYTHON_USEDEP}]
+ >=dev-python/platformdirs-3.9.1[${PYTHON_USEDEP}]
+ >=dev-python/python-discovery-1.6[${PYTHON_USEDEP}]
+
+ dev-python/ensurepip-pip
+ >=dev-python/ensurepip-setuptools-70.1
+ dev-python/ensurepip-wheel
+"
+# coverage is used somehow magically in virtualenv, maybe it actually
+# tests something useful
+BDEPEND="
+ dev-python/hatch-vcs[${PYTHON_USEDEP}]
+ test? (
+ ${RDEPEND}
+ $(python_gen_cond_dep '
+ dev-python/coverage[${PYTHON_USEDEP}]
+ >=dev-python/hatchling-1.27[${PYTHON_USEDEP}]
+ >=dev-python/pip-22.2.1[${PYTHON_USEDEP}]
+ >=dev-python/pytest-mock-3.6.1[${PYTHON_USEDEP}]
+ dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
+ dev-python/pytest-timeout[${PYTHON_USEDEP}]
+ dev-python/pytest-xdist[${PYTHON_USEDEP}]
+ >=dev-python/setuptools-67.8[${PYTHON_USEDEP}]
+ dev-python/time-machine[${PYTHON_USEDEP}]
+ dev-python/wheel[${PYTHON_USEDEP}]
+ >=dev-python/packaging-20.0[${PYTHON_USEDEP}]
+ ' "${PYTHON_TESTED[@]}")
+ )
+"
+
+src_prepare() {
+ local PATCHES=(
+ # use wheels from ensurepip bundle
+ "${FILESDIR}/${PN}-21.5.1-ensurepip.patch"
+ )
+
+ distutils-r1_src_prepare
+
+ # workaround test failures due to warnings from setuptools-scm, sigh
+ echo '[tool.setuptools_scm]' >> pyproject.toml || die
+
+ # remove useless pins
+ sed -i -e 's:,<[=0-9.]*::' pyproject.toml || die
+
+ # remove bundled wheels
+ rm src/virtualenv/seed/wheels/embed/*.whl || die
+}
+
+python_test() {
+ if ! has "${EPYTHON}" "${PYTHON_TESTED[@]/_/.}"; then
+ einfo "Skipping testing on ${EPYTHON}"
+ return
+ fi
+
+ local EPYTEST_DESELECT=(
+ tests/unit/seed/embed/test_bootstrap_link_via_app_data.py::test_seed_link_via_app_data
+ # tests for old wheels with py3.7 support
+ tests/unit/seed/embed/test_pip_invoke.py::test_base_bootstrap_via_pip_invoke
+ tests/unit/seed/wheels/test_wheels_util.py::test_wheel_not_support
+ # broken by different wheel versions in ensurepip
+ tests/unit/seed/wheels/test_acquire_find_wheel.py::test_find_latest_string
+ tests/unit/seed/wheels/test_acquire_find_wheel.py::test_find_exact
+ tests/unit/seed/wheels/test_acquire_find_wheel.py::test_find_latest_none
+ tests/unit/seed/wheels/test_acquire.py::test_download_wheel_bad_output
+ tests/unit/seed/wheels/test_wheels_util.py::test_embed_wheel_below_oldest_supported_is_missing
+ # hangs on a busy system, sigh
+ tests/unit/test_util.py::test_reentrant_file_lock_is_thread_safe
+ # TODO
+ tests/unit/create/via_global_ref/test_build_c_ext.py::test_can_build_c_extensions
+ # random resource leaks or xdist
+ tests/unit/test_file_limit.py::test_too_many_open_files
+ # Internet
+ tests/unit/create/test_creator.py::test_create_distutils_cfg
+ tests/unit/seed/embed/test_pip_invoke.py::test_pip_reseed_removes_previous_version_metadata
+ # we do not use bundled wheels
+ tests/unit/seed/wheels/test_bundle.py::test_every_wheel_on_disk_has_sha256
+ # requires bundled packages in pip
+ tests/unit/test_sbom.py::test_sbom_spdx_declared_license
+ # require pre-commit = internet
+ tests/unit/test_wheel_age.py::test_generator_converges
+ tests/unit/test_wheel_age.py::test_generator_updates_license
+ # TODO
+ tests/unit/seed/embed/test_bootstrap_link_via_app_data.py::test_pip_launcher_record_matches_contents
+ tests/unit/seed/wheels/test_acquire.py::test_download_wheel_skips_local_pip_module
+ tests/unit/seed/wheels/test_acquire_find_wheel.py::test_find_latest
+ # some platformdirs nonsense (bundled packages?)
+ tests/unit/config/test___main__.py::test_module_entry_from_target_install
+ )
+
+ local -x TZ=UTC
+ local EPYTEST_PLUGINS=( pytest-{mock,rerunfailures} time-machine )
+ local EPYTEST_RERUNS=5
+ local EPYTEST_TIMEOUT=180
+ local EPYTEST_XDIST=1
+ epytest -o addopts=
+}
+
+src_install() {
+ distutils-r1_src_install
+
+ # remove bundled wheels, we're using ensurepip bundle instead
+ find "${ED}" -name '*.whl' -delete || die
+}
diff --git a/dev-python/wcmatch/Manifest b/dev-python/wcmatch/Manifest
index f2ac1761d057..3bb4e0ae20e9 100644
--- a/dev-python/wcmatch/Manifest
+++ b/dev-python/wcmatch/Manifest
@@ -1,2 +1,3 @@
DIST wcmatch-11.0.1.gh.tar.gz 150081 BLAKE2B c80a055c02d0fc671fae4ef7dd291c8e58bdf91a446394a22c845a6b5c0ad9842874631f0e446b7e407d34e61a938c9e18e6925b459205b85e93bed00d42fd9d SHA512 72ae74717212fd9d1cc8c726c6e07f6b2aa88fc6c508d03a8f616dc902fe5b08d356454b392fbfb4bc626df25c55153be8ec1cd42cc345a532a4cf489ea412c3
DIST wcmatch-11.1.gh.tar.gz 134230 BLAKE2B 8f87a7db63317b7e06cab2a0ef1192db4fec701ff0c3a759df0e7315dadded6575302ef66f1ec73202dc3a6d92cbac9186ede3286592101e3e36798ce5647667 SHA512 4729a2d1a70753e5bfe4183099a1fd052316b7249c1d69b55d776d87459d20fa01b4146d606e80afb52c3eb457d5d612409d1846cf2c56563306c7fc3530df0d
+DIST wcmatch-11.2.gh.tar.gz 139990 BLAKE2B 4635312c36ee79ed13e076f9f262bd7cfbe1166c69645d9f80f534f50313460c72c1f690b793d48578c55fe72faceb0feec7cf8a703096ce3815dbd7e8f53ca3 SHA512 475c8b652d1cf876ad4b0d13e2adef4742f1bcad072de22f000f08f6b8924dfe41fe24149e246501a0dc23da2c2b3807f66c8f90fe71216f1ee4d529906d5c74
diff --git a/dev-python/wcmatch/wcmatch-11.2.ebuild b/dev-python/wcmatch/wcmatch-11.2.ebuild
new file mode 100644
index 000000000000..7e487e22e2a9
--- /dev/null
+++ b/dev-python/wcmatch/wcmatch-11.2.ebuild
@@ -0,0 +1,50 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+DISTUTILS_USE_PEP517=hatchling
+
+inherit distutils-r1
+
+DESCRIPTION="Wildcard/glob file name matcher"
+HOMEPAGE="
+ https://github.com/facelessuser/wcmatch/
+ https://pypi.org/project/wcmatch/
+"
+SRC_URI="
+ https://github.com/facelessuser/wcmatch/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86"
+
+RDEPEND="
+ >=dev-python/bracex-3.2[${PYTHON_USEDEP}]
+"
+
+BDEPEND="
+ test? (
+ dev-vcs/git
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ # tests require some files in homedir
+ > "${HOME}"/test1.txt || die
+ > "${HOME}"/test2.txt || die
+
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ # https://github.com/python/cpython/issues/155823
+ local -x PYTHON_JIT=0
+ epytest
+}
diff --git a/dev-python/xlsxwriter/Manifest b/dev-python/xlsxwriter/Manifest
index 0033b568b31e..e70c39c777c8 100644
--- a/dev-python/xlsxwriter/Manifest
+++ b/dev-python/xlsxwriter/Manifest
@@ -1 +1,2 @@
DIST XlsxWriter-RELEASE_3.2.9.gh.tar.gz 24923295 BLAKE2B 7a344b5670b6264c8e7bb8fd633566e88b77368788edabd67f7ff6cfb66d28cfc2791e97ad367a3bf8d5e91e9c3f238e6656c87076779a3b21594af96891f2e8 SHA512 7cfcc6e4123a998c369fd352f2ef725ee2781f001d867a7b2c1c1cb6ede5852f9b33e4e2f237dcbe583e0c1ee0573bb068d2a0d39b1fd8fd21ac7192b36ac695
+DIST XlsxWriter-RELEASE_3.3.0.gh.tar.gz 25040885 BLAKE2B 0b170561a92c690795f501d37a72503a852d96a6c8cef5a3368d29d56a2662fd8704a5e510b18b9aa786717a1e2c81c6a159da3eed7881b287f69bd9c148da6b SHA512 9b80288e20471bf793cb24a3a3ef34a56e17210fb5dfa5c7b8b4e5c69fe0b2e41cbfc00f487899cc051f631fab8dac30986c4b038cc05e8ab290236df93dc434
diff --git a/dev-python/xlsxwriter/xlsxwriter-3.3.0.ebuild b/dev-python/xlsxwriter/xlsxwriter-3.3.0.ebuild
new file mode 100644
index 000000000000..fea7791b689e
--- /dev/null
+++ b/dev-python/xlsxwriter/xlsxwriter-3.3.0.ebuild
@@ -0,0 +1,29 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1
+
+TAG=RELEASE_${PV}
+MY_P=XlsxWriter-${TAG}
+DESCRIPTION="Python module for creating Excel XLSX files"
+HOMEPAGE="
+ https://github.com/jmcnamara/XlsxWriter/
+ https://pypi.org/project/xlsxwriter/
+"
+SRC_URI="
+ https://github.com/jmcnamara/XlsxWriter/archive/${TAG}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
diff --git a/dev-python/zipp/Manifest b/dev-python/zipp/Manifest
index 6d8c477ad6f7..35a4899f97dd 100644
--- a/dev-python/zipp/Manifest
+++ b/dev-python/zipp/Manifest
@@ -1,2 +1,3 @@
DIST zipp-4.1.0.tar.gz 26214 BLAKE2B 8ef46c33c39adb1894599278307bfea4c1b9fbede22bff698585185fe3bc814a5460502896f8cdb38beb99d37a83e881cdded0db8686d0a25e4fccdb56bb4bbe SHA512 1648ee2581e958ff11472357784b34111f86fd2c2281bb35ca8122f238c721c5a1e54332ffe1fb03208dfee2706adb39ede5389b2d3612c9134f3662bef54ffa
DIST zipp-4.1.1.tar.gz 27649 BLAKE2B af88a8dc9dfdbc94c08316ad25d07ca964ed47d9d69900e1dd380abfa81a4bfe755cc9909f5f027bc090522c62e4768dbd4cbc7c202bca8f252479b5048627ee SHA512 218a1c11f143bb581c396d4652f46680cce04098440ba202599a8953f2bc5ffbaecaba97048c62fd34d1ed55fe9490859c22ad091107e79cbebf23ac1a12729b
+DIST zipp-4.1.2.tar.gz 27864 BLAKE2B a54f6737aaefd1f9e8651a3d051c00d301563e5f51610e6101c4061f18f4db8fa30c505918a90c4df9be51264807065ae741397be914b68c7ea126bd8949116b SHA512 8c4e21bd4547aef94d0a7fe3d85df6fb36b66a6ae162674565b7d209b563ce3eeb5bcd5fdeacb864faab91c49b39a7526d57bf68982c74a87b360eaea7d1b028
diff --git a/dev-python/zipp/zipp-4.1.2.ebuild b/dev-python/zipp/zipp-4.1.2.ebuild
new file mode 100644
index 000000000000..de79dbca9cea
--- /dev/null
+++ b/dev-python/zipp/zipp-4.1.2.ebuild
@@ -0,0 +1,54 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# please keep this ebuild at EAPI 8 -- sys-apps/portage dep
+EAPI=8
+
+DISTUTILS_USE_PEP517=flit-core
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Backport of pathlib-compatible object wrapper for zip files"
+HOMEPAGE="
+ https://github.com/jaraco/zipp/
+ https://pypi.org/project/zipp/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos ~x64-solaris"
+
+# big_o is only used in test_complexity, that we ignore
+BDEPEND="
+ test? (
+ dev-python/jaraco-functools[${PYTHON_USEDEP}]
+ dev-python/jaraco-itertools[${PYTHON_USEDEP}]
+ dev-python/jaraco-test[${PYTHON_USEDEP}]
+ dev-python/more-itertools[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+EPYTEST_IGNORE=(
+ # performance tests are flaky by design
+ tests/test_complexity.py
+)
+
+src_configure() {
+ grep -q 'build-backend = "setuptools' pyproject.toml ||
+ die "Upstream changed build-backend, recheck"
+ # write a custom pyproject.toml to ease setuptools bootstrap
+ cat > pyproject.toml <<-EOF || die
+ [build-system]
+ requires = ["flit_core >=3.2,<4"]
+ build-backend = "flit_core.buildapi"
+
+ [project]
+ name = "zipp"
+ version = "${PV}"
+ description = "Backport of pathlib-compatible object wrapper for zip files"
+ EOF
+}