summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
authorLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2026-04-10 07:13:54 +0000
committerLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2026-04-10 07:13:54 +0000
commit15fd019849755dfcc5983cc6f9d2cffe66f31f20 (patch)
tree3afe2dc1647820d7dffe538c1235a066188ba208 /dev-python
parent36c0b912da359cb29be13d9f840a71ce188153cb (diff)
downloadbaldeagleos-repo-15fd019849755dfcc5983cc6f9d2cffe66f31f20.tar.gz
baldeagleos-repo-15fd019849755dfcc5983cc6f9d2cffe66f31f20.tar.xz
baldeagleos-repo-15fd019849755dfcc5983cc6f9d2cffe66f31f20.zip
Adding metadata
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/boto3/Manifest1
-rw-r--r--dev-python/boto3/boto3-1.42.87.ebuild53
-rw-r--r--dev-python/botocore/Manifest1
-rw-r--r--dev-python/botocore/botocore-1.42.87.ebuild67
-rw-r--r--dev-python/channels/Manifest6
-rw-r--r--dev-python/channels/channels-3.0.5.ebuild41
-rw-r--r--dev-python/channels/channels-4.2.2.ebuild34
-rw-r--r--dev-python/channels/channels-4.3.2.ebuild62
-rw-r--r--dev-python/channels/files/channels-4.3.2-fix-install.patch14
-rw-r--r--dev-python/channels/metadata.xml11
-rw-r--r--dev-python/fakeredis/Manifest2
-rw-r--r--dev-python/fakeredis/fakeredis-2.35.0.ebuild98
-rw-r--r--dev-python/google-api-core/Manifest2
-rw-r--r--dev-python/google-api-core/google-api-core-2.30.3.ebuild55
-rw-r--r--dev-python/google-auth/Manifest2
-rw-r--r--dev-python/google-auth/google-auth-2.49.2.ebuild62
-rw-r--r--dev-python/langdetect/Manifest2
-rw-r--r--dev-python/langdetect/files/langdetect-1.0.9-explicit-config.patch13
-rw-r--r--dev-python/langdetect/langdetect-1.0.9.ebuild4
-rw-r--r--dev-python/langdetect/metadata.xml10
-rw-r--r--dev-python/librt/Manifest2
-rw-r--r--dev-python/librt/librt-0.9.0.ebuild40
-rw-r--r--dev-python/more-itertools/Manifest1
-rw-r--r--dev-python/more-itertools/more-itertools-11.0.2.ebuild23
-rw-r--r--dev-python/plotly/Manifest1
-rw-r--r--dev-python/plotly/plotly-6.7.0.ebuild103
-rw-r--r--dev-python/prometheus-client/Manifest1
-rw-r--r--dev-python/prometheus-client/prometheus-client-0.25.0.ebuild43
-rw-r--r--dev-python/pyacoustid/Manifest2
-rw-r--r--dev-python/pyacoustid/pyacoustid-1.3.1.ebuild52
-rw-r--r--dev-python/pysnmp/Manifest1
-rw-r--r--dev-python/pysnmp/pysnmp-7.1.23.ebuild49
-rw-r--r--dev-python/pytest-httpx/Manifest2
-rw-r--r--dev-python/pytest-httpx/pytest-httpx-0.36.2.ebuild40
-rw-r--r--dev-python/pytools/Manifest2
-rw-r--r--dev-python/pytools/pytools-2026.1.ebuild34
-rw-r--r--dev-python/selenium/Manifest2
-rw-r--r--dev-python/selenium/selenium-4.42.0.ebuild165
-rw-r--r--dev-python/smbus2/Manifest1
-rw-r--r--dev-python/smbus2/smbus2-0.6.1.ebuild30
-rw-r--r--dev-python/sphinx-autodoc-typehints/Manifest2
-rw-r--r--dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-3.10.0.ebuild44
-rw-r--r--dev-python/tox/Manifest2
-rw-r--r--dev-python/tox/tox-4.52.1.ebuild95
-rw-r--r--dev-python/translate-toolkit/Manifest1
-rw-r--r--dev-python/translate-toolkit/translate-toolkit-3.19.4.ebuild130
-rw-r--r--dev-python/uv-build/Manifest1
-rw-r--r--dev-python/uv-build/uv-build-0.11.6.ebuild99
-rw-r--r--dev-python/uv/Manifest2
-rw-r--r--dev-python/uv/uv-0.11.6.ebuild164
-rw-r--r--dev-python/virtualenv/Manifest2
-rw-r--r--dev-python/virtualenv/virtualenv-21.2.1.ebuild134
-rw-r--r--dev-python/wrapt/Manifest4
-rw-r--r--dev-python/wrapt/wrapt-2.0.1.ebuild36
-rw-r--r--dev-python/wrapt/wrapt-2.1.0.ebuild38
-rw-r--r--dev-python/wrapt/wrapt-2.2.0_rc2.ebuild (renamed from dev-python/wrapt/wrapt-2.1.1.ebuild)7
56 files changed, 1716 insertions, 179 deletions
diff --git a/dev-python/boto3/Manifest b/dev-python/boto3/Manifest
index a55628a6e51b..a5376739d27f 100644
--- a/dev-python/boto3/Manifest
+++ b/dev-python/boto3/Manifest
@@ -7,3 +7,4 @@ DIST boto3-1.42.83.gh.tar.gz 1114541 BLAKE2B 8f43a35b343b6d028a7e864a9aa78b4215d
DIST boto3-1.42.84.gh.tar.gz 1115838 BLAKE2B de89b745b6bc04a39e9fcc9fcb92261c654e7faf289f2547e6ecbb1d8800174ff054b4c4ca75cc46f37335b8a36a87d74249681c8a34c8e971c2f1a1b1d62e9c SHA512 18594daff40d4e8f69bb71e970e32bc137bdeed8c82a1d57e8b9ad317935cb6aee6bc37e8381ab0f37682a6c5c967f94f7d1f810cf027c637ac1e3338942982f
DIST boto3-1.42.85.gh.tar.gz 1117988 BLAKE2B cdebcfc426c6412ab2d501c9cafb2ce65f1f19c666ceeaa8999a9e09252e4eae1426368a124ceff2de0eb9db85180d9dd0dca927035dd653028912de0c6b0cc0 SHA512 0b4beb5a279c7401f8ff7adaf8fa56c1413283a96b225e16481d11af667f0f293a6fddc5c2858fb00530276cd7b8a6590e23359f7184d9c56c393d729d749c66
DIST boto3-1.42.86.gh.tar.gz 1118949 BLAKE2B 567875d3a130f6b7bb5a7eecfe81bddc24b7df8f8e1a45acf0ed28c10afc58f596cea71c347171bb86e73423b19f1e84bee8827da2b5b52e93ea0e9f1e7b51a7 SHA512 141373dcfbf13026f243433bd3b403bd31f08ed0f63496c7eac0779cf9bf798eee132854afb1b317226d905a98a86de93d95dd6815ec9863c01a66c1daf38eac
+DIST boto3-1.42.87.gh.tar.gz 1119510 BLAKE2B f800b5931768f707c5f53c7171d5a0828f286f92bb87a7840747082dd18891dfa12140441d335be081b7b2f2d7143c65d15a8ba8ee9d164e2a2eefb814892d2d SHA512 caf856381edaee513a5331402efcc5ec79a86ea22d415850f91d24fb4f4704e1a68433b4b05e8100ab207be354c73f3a4d869716c1b624f543628692044b60c9
diff --git a/dev-python/boto3/boto3-1.42.87.ebuild b/dev-python/boto3/boto3-1.42.87.ebuild
new file mode 100644
index 000000000000..6e5f06a012ad
--- /dev/null
+++ b/dev-python/boto3/boto3-1.42.87.ebuild
@@ -0,0 +1,53 @@
+# 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_{10..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="The AWS SDK for Python"
+HOMEPAGE="
+ https://github.com/boto/boto3/
+ https://pypi.org/project/boto3/
+"
+SRC_URI="
+ https://github.com/boto/boto3/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/botocore-${PV}[${PYTHON_USEDEP}]
+ >=dev-python/jmespath-0.7.1[${PYTHON_USEDEP}]
+ >=dev-python/s3transfer-0.16.0[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ # don't lock versions to narrow ranges
+ sed -e '/botocore/ d' \
+ -e '/jmespath/ d' \
+ -e '/s3transfer/ d' \
+ -i setup.py || die
+
+ # do not rely on bundled deps in botocore (sic!)
+ find -name '*.py' -exec sed -i \
+ -e 's:from botocore[.]vendored import:import:' \
+ -e 's:from botocore[.]vendored[.]:from :' \
+ {} + || die
+
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ epytest tests/{functional,unit}
+}
diff --git a/dev-python/botocore/Manifest b/dev-python/botocore/Manifest
index 630a00fcc7d4..a822471aa8fb 100644
--- a/dev-python/botocore/Manifest
+++ b/dev-python/botocore/Manifest
@@ -7,3 +7,4 @@ DIST botocore-1.42.83.gh.tar.gz 16051706 BLAKE2B d34e6dfb9d1db5bfa58d84930167d8a
DIST botocore-1.42.84.gh.tar.gz 16065334 BLAKE2B 7166ab60b4a9c01528f87030460e0f783b54a2197ae4bcc72a9efb20dd21a8540695e96b2e45f7245fae373a46995c27ff61133518de42a9a3f2a59b2eae0906 SHA512 29e339d23d93d5ab1381a5f893c257fcf6e300ab509e18c36a6ddb61e402ddd203e37d53979a58b98bdcf935c0fd00d7351bd439f3553b8df3653a9bc7aa0ee0
DIST botocore-1.42.85.gh.tar.gz 16078818 BLAKE2B 16b7eeb119c7f3b6c99f89bf858632b1f47f9562861d63442b924943acce4b0295ed7078b7372f292111de9cad21fa4fdf67f47f0a0869150d5eb637565030e5 SHA512 ce022edf6c8c8c5515e916684384983fea68c51b13c3c659f445a842e4b7873577e3746954eeaff5be3343da6e93fd6589cae3053317addf47eda90dc8ce4754
DIST botocore-1.42.86.gh.tar.gz 16096034 BLAKE2B 8e3fa6ca0d609d658cf0e7be713d31a47a0f0295a2e6a808177fb1a57a9ef662eafa6c54e901370a08e7d945e67c3a0f2e6a9e21222fe89440c6994759c624a8 SHA512 d1d4206fde4a2c29a602513676b3a444679fb3d75c7d2fb1f37b6afde4d92dd5bdaab336cf3670eeff96fa99b557bc7b3e53be63fab4ea5de65b849db8410160
+DIST botocore-1.42.87.gh.tar.gz 16110857 BLAKE2B d3f328970ab32dfcb4a139e15de275e468afb8441de33a16cb52ee605b316ce6ccf2c6b59c728766ee5e83d9327e3bb8ea5cbb05507783b423e61ea7a3a215e3 SHA512 bb549cd3de753cf05c6a60114743054c09a0f39e528f409702915a12f3bb687b338bd55e43be75fe6effa805c85af7a405680a4e385e9844a01bb89309446eac
diff --git a/dev-python/botocore/botocore-1.42.87.ebuild b/dev-python/botocore/botocore-1.42.87.ebuild
new file mode 100644
index 000000000000..f6ce0d9ed8d5
--- /dev/null
+++ b/dev-python/botocore/botocore-1.42.87.ebuild
@@ -0,0 +1,67 @@
+# 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_{10..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="Low-level, data-driven core of boto 3"
+HOMEPAGE="
+ https://github.com/boto/botocore/
+ https://pypi.org/project/botocore/
+"
+SRC_URI="
+ https://github.com/boto/botocore/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
+
+RDEPEND="
+ <dev-python/jmespath-2[${PYTHON_USEDEP}]
+ dev-python/python-dateutil[${PYTHON_USEDEP}]
+ >=dev-python/urllib3-1.25.4[${PYTHON_USEDEP}]
+"
+# unbundled packages
+RDEPEND+="
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/six[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/jsonschema[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ # unpin deps
+ sed -i -e "s:>=.*':':" setup.py || die
+
+ # unbundle deps
+ rm -r botocore/vendored || die
+ find -name '*.py' -exec sed -i \
+ -e 's:from botocore[.]vendored import:import:' \
+ -e 's:from botocore[.]vendored[.]:from :' \
+ {} + || die
+
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # rely on bundled six
+ tests/functional/test_six_imports.py::test_no_bare_six_imports
+ tests/functional/test_six_threading.py::test_six_thread_safety
+ )
+
+ epytest tests/{functional,unit}
+}
diff --git a/dev-python/channels/Manifest b/dev-python/channels/Manifest
index 93bbf2713782..b58c0c2009cc 100644
--- a/dev-python/channels/Manifest
+++ b/dev-python/channels/Manifest
@@ -1 +1,5 @@
-DIST channels-4.3.2.gh.tar.gz 206077 BLAKE2B c0913d67dc74bc728dd828584cf803b4ad175bab717de71ccf1e1c5b6aaca296fd15d011deb07b2876e63b7daaefab5e5ee24c323e907b3c563f5358759f14b8 SHA512 29d9c91aca721fad44143978863c45812bf596bb65cf99084803f78d85c664d5cc7ca1015df151cdc27754b822c9cfd18102989b6e5f59bc50257f6c9d8b8b3e
+DIST channels-3.0.5.gh.tar.gz 200118 BLAKE2B 7a7653f986face1e87369917317db013e5c9fc912c6e2d7c737054ffef167bd01feb48f7e2d00d0d331e7a16093478e5416645717aed59e46dfec8f9b3641a2e SHA512 b12d1aec9602b702b5a097e9ca52dccad49940f82fcbe5594890c9bd1f1879a2fcf0f29630ca53e4972a26853df8f71d07d7b2cccd876abbf2417a76dee281bf
+DIST channels-4.2.2.gh.tar.gz 197010 BLAKE2B 321bf62c68038ce511145acd43c036dd298d58056f20ab2d676c3e3a8d6360a86a4f07c8f9ed6c123f888c012d69da22cfae4fb477dd5422cf326bf2de6a4c8f SHA512 8f7c8f27981988fed8ec254db91ce0a130b24842949ef94cc9ae21b4a259a7003654ec86c4e18aa81924e26d9b81b6a2aafaac404e490cbdda6b4a100476917a
+EBUILD channels-3.0.5.ebuild 936 BLAKE2B 788d0e9a2822dd9d0ed2d1d1a62135aeb5f244710b66f7591962518a5204cde5b8e779280783dd1d1a1b1a3fa9b272a0eb457f1d88d62c8ecefc8f67384929ef SHA512 89003fa68c7ab1cdd1a329f4389ba6fe28f491217a70c03b2979a992b450d8aa1a02f024f073ad5fc0aa1d093d81c6c8b1adaa45bdc9a179f5bd1607d85c13ef
+EBUILD channels-4.2.2.ebuild 829 BLAKE2B e5946c4a0eaf9fb3ffa2092a3d5d49d3d6ee16f151483fa2b716c8bab3350eca5e330a22822f881421d8882ffb970f4c56154c613477d094319e46addf1a5537 SHA512 84ce30d87a654c1a89ac299fb0f6447ca9c736e4b63497d83fc2687384e9cbe8094ba8f5021a19f726f9bae97c6b6d11eddef6a9ee5c275efe827bf95d3848ec
+MISC metadata.xml 445 BLAKE2B b4c0a41d6caadfbc53cbba3c41f8b7689a286b3f8d285c37a88a1f79d8dc350b82fea255048c022b92091a1e0cc67bf19645d6c32183b82a6dd49cccadf5078f SHA512 380c8b98efe8d9a2513c51899b7de90b115d4a51f104f46b552ff8929c322850e511e245a2ba0e976213416ae7241a17292ca98248caacfc891fcdcf5cea5d44
diff --git a/dev-python/channels/channels-3.0.5.ebuild b/dev-python/channels/channels-3.0.5.ebuild
new file mode 100644
index 000000000000..03a4923889fe
--- /dev/null
+++ b/dev-python/channels/channels-3.0.5.ebuild
@@ -0,0 +1,41 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="Extends Django abilities beyond HTTP protocol"
+HOMEPAGE="https://github.com/django/channels"
+SRC_URI="https://github.com/django/${PN}/archive/${PV}.tar.gz -> ${P}.gh.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64"
+
+DEPEND="
+ >=dev-python/django-2.2[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/async-timeout[${PYTHON_USEDEP}]
+ >=dev-python/daphne-3.0[${PYTHON_USEDEP}]
+ <dev-python/daphne-4.0[${PYTHON_USEDEP}]
+ dev-python/pytest-asyncio[${PYTHON_USEDEP}]
+ dev-python/pytest-django[${PYTHON_USEDEP}]
+ )
+"
+
+DOCS=( README.rst )
+
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ # https://github.com/django/channels/issues/1915
+ echo 'asyncio_mode = auto' >> setup.cfg
+
+ distutils-r1_python_prepare_all
+}
diff --git a/dev-python/channels/channels-4.2.2.ebuild b/dev-python/channels/channels-4.2.2.ebuild
new file mode 100644
index 000000000000..710613a7cbd1
--- /dev/null
+++ b/dev-python/channels/channels-4.2.2.ebuild
@@ -0,0 +1,34 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="Extends Django abilities beyond HTTP protocol"
+HOMEPAGE="https://github.com/django/channels"
+SRC_URI="https://github.com/django/${PN}/archive/${PV}.tar.gz -> ${P}.gh.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64"
+
+DEPEND="
+ >=dev-python/asgiref-3.5.0[${PYTHON_USEDEP}]
+ >=dev-python/django-4.2[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/async-timeout[${PYTHON_USEDEP}]
+ >=dev-python/daphne-4.0.0[${PYTHON_USEDEP}]
+ dev-python/pytest-asyncio[${PYTHON_USEDEP}]
+ dev-python/pytest-django[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+distutils_enable_sphinx docs \
+ dev-python/sphinx-rtd-theme
diff --git a/dev-python/channels/channels-4.3.2.ebuild b/dev-python/channels/channels-4.3.2.ebuild
deleted file mode 100644
index ffafd1ece52b..000000000000
--- a/dev-python/channels/channels-4.3.2.ebuild
+++ /dev/null
@@ -1,62 +0,0 @@
-# Copyright 2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{10..14} )
-
-inherit distutils-r1 #pypi
-
-DESCRIPTION="Brings async, event-driven capabilities to Django"
-HOMEPAGE="
- https://channels.readthedocs.io/
- https://github.com/django/channels/
- https://pypi.org/project/channels/
-"
-# no tests in sdist
-SRC_URI="
- https://github.com/django/channels/archive/refs/tags/${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="~amd64"
-
-RDEPEND="
- <dev-python/asgiref-4[${PYTHON_USEDEP}]
- >=dev-python/asgiref-3.9.0[${PYTHON_USEDEP}]
- >=dev-python/django-4.2[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- dev-python/async-timeout[${PYTHON_USEDEP}]
- dev-python/selenium[${PYTHON_USEDEP}]
- )
-"
-
-EPYTEST_IGNORE=(
- # avoid daphne as it requires autobahn
- tests/sample_project/tests/test_selenium.py
- tests/security/test_websocket.py
- tests/test_database.py
- tests/test_generic_http.py
- tests/test_generic_websocket.py
- tests/test_http.py
- tests/test_testing.py
-)
-
-EPYTEST_PLUGINS=( pytest-django pytest-asyncio )
-distutils_enable_tests pytest
-
-PATCHES=(
- "${FILESDIR}"/channels-4.3.2-fix-install.patch
-)
-
-python_prepare_all() {
- # avoid daphne as it requires autobahn
- sed -e '/"daphne"/d' -i tests/sample_project/config/settings.py || die
-
- distutils-r1_python_prepare_all
-}
diff --git a/dev-python/channels/files/channels-4.3.2-fix-install.patch b/dev-python/channels/files/channels-4.3.2-fix-install.patch
deleted file mode 100644
index 18eca8f75445..000000000000
--- a/dev-python/channels/files/channels-4.3.2-fix-install.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff --git a/setup.cfg b/setup.cfg
-index 742e1f6..43d8c0d 100644
---- a/setup.cfg
-+++ b/setup.cfg
-@@ -52,7 +52,7 @@ types =
-
- [options.packages.find]
- exclude =
-- tests
-+ tests*
-
- [flake8]
- exclude = venv/*,tox/*,docs/*,testproject/*,build/*
-
diff --git a/dev-python/channels/metadata.xml b/dev-python/channels/metadata.xml
index 0dec5a678a5f..7093cae71294 100644
--- a/dev-python/channels/metadata.xml
+++ b/dev-python/channels/metadata.xml
@@ -2,10 +2,11 @@
<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
- <email>negril.nx+gentoo@gmail.com</email>
- <name>Paul Zander</name>
+ <email>marcin.deranek@slonko.net</email>
+ <name>Marcin Deranek</name>
</maintainer>
-
- <origin>gentoo-guru-overlay</origin>
- <stabilize-allarches/>
+ <upstream>
+ <bugs-to>https://github.com/django/channels/issues</bugs-to>
+ </upstream>
+ <origin>slonko-overlay</origin>
</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/fakeredis/Manifest b/dev-python/fakeredis/Manifest
index c60ac3b744bb..958293e000c2 100644
--- a/dev-python/fakeredis/Manifest
+++ b/dev-python/fakeredis/Manifest
@@ -1,2 +1,4 @@
DIST fakeredis-2.34.1.tar.gz 177315 BLAKE2B ed0ca71b7feeeb81cb5bd927eb19a4bc3af56ae1de08334c5825dce88af8197dcc946b8cd3d98ac32972f99c47a480c9669b9fb252e66022ff0dfbe8fce0056f SHA512 26b60db9d4d142cbaaaf51085e4efe44380626c9600145ef4b8254a92eec02423a90b0587817d94c6559f046c7d9adbce1fb25a678d00390be91132de192ece3
DIST fakeredis-2.34.1.tar.gz.provenance 9528 BLAKE2B bd549cae9bb98f5d85879b38f87d4aed02ebd0b79e858eb273ef94b7c68caec221f684766ad107c445219a792ee9cd61a68791b956b90312ee6160899dbf622f SHA512 d93171e6b50361fc3717461e926d05a4c9773f5381d33c7f5ef8eba6630bb0393cbe9ffa3222f91b375576b457fa431e4037b25a75fcfa39c35b1a25050db899
+DIST fakeredis-2.35.0.tar.gz 189000 BLAKE2B 425fa7663898fd8d3ea8c628c82528fe7654d11daf057daee31c9c35daa643ec557668e127ecd4ca652b40dcd8e5e95af4f235098335b711a4900f30e4fbadc1 SHA512 8ac1876c4d2a01338083c180d8eaa8575faf016770947ff8ad90019117f4e1df88ab4be370f6e1b286c265cc446fdc832fbeb2ae19fd9f6d8aadf217e2f59578
+DIST fakeredis-2.35.0.tar.gz.provenance 9493 BLAKE2B 08f75a47d77f6eb860922dcd23cbd6fff6ed9c659b8f557a2b739049c49713f546af0a5c091ba0aae2d6b86a11808ab19e1a44fbbe6a96c4be795cac2abc629d SHA512 8545733e64c6d996e498c4bff46641a71068c92c8f91aee1a35bd0f06e2020e79db5a4f1dd65c2decaa8a3df253f84913d79b5159c30a30fadcdc58432e1845f
diff --git a/dev-python/fakeredis/fakeredis-2.35.0.ebuild b/dev-python/fakeredis/fakeredis-2.35.0.ebuild
new file mode 100644
index 000000000000..c5aa2105cdcf
--- /dev/null
+++ b/dev-python/fakeredis/fakeredis-2.35.0.ebuild
@@ -0,0 +1,98 @@
+# Copyright 2020-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/cunla/fakeredis-py
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Fake implementation of redis API for testing purposes"
+HOMEPAGE="
+ https://github.com/cunla/fakeredis-py/
+ https://pypi.org/project/fakeredis/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/redis-4.3[${PYTHON_USEDEP}]
+ >=dev-python/sortedcontainers-2[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-db/redis
+ dev-python/packaging[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-{asyncio,mock} )
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # TODO
+ "test/test_mixins/test_pubsub_commands.py::test_pubsub_channels[StrictRedis2]"
+ "test/test_mixins/test_pubsub_commands.py::test_pubsub_channels[StrictRedis3]"
+ "test/test_mixins/test_pubsub_commands.py::test_published_message_to_shard_channel[StrictRedis3]"
+ test/test_mixins/test_set_commands.py::test_smismember_wrong_type
+ "test/test_mixins/test_pubsub_commands.py::test_pubsub_shardnumsub[StrictRedis2]"
+ "test/test_mixins/test_pubsub_commands.py::test_pubsub_shardnumsub[StrictRedis3]"
+ "test/test_mixins/test_streams_commands.py::test_xgroup_setid_redis7[StrictRedis2]"
+ "test/test_mixins/test_streams_commands.py::test_xgroup_setid_redis7[StrictRedis3]"
+ # json ext
+ test/test_json/test_json.py
+ test/test_json/test_json_arr_commands.py
+ # unknown command 'evalsha'
+ "test/test_asyncredis.py::test_async_lock[fake_resp2]"
+ "test/test_asyncredis.py::test_async_lock[fake_resp3]"
+ # incompatible with xdist, not worth extra effort
+ test/test_tcp_server/test_connectivity.py
+ # flaky
+ test/test_mixins/test_server_commands.py::test_bgsave
+)
+EPYTEST_IGNORE=(
+ # these tests fail a lot...
+ test/test_hypothesis
+ test/test_hypothesis_joint.py
+ # require valkey package
+ test/test_valkey
+)
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # do not install duplicate license
+ sed -i -e '\@fakeredis/LICENSE@d' pyproject.toml || die
+}
+
+src_test() {
+ local redis_pid="${T}"/redis.pid
+ local redis_port=6390
+
+ einfo "Spawning Redis"
+ einfo "NOTE: Port ${redis_port} must be free"
+ "${EPREFIX}"/usr/sbin/redis-server - <<- EOF || die "Unable to start redis server"
+ daemonize yes
+ pidfile ${redis_pid}
+ port ${redis_port}
+ bind 127.0.0.1
+ EOF
+
+ # Run the tests
+ distutils-r1_src_test
+
+ # Clean up afterwards
+ kill "$(<"${redis_pid}")" || die
+}
+
+python_test() {
+ # we can run "fake" tests in parallel, but "real" seem to share
+ # the same connection
+ epytest -m "not real"
+ EPYTEST_XDIST= epytest -m "real"
+}
diff --git a/dev-python/google-api-core/Manifest b/dev-python/google-api-core/Manifest
index d00d5279eb72..12799c03af59 100644
--- a/dev-python/google-api-core/Manifest
+++ b/dev-python/google-api-core/Manifest
@@ -3,4 +3,6 @@ DIST google_api_core-2.30.0.tar.gz.provenance 5818 BLAKE2B 9fa55ad67d35ed1765553
DIST google_api_core-2.30.1.tar.gz 176742 BLAKE2B 2e5f67f9d37544eb8d5f0991babc57b58246dbfbf31037503c8523d5e9c4dec9e081b353b8ab0a8d54dda3be30a2c23ffa2b0ecdc686b7f5a52e94fda3fbc16c SHA512 82feb714d1182705dd08c5b3f7606d8341fe765825b034eeb90c789f717157f208b241f27feda143daa240d86dbfe22e24dcbbb1812b9e6bb3c7ef5690b8ec86
DIST google_api_core-2.30.2.tar.gz 176862 BLAKE2B 700bcebabfa41d653d1fe3b55bb4f70aaff80b9152b819e4af60e1b2440e242a131b275ef26ccef8ae2062c4e5a5b4a985a37dd6910492492e2f3b75755ee543 SHA512 5626a9f3bb1faf83ad3e3caf9093b7514ef2c3ac391a6227b0eabb0b59ec9e5a19f86eba85320db152068053cf05f7a28e1e17437d60d4272d380c8319c7b50a
DIST google_api_core-2.30.2.tar.gz.provenance 5896 BLAKE2B bdc2e34b15ae52c58090c2e6e88a86a206919825fbb7cfe33edafe5e6b76e78060e080be69e0a0b348c0ff3f47ef0b2a511de3e398543fbec20095e7d2b05169 SHA512 2e0fe2f790e27f386ee49d68e004ffc2ca8e43df1eaeda40c43c2aed61dad5820c5d01ac2225a7ecd6804014a81727fec6e789f706951b6dcdcb5995018a3001
+DIST google_api_core-2.30.3.tar.gz 177001 BLAKE2B f92aaca90dbb81ba324310cbea02bc7b9548c46b04c4fd73f94a4a068d28f4faa1593f4494b907c1f48d215c0ace16cf6b8050e4a1096ef7a25584b5f8e9ddb6 SHA512 bf05923a2321ac3c6e61ac1a6f64b063d8bdf2e31ed1f06c9e60defe45b1f8a5297cd40e9e14e0e772a6504f114c6dfd48e72301c493f672c8e903d49a6db00f
+DIST google_api_core-2.30.3.tar.gz.provenance 5822 BLAKE2B fcfb17036eb98d36c8adc812d20a51f5755b496f1b4b8198e2e102482a7ec2ccb907aeeaa53893a7cd5b5edd9117e530239f69614ec5adc8c78a52c351941837 SHA512 fb161a1593e6b7e63bcbf022a27a9a660d3b12817d95f81c9e5642497a2b3d22cc0836efc63b7a316a4a6451d980111bcf3bea06cc45432b0ca0449da3dafbf8
DIST python-api-core-2.28.1.gh.tar.gz 222422 BLAKE2B d4a82bd12c61232efe92fd4d28d01262f67baf38c55f71ba23ae51d30fd108ea75af69c65ed117ff4662add7eec279ea08a8d77f87f6cd814092535a0e44522c SHA512 4bde79d79e05d918ec477de1dc944f0ff54ac46b25c124a9b9198e21b03d836447d88dd209f0be0b96c5323396496468e5865aa33f932fcf712818fe21040f55
diff --git a/dev-python/google-api-core/google-api-core-2.30.3.ebuild b/dev-python/google-api-core/google-api-core-2.30.3.ebuild
new file mode 100644
index 000000000000..503a14d980d2
--- /dev/null
+++ b/dev-python/google-api-core/google-api-core-2.30.3.ebuild
@@ -0,0 +1,55 @@
+# Copyright 2020-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_VERIFY_REPO=gcp:google-cloud-sdk-py@oss-exit-gate-prod.iam.gserviceaccount.com
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Core Library for Google Client Libraries"
+HOMEPAGE="
+ https://github.com/googleapis/google-cloud-python/
+ https://pypi.org/project/google-api-core/
+ https://googleapis.dev/python/google-api-core/latest/index.html
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE="grpc"
+
+RDEPEND="
+ >=dev-python/googleapis-common-protos-1.63.2[${PYTHON_USEDEP}]
+ >=dev-python/google-auth-1.25.0[${PYTHON_USEDEP}]
+ >=dev-python/proto-plus-1.25.0[${PYTHON_USEDEP}]
+ >=dev-python/protobuf-4.25.8[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.20.0[${PYTHON_USEDEP}]
+ <dev-python/requests-3[${PYTHON_USEDEP}]
+ grpc? (
+ >=dev-python/grpcio-1.75.1[${PYTHON_USEDEP}]
+ >=dev-python/grpcio-status-1.75.1[${PYTHON_USEDEP}]
+ )
+"
+BDEPEND="
+ test? (
+ >=dev-python/grpcio-1.75.1[${PYTHON_USEDEP}]
+ >=dev-python/grpcio-status-1.75.1[${PYTHON_USEDEP}]
+ dev-python/rsa[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-{asyncio,mock} )
+distutils_enable_tests pytest
+
+EPYTEST_IGNORE=(
+ # The grpc_gcp module is missing to perform a stress test
+ tests/unit/test_grpc_helpers.py
+)
+
+python_test() {
+ rm -rf google || die
+ epytest tests
+}
diff --git a/dev-python/google-auth/Manifest b/dev-python/google-auth/Manifest
index 65a9a496caf7..e513e5a274ac 100644
--- a/dev-python/google-auth/Manifest
+++ b/dev-python/google-auth/Manifest
@@ -4,3 +4,5 @@ DIST google_auth-2.49.0.tar.gz 333444 BLAKE2B 5471495f348918cbab6219a8964c40a3a0
DIST google_auth-2.49.0.tar.gz.provenance 5862 BLAKE2B 0ef4e524c045d11a04749ff932eafbe45426012b08f2794f4e71005c342d90643d1c001c428fb88c48152ab049cc019266cb034db86a3e9ead215d2414d77738 SHA512 892a20d41ea32f87793f1a26f4d9cc5a489b9b1d208b2087076f30bb880dc509e47b89e0b14ff14b495a054373f110e66d1e85932fdb68a6977b6690b5b57940
DIST google_auth-2.49.1.tar.gz 333825 BLAKE2B 9c1d965e8ed68b183369a4427095950a44382d04d37c10d7bfeb6641090848d62dd775fba0ecbbc4ee1345884dc4b0995a659ea8e5797cc6cf6efb81bcad7c00 SHA512 979e83c8ee2e9f79f31d3d03b18da1053d6c9903681513f72a991059123729f162505a8d4448e745b78851f42dd3bf69ae20f8758fdc4e50aba83c734e24e1d3
DIST google_auth-2.49.1.tar.gz.provenance 6003 BLAKE2B 6322011ec3dae3da2a98f439ce49ff7cae20cd213851343d6620e53b33567c3e07c525de449f3ae32e19230cf8b0826ac26118c2bac5bcf885a1bd1705a5546b SHA512 9d5f59ca1736dd32ed7fa9781c8f0885c7e36beb92fee7ef0e8d690915a6f50d355ba84229974a639f5d51510eafc97004571d914e2bf1b0592752d5ef80c901
+DIST google_auth-2.49.2.tar.gz 333958 BLAKE2B e89901c46b0f4b84ecc43eeb99c45d26afac6d5bfe0989bbf8619afabeaca7d3968a6a1a9a09aefcdc9de48d4390bc5a4e5d25cc8fe2681ed570fa018be56a0d SHA512 9f4d937577a9f007ba53c38031b36ea30f75383b2764f94bf95024c7537d3c75bce4482b8e27ff6a31c72b33623455eb32df0709d9351eff3a942d080c74c007
+DIST google_auth-2.49.2.tar.gz.provenance 5673 BLAKE2B 397cc01fadb64b9c7d04ef86bf109466b3676702139604d5cc856e9f98afcc39102db269c3b58c05b50d18ce3700f59d1c4b180a91affc31efe7b3270b1d1e72 SHA512 9299e45f499b8a12745e983fcca235fb0dcfe693c776b58a00a2baef4dd1d1eec456fe5f8fc991539acc082f1864e7dfcb2b8756a58afb7ffc360a50a4c8d1f5
diff --git a/dev-python/google-auth/google-auth-2.49.2.ebuild b/dev-python/google-auth/google-auth-2.49.2.ebuild
new file mode 100644
index 000000000000..f8b4339b510a
--- /dev/null
+++ b/dev-python/google-auth/google-auth-2.49.2.ebuild
@@ -0,0 +1,62 @@
+# 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=gcp:google-cloud-sdk-py@oss-exit-gate-prod.iam.gserviceaccount.com
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Google Authentication Library"
+HOMEPAGE="
+ https://github.com/googleapis/google-auth-library-python/
+ https://pypi.org/project/google-auth/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+# TODO: rsa is now optional
+RDEPEND="
+ >=dev-python/cryptography-38.0.3[${PYTHON_USEDEP}]
+ >=dev-python/pyasn1-0.1.7[${PYTHON_USEDEP}]
+ >=dev-python/pyasn1-modules-0.2.1[${PYTHON_USEDEP}]
+ >=dev-python/rsa-3.1.4[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/aioresponses[${PYTHON_USEDEP}]
+ dev-python/flask[${PYTHON_USEDEP}]
+ dev-python/freezegun[${PYTHON_USEDEP}]
+ >=dev-python/pyjwt-2.0[${PYTHON_USEDEP}]
+ dev-python/pyopenssl[${PYTHON_USEDEP}]
+ dev-python/pyu2f[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/responses[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-{asyncio,localserver} )
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # tests are broken with up-to-date pyopenssl
+ tests/transport/test__mtls_helper.py::TestDecryptPrivateKey::test_success
+)
+
+EPYTEST_IGNORE=(
+ # these are compatibility tests with oauth2client
+ # disable them to unblock removal of that package
+ tests/test__oauth2client.py
+)
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # unpin deps
+ sed -i -e 's:,<[0-9.]*::' setup.py || die
+}
diff --git a/dev-python/langdetect/Manifest b/dev-python/langdetect/Manifest
index a11d7c268c91..d12ab8aeaca8 100644
--- a/dev-python/langdetect/Manifest
+++ b/dev-python/langdetect/Manifest
@@ -1 +1,3 @@
DIST langdetect-1.0.9.tar.gz 981474 BLAKE2B ea8a9c3f16a2987c080742473bff4f2c1503f53fb3c2b40b0b1d6212bb6133ea22dce7864ffcfb8968c3a46b157d45cb3e2cf6f84bdbed0266cc716a853b032c SHA512 7558d674c47b080c79e43a00a25d2c7f77188cf60bea2cecb3bebb803d75e1aa42b43c74bd26ea1b541f4cb927421908882cbec01a91f0913984217e71ccc8db
+EBUILD langdetect-1.0.9.ebuild 494 BLAKE2B 9cd8a2a93a8d45bf51fe2324402b175d641762ea591fcb99459427f977a95eccffa6ca4777ca4df39814eea6eac62711567faa654456d32f79023a4685804504 SHA512 d973b85ba1a44389a4275f02a779a93a005f7c2e096467b94b072862e4984d5b42cf33f9821ac68aa5b85b12c98983a90b96049989d8c84497969174b6bb838e
+MISC metadata.xml 457 BLAKE2B 630128a3e982b6d60cc7b9f74c79fcb5ee47a71a02c73a50af9da8cedb6fad8e20a7f74b881e5b25c6483b92c9edbd56552cd38b2d9cbfa8b3eb4530facea969 SHA512 674f4f5cd809c6c77bc14e0f5687fa972bef14bdfa0b3343c5d66b7163eef1906eb87d060c8288732f825de71dce291ad0b841a5f2f0dd230f957b5687e45d45
diff --git a/dev-python/langdetect/files/langdetect-1.0.9-explicit-config.patch b/dev-python/langdetect/files/langdetect-1.0.9-explicit-config.patch
deleted file mode 100644
index 637368d2f237..000000000000
--- a/dev-python/langdetect/files/langdetect-1.0.9-explicit-config.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Fix "Package 'langdetect.profiles' is absent from the `packages` configuration."
-
---- a/setup.py
-+++ b/setup.py
-@@ -18,7 +18,7 @@ setup(
- author_email='michal.danilak@gmail.com',
- url='https://github.com/Mimino666/langdetect',
- keywords='language detection library',
-- packages=['langdetect', 'langdetect.utils', 'langdetect.tests'],
-+ packages=['langdetect', 'langdetect.utils', 'langdetect.tests', 'langdetect.profiles'],
- include_package_data=True,
- install_requires=['six'],
- license='MIT',
diff --git a/dev-python/langdetect/langdetect-1.0.9.ebuild b/dev-python/langdetect/langdetect-1.0.9.ebuild
index 7100f5f39dd8..271137de443d 100644
--- a/dev-python/langdetect/langdetect-1.0.9.ebuild
+++ b/dev-python/langdetect/langdetect-1.0.9.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2022-2025 Gentoo Authors
+# Copyright 2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -19,6 +19,4 @@ KEYWORDS="~amd64"
RDEPEND="dev-python/six[${PYTHON_USEDEP}]"
-PATCHES=( "${FILESDIR}/${P}-explicit-config.patch" )
-
distutils_enable_tests unittest
diff --git a/dev-python/langdetect/metadata.xml b/dev-python/langdetect/metadata.xml
index c0f74ac187e2..020e07f2a3dd 100644
--- a/dev-python/langdetect/metadata.xml
+++ b/dev-python/langdetect/metadata.xml
@@ -2,9 +2,11 @@
<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
- <email>pastalian46@gmail.com</email>
- <name>Takuya Wakazono</name>
+ <email>marcin.deranek@slonko.net</email>
+ <name>Marcin Deranek</name>
</maintainer>
-
- <origin>gentoo-guru-overlay</origin>
+ <upstream>
+ <bugs-to>https://github.com/Mimino666/langdetect/issues</bugs-to>
+ </upstream>
+ <origin>slonko-overlay</origin>
</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/librt/Manifest b/dev-python/librt/Manifest
index b04a3c046ac8..3e57fdc1f568 100644
--- a/dev-python/librt/Manifest
+++ b/dev-python/librt/Manifest
@@ -1,2 +1,4 @@
DIST librt-0.8.1.tar.gz 177471 BLAKE2B 9a126fb58c75ce420e789d516806e3089ef38ef67a6d19c71e8028f61b6e3a1c1804ebe89280877df9ec0fefb3045da7c4d1a060f1635d6455e48b6cedfdc405 SHA512 0cac416696dd87a1cd9c8276946d7ea25d125b07fe9bb0abc09a5590e549bb781944713f1c83edb83eede3a0038175cc33d8ad3fa4e945ed916aa3c590f91020
DIST librt-0.8.1.tar.gz.provenance 9403 BLAKE2B 204a0608d5d88e937497eca45e1df0499c12f3b20886b6c983d9f9faa5a1b7577ccd4824805879deb45c91f3dec6007ad15f71d10a85ebaf62bb20c6ee4b4a45 SHA512 c906baf149855c13ab356e3eed93a72e64d3ad49430d50398652d916ad6d429d7852412fc92b03fa141de7527cf48c5a17638304a230d41f233dbd99193addea
+DIST librt-0.9.0.tar.gz 184368 BLAKE2B 03e1b1628c902eeab9d97610ec4a4e764767a4ba7a60cf5c9b52d2c8f7486a8b960baed1e75d895d4f5d9e2d2bc9725ec80e4269352b9e602833c4aa92c6bc5e SHA512 0877b217af0898b20623290aa5aeaabc224342d19bf2e6142d7ba7afd1d9d5ab19266e79e09b31a4b6cdd02ebeebc38561fc8876ff13026df1745e35ddd7d7a6
+DIST librt-0.9.0.tar.gz.provenance 9176 BLAKE2B af4aacde70c07d9458714711402f508197fd232abe624dfce92a2a68f32d25c0b99bb15ce09dfc0b7975aa60119146062c722436ded816396eca667d9bf36ca9 SHA512 c568c933cbb8b1016c7b64308001a3d205120afa0f8a7845613ea8907eaffecc796ac5668db002260b30974f4839e17b88d5eb231eb6124263194e9270c78e18
diff --git a/dev-python/librt/librt-0.9.0.ebuild b/dev-python/librt/librt-0.9.0.ebuild
new file mode 100644
index 000000000000..3141e6033308
--- /dev/null
+++ b/dev-python/librt/librt-0.9.0.ebuild
@@ -0,0 +1,40 @@
+# Copyright 2025-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/mypyc/librt
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Mypyc runtime library"
+HOMEPAGE="
+ https://github.com/mypyc/librt/
+ https://pypi.org/project/librt/
+"
+
+LICENSE="MIT PSF-2.4"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~loong ~m68k ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+BDEPEND="
+ test? (
+ dev-python/mypy-extensions[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+python_compile() {
+ # setuptools is broken for C extensions, bug #907718, bug #967476 etc.
+ distutils-r1_python_compile -j1
+}
+
+python_test() {
+ rm -rf librt || die
+ epytest smoke_tests.py
+}
diff --git a/dev-python/more-itertools/Manifest b/dev-python/more-itertools/Manifest
index 5756b21ab354..9de6213ec341 100644
--- a/dev-python/more-itertools/Manifest
+++ b/dev-python/more-itertools/Manifest
@@ -1,2 +1,3 @@
DIST more_itertools-10.8.0.tar.gz 137431 BLAKE2B 7f1a60679eaeed161580bbc7cb3b9bfb798f48828fb02559c70d91c8de0407d927961489b3cb10cb370f6da05cc5b21a0f6d1b6af3190ca4c7b6c39c1db1fd17 SHA512 541ed387a31ee9fe3576c857ea0d552b1280d48d6f94556f83dd813ce19e0f41a40e0ecc7b5b8cc4b854a0920c66ed9a09a6dd63322f597efac15378c532d59c
DIST more_itertools-11.0.1.tar.gz 144739 BLAKE2B 0bd2374b8cf556e9b761ee1d6bd868873ee5f3d101fec523f43c8d4463aaa30b9182b547c40b94fb7bc73dc3d0f730cf1e71fd4457c5c7b6deb63bfd313390f5 SHA512 ac81911a3dd1a6a987eefc81f924392ce6cd09981fdeb484d059b9ca3caa13e8bdbf5df1aaa3068ec4ce3742d86343c8b6ac17964250102eb12b742526722e11
+DIST more_itertools-11.0.2.tar.gz 144659 BLAKE2B 886ef2b27e902a83e719f49ab4eaf591b957a770bdf32826180871de39a7af1597786eb6d12d8d8f5477deded3e17e033c460ae09f4cec0dddb3a43ad452040a SHA512 d108667c7839b62278323311d65e1f2f6d0da5768deeb851401d52b796e5c65f4e8412701bfae6f0fa1954157401896095c2f92a6fe17b782f4119a599f054d5
diff --git a/dev-python/more-itertools/more-itertools-11.0.2.ebuild b/dev-python/more-itertools/more-itertools-11.0.2.ebuild
new file mode 100644
index 000000000000..569005c6a88b
--- /dev/null
+++ b/dev-python/more-itertools/more-itertools-11.0.2.ebuild
@@ -0,0 +1,23 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=flit
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="More routines for operating on iterables, beyond itertools"
+HOMEPAGE="
+ https://github.com/more-itertools/more-itertools/
+ https://pypi.org/project/more-itertools/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos ~x64-solaris"
+
+distutils_enable_sphinx docs \
+ dev-python/furo
+distutils_enable_tests unittest
diff --git a/dev-python/plotly/Manifest b/dev-python/plotly/Manifest
index a9b7c603f897..7fdf5d842fac 100644
--- a/dev-python/plotly/Manifest
+++ b/dev-python/plotly/Manifest
@@ -1 +1,2 @@
DIST plotly.py-6.6.0.gh.tar.gz 10370904 BLAKE2B 871fc805cda64303ffd5a3aa65e35573941fd3222f64e4bb965362d03f8e8843144bd6e9975960d009ca20a9af9366433878edd1f2edd13bffd734882eaae93c SHA512 ba3dae0d18a24498b9362fa7eb1cbc0a635fc447dfc9ee087fc6d8efd31359a4eb2d7467729d283325e3325a9645fcc4b5bdf60f3ea873b3ead79f6612ed39bc
+DIST plotly.py-6.7.0.gh.tar.gz 10364351 BLAKE2B 335dcabc60048651d6e356bbb59320977989be15d5ea33d03e6ff2b2f5c19d0774679fccbe7da442287ee1dd94cfba14beb2f40fd538f13ffde3acf56839346a SHA512 ad651e9a79be30bb9123f2fd26d8847eba7cc7168924af5237c495352749bebd12c823e5294865ad9aca69ccaeb4636baa1f82b4bcc39b747a02b9b58c52da5d
diff --git a/dev-python/plotly/plotly-6.7.0.ebuild b/dev-python/plotly/plotly-6.7.0.ebuild
new file mode 100644
index 000000000000..565c1022538e
--- /dev/null
+++ b/dev-python/plotly/plotly-6.7.0.ebuild
@@ -0,0 +1,103 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..14} )
+DISTUTILS_USE_PEP517=hatchling
+
+inherit distutils-r1
+
+MY_P=plotly.py-${PV/_}
+DESCRIPTION="Browser-based graphing library for Python"
+HOMEPAGE="
+ https://plotly.com/python/
+ https://github.com/plotly/plotly.py/
+ https://pypi.org/project/plotly/
+"
+SRC_URI="
+ https://github.com/plotly/plotly.py/archive/refs/tags/v${PV/_}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S="${WORKDIR}/${MY_P}"
+# The tests are not included in the PyPI tarball, to use the GitHub tarball
+# we have to skip npm, which means that the resulting install will
+# unfortunately lack the jupyterlab extension.
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+
+RDEPEND="
+ >=dev-python/narwhals-1.15.1[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/jupyter[${PYTHON_USEDEP}]
+ dev-python/jupyterlab[${PYTHON_USEDEP}]
+ dev-python/matplotlib[${PYTHON_USEDEP}]
+ dev-python/numpy[${PYTHON_USEDEP}]
+ dev-python/pandas[${PYTHON_USEDEP}]
+ dev-python/pillow[${PYTHON_USEDEP}]
+ dev-python/psutil[${PYTHON_USEDEP}]
+ dev-python/pytz[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/scikit-image[${PYTHON_USEDEP}]
+ dev-python/scipy[${PYTHON_USEDEP}]
+ dev-python/statsmodels[${PYTHON_USEDEP}]
+ dev-python/xarray[${PYTHON_USEDEP}]
+ )
+"
+
+# There are sphinx docs but we are missing a bunch of dependencies.
+# distutils_enable_sphinx ../../../doc/apidoc
+
+EPYTEST_PLUGINS=()
+# xdist is causing pretty nasty race conditions here
+distutils_enable_tests pytest
+
+EPYTEST_IGNORE=(
+ # requires polars
+ tests/test_optional/test_px
+
+ # requires kaleido
+ tests/test_optional/test_kaleido/test_kaleido.py
+)
+
+EPYTEST_DESELECT=(
+ # requires polars
+ 'tests/test_plotly_utils/validators/test_fig_deepcopy.py::test_deepcopy_dataframe[polars]'
+
+ # require anywidgets
+ 'tests/test_io/test_to_from_json.py::test_from_json_output_type[FigureWidget-FigureWidget0]'
+ 'tests/test_io/test_to_from_json.py::test_from_json_output_type[FigureWidget-FigureWidget1]'
+ 'tests/test_io/test_to_from_json.py::test_read_json_from_filelike[FigureWidget-FigureWidget0]'
+ 'tests/test_io/test_to_from_json.py::test_read_json_from_filelike[FigureWidget-FigureWidget1]'
+ 'tests/test_io/test_to_from_json.py::test_read_json_from_pathlib[FigureWidget-FigureWidget0]'
+ 'tests/test_io/test_to_from_json.py::test_read_json_from_pathlib[FigureWidget-FigureWidget1]'
+ 'tests/test_io/test_to_from_json.py::test_read_json_from_file_string[FigureWidget-FigureWidget0]'
+ 'tests/test_io/test_to_from_json.py::test_read_json_from_file_string[FigureWidget-FigureWidget1]'
+
+ # minor matplotlib incompatibility
+ plotly/matplotlylib/mplexporter/tests/test_basic.py::test_legend_dots
+ plotly/matplotlylib/mplexporter/tests/test_utils.py::test_linestyle
+
+ # fails in non-isolated env
+ test_init/test_dependencies_not_imported.py::test_dependencies_not_imported
+ test_init/test_lazy_imports.py::test_lazy_imports
+
+ # TODO
+ 'tests/test_plotly_utils/validators/test_colorscale_validator.py::test_acceptance_named[Inferno_r]'
+
+ # numpy 2.4
+ tests/test_optional/test_figure_factory/test_figure_factory.py::TestViolin::test_violin_fig
+ tests/test_optional/test_utils/test_utils.py::TestJSONEncoder::test_encode_customdata_datetime_homogeneous_dataframe
+ tests/test_optional/test_utils/test_utils.py::TestJSONEncoder::test_encode_customdata_datetime_series
+ tests/test_optional/test_utils/test_utils.py::TestJSONEncoder::test_numpy_datetime64
+)
+
+src_configure() {
+ # Do not try to fetch stuff with npm
+ export SKIP_NPM=1
+}
diff --git a/dev-python/prometheus-client/Manifest b/dev-python/prometheus-client/Manifest
index 75a63cf4d6ed..aa193ca315e5 100644
--- a/dev-python/prometheus-client/Manifest
+++ b/dev-python/prometheus-client/Manifest
@@ -1 +1,2 @@
DIST client_python-0.24.1.gh.tar.gz 4660308 BLAKE2B f0e41480b6e37f9cdbf95cd219b757196eaa38cd368130c88944ba1da8cd29df9a4a5437da8a4ddd1982afaf82fede7c237bac9bdb55f87a37427d0cdaf10618 SHA512 5188472d93fe0e2a2ba36431d08dfd3af42dee5f39c32d600f8de4728ba8d9396ca4f3a35fc7370b4f23f9ba733d2c81db9464c9b8e6ce515523470edc8b8001
+DIST client_python-0.25.0.gh.tar.gz 4665091 BLAKE2B bf02b18d6be594c7c755e1ed839a456ed2f1b002686cfc602aff8fb37beb71c34b317d8ae4a654cc3bd9a26b2c2b3efbbc44eaf563140f885866304aabb961ff SHA512 58658326c58544c3bfafec6d5209c49baea9d3dc43d6bfae6c630dac73d91d7cace9a8740c1a18c65505a7dc5ac84b0feffa93babcd9ca68007ecf3cefb09bad
diff --git a/dev-python/prometheus-client/prometheus-client-0.25.0.ebuild b/dev-python/prometheus-client/prometheus-client-0.25.0.ebuild
new file mode 100644
index 000000000000..655bdf29649c
--- /dev/null
+++ b/dev-python/prometheus-client/prometheus-client-0.25.0.ebuild
@@ -0,0 +1,43 @@
+# 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_{10..14} )
+
+inherit distutils-r1
+
+MY_P=client_python-${PV}
+DESCRIPTION="Python client for the Prometheus monitoring system"
+HOMEPAGE="
+ https://github.com/prometheus/client_python/
+ https://pypi.org/project/prometheus-client/
+"
+# missing test data in sdist
+# https://github.com/prometheus/client_python/issues/1112
+SRC_URI="
+ https://github.com/prometheus/client_python/archive/v${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ dev-python/twisted[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ tests/test_parser.py::test_benchmark_text_string_to_metric_families
+)
+
+EPYTEST_IGNORE=(
+ # Optional testdep on dev-python/asgiref
+ tests/test_asgi.py
+)
diff --git a/dev-python/pyacoustid/Manifest b/dev-python/pyacoustid/Manifest
index 47dc05cff509..cdf5c75e2712 100644
--- a/dev-python/pyacoustid/Manifest
+++ b/dev-python/pyacoustid/Manifest
@@ -1,2 +1,4 @@
DIST pyacoustid-1.3.0.tar.gz 17369 BLAKE2B 93f949943d792b4c1f4b2b99ae37821c1ffa5c7a2bbeda7aed276e6ad4f9ad35e5fc4c6e590667bee552710eec483cf2a16f58a7f34a1f02c94b4cb84ec45cf4 SHA512 3b38e580b2deda30df683fe749b338929be0ca23fb3ff462a5df9b98f140db4bde682d74254e7f3a157e394e824ecb6929171392b5e6c9bd92ca05fb6f71ed0a
+DIST pyacoustid-1.3.1.tar.gz 16424 BLAKE2B 6db721d8e43e8d8bab6b41485abc721cef89ce023f4d0ea899e363c33ef3ab1f4623957c42589f2fb08c70e478bee9b7c6fbef09a61f92f227f2d5727ae7dec1 SHA512 a924c431e5a03be091573ebc5c189be3b4e69cc7a6009e247b7750289be2304206aead779e383faab3a12e4ce71405a2436304e0151434def0a78f66f2ac2eaa
+DIST pyacoustid-1.3.1.tar.gz.provenance 9518 BLAKE2B 8419c483d53147623dc19ef52b8bbf76570ccf287f7140b26d731d4e3ea01c9dcb5bb86259fb076fb3a426d8cd224558480bc985c8a1634faa3e5ed8c38bc8cc SHA512 64fc74bf4f1888c232eb480a690cc6e6b6d225d788576b9d559487458fcc738ba0ec08139ccc4ec9e0b17beb0edf9e1e3095b312128dae87869574911d8278d5
DIST pyacoustid-test.mp3 4507187 BLAKE2B 54494d9f23481f9d1ee77b136ac3e1790e9fb78c782159ad1793dbebf18f694e13f6413a8259bae84c789f73ea8241e590dbd7e30ccb7377b2afa946335da19b SHA512 faa582640e759322d4bd58d85f4aa7d3ef88fd90aa3c67c1390ba6d4c3213278c11fb60c8d6c87a25e82dffcc54986caa4f0e463acfbcd90993166577e5226d8
diff --git a/dev-python/pyacoustid/pyacoustid-1.3.1.ebuild b/dev-python/pyacoustid/pyacoustid-1.3.1.ebuild
new file mode 100644
index 000000000000..c9f05bed95dc
--- /dev/null
+++ b/dev-python/pyacoustid/pyacoustid-1.3.1.ebuild
@@ -0,0 +1,52 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=poetry
+PYPI_VERIFY_REPO=https://github.com/beetbox/pyacoustid
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Python bindings for Chromaprint and the AcoustID web service"
+HOMEPAGE="
+ https://github.com/beetbox/pyacoustid/
+ https://pypi.org/project/pyacoustid/
+"
+SRC_URI+="
+ test? (
+ https://s3.wasabisys.com/blocsonic/releases/maxblocs/bsmx0198/01-Follow_192kb.mp3
+ -> ${PN}-test.mp3
+ )
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="examples test"
+# Tests fail with network-sandbox, since they need to connect to acoustid.org
+PROPERTIES="test_network"
+RESTRICT="test"
+
+RDEPEND="
+ dev-python/audioread[${PYTHON_USEDEP},ffmpeg]
+ dev-python/requests[${PYTHON_USEDEP}]
+ media-libs/chromaprint
+"
+
+python_test() {
+ # Working test will print the top metadata match from Acoustid's database.
+ "${EPYTHON}" aidmatch.py "${DISTDIR}/${PN}-test.mp3" ||
+ die "Test failed with ${EPYTHON}"
+}
+
+src_install() {
+ distutils-r1_src_install
+
+ if use examples ; then
+ docinto examples
+ dodoc aidmatch.py fpcalc.py
+ docompress -x /usr/share/doc/${PF}/examples/
+ fi
+}
diff --git a/dev-python/pysnmp/Manifest b/dev-python/pysnmp/Manifest
index 1a45bd010361..4035cf557627 100644
--- a/dev-python/pysnmp/Manifest
+++ b/dev-python/pysnmp/Manifest
@@ -1 +1,2 @@
DIST pysnmp-7.1.22.gh.tar.gz 463898 BLAKE2B 3e43fe160757b251fc01a2d1f71435d9e32037611361f06fa66ca3e968079ed68c646210c41593543c28a28f312c19ad7905447dc91e37c515aa9d0ba1d7b05d SHA512 f77690c2f269e76c8a2f556e86207af9ccb1ecf608f1748e2fad1e01b0795b133019957e6956027a394cd7c36f45e105eb89ef3a71750266f6839bcdfc49cb95
+DIST pysnmp-7.1.23.gh.tar.gz 470924 BLAKE2B 887446ae996c4761d09043a4a4df9ffe8532392e6f6fa8c1d00991567595143e78b331f6e3c23bd4db43d81c723e17e2cbe45891115e02821fb81559ee570f16 SHA512 97d0f9e44b8cff08623feba43eeff7fc185aab80777f953d6e71c0be96e76012cb65e5d96e929398a9ca0571c698c7aa2cef8afdd2265b6e3c213fcfc5ac1544
diff --git a/dev-python/pysnmp/pysnmp-7.1.23.ebuild b/dev-python/pysnmp/pysnmp-7.1.23.ebuild
new file mode 100644
index 000000000000..048b5da1670a
--- /dev/null
+++ b/dev-python/pysnmp/pysnmp-7.1.23.ebuild
@@ -0,0 +1,49 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=flit
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="Python SNMP library"
+HOMEPAGE="
+ https://pypi.org/project/pysnmp/
+ https://github.com/lextudio/pysnmp/
+"
+SRC_URI="
+ https://github.com/lextudio/pysnmp/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="BSD-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~sparc ~x86"
+PROPERTIES="test_network"
+RESTRICT="test"
+
+RDEPEND="
+ >=dev-python/cryptography-43.0.1[${PYTHON_USEDEP}]
+ >=dev-python/pyasn1-0.6.3[${PYTHON_USEDEP}]
+ >=dev-python/pysmi-1.5.7[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=( pytest-{asyncio,rerunfailures} )
+distutils_enable_tests pytest
+# TODO
+# distutils_enable_sphinx docs/source dev-python/furo dev-python/sphinx-copybutton dev-python/sphinx-sitemap
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # TODO
+ tests/smi/manager/test_mib-tree-inspection.py::test_getNodeName_by_symbol_description_with_module_name_2
+ )
+
+ mibdump CISCO-ENHANCED-IPSEC-FLOW-MIB.py || die
+ mibdump LEXTUDIO-TEST-MIB || die
+ mibdump NET-SNMP-EXAMPLES-MIB || die
+ mibdump IF-MIB || die
+ epytest
+}
diff --git a/dev-python/pytest-httpx/Manifest b/dev-python/pytest-httpx/Manifest
index b0e43f484f59..c06b8554e512 100644
--- a/dev-python/pytest-httpx/Manifest
+++ b/dev-python/pytest-httpx/Manifest
@@ -1 +1,3 @@
DIST pytest_httpx-0.36.0.tar.gz 56793 BLAKE2B cac3afb3c6f3916d9112e961e47324bb8fdf43330db16072548d7af4c8d395fbc2e0e92ae03342b4c7922046d7cead7cbde14c063576765695d5e095c3585721 SHA512 2e8aefa3483a6edcbae001f65881b4720b5a422e10da73a798fa10fbbe164ae4279eef68d5210178e41a907096a9a85400bc3527a967f1dcc813e62769170ec7
+DIST pytest_httpx-0.36.2.tar.gz 57683 BLAKE2B fe583d1e1cccb158ef760e969fb366b59baaa215d6679c784830b2acab3e91f196f3212f06d1cf824bf6fd85dbefc1d62fbc8f8150745dcc158d6d4dbf05c973 SHA512 545d0a7052d4ff01d5464d31fdefce903124ba383db814b170a1e6cb02b26450f01de2d9fa66b997315b66d33ce41f6ead5365c20c98141fd49f7430156713af
+DIST pytest_httpx-0.36.2.tar.gz.provenance 9780 BLAKE2B e88f79ed7245b3cee7ca3c17468405af55afe61bd4b4c6cc976b82d673a619e738b997fa9b5625f2af95fc2f788d67338a2e6e9bf43977d3dfb4afec5933fb77 SHA512 3af404436082fb5eef1f63d17daaa6f8dc73536775626080f5794137439fdf65329844dd6a6c47c05a64a1b5ec558303405d0dfe2a1fe5cd6ce7d8e888f956ce
diff --git a/dev-python/pytest-httpx/pytest-httpx-0.36.2.ebuild b/dev-python/pytest-httpx/pytest-httpx-0.36.2.ebuild
new file mode 100644
index 000000000000..88157d3f516e
--- /dev/null
+++ b/dev-python/pytest-httpx/pytest-httpx-0.36.2.ebuild
@@ -0,0 +1,40 @@
+# Copyright 2022-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/Colin-b/pytest_httpx
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Send responses to HTTPX using pytest"
+HOMEPAGE="
+ https://colin-b.github.io/pytest_httpx/
+ https://github.com/Colin-b/pytest_httpx/
+ https://pypi.org/project/pytest-httpx/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/httpx-0.28[${PYTHON_USEDEP}]
+ >=dev-python/pytest-8[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ dev-python/setuptools-scm[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=( "${PN}" pytest-asyncio )
+EPYTEST_PLUGIN_LOAD_VIA_ENV=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # unpin dependencies
+ sed -i -e '/==/{s:==:>=:;s:\.\*::}' pyproject.toml || die
+}
diff --git a/dev-python/pytools/Manifest b/dev-python/pytools/Manifest
index fecb8196507b..35b6b2d77d22 100644
--- a/dev-python/pytools/Manifest
+++ b/dev-python/pytools/Manifest
@@ -1,2 +1,4 @@
DIST pytools-2025.2.5.tar.gz 85594 BLAKE2B e393d409ac20729d94f2b69257d8aae8bcde367b037f03f9e10337d91151d8d61741392ccf9407c53a11f7b20b1c06a839f6d469f002721eba6b0ae2eb026f45 SHA512 6daf3cfa94024072cbbc1ebb7e4173f95ad7bc00c7d6bf47980659e122c69895619a6164c5e3baf978bc01fcec55034d484570d37d627f065107eb415b41303f
DIST pytools-2025.2.5.tar.gz.provenance 9569 BLAKE2B d53aa09ed13caa071d19f3ae610a76662ae5c8928ff43760443a620a19f931214aa1c823d4beab6ae733c2f25fef87c89550d076d16c57f63b8f6393f2dbdb94 SHA512 f6ac9d632dccc4a09be72325c279f9edffe6536bf94d3fb2d968ed78119dd4b510a5a03857136441e9f923bfac298763af9cdf70b27cd47ff715e9e136f9d1d3
+DIST pytools-2026.1.tar.gz 85929 BLAKE2B 8cf1bd65c74a669ad78214fea94a31e4f84cb84c69180c645f14bddb0e62615d8faad4e7d15bf65ba51b86f14a7a453fd8c9cfc729f90765a3395358e6201a24 SHA512 4172c1a865428610c975f5a164ba886aafc7445f87cb4572b26ac67c8144a4d14f755645a6f5f341d057c10f2f10f3fa4d2822aa75c660a42165be644ec820fc
+DIST pytools-2026.1.tar.gz.provenance 9476 BLAKE2B 269542f1236d91f1b7218321e0a4cadf532b952938d0bce927794218e556531e968a693b67460688c182433171cec718b3e317fa43ff1293d020291b9e23fb32 SHA512 fc8e7cc992b09b9947dc7565ab2515a198500ae964834ec2d52107ddd8ec2f26a0a8aa507a1756164dcff69cc11121015d5badb4885e91c2a5a9b34ea6303f97
diff --git a/dev-python/pytools/pytools-2026.1.ebuild b/dev-python/pytools/pytools-2026.1.ebuild
new file mode 100644
index 000000000000..736caaaaa6f1
--- /dev/null
+++ b/dev-python/pytools/pytools-2026.1.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
+PYPI_VERIFY_REPO=https://github.com/inducer/pytools
+PYTHON_COMPAT=( python3_{10..14} )
+PYTHON_REQ_USE='sqlite'
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Collection of tools missing from the Python standard library"
+HOMEPAGE="
+ https://mathema.tician.de/software/pytools/
+ https://github.com/inducer/pytools/
+ https://pypi.org/project/pytools/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv"
+
+# NB: numpy are an "extra" (optional) deps
+RDEPEND="
+ >=dev-python/numpy-1.6[${PYTHON_USEDEP}]
+ >=dev-python/platformdirs-2.2[${PYTHON_USEDEP}]
+ >=dev-python/siphash24-1.6[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.5[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
diff --git a/dev-python/selenium/Manifest b/dev-python/selenium/Manifest
index ecccee65823f..e63f9995751d 100644
--- a/dev-python/selenium/Manifest
+++ b/dev-python/selenium/Manifest
@@ -1,6 +1,8 @@
DIST selenium-4.34.2.tar.gz 896309 BLAKE2B 094d3596a86e1cd50a6967a65b3e7b9a73300403f5d88163ded8b1d3a62cb09d77057e9b90a35b39f3a6000a8ba604bd71ecb051866cf7ad88c5ab9e21752978 SHA512 f5911f41bc4988e1af26812299cf37aba7e88820cf4e719e0e04a36a5dbdba5420422c52393c8d31c4e0f88efe779e9beec2c490892e4546caa0a920047e01fa
DIST selenium-4.35.0.tar.gz 907991 BLAKE2B e2d0baade499b41cdb23bdbae0059163fb58157dc86c3bcf4d7b9c4d040bcec19aba4000a223a4e7dd0137d4cc321064e95cd12fe22beaa311237c18261518ce SHA512 09f9149b94974c7965d5b81ee1ca65cca7e7a1de775d7323335c21acbbdc21da17f0f6314a8162177c6a22fdbb23b4147c213b2c3a98bfd9a13ac077dc113812
DIST selenium-4.41.0.tar.gz 937872 BLAKE2B fd176e710970da5435b2d2daad90ad1f6a567dd77d9cfe0cb6980612155a5194c6c80ba7be444e8baade758a91dc2f9cdc6d3ce8fffcd8c31a03271e5f7dbc2c SHA512 517e38b38266e92b66bf072640777e037d1af4321a0399d665a0f2acdb76c574abf65f8e6412e7c606a4937010ffd6bff9c9f323b51c88e80d883b5c909c2de6
+DIST selenium-4.42.0.tar.gz 956304 BLAKE2B f43bf9893135bc8b7bf739bccd4155db7200e1262abe0fdd311041066e1f37b7f090da64a17aa693e616bf27adc5e1897c2981356b6af4acb985b929e939be66 SHA512 36a17bd89f5ef03d5b72c981ba4b4e6b3c1173d3e211a9df8cd8fe77c48d99d6471f629dbaf9a2c476a446677b24574e1a37ce2370a4280ae0eb82003d0381ec
DIST selenium-selenium-4.34.2-python.gh.tar.gz 52515190 BLAKE2B 319a7083d5942c1962b4f48f907fea12943a403e4490f74f3cd38662f1c63f57270b27b6039a5a8f29a980540cd0dcf1d1c7560c7ac126f07e491983dc0e81ef SHA512 5ca0b6e970ded3dc93cd55a2c1af7c43063d87f57f119a011313eb7d08faa4057896a56d4eac2e13d39857c94b54f04840a053153cc39008c76cbdd33c8ddbba
DIST selenium-selenium-4.35.0.gh.tar.gz 52550104 BLAKE2B b7ed0fb513cfb2ed24aa8393497b349f930739c3d24a330e5942fbaa5505f31d7086396a430776a3a28a5f65927b92bf27c0a32e8c36d893b5d62ef73151d5ef SHA512 dc73829e3b0fcb7fb7ee1cc04574b95b63d23f67974575dbd66338e14a5cb2b06f983145ce874be0d7124e8828b0a41b99c75d3befb19e04cbf8d027d0bb983a
DIST selenium-selenium-4.41.0.gh.tar.gz 43597635 BLAKE2B fb24f27bf3b64d4da4a117bbb62566b6c1dd6fa85357b9db4a81f17fb5167ca1f2265a0ad8b54efeb14568477390521f5b5774e3278091fd1a0110e5e0d9ce30 SHA512 68cf0ead725d09dcaa8bfe9f239e0f8c0ca7b9dde9d11b8c22dbe53c51611534136f910bc91c9ab237e2b9c106ae06efbe0e0fa9277ef668c4a4935f74613a6c
+DIST selenium-selenium-4.42.0.gh.tar.gz 43696997 BLAKE2B 9836b8935586e21d487660f2031c316f9afd6d382a2c2e5f090fe40792215334da90c5d59b7debd612c8bb2146a3595624a5c9e949f84a4d551ec540c59b10e4 SHA512 89309fcadcbc7fdc110aa2a4c58e0f92f3872ff1addacc65813731aaca6ef48869346f69344731926dab84ecdd5a4a53a6968f7c2e953faa3cc4833ff9e511ff
diff --git a/dev-python/selenium/selenium-4.42.0.ebuild b/dev-python/selenium/selenium-4.42.0.ebuild
new file mode 100644
index 000000000000..d44762270fc1
--- /dev/null
+++ b/dev-python/selenium/selenium-4.42.0.ebuild
@@ -0,0 +1,165 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_TESTED=( python3_{11..14} pypy3_11 )
+PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" )
+
+inherit distutils-r1 pypi
+
+# base releases are usually ${P}, followups ${P}-python
+TEST_TAG=${P}
+[[ ${PV} != *.0 ]] && TEST_TAG+=-python
+TEST_P=selenium-${TEST_TAG}
+
+DESCRIPTION="Python language binding for Selenium Remote Control"
+HOMEPAGE="
+ https://seleniumhq.org/
+ https://github.com/SeleniumHQ/selenium/tree/trunk/py/
+ https://pypi.org/project/selenium/
+"
+SRC_URI+="
+ test? (
+ https://github.com/SeleniumHQ/selenium/archive/${TEST_TAG}.tar.gz
+ -> ${TEST_P}.gh.tar.gz
+ )
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~x86"
+IUSE="test test-rust"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-python/certifi-2026.1.4[${PYTHON_USEDEP}]
+ >=dev-python/trio-0.31.0[${PYTHON_USEDEP}]
+ >=dev-python/trio-websocket-0.12.2[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.15.0[${PYTHON_USEDEP}]
+ >=dev-python/urllib3-2.6.0[${PYTHON_USEDEP}]
+ >=dev-python/websocket-client-1.8.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ ${RDEPEND}
+ $(python_gen_cond_dep "
+ dev-python/filetype[\${PYTHON_USEDEP}]
+ dev-python/pytest-mock[\${PYTHON_USEDEP}]
+ dev-python/rich[\${PYTHON_USEDEP}]
+ test-rust? (
+ dev-python/pytest[\${PYTHON_USEDEP}]
+ dev-python/pytest-rerunfailures[\${PYTHON_USEDEP}]
+ >=dev-util/selenium-manager-${PV}
+ net-misc/geckodriver
+ || (
+ www-client/firefox
+ www-client/firefox-bin
+ )
+ )
+ " "${PYTHON_TESTED[@]}")
+ )
+"
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # do not build selenium-manager implicitly
+ sed -e 's:\[tool\.setuptools-rust:[tool.ignore-me:' \
+ -i pyproject.toml || die
+ # unpin deps
+ sed -i -e 's:,<[0-9.]*::' pyproject.toml || die
+ # remove nonsense typing deps
+ sed -i -e '/types/d' -e '/typing/d' pyproject.toml || die
+}
+
+python_test() {
+ # NB: xdist is causing random pytest crashes with high job numbers
+
+ if ! has "${EPYTHON/./_}" "${PYTHON_TESTED[@]}"; then
+ einfo "Skipping tests on ${EPYTHON}"
+ return
+ fi
+
+ local EPYTEST_PLUGINS=( pytest-mock )
+ local EPYTEST_IGNORE=()
+ local EPYTEST_DESELECT=(
+ # expects vanilla certifi
+ test/unit/selenium/webdriver/remote/remote_connection_tests.py::test_get_connection_manager_for_certs_and_timeout
+ )
+ local pytest_args=(
+ # https://github.com/SeleniumHQ/selenium/blob/selenium-4.8.2-python/py/test/runner/run_pytest.py#L20-L24
+ # seriously?
+ -o "python_files=*_tests.py test_*.py"
+ )
+ if use test-rust; then
+ local -x PATH=${T}/bin:${PATH}
+ local -x SE_MANAGER_PATH="$(type -P selenium-manager)"
+
+ local EPYTEST_RERUNS=5
+ pytest_args+=(
+ --driver=firefox
+ --browser-binary="$(type -P firefox || type -P firefox-bin)"
+ --driver-binary="$(type -P geckodriver)"
+ --headless
+ )
+
+ local EPYTEST_IGNORE+=(
+ # requires some "python.runfiles", also bidi tests generally fail
+ test/selenium/webdriver/common/bidi_webextension_tests.py
+ # throws some error that pytest doesn't even show
+ test/selenium/webdriver/firefox/ff_installs_addons_tests.py
+ )
+ EPYTEST_DESELECT+=(
+ # expects prebuilt executables for various systems
+ test/selenium/webdriver/common/selenium_manager_tests.py::test_uses_windows
+ test/selenium/webdriver/common/selenium_manager_tests.py::test_uses_linux
+ test/selenium/webdriver/common/selenium_manager_tests.py::test_uses_mac
+ test/selenium/webdriver/common/selenium_manager_tests.py::test_errors_if_invalid_os
+
+ # TODO: these don't respect --*-binary and try to fetch versions
+ test/selenium/webdriver/firefox
+ test/selenium/webdriver/marionette/mn_context_tests.py::test_context_sets_correct_context_and_returns
+ test/selenium/webdriver/marionette/mn_context_tests.py::test_context_sets_correct_context_and_returns
+ test/selenium/webdriver/marionette/mn_options_tests.py::TestIntegration::test_we_can_pass_options
+ test/selenium/webdriver/marionette/mn_set_context_tests.py::test_we_can_switch_context_to_chrome
+
+ # TODO
+ 'test/selenium/webdriver/common/devtools_tests.py::test_check_console_messages[firefox]'
+
+ # TODO
+ test/selenium/webdriver/common/bidi_browser_tests.py
+ test/selenium/webdriver/common/bidi_browsing_context_tests.py
+ test/selenium/webdriver/common/bidi_emulation_tests.py
+ test/selenium/webdriver/common/bidi_errors_tests.py
+ test/selenium/webdriver/common/bidi_input_tests.py
+ test/selenium/webdriver/common/bidi_integration_tests.py
+ test/selenium/webdriver/common/bidi_log_tests.py
+ test/selenium/webdriver/common/bidi_network_tests.py
+ test/selenium/webdriver/common/bidi_permissions_tests.py
+ test/selenium/webdriver/common/bidi_script_tests.py
+ test/selenium/webdriver/common/bidi_session_tests.py
+ test/selenium/webdriver/common/bidi_storage_tests.py
+ test/selenium/webdriver/common/bidi_tests.py
+ test/selenium/webdriver/marionette/mn_options_tests.py::TestUnit::test_binary
+ test/selenium/webdriver/marionette/mn_options_tests.py::TestUnit::test_ctor
+ test/selenium/webdriver/marionette/mn_options_tests.py::TestUnit::test_prefs
+ test/selenium/webdriver/marionette/mn_options_tests.py::TestUnit::test_to_capabilities
+ test/selenium/webdriver/remote/remote_custom_locator_tests.py::test_find_element_with_custom_locator
+ test/selenium/webdriver/remote/remote_custom_locator_tests.py::test_find_elements_with_custom_locator
+
+ # Internet
+ test/selenium/webdriver/remote/remote_server_tests.py::test_download_latest_server
+ test/selenium/webdriver/remote/remote_hub_connection_tests.py::test_command_executor_ssl_certificate_is_verified
+ )
+ else
+ EPYTEST_IGNORE+=(
+ test/selenium
+ )
+ fi
+
+ cd "${WORKDIR}/${TEST_P}/py" || die
+ rm -rf selenium || die
+ epytest "${pytest_args[@]}"
+}
diff --git a/dev-python/smbus2/Manifest b/dev-python/smbus2/Manifest
index 0d250c0a3191..efd6f598b999 100644
--- a/dev-python/smbus2/Manifest
+++ b/dev-python/smbus2/Manifest
@@ -1 +1,2 @@
DIST smbus2-0.6.0.gh.tar.gz 18399 BLAKE2B f80846185c85c4942b824d65a7cf060eaf4648303105e6bd8654912152979516e8c246090d8449fc31f3f49a12253e86cd250919b1b45f5d870c7e233c031fd3 SHA512 e3fe85e01fc0e2ce87461c5a0001a595139785d8b53fdb5058c93902b436515bb05c33e2071f2259761507e82f65e40ee2c46f33fd889ccd3bdd5b7b0681dfbe
+DIST smbus2-0.6.1.gh.tar.gz 18332 BLAKE2B 26a3f9d48d46ad55ea90e83dd1b135e8b9f6e3abe09f85754f8148d2e22094d6adf9c0e8f4d729cb2bd8d3858b278ea2701e2e379c991d1a8daed5a89ccd60f0 SHA512 e524c7a5727bb88379454581fde7314c866da3ed415d5918d0232e8e0b53c306efbe39340d422703e90fbe4b7b5eb6f3cba9e80d36759cfb243d1d1291fec0b4
diff --git a/dev-python/smbus2/smbus2-0.6.1.ebuild b/dev-python/smbus2/smbus2-0.6.1.ebuild
new file mode 100644
index 000000000000..ff4958559842
--- /dev/null
+++ b/dev-python/smbus2/smbus2-0.6.1.ebuild
@@ -0,0 +1,30 @@
+# Copyright 2022-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="A drop-in replacement for smbus-cffi/smbus-python in pure Python"
+HOMEPAGE="
+ https://pypi.org/project/smbus2/
+ https://github.com/kplindegaard/smbus2/
+"
+SRC_URI="
+ https://github.com/kplindegaard/smbus2/archive/refs/tags/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+python_test() {
+ epytest -s
+}
diff --git a/dev-python/sphinx-autodoc-typehints/Manifest b/dev-python/sphinx-autodoc-typehints/Manifest
index e97124fd948a..617e7caf8c68 100644
--- a/dev-python/sphinx-autodoc-typehints/Manifest
+++ b/dev-python/sphinx-autodoc-typehints/Manifest
@@ -1,3 +1,5 @@
+DIST sphinx_autodoc_typehints-3.10.0.tar.gz 72801 BLAKE2B 535b854a9b211f998a9b30f821223b4ee9b123f3006e83c9c16172808522f5eca9c5bac163ebbfd6cb7f2556aeb70c1084df728531cfbdbc15cc31e3dcfe8aaa SHA512 2d1031c2c51426ae2821ec1ca6774acce8bf504c3f189d029c4f7ac02b1467d1c342522517b04c38e010509794e432a811f6fe07552c3258c6c7d3aa107f01a9
+DIST sphinx_autodoc_typehints-3.10.0.tar.gz.provenance 9573 BLAKE2B bcdc2e87127388fd7b232b81ad84cc09e30e9e909efb695b3e71be8d409616c64b9b4dc8b867ee31693a972b57d12048a349fce769d74519b700dee7bf232056 SHA512 7c0715c8dc53f25b85c06796f300dfe65924f5b56c707bdc52f9487036a614e6e1885f8bc9e296077fd6c929256879ab279831436112a415919eaae1086b78e1
DIST sphinx_autodoc_typehints-3.8.0.tar.gz 59672 BLAKE2B 05bf3eff2eb1f4a66b151e8d676ebddb081e2d8240c13c50d255d4e3f88cfe284c0cccac8be355a2b850c0341ba8a59aba4ab10c1fdbec5b47bf75e2fdadd84d SHA512 48648be12dce2640531846ccebdec653496f44309ec002411a61ee531efcfea8911fed75edcf95718bb0e5a8b096f9d47b8214b8a4a64f299f94b9e0d552967b
DIST sphinx_autodoc_typehints-3.8.0.tar.gz.provenance 9964 BLAKE2B b1a4800a4778509bb2af2f3350b4e0213a1f3cc34f3636a9505ec07be7c5eea8d431ffee3796597d4ffbc4218b85f4aff5b4fe1809f7dae25189b6f18faebc6b SHA512 7f630714ab8461ab4449e839d2fabb0633f24490b1c4851600cb94407051e4ad7862870e9b382c4bfb4d8dbc34a080a84ce6abf63c1944d7656ab629d918448b
DIST sphinx_autodoc_typehints-3.9.11.tar.gz 70261 BLAKE2B b5953b4536f3e0f5e9d422a5166a5f7dbec5a2792cc74b23614d26287e4e4b94179d1a8b4809d389431f72c783f7ef09adf3d1df7bc4bb6104b29674033376cc SHA512 6305a90a01e8b3fe2ed01177c2c54defd8a90906de761fe0c0cba7dfbbe0a3a12d5f712e8550ea2abb9c884ad42e9fd3f0c410a3088907563c0daac216a5a5ad
diff --git a/dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-3.10.0.ebuild b/dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-3.10.0.ebuild
new file mode 100644
index 000000000000..a0ad03fedabb
--- /dev/null
+++ b/dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-3.10.0.ebuild
@@ -0,0 +1,44 @@
+# 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/tox-dev/sphinx-autodoc-typehints
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Type hints support for the Sphinx autodoc extension"
+HOMEPAGE="
+ https://github.com/tox-dev/sphinx-autodoc-typehints/
+ https://pypi.org/project/sphinx-autodoc-typehints/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/sphinx-9.0.4[${PYTHON_USEDEP}]
+"
+# skipping optional test dep on dev-python/nptyping as that package
+# is horribly broken and on its way out
+BDEPEND="
+ dev-python/hatch-vcs[${PYTHON_USEDEP}]
+ test? (
+ >=dev-python/attrs-25.4[${PYTHON_USEDEP}]
+ >=dev-python/numpydoc-1.10[${PYTHON_USEDEP}]
+ >=dev-python/sphobjinv-2.3.1[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.5[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # Internet
+ tests/test_annotations.py::test_format_annotation
+ tests/test_resolver/test_stubs.py::test_sphinx_build_stub_types_produce_crossrefs
+)
diff --git a/dev-python/tox/Manifest b/dev-python/tox/Manifest
index e6057a0943aa..de78315057e0 100644
--- a/dev-python/tox/Manifest
+++ b/dev-python/tox/Manifest
@@ -4,3 +4,5 @@ DIST tox-4.50.3.tar.gz 266455 BLAKE2B 77a18cb2beeb4df6e80b8cdb718e5c51ea77b54ad0
DIST tox-4.50.3.tar.gz.provenance 9287 BLAKE2B 44e6d623b0de01dc586e4a29fdc70ab11e8a12ae9f6267851502e986e0ca5bcbc29f1f00bd5054752870155e058e660b78454af216eb439e421be94c74e72b8e SHA512 809624f5faa01e2b9141269a3988b51cf427a0b8b9bb3618b13234c3fa07e660d6b9fb65f5339d8a8a97a9a1b87da21facfe700dee278af974e69852bd5df695
DIST tox-4.51.0.tar.gz 268657 BLAKE2B 52d453f2de4f4b24e81cd6850870f1086df762bc7e1e838f6a3101bf3b7aa449930637b5eef25f652267d9749a33eb3b6454a362d25cc4af7a2f2f49c5773e3c SHA512 e1f61da04330b353850cb78640caf731934ab5f75f56266dfbf668612529ce2012c166fcccd3860fe708e4acb2fdb9cad876131e61641615f6e44afea834e2ff
DIST tox-4.51.0.tar.gz.provenance 9283 BLAKE2B 44c387a35815b55da8830bf0c57e115c35ac2c7e7f77c90d61a40d0c682a4cc5d941c35471d6f7b8b28f324e813726bf0f100a66a2f9e562fcad1eba299360b4 SHA512 28e558b4d40672dca95bd035c87e1ae031800401889d4118526a1e460cd1510a4703e024d5f79344b47beb0603b6d38e499b6790535c633e0eafb12dcbe29559
+DIST tox-4.52.1.tar.gz 273730 BLAKE2B f4c03bc4336d844063e86cbabaef67afdfee88e44cd4f2e5a703feb6b598a51fdeb15b0954790d1b4a3632b1c84ccf649f6874772566eb387c240df3fb6a5d62 SHA512 2afbd49fbf298388f54329ab23b63af81c67692e52f95c483ef81fcf206e2a345f219389a3aa635d1b9c4ddb56a163a17a76550ccc1716f1ab42e922f51a68dd
+DIST tox-4.52.1.tar.gz.provenance 9142 BLAKE2B 14b0420896e2dba90aec162fe0ac917c4b9df9626f4b52c4d3e832e389ef789f52be6ed63d7c7a191453e977f691e95904004006a5d81cd666d8ecc99379c2fd SHA512 35fdcca7fe9277d1c3d7a8867c5309c8e08a32cf5bca47d43dedfef12e9fe75edd818c8eec17872e521d923d9c6daeb931014a6f733041db9c1f464b1018e5a3
diff --git a/dev-python/tox/tox-4.52.1.ebuild b/dev-python/tox/tox-4.52.1.ebuild
new file mode 100644
index 000000000000..c5fecf9f98f6
--- /dev/null
+++ b/dev-python/tox/tox-4.52.1.ebuild
@@ -0,0 +1,95 @@
+# 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/tox-dev/tox
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="virtualenv-based automation of test activities"
+HOMEPAGE="
+ https://tox.readthedocs.io/
+ https://github.com/tox-dev/tox/
+ https://pypi.org/project/tox/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~riscv ~s390 ~x86"
+
+RDEPEND="
+ dev-python/cachetools[${PYTHON_USEDEP}]
+ dev-python/colorama[${PYTHON_USEDEP}]
+ dev-python/filelock[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ dev-python/platformdirs[${PYTHON_USEDEP}]
+ dev-python/pluggy[${PYTHON_USEDEP}]
+ dev-python/pyproject-api[${PYTHON_USEDEP}]
+ dev-python/python-discovery[${PYTHON_USEDEP}]
+ dev-python/tomli-w[${PYTHON_USEDEP}]
+ dev-python/virtualenv[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ dev-python/docutils[${PYTHON_USEDEP}]
+ dev-python/hatch-vcs[${PYTHON_USEDEP}]
+ test? (
+ dev-python/argcomplete[${PYTHON_USEDEP}]
+ dev-python/build[${PYTHON_USEDEP}]
+ dev-python/distlib[${PYTHON_USEDEP}]
+ dev-python/psutil[${PYTHON_USEDEP}]
+ dev-python/re-assert[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/time-machine[${PYTHON_USEDEP}]
+ ' 'python*')
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-{mock,rerunfailures,timeout,xdist} )
+# xdist seems to mess up state between successive implementation runs
+distutils_enable_tests pytest
+
+src_prepare() {
+ # upstream lower bounds are meaningless
+ sed -i -e 's:>=[0-9.]*::' pyproject.toml || die
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ # devpi_process is not packaged, and has lots of dependencies
+ cat > "${T}"/devpi_process.py <<-EOF || die
+ def IndexServer(*args, **kwargs): raise NotImplementedError()
+ EOF
+
+ local -x PYTHONPATH=${T}:${PYTHONPATH}
+ local EPYTEST_DESELECT=(
+ # Internet
+ tests/tox_env/python/virtual_env/package/test_package_cmd_builder.py::test_build_wheel_external
+ tests/tox_env/python/virtual_env/package/test_package_cmd_builder.py::test_run_installpkg_targz
+ tests/tox_env/python/virtual_env/package/test_package_pyproject.py::test_pyproject_installpkg_pep517_envs
+ )
+ local EPYTEST_IGNORE=(
+ # requires devpi*
+ tests/test_provision.py
+ )
+
+ case ${EPYTHON} in
+ python*)
+ local EPYTEST_PLUGINS=( "${EPYTEST_PLUGINS[@]}" time-machine )
+ ;;
+ pypy3*)
+ EPYTEST_DESELECT+=(
+ 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[explicit-True-True]'
+ 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[requirements-True-True]'
+ 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[constraints-True-True]'
+ 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[explicit+requirements-True-True]'
+ 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[requirements_indirect-True-True]'
+ 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[requirements_constraints_indirect-True-True]'
+ )
+ ;;
+ esac
+
+ epytest -o addopts=
+}
diff --git a/dev-python/translate-toolkit/Manifest b/dev-python/translate-toolkit/Manifest
index e926af71e539..b273a3b141ae 100644
--- a/dev-python/translate-toolkit/Manifest
+++ b/dev-python/translate-toolkit/Manifest
@@ -1 +1,2 @@
DIST translate-3.19.3.gh.tar.gz 1297097 BLAKE2B 4dad6f730ad441cb709990a12eebfc38d98b805c469f07b5eafb46f85aee7c58572d449e1325a7f0f7b438288ad290136ee07b1b8acac5680a7f8a5707a7ad0e SHA512 36c2308bbe8c512bf72bf4a8d29129cf096f514c5c78f9c464183130ec287b70dc0cc79d95e73082e1c978af2e335ac48159cb0fca861a0555a320e82128275d
+DIST translate-3.19.4.gh.tar.gz 1312664 BLAKE2B 90da92402354a10bb68701781bd2572aa8461aa858840badbbdc866da8ddc600006b9d22e177f5f3ce68a5eaec14f38373f6c13c758d84f208da71a97885161d SHA512 e4fbf1276205452782f798b1f57fb2acb57fc1d92246a032e2912def53db1764121a6a0ddff9a9237a21f9bb1fad274129133517ec28e8d26add592ac7b4ebcc
diff --git a/dev-python/translate-toolkit/translate-toolkit-3.19.4.ebuild b/dev-python/translate-toolkit/translate-toolkit-3.19.4.ebuild
new file mode 100644
index 000000000000..74f9adb4cf7c
--- /dev/null
+++ b/dev-python/translate-toolkit/translate-toolkit-3.19.4.ebuild
@@ -0,0 +1,130 @@
+# 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_{10..14} )
+PYTHON_REQ_USE="sqlite"
+
+inherit distutils-r1
+
+MY_P=translate-${PV}
+DESCRIPTION="Toolkit to convert between many translation formats"
+HOMEPAGE="
+ https://github.com/translate/translate/
+ https://pypi.org/project/translate-toolkit/
+"
+SRC_URI="
+ https://github.com/translate/translate/archive/${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S="${WORKDIR}"/${MY_P}
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+IUSE="+html +ical +ini +subtitles +yaml"
+
+RDEPEND="
+ app-text/iso-codes
+ >=dev-python/chardet-3.0.4[${PYTHON_USEDEP}]
+ dev-python/cheroot[${PYTHON_USEDEP}]
+ >=dev-python/levenshtein-0.12.0[${PYTHON_USEDEP}]
+ >=dev-python/lxml-5.2.0[${PYTHON_USEDEP}]
+ >=dev-python/mistletoe-1.1.0[${PYTHON_USEDEP}]
+ >=dev-python/pyparsing-3[${PYTHON_USEDEP}]
+ dev-python/ruamel-yaml[${PYTHON_USEDEP}]
+ dev-python/tomlkit[${PYTHON_USEDEP}]
+ >=dev-python/unicode-segmentation-rs-0.2.0[${PYTHON_USEDEP}]
+ >=dev-python/wcwidth-0.2.14[${PYTHON_USEDEP}]
+ sys-devel/gettext
+ html? ( dev-python/utidylib[${PYTHON_USEDEP}] )
+ ical? ( dev-python/vobject[${PYTHON_USEDEP}] )
+ ini? ( >=dev-python/iniparse-0.5[${PYTHON_USEDEP}] )
+ subtitles? ( media-video/gaupol[${PYTHON_USEDEP}] )
+ yaml? ( dev-python/pyyaml[${PYTHON_USEDEP}] )
+"
+# Technically, the test suite also has undeclared dependency
+# on dev-python/snapshottest but all the tests using it are broken
+# anyway, so we skip them.
+BDEPEND="
+ test? (
+ dev-python/phply[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # strip unnecessary pins
+ sed -i -e 's:,<[0-9.]*::' pyproject.toml || die
+}
+
+src_test() {
+ # unfortunately, this bad quality package doesn't support XDG_DATA_DIRS
+ # correctly, so we need to reassemble all data files in a single directory
+ local -x XDG_DATA_HOME=${T}/share
+ cp -r translate/share "${T}/" || die
+ cp -r "${ESYSROOT}"/usr/share/gaupol "${XDG_DATA_HOME}"/ || die
+
+ distutils-r1_src_test
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # Fails with network-sandbox (and even with it off but w/ softer fail)
+ 'tests/xliff_conformance/test_xliff_conformance.py::test_open_office_to_xliff'
+ 'tests/xliff_conformance/test_xliff_conformance.py::test_po_to_xliff'
+ # all tests based on snapshottest are broken and I'm too tired
+ # to figure this out
+ tests/translate/tools/test_pocount.py::test_{cases,output}
+ tests/translate/tools/test_junitmsgfmt.py::test_output
+ )
+ local EPYTEST_IGNORE=(
+ # unpackaged fluent.*
+ tests/translate/storage/test_fluent.py
+ tests/translate/convert/test_fluent2po.py
+ # changes directory and does not change it back, sigh
+ tests/odf_xliff/test_odf_xliff.py
+ )
+
+ if ! has_version "dev-python/iniparse[${PYTHON_USEDEP}]"; then
+ EPYTEST_IGNORE+=(
+ translate/convert/test_ini2po.py
+ translate/convert/test_po2ini.py
+ )
+ fi
+
+ if ! has_version "media-video/gaupol[${PYTHON_USEDEP}]"; then
+ EPYTEST_IGNORE+=(
+ translate/storage/test_subtitles.py
+ )
+ fi
+
+ epytest
+}
+
+python_install_all() {
+ distutils-r1_python_install_all
+
+ insinto /usr
+ doins -r translate/share
+
+ if ! use html; then
+ rm "${ED}"/usr/bin/{html2po,po2html} || die
+ fi
+ if ! use ical; then
+ rm "${ED}"/usr/bin/{ical2po,po2ical} || die
+ fi
+ if ! use ini; then
+ rm "${ED}"/usr/bin/{ini2po,po2ini} || die
+ fi
+ if ! use subtitles; then
+ rm "${ED}"/usr/bin/{sub2po,po2sub} || die
+ fi
+}
diff --git a/dev-python/uv-build/Manifest b/dev-python/uv-build/Manifest
index 37c26e74e96d..4f2f59009f48 100644
--- a/dev-python/uv-build/Manifest
+++ b/dev-python/uv-build/Manifest
@@ -4,3 +4,4 @@ DIST uv_build-0.11.1.tar.gz 381246 BLAKE2B 57bd4e5366899c745294e967b9c632ff12587
DIST uv_build-0.11.2.tar.gz 381227 BLAKE2B a0989816b2c4f224fe78d88a0dbee2f87b6426d0cb67299ae7f5caec644bf11ba0a3503919103d5c2a747cf696f2e7447a618a8b11156ffad9c308eeb3fb1e7b SHA512 66ce17d053002eb3c7fe82bf0c0e9953770dbc5b75822fa6bacdddd3092b5899d5416cd669e633a58b644e6fb6ceb6a8ff940878d7874c08b5d23b02564f2ba3
DIST uv_build-0.11.3.tar.gz 382592 BLAKE2B c212ba9dbd57d588f229a6972a20824cb1439c1770d677a7754a2ccad598a0b9235edbd4c6e178bae99c04c2a31a104a6213335e2c8e005728b25500c1b3a729 SHA512 3ed531b2ac111a8446336861eb80e90d5e7aa595cc65de7e83c79f94f4b2a0183028e3738ed30169b00430ef380574701fd1beffd120bc2cf7510d3bcb28bf11
DIST uv_build-0.11.5.tar.gz 360294 BLAKE2B 5e913cc609b40bbc906e574a16d1cecec8fa59517ef3dac392ebe81e7d377ca20346ddb09b4292377cbbc506cce95e5c4df284d80b5f26907de6539999bc52d3 SHA512 731cdd7a17ba40d20add0ef9928c688016b4f19b5378a7cb71a3d02aca09a4585a1bd6b6304ef4c1b5745fe3edb5ee36a1a49b563946dd29d1e210fd5946d1de
+DIST uv_build-0.11.6.tar.gz 361928 BLAKE2B 800f59a32bab5b850fb30627b6e47c4a2e7bd8d1a292584e2c3b33e2c3aee81907b8e6ebe95298bac607df161e29437cc8a84bb8a44e32435028ab5fd3bf22af SHA512 8a9fc7cca9e42f42db888b6a9f3888393feae79d0ce8ca56568c83cbee977675d8a39a38b820606d1ac685ef99b92a182795c2521f4796865acd774fd73c6bac
diff --git a/dev-python/uv-build/uv-build-0.11.6.ebuild b/dev-python/uv-build/uv-build-0.11.6.ebuild
new file mode 100644
index 000000000000..2ab229426f84
--- /dev/null
+++ b/dev-python/uv-build/uv-build-0.11.6.ebuild
@@ -0,0 +1,99 @@
+# 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_{10..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 ~ppc ~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}/
+uv_build-${PV}/README.md
+uv_build-${PV}/pyproject.toml
+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 cce084496c65..cd07f4c2d5b5 100644
--- a/dev-python/uv/Manifest
+++ b/dev-python/uv/Manifest
@@ -10,3 +10,5 @@ DIST uv-0.11.3-crates.tar.xz 46981748 BLAKE2B be42ea0a2997d23ddbd1e2772c4ad1e7a2
DIST uv-0.11.3.gh.tar.gz 5161685 BLAKE2B 901bb7292d0febd3970ff84913143bc3d31252f6e2bad08ef67bdb3638eb00760b0eea5717f5b5e40e2fd862c065fafe1ac23b57b186434fe5f0899835795c44 SHA512 5694bbb75136052b929356d8a7c66d16af515709a5f68c8d5d0a8353fa51a724677bab16c6288a53d128e95614898444f6ee3cc686bb34817ff15796d4dc46f9
DIST uv-0.11.5-crates.tar.xz 46830584 BLAKE2B 6fbf2c9aa231588833e5cce30da2a9238af8bd22fd849cf45c3ffab52b405bcd6c5b488a9cc6975e09781ce379405c6323d7cb3c330243ae5a7b53efb775d06e SHA512 243e69e5512d09a48d47c76f100dae390e2ea9de51eb4671a9bc84a8fcbbdafe96832b6afc7222185f09f1c11c5aa6a32be9185f723b7dc67e13a94205f759d2
DIST uv-0.11.5.gh.tar.gz 5200922 BLAKE2B 67631c35da46465c324bb3417312be7f5e9f50cafaf7f32b679b282ab4e5997c7ddc3a6a0cba3af138d95c4890475e3055cd6dc0dacf0e42bfa63761b839d766 SHA512 ade88d151b3da1a73dbd43b6b9c27722822f61e7088a53dfc1a073436350705468b37ebd301eaa5ddb2fdcd39978096b2c95180c735bc49c4a07391ca3bd4c09
+DIST uv-0.11.6-crates.tar.xz 46830584 BLAKE2B 6fbf2c9aa231588833e5cce30da2a9238af8bd22fd849cf45c3ffab52b405bcd6c5b488a9cc6975e09781ce379405c6323d7cb3c330243ae5a7b53efb775d06e SHA512 243e69e5512d09a48d47c76f100dae390e2ea9de51eb4671a9bc84a8fcbbdafe96832b6afc7222185f09f1c11c5aa6a32be9185f723b7dc67e13a94205f759d2
+DIST uv-0.11.6.gh.tar.gz 5211342 BLAKE2B 43b6cf60e3a97e70c847878e36d5ae854e7458922121b4b85a9d61d48a1e740c47c408600c92458e4a89d69308fef4833da41b2dd0ad5dbb6ac94b5d2e48c549 SHA512 3f370f98b253dd84706f1724155ba4ed5cafb41b612fa75151aef26dd4f18c85f59d93c5bbddae1c59ea594fdc88857d005b6e8728cdd24f5b37b99ba4ef32cd
diff --git a/dev-python/uv/uv-0.11.6.ebuild b/dev-python/uv/uv-0.11.6.ebuild
new file mode 100644
index 000000000000..ea2607714c56
--- /dev/null
+++ b/dev-python/uv/uv-0.11.6.ebuild
@@ -0,0 +1,164 @@
+# Copyright 2024-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+CRATES="
+"
+RUST_MIN_VER="1.92.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+="
+ 0BSD 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 BZIP2
+"
+# ring crate
+LICENSE+=" openssl"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~x86"
+IUSE="test"
+RESTRICT="test"
+PROPERTIES="test_network"
+
+DEPEND="
+ app-arch/bzip2:=
+ app-arch/xz-utils:=
+ app-arch/zstd:=
+"
+RDEPEND="
+ ${DEPEND}
+"
+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
+ )
+"
+
+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 libz-ng-sys, tikv-jemalloc-sys?
+
+ # remove unbundled sources, just in case
+ find "${ECARGO_VENDOR}"/{bzip2,lzma,zstd}-sys-*/ -name '*.c' -delete || die
+
+ # bzip2-sys requires a pkg-config file
+ # https://github.com/alexcrichton/bzip2-rs/issues/104
+ mkdir "${T}/pkg-config" || die
+ export PKG_CONFIG_PATH=${T}/pkg-config${PKG_CONFIG_PATH+:${PKG_CONFIG_PATH}}
+ cat >> "${T}/pkg-config/bzip2.pc" <<-EOF || die
+ Name: bzip2
+ Version: 9999
+ Description:
+ Libs: -lbz2
+ EOF
+
+ # uv is now forcing bundled liblzma, sigh
+ sed -i -e '/xz/s:"static"::' Cargo.toml || die
+}
+
+src_configure() {
+ local myfeatures=(
+ test-git
+ test-pypi
+ test-python
+ )
+
+ cargo_src_configure --no-default-features
+}
+
+src_compile() {
+ cd crates/uv || die
+ cargo_src_compile
+}
+
+src_test() {
+ cd crates/uv || die
+ cargo_src_test --no-fail-fast
+}
+
+src_install() {
+ cd crates/uv || die
+ cargo_src_install
+
+ 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"
+ EOF
+}
diff --git a/dev-python/virtualenv/Manifest b/dev-python/virtualenv/Manifest
index e5089083e1fe..a9c42165fff1 100644
--- a/dev-python/virtualenv/Manifest
+++ b/dev-python/virtualenv/Manifest
@@ -2,3 +2,5 @@ DIST virtualenv-20.39.1.tar.gz 5870061 BLAKE2B 30fb2c107616c080935ede0ea2e72e5b7
DIST virtualenv-20.39.1.tar.gz.provenance 9445 BLAKE2B 39909e09db2ab5b8fdd9a192943e3e8279a16efd2c55a88dca6c2f76bb86b78d569d6e9a8a6ef8415a6805d42a0967f0862609eb9a59a5ef7bf35dbfb3a55a51 SHA512 6c7f752fc702cfb00005215186fc6062a30f319d5d22457abc7a98ee9fbc8e7e466aa6b0af319ff3a98dde013e98759f16100003012c00e644ae91982ceaf157
DIST virtualenv-21.2.0.tar.gz 5840618 BLAKE2B a02d89abb227e83981f2ae8bab925c50d125dfc518ff923c4abca287da7e8103fe0b1240cb0ae420f8584664c42f4edeb5a70c7626c3225de0b033e39ed9bb4e SHA512 29b41748fa5fe5dd79c1199c3ad28beeec168b54b0a051cfda805c20fa78e0505952a06d837bec3e917935845af3a10435ff7d105fa14246623ac3ec8007755e
DIST virtualenv-21.2.0.tar.gz.provenance 9383 BLAKE2B d977d995073e99ddc2822b3982e4a0967568ccd8d064ac2cbbdc132852c3aa63161377d2ab443e291eaf2fe45f5ed3986de82660315926f119dbc1318972e94d SHA512 966aa430c8268df52e03e6640c44f26b04f698ad3c4eae44d4e55944014f449842ce41b2004b7583b5ac47ad90b0e2070da5b6833cdaea1bc9864d2cf484e04b
+DIST virtualenv-21.2.1.tar.gz 5844770 BLAKE2B e14ffb6c788e953df7eacc158743b63f721815868a628be3a5edb7fcbb4ea5cf6653230f4e3ae08e2ecaa79f150d556f67a0793ad0043ad374a296d781c9b0d6 SHA512 7e5d10b48447f202ec3a15d9790398f6adbfef7b4623580535d02aeb69951cbcbef6e57e1a321a617df35457a4b0f64fd6fa588522547303528f263c28b9170b
+DIST virtualenv-21.2.1.tar.gz.provenance 9437 BLAKE2B e87594c8c4aeda80f392b9b53cf9a93c677695eb15e2dc277a680c7f3dcc34559c3ed0116df154d4a19c6cdd17e03d2003959e07adf9997699de037c87742358 SHA512 ab36e476fa751846c2e05800709b1eccd57695f3ab38d6dcc1b063af499c34ac157121a9d517664922231b0d89c9efd39bf2b0f8404790eb3b01be9d7cb2bee2
diff --git a/dev-python/virtualenv/virtualenv-21.2.1.ebuild b/dev-python/virtualenv/virtualenv-21.2.1.ebuild
new file mode 100644
index 000000000000..e7ea20644b23
--- /dev/null
+++ b/dev-python/virtualenv/virtualenv-21.2.1.ebuild
@@ -0,0 +1,134 @@
+# 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_{11..14} pypy3_11 )
+PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" )
+
+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 ~riscv ~s390 ~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/platformdirs-3.9.1[${PYTHON_USEDEP}]
+ >=dev-python/python-discovery-1[${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/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/wheel[${PYTHON_USEDEP}]
+ >=dev-python/packaging-20.0[${PYTHON_USEDEP}]
+ ' "${PYTHON_TESTED[@]}")
+ $(python_gen_cond_dep '
+ dev-python/time-machine[${PYTHON_USEDEP}]
+ ' python3_{11..14})
+ $(python_gen_cond_dep '
+ >=dev-python/pytest-freezer-0.4.6[${PYTHON_USEDEP}]
+ ' 'pypy3*')
+ )
+"
+
+src_prepare() {
+ local PATCHES=(
+ # use wheels from ensurepip bundle
+ "${FILESDIR}/${PN}-21.1.0-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
+ # 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
+ )
+ case ${EPYTHON} in
+ pypy3.11)
+ EPYTEST_DESELECT+=(
+ # these don't like the executable called pypy3.11?
+ tests/unit/activation/test_bash.py::test_bash
+ tests/unit/activation/test_fish.py::test_fish
+ tests/unit/discovery/py_info/test_py_info.py::test_fallback_existent_system_executable
+ )
+ ;;
+ esac
+
+ local -x TZ=UTC
+ local EPYTEST_PLUGINS=( pytest-{mock,rerunfailures} )
+ if [[ ${EPYTHON} == pypy3* ]]; then
+ EPYTEST_PLUGINS+=( pytest-freezer )
+ else
+ EPYTEST_PLUGINS+=( time-machine )
+ fi
+ 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/wrapt/Manifest b/dev-python/wrapt/Manifest
index 25ee0c407d36..07f390587e34 100644
--- a/dev-python/wrapt/Manifest
+++ b/dev-python/wrapt/Manifest
@@ -1,5 +1,3 @@
DIST wrapt-1.17.3.gh.tar.gz 140900 BLAKE2B 88c4cd718cd98a97c866c4f0b9f7e095347fe6fa5fed60c54e389329c89f9f07099c8fb79561cf5e12c19c44a4067d81e805c55b54a74429e6b75913dedd6b3f SHA512 1a1f7419f20faa461a9e23ad09cc98d381ef2c48b3b24ed1dfe98d42d16857a958252301e78dd41b7fa8ef37eea379f9244cace2b396b49718c44cbc701308a3
-DIST wrapt-2.0.1.gh.tar.gz 184792 BLAKE2B 127b42113031a8284a72e49e0e4a737754ecd2dc6dc41628154c0c9c5d092f81c67e30339ca8b740f6d26f94bdbebc9a6c43c75b9e12dc1ff86431b003d6d0ad SHA512 ff7a69e7c2454f33f0f631f408013242a0292b28a8a601e981cef9b8c997b5769305bfb6b68b2504e96a1d2181d8e9aa48b25a159178f73906b53e527a00cbc5
-DIST wrapt-2.1.0.gh.tar.gz 183579 BLAKE2B 086cd80794abd3ba2cda04b1cca1f8e6e09e0c3ad6afdd852f174bcb1c6196d1603f15fe08f1f18600dbbed025a8341cb6be16c2d84469e05d9fd10b9dd3868b SHA512 7faea2c7df3be93ae0b28b62a03cb0d95e9120e6d0fe7ddeb1d8fe5081686ad76d0a5e80cd1ed75209eb17e8aea1c777b9ad66af6a34436bc0f8cbe53529d2f3
-DIST wrapt-2.1.1.tar.gz 81329 BLAKE2B 124aef3455f52e4baf264e4d0ff478b2eca20e8ed225c69faf72de182b28d4cf45a33a0f47947c78172d89894dd1f9656aaad9181ed2a6c52629d0ee61624242 SHA512 26ad70de5662329abca8b0d05652ca5a0585f58c0a9808afe96222a81bc54bef11ec841d64993364f4fcc9719c99a96c19ea77134b146c5cb7ee8a9044359444
DIST wrapt-2.1.2.tar.gz 81678 BLAKE2B f7fc45f31b8077d6d97c14c1f649437e0f1da7537769d369d427edede0ba1b84c8c07e6de9ded8088f29f2fb774272186d0f9b707e6b2bef650dc5f78444d852 SHA512 97f1af4cabfd7a4cfabfaf36d26d1afc577747f18946226fbb80256e13c55302b746005e01720e874d46d536826c83e9234544c98f8dd1ecd3c9a091113da808
+DIST wrapt-2.2.0rc2.tar.gz 91919 BLAKE2B 5f3c42f36f2ec74677a0de7367a019f0b02a183ee28f77f91d2748f8a0cd6714a2d315bdd1900fffc9ea383e1f236b2437aada6fe308d1607578fdb70555f57b SHA512 a70626f14f1b59cc5dfcf99038a72dca022b953f280b34a9472621afe22cecda450b660244bade2956e1b8e13c21365839b186c60ac68e993a0f55f6e44a4ccd
diff --git a/dev-python/wrapt/wrapt-2.0.1.ebuild b/dev-python/wrapt/wrapt-2.0.1.ebuild
deleted file mode 100644
index 85e85ae72775..000000000000
--- a/dev-python/wrapt/wrapt-2.0.1.ebuild
+++ /dev/null
@@ -1,36 +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
-PYTHON_COMPAT=( python3_{10..14} )
-
-inherit distutils-r1
-
-MY_P=${P/_}
-DESCRIPTION="Module for decorators, wrappers and monkey patching"
-HOMEPAGE="
- https://github.com/GrahamDumpleton/wrapt/
- https://pypi.org/project/wrapt/
-"
-SRC_URI="
- https://github.com/GrahamDumpleton/wrapt/archive/${PV/_}.tar.gz
- -> ${MY_P}.gh.tar.gz
-"
-S=${WORKDIR}/${MY_P}
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="~alpha ~amd64 arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
-IUSE="+native-extensions"
-
-EPYTEST_PLUGINS=()
-distutils_enable_tests pytest
-distutils_enable_sphinx docs dev-python/sphinx-rtd-theme
-
-python_compile() {
- local -x WRAPT_INSTALL_EXTENSIONS=$(usex native-extensions true false)
- distutils-r1_python_compile
-}
diff --git a/dev-python/wrapt/wrapt-2.1.0.ebuild b/dev-python/wrapt/wrapt-2.1.0.ebuild
deleted file mode 100644
index 823530186a4e..000000000000
--- a/dev-python/wrapt/wrapt-2.1.0.ebuild
+++ /dev/null
@@ -1,38 +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
-PYTHON_COMPAT=( python3_{10..14} )
-
-inherit distutils-r1
-
-MY_P=${P/_}
-DESCRIPTION="Module for decorators, wrappers and monkey patching"
-HOMEPAGE="
- https://github.com/GrahamDumpleton/wrapt/
- https://pypi.org/project/wrapt/
-"
-SRC_URI="
- https://github.com/GrahamDumpleton/wrapt/archive/${PV/_}.tar.gz
- -> ${MY_P}.gh.tar.gz
-"
-S=${WORKDIR}/${MY_P}
-
-LICENSE="BSD"
-SLOT="0"
-if [[ ${PV} != *_rc* ]]; then
- KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
-fi
-IUSE="+native-extensions"
-
-EPYTEST_PLUGINS=()
-distutils_enable_tests pytest
-distutils_enable_sphinx docs dev-python/sphinx-rtd-theme
-
-python_compile() {
- local -x WRAPT_INSTALL_EXTENSIONS=$(usex native-extensions true false)
- distutils-r1_python_compile
-}
diff --git a/dev-python/wrapt/wrapt-2.1.1.ebuild b/dev-python/wrapt/wrapt-2.2.0_rc2.ebuild
index 1140ac517b4b..8514e94dc258 100644
--- a/dev-python/wrapt/wrapt-2.1.1.ebuild
+++ b/dev-python/wrapt/wrapt-2.2.0_rc2.ebuild
@@ -26,6 +26,13 @@ IUSE="+native-extensions"
EPYTEST_PLUGINS=()
distutils_enable_tests pytest
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # skip mypy tests, they are fragile
+ rm -r tests/mypy || die
+}
+
python_compile() {
local -x WRAPT_INSTALL_EXTENSIONS=$(usex native-extensions true false)
distutils-r1_python_compile