summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/bitarray/Manifest1
-rw-r--r--dev-python/bitarray/bitarray-3.8.2.ebuild24
-rw-r--r--dev-python/boto3/Manifest2
-rw-r--r--dev-python/boto3/boto3-1.43.31.ebuild53
-rw-r--r--dev-python/boto3/boto3-1.43.32.ebuild53
-rw-r--r--dev-python/botocore/Manifest2
-rw-r--r--dev-python/botocore/botocore-1.43.31.ebuild67
-rw-r--r--dev-python/botocore/botocore-1.43.32.ebuild67
-rw-r--r--dev-python/braintree/Manifest1
-rw-r--r--dev-python/braintree/braintree-4.45.0.ebuild39
-rw-r--r--dev-python/clang/Manifest2
-rw-r--r--dev-python/clang/clang-22.1.8.ebuild54
-rw-r--r--dev-python/elastic-transport/Manifest1
-rw-r--r--dev-python/elastic-transport/elastic-transport-9.4.2.ebuild70
-rw-r--r--dev-python/fakeredis/Manifest2
-rw-r--r--dev-python/fakeredis/fakeredis-2.36.2.ebuild141
-rw-r--r--dev-python/greenlet/Manifest1
-rw-r--r--dev-python/greenlet/greenlet-3.5.2.ebuild47
-rw-r--r--dev-python/httpbin/Manifest2
-rw-r--r--dev-python/httpbin/httpbin-0.10.4.ebuild45
-rw-r--r--dev-python/jupyter-server/Manifest1
-rw-r--r--dev-python/jupyter-server/jupyter-server-2.20.0.ebuild68
-rw-r--r--dev-python/jupyterlab/Manifest1
-rw-r--r--dev-python/jupyterlab/jupyterlab-4.5.9.ebuild76
-rw-r--r--dev-python/libtmux/Manifest2
-rw-r--r--dev-python/libtmux/libtmux-0.58.1.ebuild40
-rw-r--r--dev-python/lit/Manifest2
-rw-r--r--dev-python/lit/lit-22.1.8.ebuild46
-rw-r--r--dev-python/openstacksdk/Manifest1
-rw-r--r--dev-python/openstacksdk/openstacksdk-4.16.0.ebuild94
-rw-r--r--dev-python/parse/parse-1.22.1.ebuild2
-rw-r--r--dev-python/peewee/Manifest1
-rw-r--r--dev-python/peewee/peewee-4.1.0.ebuild83
-rw-r--r--dev-python/pulsectl-asyncio/Manifest1
-rw-r--r--dev-python/pulsectl-asyncio/pulsectl-asyncio-1.3.0.ebuild42
-rw-r--r--dev-python/pypdf/Manifest1
-rw-r--r--dev-python/pypdf/pypdf-6.13.3.ebuild53
-rw-r--r--dev-python/pyproject-fmt/Manifest4
-rw-r--r--dev-python/pyproject-fmt/pyproject-fmt-2.25.0.ebuild113
-rw-r--r--dev-python/s3transfer/Manifest1
-rw-r--r--dev-python/s3transfer/s3transfer-0.19.0.ebuild42
-rw-r--r--dev-python/selenium/Manifest3
-rw-r--r--dev-python/selenium/selenium-4.45.0.ebuild166
-rw-r--r--dev-python/snakeoil/Manifest1
-rw-r--r--dev-python/snakeoil/snakeoil-0.10.11.ebuild30
-rw-r--r--dev-python/sphinxcontrib-programoutput/Manifest1
-rw-r--r--dev-python/sphinxcontrib-programoutput/sphinxcontrib-programoutput-0.20.ebuild38
-rw-r--r--dev-python/svglib/Manifest3
-rw-r--r--dev-python/svglib/svglib-2.0.0.ebuild35
-rw-r--r--dev-python/svglib/svglib-2.0.1.ebuild37
-rw-r--r--dev-python/tqdm/Manifest2
-rw-r--r--dev-python/tqdm/tqdm-4.68.3.ebuild43
-rw-r--r--dev-python/tzlocal/Manifest1
-rw-r--r--dev-python/tzlocal/tzlocal-5.4.3.ebuild22
-rw-r--r--dev-python/vcrpy/Manifest1
-rw-r--r--dev-python/vcrpy/vcrpy-8.2.1.ebuild61
-rw-r--r--dev-python/virtualenv/Manifest2
-rw-r--r--dev-python/virtualenv/files/virtualenv-21.5.1-ensurepip.patch28
-rw-r--r--dev-python/virtualenv/virtualenv-21.5.1.ebuild117
59 files changed, 1907 insertions, 32 deletions
diff --git a/dev-python/bitarray/Manifest b/dev-python/bitarray/Manifest
index 8cbc7ac53451..25cea4fa7958 100644
--- a/dev-python/bitarray/Manifest
+++ b/dev-python/bitarray/Manifest
@@ -1 +1,2 @@
DIST bitarray-3.8.1.tar.gz 152471 BLAKE2B be95b93ca030837253baf0172a3a93d9995be58da742371e24641a62d7b03008f19198c5d799cca8c848c55c8ebee10c463454147375799d5e2c9d0315421bd0 SHA512 ae471b099fcc10b3d37c16934aaadaf2e9bab06295a1ae5c948b792cfcd0e5fbaa4f37c01dad120a005785f65e981cad288e88d4a7fd3d58d7170e8b19fad759
+DIST bitarray-3.8.2.tar.gz 153516 BLAKE2B c643c2152bf8533a97b6f93116446958927a8ec0f73f191e7e48ed262beda701050231a33e23f96cd3e1f915c2b8e1f807e3105456dd370e7c3c0383d8b41a89 SHA512 fed909f53005b747c0df2cb2a3bbe64a76fc29f8cfe11ee93d441d694378dd42993ade28acb14b9d12efec73339536294806e1a8e8a9390a5c868557b7a7c344
diff --git a/dev-python/bitarray/bitarray-3.8.2.ebuild b/dev-python/bitarray/bitarray-3.8.2.ebuild
new file mode 100644
index 000000000000..93b1ff66517e
--- /dev/null
+++ b/dev-python/bitarray/bitarray-3.8.2.ebuild
@@ -0,0 +1,24 @@
+# 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_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Efficient arrays of booleans -- C extension"
+HOMEPAGE="
+ https://github.com/ilanschnell/bitarray/
+ https://pypi.org/project/bitarray/
+"
+
+LICENSE="PSF-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86"
+
+python_test() {
+ "${EPYTHON}" bitarray/test_bitarray.py -v || die "Tests fail with ${EPYTHON}"
+}
diff --git a/dev-python/boto3/Manifest b/dev-python/boto3/Manifest
index ec79501dffa6..9d2b9c433ef4 100644
--- a/dev-python/boto3/Manifest
+++ b/dev-python/boto3/Manifest
@@ -3,4 +3,6 @@ DIST boto3-1.43.18.gh.tar.gz 1151413 BLAKE2B 81013f13acbc4e1c154b62b63163b8034cc
DIST boto3-1.43.24.gh.tar.gz 1156465 BLAKE2B 52937853e047217550a0cad9ee09e61f8d5210bb6c943be85f55ae0bbf9a427f2662153df6be4c95dca419208171b427c40b7c254ee6873fbb342cb93e5c599f SHA512 7db83d4c793acab0cb049b4c84e153d958c23c945893a17eb7f84e1e854adfdc18cb94e9c5f9ef5fb9fa4e2cac99b764de87c5a9fbdc93e65283d9528712360c
DIST boto3-1.43.29.gh.tar.gz 1161648 BLAKE2B 3f0a040019fd8ea2a42a82c75bf31e563ef1e74745e3848f59fd8e1eb9946c5470cce0ece81d602cdd104e1d1a0cce68460a0ad993b47cb9d25b40fa3963b9e0 SHA512 c52a78f22daf6b79d772f5661cb56a4c1c35a7ad0001742d84d1c3f308c10534377ade5618bb5a3f95d0c7b4aacc82f42c10a30e521b31d41b9a403adbee1560
DIST boto3-1.43.30.gh.tar.gz 1162726 BLAKE2B fe0050e7ef6187bc9bd96f90e05a216cfc80ddba18c7913548d9371530b8c900d32babd42c20e584f49b36996d13a25a6dbff44ffdb5e6691fbd3884815d2653 SHA512 7ba475dfff395d1d6ba3113a967f090650d75a6e4cfb01f0e2abc157b64b90ba00600501b76a9910fc4586f4480301dca07b304a5c98d6d6ecb555435e0929ba
+DIST boto3-1.43.31.gh.tar.gz 1163677 BLAKE2B 708e4f4b96f9bca483fdb2febda4d482c6ccd26afdd818cb57e8c8915c8cc75ea3ea05d03e488e3c076bff1021bb381e824de02b8ceacac5beab155047a6cf07 SHA512 c8dad5e0a76143225f2069c999e3b1679a71f255277fa2d019c4d4d7b7df5e9d39c0997de8544bdeb40c4c0a78981643050edfbe47cba9a133fa743596a96e11
+DIST boto3-1.43.32.gh.tar.gz 1165416 BLAKE2B b9de6a5e1f1ead2ff872059b67214d94a14709c44d18dd89733f6eaf700cc2bfce21b6c4664b78f26b96031dc54c0cb21e2d695919244e66fc0d595c86405a5a SHA512 97604f3d6b7b9aa18ad735c4d1ff9eb7040bead20de7a3fe57ff4d20e4e1396f7f5b5d27b885daa041d3471b2e394a2067bde6b8745e049ddf310ba178e60d72
DIST boto3-1.43.9.gh.tar.gz 1141698 BLAKE2B 37721c03d15d8cc7d290dcf9e56c5a83d480379514b0504a5164ab0dcec1211f3df001a966562f5f69e94325ccd42bc0da787121c68b75419fa45913feb5a4e6 SHA512 a130960634934428ab43845f69a2997638077c3bf856e12b00637dcd995dd835ad0a01eedd0a25d003d7c3e4515077c5ff19f90d289f5fe3c8bf5d837a629d09
diff --git a/dev-python/boto3/boto3-1.43.31.ebuild b/dev-python/boto3/boto3-1.43.31.ebuild
new file mode 100644
index 000000000000..93fbbe6dd59b
--- /dev/null
+++ b/dev-python/boto3/boto3-1.43.31.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_{13..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.19.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/boto3/boto3-1.43.32.ebuild b/dev-python/boto3/boto3-1.43.32.ebuild
new file mode 100644
index 000000000000..93fbbe6dd59b
--- /dev/null
+++ b/dev-python/boto3/boto3-1.43.32.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_{13..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.19.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 33ce7024f302..ac2e2e30ec60 100644
--- a/dev-python/botocore/Manifest
+++ b/dev-python/botocore/Manifest
@@ -3,4 +3,6 @@ DIST botocore-1.43.18.gh.tar.gz 16377376 BLAKE2B 4eb2808f4aa3b2b64f9d4b5d2df19c0
DIST botocore-1.43.24.gh.tar.gz 16430918 BLAKE2B 526fc9ab71c37cbae5a6b23a0c0bb7e324d6f85bc00cb7c084ad1ed8b1a02c7ed128a006b2f108813bc39ef35cc19279c93a1003e65000e5778c17d8719451b8 SHA512 9086d2dc96221f9886468bbba082711d3fecb2355968db5ed5c1eb69fe0ffaa5a0ce038c62c44bfbc93dcc946780fef264edcefa46d21f4b978ce46a0025ba12
DIST botocore-1.43.29.gh.tar.gz 16476072 BLAKE2B 2525545c2425568e8765100bad446e2ddb7c4ea80f78d52827456a368a4da68ad5e86c60ef6af5611a342e2c8b44c8a057d341941db31d6b1c6cd01506b912b3 SHA512 6d37f50ec4ace4252e7d303e9ddaac8571e28695beadf3d7c23f3d1f413bcc06734e88be6f834d8ef82b3583954b8acc7da325630ae4cce7371684957f3547ae
DIST botocore-1.43.30.gh.tar.gz 16486799 BLAKE2B 222aa0d179e48243317f78f828e1d897b4fd1e8cf5848963d47c2dabfb05890d79a10cd1d3b448661e36c116e94d9c28f6cad48a7e8c4053b1bb655082e6ca13 SHA512 a9e9ba3e57f0c71a654c226633afe4fa699c798c4ddcedd3c0c66238bc2c9d1a27e404e27d691865d558b17b6ea63b483ea326369b5c94a4673a9a3f32d89bcd
+DIST botocore-1.43.31.gh.tar.gz 16506820 BLAKE2B 6b28f96c1fc09f9789bfaa3facdc1afc8e4e1bae7750a91b20d6e4e243cb2a3dfbb9a43371de3313bbdb7c7a53e5d6603d56084d6dd204ce48f8c4f7ebdcc2da SHA512 eac8482458d6bfab2e25ce181880068809942b967d275133961d433eb9247c85d51060a2c7b56002d1fe13f4a572387b6b5cbac173b65322675a9b15b0251651
+DIST botocore-1.43.32.gh.tar.gz 16547131 BLAKE2B 8eed11508d11c6825ca4db693eb7e2d4a72deaf99b4200a209c3e376eec6f4ac16290f87679fe311911f62f2ce7ee8256f35b22dfa42010d4f61f1037f37f827 SHA512 ac6d548ca08674fcfcb9744cd9da792bfb60e9b6b3167ace49040974be2ea3c7ed74e70683c86652017b38df5dbe97bbbbef7bc205b282d58e23e84d3c423829
DIST botocore-1.43.9.gh.tar.gz 16299354 BLAKE2B fcb35ec47d892c36c319a14e62ffedec51fe48ad68beeb2e527c3f282647a5f980a182c8d66ff12a69a45e4c137f1f486b0056345cfeb2c1e52b03b76df5015c SHA512 20033802430564aa77607a0c042511c7831c75f92240da388aaf036d90969f5560b9cb5dbb01f590b95cc9a2039557fd3f540fd6c4170104d732d033e142c08a
diff --git a/dev-python/botocore/botocore-1.43.31.ebuild b/dev-python/botocore/botocore-1.43.31.ebuild
new file mode 100644
index 000000000000..a3a161f78545
--- /dev/null
+++ b/dev-python/botocore/botocore-1.43.31.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_{13..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/botocore/botocore-1.43.32.ebuild b/dev-python/botocore/botocore-1.43.32.ebuild
new file mode 100644
index 000000000000..a3a161f78545
--- /dev/null
+++ b/dev-python/botocore/botocore-1.43.32.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_{13..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/braintree/Manifest b/dev-python/braintree/Manifest
index 8c6d822dfc4c..53274f35ffa3 100644
--- a/dev-python/braintree/Manifest
+++ b/dev-python/braintree/Manifest
@@ -1 +1,2 @@
DIST braintree_python-4.44.0.gh.tar.gz 273269 BLAKE2B afddc608f6ee2cb4decd86ec44492031945a4d3880344dd5ed0a7b9d7d7ede6a38a4d6c5975ce3ea78e13c31768c718ec52423f0e148ee168f2b0c6394b0e75c SHA512 5e93ea7c4a12bbdb1e4ac45a48f7f02f45c1b27f77d0e6e0ea798092534bbb24dc01bbf66bdb4110e718a681302053ba174204738b48a5de5a61758af1c2427f
+DIST braintree_python-4.45.0.gh.tar.gz 273684 BLAKE2B 70784ec41d9e6fe9f80cdf3d0ac1b8386c2b25350082fd3ccae91709abacde75bec6ded6cf16fb53aeb18ff68038e9ae515e42460d464a6deae5a26b23966965 SHA512 daf3e860b5a7c30cfbf2c58d959654ab3a18e40e4eef78f20fd3a40115f0bb50648412b8c153149816e985a01b9cce82c3c938a5ef6f51af15c75ef8eeb7c7c5
diff --git a/dev-python/braintree/braintree-4.45.0.ebuild b/dev-python/braintree/braintree-4.45.0.ebuild
new file mode 100644
index 000000000000..376089a2bfd1
--- /dev/null
+++ b/dev-python/braintree/braintree-4.45.0.ebuild
@@ -0,0 +1,39 @@
+# Copyright 2020-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1
+
+MY_P=braintree_python-${PV}
+DESCRIPTION="Braintree Python Library"
+HOMEPAGE="
+ https://developer.paypal.com/braintree/docs/reference/overview/
+ https://github.com/braintree/braintree_python/
+ https://pypi.org/project/braintree/
+"
+# no tests in sdist, as of 4.19.0
+SRC_URI="
+ https://github.com/braintree/braintree_python/archive/${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ >=dev-python/requests-0.11.0[${PYTHON_USEDEP}]
+"
+
+DOCS=( README.md )
+
+distutils_enable_tests unittest
+
+python_test() {
+ eunittest tests/unit
+}
diff --git a/dev-python/clang/Manifest b/dev-python/clang/Manifest
index 91d9f2577d36..ed7dc1b36ffc 100644
--- a/dev-python/clang/Manifest
+++ b/dev-python/clang/Manifest
@@ -12,4 +12,6 @@ DIST llvm-project-21.1.8.src.tar.xz 158958576 BLAKE2B 0d3d4ee920f8e5db50e9815261
DIST llvm-project-21.1.8.src.tar.xz.sig 119 BLAKE2B cffc1825f5778a3e3c128ec3e856ff6ee50687319d621cdf42e895abf67e05cc51cb7493308e2b506ab60dbdbaca7aa75eb9f78d91d42c81f9682a36f4042e9d SHA512 10f58eff58ed6e701d0f123b15e68c82ab8cbdf99b1c86c0d83e3b8553e90ea51055e30327e8e442ded57c8f503e2a2de9ee075e9c28b5ba815a0f8922f8671c
DIST llvm-project-22.1.7.src.tar.xz 167066344 BLAKE2B 201b7f8f8b4216ad250f9dcdc87f817ac2dac99c1c7f151077e46165c0efae6d04c33c84c70c04c670fe0733e621af866f78d4d93f49e4d8385645f71495f53b SHA512 b7e56121cd6cb24085185ca0b621fec272dd9aa237c49a901043a9a4c31fdbc1ff33e650891d9786cd9495c006e87d4553ac36b518c864c75e99a80e40771bfd
DIST llvm-project-22.1.7.src.tar.xz.sig 119 BLAKE2B 0a1125837ae881dcb356c43e6fcd24dd14e107cd045524906b3879db94184e2c74835ce1e3ee026e55790af5be4b861d629546de6f74374e71e164a571c6ecd0 SHA512 d56bc596b642d6e6e63f1d141dbc7b8151e58befc70fd3d28847f023789823c9daf90100be233ab6597219037ee28187e6e8996992b7226568265c205abad266
+DIST llvm-project-22.1.8.src.tar.xz 167061596 BLAKE2B 092204f62e0f0364a041c737eb2c25fd073cb5689663d6ccd5a9e4e1743d6d80822360d59b64bff7b4d7872a68a79e899bf2f75f384e55c7d313a79243576f03 SHA512 2615b20ba08534f83ab8ecc7b5ba43b5f1dfcf9cdb2534a32fcdbf0ccdd9a008b46276e45ef26ed9377f65b5e4ae89ea798f3863fd034484b5715140f3a7b35c
+DIST llvm-project-22.1.8.src.tar.xz.sig 119 BLAKE2B 2ce93472036e68782252991e4a8bdbeeec8706a56022220083a38a42ef18714a7894c41aaa04dc0d03f18601d8bfc1a5a030ed0ef0f0d64a662eae9843a4b362 SHA512 99a457b5b1fb409a5fe72b59ebd4ddae5cade3e5f2493e33b44d4f4b4625f7a1743f80106efb1134668842b15ea3400ce2c29263bec8ff986e05040910125e15
DIST llvm-project-6d4cd34d861baec5a761d15b81395fbe88f4391b.tar.gz 273781215 BLAKE2B 9ca9896ac0cfcb9449bd0975e16aca725e14ce5a4c3afd859799ef056a0e1341d63fa21b9bfd3ec1bee2a8482c5cecdd59482d373db72f083d399748a2396e15 SHA512 407e7d2ae1df19bf6095a953a1506583de91e203c4d0461b85a87f86d2069f2b23114b65c5c7f0065d9fbbf8d657bec6ef489ba9310b89f0bddab22c86cccb04
diff --git a/dev-python/clang/clang-22.1.8.ebuild b/dev-python/clang/clang-22.1.8.ebuild
new file mode 100644
index 000000000000..500848f4e75b
--- /dev/null
+++ b/dev-python/clang/clang-22.1.8.ebuild
@@ -0,0 +1,54 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+inherit llvm.org python-r1
+
+DESCRIPTION="Python bindings for llvm-core/clang"
+HOMEPAGE="https://llvm.org/"
+
+LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+# The module is opening libclang.so directly, and doing some blasphemy
+# on top of it.
+DEPEND="
+ >=llvm-core/clang-${PV}:*
+ !llvm-core/llvm:0[clang(-),python(-)]
+ !llvm-core/clang:0[python(-)]
+"
+RDEPEND="
+ ${DEPEND}
+ ${PYTHON_DEPS}
+"
+BDEPEND="
+ ${PYTHON_DEPS}
+ test? (
+ llvm-core/clang:${LLVM_MAJOR}
+ )
+"
+
+LLVM_COMPONENTS=( clang/{bindings/python,include} )
+llvm.org_set_globals
+
+python_test() {
+ # tests rely on results from a specific clang version, so override
+ # the search path
+ local -x CLANG_LIBRARY_PATH=${BROOT}/usr/lib/llvm/${LLVM_MAJOR}/$(get_libdir)
+ local -x CLANG_NO_DEFAULT_CONFIG=1
+ "${EPYTHON}" -m unittest discover -v || die "Tests fail with ${EPYTHON}"
+}
+
+src_test() {
+ python_foreach_impl python_test
+}
+
+src_install() {
+ python_foreach_impl python_domodule clang
+}
diff --git a/dev-python/elastic-transport/Manifest b/dev-python/elastic-transport/Manifest
index 2ab21e532a2a..7ad0a62636d9 100644
--- a/dev-python/elastic-transport/Manifest
+++ b/dev-python/elastic-transport/Manifest
@@ -1,2 +1,3 @@
DIST elastic-transport-python-9.2.1.gh.tar.gz 78272 BLAKE2B d469e4caa01f741dac083e30fd06b8770739060ae4eee5e4b6b5de1c043bbaf4a5267b3bac3bae63513416d0ddde2981b7c4867cd8a14dd53ea16e14e5187b4f SHA512 5de5929b01e213f61891c6e535da2d4a6197f31a8bc68b372622ce128141a1521fe2c20a92c83afdd0fd65487c9c753755bc0f08716e252fbc3e8ed1906305a6
DIST elastic-transport-python-9.4.1.gh.tar.gz 79921 BLAKE2B 34813c01b8988e98ea54699f979f4689a6a15c00ed72c6358b3efee27c40f348de9aadc690c732242ef74f06428d9a64973d462f324997c3b2d899610ccd5309 SHA512 f7aa92bad0455d82de01329905bd561b3a3159d5cb711df9dd962f16f4a45557d486b38128c190dfe27e9f073592cb650e3ecd6165c4330f5c0e5b07922d9c8e
+DIST elastic-transport-python-9.4.2.gh.tar.gz 80044 BLAKE2B fde26b2d8f2adff6156ada512f4a36a09cc99fb3c85d4a72b7002e3f08e73d015df29e67db97adbc304576cf499f758987a0320a250f14c184d4bb958286a80d SHA512 4bd9115de209eb0c978b274dcb242a3068ab7c870a3217fd65b67dac3f000743abd2f0cff22da376dcf77d85f80b2aee9f0a7fbaac6801a164757f9d752f0c5f
diff --git a/dev-python/elastic-transport/elastic-transport-9.4.2.ebuild b/dev-python/elastic-transport/elastic-transport-9.4.2.ebuild
new file mode 100644
index 000000000000..546e3970bfa9
--- /dev/null
+++ b/dev-python/elastic-transport/elastic-transport-9.4.2.ebuild
@@ -0,0 +1,70 @@
+# Copyright 2023-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1
+
+MY_P=elastic-transport-python-${PV}
+DESCRIPTION="Transport classes and utilities shared among Python Elastic client libraries"
+HOMEPAGE="
+ https://github.com/elastic/elastic-transport-python/
+ https://pypi.org/project/elastic-transport/
+"
+SRC_URI="
+ https://github.com/elastic/elastic-transport-python/archive/v${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+PROPERTIES="test_network"
+RESTRICT="test"
+
+RDEPEND="
+ dev-python/certifi[${PYTHON_USEDEP}]
+ dev-python/sniffio[${PYTHON_USEDEP}]
+ >=dev-python/urllib3-2[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/aiohttp[${PYTHON_USEDEP}]
+ dev-python/httpx[${PYTHON_USEDEP}]
+ dev-python/opentelemetry-api[${PYTHON_USEDEP}]
+ dev-python/opentelemetry-sdk[${PYTHON_USEDEP}]
+ dev-python/orjson[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/respx[${PYTHON_USEDEP}]
+ dev-python/trustme[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_sphinx docs/sphinx \
+ dev-python/furo \
+ dev-python/sphinx-autodoc-typehints
+EPYTEST_PLUGINS=( anyio pytest-asyncio pytest-httpbin pytest-httpserver )
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # fragile to random warnings
+ tests/node/test_http_aiohttp.py::TestAiohttpHttpNode::test_uses_https_if_verify_certs_is_off
+ tests/node/test_http_aiohttp.py::test_ssl_assert_fingerprint
+ tests/node/test_urllib3_chain_certs.py::test_assert_fingerprint_in_cert_chain
+ # hardcodes supported Accept-Encoding
+ # https://github.com/elastic/elastic-transport-python/issues/269
+ tests/async_/test_async_transport.py::test_async_transport_httpbin
+ tests/async_/test_httpbin.py::test_node
+ tests/test_httpbin.py::test_node
+ # formatting mismatch (httpbin?)
+ tests/test_logging.py::test_debug_logging
+)
+
+python_test() {
+ epytest -o addopts= # avoid coverage
+}
diff --git a/dev-python/fakeredis/Manifest b/dev-python/fakeredis/Manifest
index 2c6a1493a639..4f8671a3af00 100644
--- a/dev-python/fakeredis/Manifest
+++ b/dev-python/fakeredis/Manifest
@@ -4,3 +4,5 @@ DIST fakeredis-2.36.0.tar.gz 209484 BLAKE2B a8b29331c923aa0b9194ff1416d2ca59d5f9
DIST fakeredis-2.36.0.tar.gz.provenance 9846 BLAKE2B 0441207c408eb0688aaf5b2e51521ea5d3764b2ab8923aac64f9b87c06da566052d7305cc6336e313f9fd9ff8dd3ec414f913027864169272b9ae634e6388231 SHA512 ed5b13ebfd9661a0643d97059baaf5535271e9fab2fd9877af8dd21c1bb28f67e176bc975e78056cc04930bbf81e6db963ea613a54f326b9582ca4b47aade9d6
DIST fakeredis-2.36.1.tar.gz 210959 BLAKE2B bfbf4d397707a8d5cbb4a94fc4d89b814c4367ef20b894033301b640186ba6846a4102e580be103954fc04f53bb7f1aac0c9976dcfc62f0b9ffac8c5fc6e3405 SHA512 2eaa78273f2a7e1f11d4ccf8937406a81d546671e3bcb70e821ae8f80caf1b38cac908a127c0a7710fc12c50188fe2234b0fea510718fd1f463dcfb5aab1f3d5
DIST fakeredis-2.36.1.tar.gz.provenance 9944 BLAKE2B f20fb9ad9027e4fd3fae7b37bd9cfaf0112b01c6ac1218506bee74e6aa7f8683d73740e00bd46bba54d0d0b48c266967ec93bf1533c588fe3753afe20c6895f0 SHA512 d2f129e81474f472b5a5437245a176840c935fc4d28e80f90510290c48acd02bbdbcc44a29793b8342a40fead5ba3906542ff6c0837807f5acb7b3d450bca724
+DIST fakeredis-2.36.2.tar.gz 213336 BLAKE2B 23c6333b945ff35d482c9b04b81e067106f01492e16336f0cb40406f20bb664d66325f2ee2d1db95e2d7157127c12fbb21d18ffcb4c42da4aba1ef0cbbafc67b SHA512 1ed183da851bd0285877fe70f17a47272637230257878ca8d2fd242066311e14112d83eb5da1ec9d30f2e740b80967065abf5eb63efd5378c685355f8757a6f1
+DIST fakeredis-2.36.2.tar.gz.provenance 10085 BLAKE2B 15ceb7fb92e07a882c3b313d62b39bb30032bc4f951b84903cd969d4905fc987fb3267f0ef0d1a7913b72a10cb4d3f091d15a20f4bc04da0809724247bb447e3 SHA512 b03494bd124e64dd11da4256a8d994a9fb4fe779b3fce08f242c49a7518261623495300a97cb6a0fbead6380c00bd27b709599485051359969b01eacffe6588c
diff --git a/dev-python/fakeredis/fakeredis-2.36.2.ebuild b/dev-python/fakeredis/fakeredis-2.36.2.ebuild
new file mode 100644
index 000000000000..43c6d3aca88d
--- /dev/null
+++ b/dev-python/fakeredis/fakeredis-2.36.2.ebuild
@@ -0,0 +1,141 @@
+# 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_{13..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 ~ppc64 ~riscv ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/redis-4.3[${PYTHON_USEDEP}]
+ >=dev-python/sortedcontainers-2[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-db/redis
+ dev-db/valkey
+ dev-python/packaging[${PYTHON_USEDEP}]
+ dev-python/valkey[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-{asyncio,mock} )
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # do not install duplicate license
+ sed -i -e '\@fakeredis/LICENSE@d' pyproject.toml || die
+}
+
+wait_for_status() {
+ local expected=${1}
+
+ local i
+ for i in {1..50}; do
+ "${server}-cli" -p "${redis_port}" ping
+ [[ ${?} -eq ${expected} ]] && return
+ sleep 0.2
+ done
+
+ die "Timeout while waiting for ${1}-server to start/stop"
+}
+
+src_test() {
+ local server
+ server=fake
+ einfo "Running ${server} server tests"
+ distutils-r1_src_test
+
+ for server in redis valkey; do
+ local redis_pid="${T}/${server}.pid"
+ local redis_port=6390
+ local redis_log="${T}/${server}.log"
+ local redis_db="${T}/${server}.db"
+
+ einfo "Running ${server} server tests"
+ "${EPREFIX}/usr/sbin/${server}-server" - <<- EOF || die "Unable to start ${server} server"
+ daemonize yes
+ pidfile ${redis_pid}
+ port ${redis_port}
+ logfile ${redis_log}
+ dir ${redis_db%/*}
+ dbfilename ${redis_db##*/}
+ bind 127.0.0.1
+ EOF
+
+ # wait for the server to start
+ wait_for_status 0
+
+ distutils-r1_src_test
+
+ "${server}-cli" -p "${redis_port}" shutdown || die "Unable to stop ${server} server"
+
+ # wait for the server to stop
+ wait_for_status 1
+ done
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # json ext
+ test/test_stack/test_json.py
+ test/test_stack/test_json_arr_commands.py
+ # TODO
+ "test/test_mixins/test_pubsub_commands.py::test_published_message_to_shard_channel[Strict3]"
+ "test/test_mixins/test_pubsub_commands.py::test_pubsub_shardnumsub[Strict2]"
+ "test/test_mixins/test_pubsub_commands.py::test_pubsub_shardnumsub[Strict3]"
+ )
+
+ local EPYTEST_IGNORE=(
+ # these tests fail a lot...
+ test/test_hypothesis
+ test/test_hypothesis_joint.py
+ )
+
+ case ${server} in
+ fake)
+ EPYTEST_DESELECT=(
+ # TODO
+ test/test_tcp_server/test_connectivity.py::test_bulk_string_length
+ )
+
+ # every test starts its own server
+ EPYTEST_XDIST= epytest -m "tcp_server"
+ return
+ ;;
+ redis)
+ EPYTEST_DESELECT+=(
+ "test/test_mixins/test_set_commands.py::test_smismember_wrong_type[Strict2]"
+ "test/test_mixins/test_set_commands.py::test_smismember_wrong_type[Strict3]"
+
+ "test/test_async/test_redis_only.py::test_async_lock[fake_resp2]"
+ "test/test_async/test_redis_only.py::test_async_lock[fake_resp3]"
+ "test/test_mixins/test_set_commands.py::test_smismember_wrong_type[FakeStrict2]"
+ "test/test_mixins/test_set_commands.py::test_smismember_wrong_type[FakeStrict3]"
+ )
+
+ # run fake tests only once
+ epytest -m "not real and not tcp_server"
+ ;;
+ esac
+
+ # we can run "fake" tests in parallel, but "real" seem to share
+ # the same connection
+ EPYTEST_XDIST= epytest -m "real"
+}
diff --git a/dev-python/greenlet/Manifest b/dev-python/greenlet/Manifest
index d142ac569abe..278f9601f82b 100644
--- a/dev-python/greenlet/Manifest
+++ b/dev-python/greenlet/Manifest
@@ -1,3 +1,4 @@
DIST greenlet-3.4.0.tar.gz 195913 BLAKE2B d3c07b1606315d99d401a874fedd290c0ce3eb191c9bd4e4f291abaec424cc6f2e18f13ad62120d1de103950b15642be50cb2d28dccdf423e1f45cfcd6d30188 SHA512 b5d1499870552b9de89074bf5ac2b900c2a59319f9514073c346a08e69160b3c9b39b6b9a577ecd7c4fddd70c6cba1f9d891b2862027890fa5421aefe16686ba
DIST greenlet-3.5.0.tar.gz 196995 BLAKE2B 1fd1ffd254cffc7eb858657ba75541bb289014ed05304afaa17556a41582fe3e5dd761784a5ba6e44d1c7e207fe6a674175477e8d7359feebda71c1731cd9659 SHA512 472b09d9f08d60ba1a4885ac678fd448b8e612d3553d712646e92b7e12cbe238ca6162c8809fedbb8a702603713d6f60650786e4db6ccabdbe454d067604c990
DIST greenlet-3.5.1.tar.gz 197356 BLAKE2B 3f227db8357e65b304ccd538046743ef6a5df18d390fb50dc5bdb419c039f9948fc228a6f60e4639507fd9b50be81e624b575eccd9adce694e18aae1aa89eb7f SHA512 b81fd3a55655457356c5087a5cb109fb5ef3d0ea7daf0a1bdfcb24772fecca50932c8c548d5edf6f36e5d980d9dfeb3ae1323aaa05d19d781b2b47021806d930
+DIST greenlet-3.5.2.tar.gz 199243 BLAKE2B 04a81cfc8cf72ddab76c776a247a1eaab2a6af3e0d16affe8b9cd8b9f6dfd48f43be59db2e34a3617661c340a1768541cedbc20a2bb78212ba3af740b93a7f46 SHA512 709402d75fe0054f515722a2db0a0c92386e6598262f9b73346bf00466873056cd7c702320de79c1fa1d7bcdc818a9f974ecb1ab5d27f4ebeb7e1a9a86c43fbb
diff --git a/dev-python/greenlet/greenlet-3.5.2.ebuild b/dev-python/greenlet/greenlet-3.5.2.ebuild
new file mode 100644
index 000000000000..33588218e841
--- /dev/null
+++ b/dev-python/greenlet/greenlet-3.5.2.ebuild
@@ -0,0 +1,47 @@
+# 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
+# Note: greenlet is built-in in pypy
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Lightweight in-process concurrent programming"
+HOMEPAGE="
+ https://greenlet.readthedocs.io/en/latest/
+ https://github.com/python-greenlet/greenlet/
+ https://pypi.org/project/greenlet/
+"
+
+LICENSE="MIT PSF-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 -hppa ~m68k ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+ test? (
+ dev-python/objgraph[${PYTHON_USEDEP}]
+ dev-python/psutil[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_sphinx docs \
+ dev-python/furo
+distutils_enable_tests unittest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # patch cflag manipulations out
+ sed -i -e 's:global_compile_args[.]append.*:pass:' setup.py || die
+}
+
+python_test() {
+ local -x GREENLET_SKIP_LEAKCHECKS=1
+ eunittest greenlet.tests
+}
diff --git a/dev-python/httpbin/Manifest b/dev-python/httpbin/Manifest
index f21fd6043cd9..84212df19247 100644
--- a/dev-python/httpbin/Manifest
+++ b/dev-python/httpbin/Manifest
@@ -1 +1,3 @@
DIST httpbin-0.10.2.tar.gz 107327 BLAKE2B 39ab1e518c9f7e1ede9cd0aa2e3155f7e36267c83d1d2537a5b6cb5aa1c9e70efe96c5bf98a5b22cd05e70368d1495f8e5364032fcf2f476d62512b7e7322652 SHA512 731b842090be516d9eccb1d2bb8303128d2b2e24b1ebf0b2018a2f0b8629b164c7de686e1775841cd57417ec89941d98fc81f878a284c7242bfef4db481a781b
+DIST httpbin-0.10.4.tar.gz 109267 BLAKE2B e01b8b3cb9b91519a517bbb82ea226b94f8c7a18933a0412e2b0e3a4432a9c8d012d5c92a1b031621507195b79c7f330ea24fe5223ca476bcf2659630c3f9cf3 SHA512 dab715d21a134bf3b3d4d929c5685041195d383a91ee2dae2bbe13dcc9fbe5f4d60dc8131438547a48606997437ea7f5e77e0ed3d3d34e358fea88283de54a37
+DIST httpbin-0.10.4.tar.gz.provenance 9636 BLAKE2B 71c8bbc97cb1e36936c1618fe1cc12980650fcd751507c9c98a0e96a03dcfea11bdb414e5e81ece9d7feef8496d149969194ae2394cb3d72eefdeab84e38dfd9 SHA512 f022aa65725e0a156d0c46adbd2f689bcab62a646cad576482e78b76444c56a945af0ae12aad9994321d6b331b12a4bf94eff3270032e5c3ba1a997316b98bf4
diff --git a/dev-python/httpbin/httpbin-0.10.4.ebuild b/dev-python/httpbin/httpbin-0.10.4.ebuild
new file mode 100644
index 000000000000..f65331e4f581
--- /dev/null
+++ b/dev-python/httpbin/httpbin-0.10.4.ebuild
@@ -0,0 +1,45 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_VERIFY_REPO=https://github.com/psf/httpbin
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 optfeature pypi
+
+DESCRIPTION="HTTP Request and Response Service"
+HOMEPAGE="
+ https://github.com/psf/httpbin/
+ https://pypi.org/project/httpbin/
+"
+
+LICENSE="|| ( MIT ISC )"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="test-rust"
+
+RDEPEND="
+ dev-python/brotlicffi[${PYTHON_USEDEP}]
+ dev-python/decorator[${PYTHON_USEDEP}]
+ >=dev-python/flask-2.2.4[${PYTHON_USEDEP}]
+ dev-python/itsdangerous[${PYTHON_USEDEP}]
+ dev-python/markupsafe[${PYTHON_USEDEP}]
+ dev-python/six[${PYTHON_USEDEP}]
+ >=dev-python/werkzeug-2.2.2[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ test-rust? (
+ dev-python/flasgger[${PYTHON_USEDEP}]
+ )
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+pkg_postinst() {
+ optfeature "Fancy index" dev-python/flasgger
+}
diff --git a/dev-python/jupyter-server/Manifest b/dev-python/jupyter-server/Manifest
index a818ccd5d73f..ec2ed9df9c58 100644
--- a/dev-python/jupyter-server/Manifest
+++ b/dev-python/jupyter-server/Manifest
@@ -1,2 +1,3 @@
DIST jupyter_server-2.18.2.tar.gz 753177 BLAKE2B 6b93d51e21c0f0c34e7df7bd930d0c238699f6edc0ba8c2be4dbaa80e900c9b8069f315fa0077441d1678859405ba7dbb6281fc29cced88067e6f04347cd1de0 SHA512 66fe709003a497d4cd3cee890dffdd0c9109b3c9fbfdc3fc54036ccc700414e6a9755bfdc845180b1255d06a8cf37eb467f905c90ad1dc8969e6912a909ba6ee
DIST jupyter_server-2.19.0.tar.gz 754561 BLAKE2B 1d7c52340fd86152aaea2fc08de49502bd893d58067d5da8e64f2261fc8348f961295b65fa27d44cc45401ddc1dccc7af921758f088b6dded80b5b4816e0522d SHA512 021be211c40541b84f0adbd04c31a8cf5e1a99ed0480d75bd5bb28ef5102e9a08652d0712cbfd5ba4126974d961818f1d9eb8b3a206870e171ed8285a658ae99
+DIST jupyter_server-2.20.0.tar.gz 756523 BLAKE2B a55bce21bf2a3d8b7f544161eb20802971e947eb082e3ebf6e0d8e777e46044d1deae8a3568b580cabd8cb6d88ca18cc871a829441b820d02f656ebe30e97b36 SHA512 859d890d67f92212c5a3fa772e9e6abf58c3ef4b08a94e84a64e1c9714114b5bbe5667bb93fab3448671c32ef670c2f4869f4009aa2aa257a67223b47628d578
diff --git a/dev-python/jupyter-server/jupyter-server-2.20.0.ebuild b/dev-python/jupyter-server/jupyter-server-2.20.0.ebuild
new file mode 100644
index 000000000000..7b485879e0d6
--- /dev/null
+++ b/dev-python/jupyter-server/jupyter-server-2.20.0.ebuild
@@ -0,0 +1,68 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Core services, APIs, and REST endpoints to Jupyter web applications"
+HOMEPAGE="
+ https://jupyter.org/
+ https://github.com/jupyter-server/jupyter_server/
+ https://pypi.org/project/jupyter-server/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/anyio-3.1.0[${PYTHON_USEDEP}]
+ >=dev-python/argon2-cffi-21.1[${PYTHON_USEDEP}]
+ >=dev-python/jinja2-3.0.3[${PYTHON_USEDEP}]
+ >=dev-python/jupyter-client-7.4.4[${PYTHON_USEDEP}]
+ >=dev-python/jupyter-core-5.1.0[${PYTHON_USEDEP}]
+ >=dev-python/jupyter-server-terminals-0.4.4[${PYTHON_USEDEP}]
+ >=dev-python/jupyter-events-0.11.0[${PYTHON_USEDEP}]
+ >=dev-python/nbconvert-6.4.4[${PYTHON_USEDEP}]
+ >=dev-python/nbformat-5.3.0[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ >=dev-python/overrides-5.0[${PYTHON_USEDEP}]
+ ' 3.11)
+ >=dev-python/packaging-22.0[${PYTHON_USEDEP}]
+ >=dev-python/prometheus-client-0.9[${PYTHON_USEDEP}]
+ >=dev-python/pyzmq-24[${PYTHON_USEDEP}]
+ >=dev-python/send2trash-1.8.2[${PYTHON_USEDEP}]
+ >=dev-python/terminado-0.8.3[${PYTHON_USEDEP}]
+ >=dev-python/tornado-6.2[${PYTHON_USEDEP}]
+ >=dev-python/traitlets-5.6.0[${PYTHON_USEDEP}]
+ >=dev-python/websocket-client-1.7[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ dev-python/hatch-jupyter-builder[${PYTHON_USEDEP}]
+ test? (
+ dev-python/ipykernel[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-{console-scripts,jupyter,timeout,tornasync} )
+EPYTEST_RERUNS=5
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # This fails if your terminal is zsh (and maybe other non-bash as well?)
+ tests/test_terminal.py
+ # Fails because above is ignored
+ tests/auth/test_authorizer.py
+ # Fails with additional extensions installed
+ tests/extension/test_app.py::test_stop_extension
+ )
+
+ # FIXME: tests seem to be affected by previously installed version
+ epytest -o tmp_path_retention_policy=all
+}
diff --git a/dev-python/jupyterlab/Manifest b/dev-python/jupyterlab/Manifest
index 4b165bd7dd43..8257942d899d 100644
--- a/dev-python/jupyterlab/Manifest
+++ b/dev-python/jupyterlab/Manifest
@@ -1,3 +1,4 @@
DIST jupyterlab-4.4.10.tar.gz 22969303 BLAKE2B 478b424ff65b4f88ee849f0e87cebf30a1a95d7da390e3179f0675c4d37cb6cc80aef0262e2e4ca09fecda71a76c6d92ed99a6b52337ff2ab22cc010122513a4 SHA512 fbdd4429ddc5c14f0085d3dc4a9cd1f93c8db3b438e62c7e653fb605819ec97f41aba182c48a54f25f5ed53d36a9137522e7901a2b36349596c8f03beeefe351
DIST jupyterlab-4.5.7.tar.gz 23992763 BLAKE2B a8393ca503e6d35c8cd896948dc7201d10b9493bc55ed9898b706a9c88e98dc8000cb9d66e306600d0908aa23f6244860f7d271cfea6c54b339c5249ee2a6f33 SHA512 b2bc3190586c2f25688aef12a6ca04d77c69f21ce35f53bee926de10961c84e55e5441cd812f03e5deb649e8fa38674e97db7fd5a00edc965c19b2b7e1d90996
DIST jupyterlab-4.5.8.tar.gz 23994076 BLAKE2B 6a42c5892bd1e89c19c7acf7d92a91abebe79c2b4246a99495ef04b1c4357a7d8cdfe22b3e67a382672c86efe52438009624d74714fd709295f541888068dbd1 SHA512 d6341b649299aada9be6d50169a18c9e0c300de76f9306582155e3592c560aa3c16d148942404e87c0d9706c28da8b0ba7305d026b1c9e3bc3b954760f7c6da1
+DIST jupyterlab-4.5.9.tar.gz 23994445 BLAKE2B 242a2d519bcf89b232b895c40fa45d752677d1f4321026037ebad418ffd0fb2dc07da07cb3d2d65a0b14142ae4fe65ef7e842891350d1e2102166001d534648e SHA512 b78ecb0f0ea1cc709fc4398d5d9a180ef4d235d5e6d45739deee88c6e7c06c28e3d15295b7abda144c5f8a5a847cbef70e2f02078bac0e2432b7bda0e387ce5e
diff --git a/dev-python/jupyterlab/jupyterlab-4.5.9.ebuild b/dev-python/jupyterlab/jupyterlab-4.5.9.ebuild
new file mode 100644
index 000000000000..856de048ea98
--- /dev/null
+++ b/dev-python/jupyterlab/jupyterlab-4.5.9.ebuild
@@ -0,0 +1,76 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi xdg
+
+DESCRIPTION="JupyterLab computational environment"
+HOMEPAGE="
+ https://jupyter.org/
+ https://github.com/jupyterlab/jupyterlab/
+ https://pypi.org/project/jupyterlab/
+"
+
+LICENSE="BSD MIT GPL-3 Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+
+RDEPEND="
+ >=dev-python/async-lru-1.0.0[${PYTHON_USEDEP}]
+ >=dev-python/httpx-0.28.0[${PYTHON_USEDEP}]
+ >=dev-python/ipykernel-6.5.0[${PYTHON_USEDEP}]
+ >=dev-python/jinja2-3.0.3[${PYTHON_USEDEP}]
+ dev-python/jupyter-core[${PYTHON_USEDEP}]
+ >=dev-python/jupyter-lsp-2.0.0[${PYTHON_USEDEP}]
+ >=dev-python/jupyter-server-2.4.0[${PYTHON_USEDEP}]
+ <dev-python/jupyter-server-3[${PYTHON_USEDEP}]
+ >=dev-python/jupyterlab-server-2.28.0[${PYTHON_USEDEP}]
+ <dev-python/jupyterlab-server-3[${PYTHON_USEDEP}]
+ >=dev-python/notebook-shim-0.2[${PYTHON_USEDEP}]
+ >=dev-python/packaging-23.2[${PYTHON_USEDEP}]
+ >=dev-python/setuptools-41.1.0[${PYTHON_USEDEP}]
+ >=dev-python/tornado-6.2.0[${PYTHON_USEDEP}]
+ dev-python/traitlets[${PYTHON_USEDEP}]
+ net-libs/nodejs[npm]
+"
+
+BDEPEND="
+ dev-python/hatch-jupyter-builder[${PYTHON_USEDEP}]
+ test? (
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/requests-cache[${PYTHON_USEDEP}]
+ dev-python/virtualenv[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_DESELECT=(
+ # These tests call npm and want internet
+ jupyterlab/tests/test_jupyterlab.py::TestExtension::test_uninstall_core_extension
+ jupyterlab/tests/test_jupyterlab.py::TestExtension::test_install_and_uninstall_pinned_folder
+ jupyterlab/tests/test_jupyterlab.py::TestExtension::test_install_and_uninstall_pinned
+ jupyterlab/tests/test_jupyterlab.py::TestExtension::test_build_custom_minimal_core_config
+ jupyterlab/tests/test_jupyterlab.py::TestExtension::test_build_custom
+ jupyterlab/tests/test_jupyterlab.py::TestExtension::test_build_check
+ jupyterlab/tests/test_jupyterlab.py::TestExtension::test_build
+ jupyterlab/tests/test_build_api.py::TestBuildAPI::test_clear
+ jupyterlab/tests/test_build_api.py::TestBuildAPI::test_build
+)
+
+EPYTEST_IGNORE=(
+ jupyterlab/tests/test_announcements.py
+)
+
+EPYTEST_PLUGINS=( pytest-{console-scripts,jupyter,tornasync,timeout} )
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+# TODO: package sphinx_copybutton
+#distutils_enable_sphinx docs/source dev-python/sphinx-rtd-theme dev-python/myst-parser
+
+python_install_all() {
+ distutils-r1_python_install_all
+ mv "${ED}/usr/etc" "${ED}/etc" || die
+}
diff --git a/dev-python/libtmux/Manifest b/dev-python/libtmux/Manifest
index d4b22965e2ae..c706ed5c4792 100644
--- a/dev-python/libtmux/Manifest
+++ b/dev-python/libtmux/Manifest
@@ -15,3 +15,5 @@ DIST libtmux-0.57.1.tar.gz 518481 BLAKE2B 1a3f172c6c7ebcdf49c92945952eb4d60f191a
DIST libtmux-0.57.1.tar.gz.provenance 9394 BLAKE2B f6cbf8f2ffcd18c0c4908e13736046b7863511557a9d7fe580eeb84b545f91706b6d925e12eb52a9e192f8643f9dd2c811ae442275bec1885fe00ee2ee9de730 SHA512 7563582689d6276cded95006d54101189ae569a0270a5ee42389f9d3b956bc3308335228ce8aad8e6d70ee9807efaf20ec48eafb88f6f78f8e45c428d0fc59a9
DIST libtmux-0.58.0.tar.gz 522080 BLAKE2B f1d6b4394ddd178bc5e5ff7e15d18a8a18747ed68d229204eadc2d3d8686f1b7ca09da609fd53dfa572d2f2f308c08e3a3add2fbbfbf24aaea31f5b567109239 SHA512 5efc62ab9b6691a500ce0ac6096d4d2c345dc09118b13e9a677e96859438d22e3bdeff7c83a6a9f0c9c173449e3ede8a17290f6475ff33dac15200481d59d390
DIST libtmux-0.58.0.tar.gz.provenance 9331 BLAKE2B fae88b36a504d4e78ece5eb3725401eaa5ab22ac95ad7f77fc84abae6cf099476701ffe658b6662696ddb6109fc7a57e62a130c8dd7f3f93098ed6bcb9d43dbf SHA512 90c590dbc1bdcf9cf13b456ba511cd962e28dd0f1a815ce9961df5f9febf61b0f9c096d8a8ff910182032e2f3968af149334faf28898c6d0c279f1ada9576bc6
+DIST libtmux-0.58.1.tar.gz 519541 BLAKE2B 89d3874297f9a6c7d969de3130d24315f166421a1830122ae63a59d85023b306af22b0832b3b1740131fb6d83d0ab5f77b669b226b87d70fef1d0a748e221af3 SHA512 bda40a1705d417b63cb957e8f4ef9892ad6880ec88a86fe50e69f480ee5b9a8ed39d64daaae8a6988a7a1fab818c78c2751764f97910c4e0e8ced0aef2fa395e
+DIST libtmux-0.58.1.tar.gz.provenance 9630 BLAKE2B 9381eb6327b4b2f1c16052b5aba261501e44abdc19b91658d4704547aa2ca9a3d9ed9f7e064c24209a5d8c4ce0cd3b90fbe84e6e8053e884a2b80450991e4ccd SHA512 c7e96448de46703c12d86c17cb3a5dfaa058775837a0cf0c9ed587ac53d6ec050f5ffedc81132db144525f1effdd1d5636a230c69aecb965229c91e03172b0fb
diff --git a/dev-python/libtmux/libtmux-0.58.1.ebuild b/dev-python/libtmux/libtmux-0.58.1.ebuild
new file mode 100644
index 000000000000..a85d2d5eaa37
--- /dev/null
+++ b/dev-python/libtmux/libtmux-0.58.1.ebuild
@@ -0,0 +1,40 @@
+# 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/tmux-python/libtmux
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Typed library that provides an ORM wrapper for tmux, a terminal multiplexer"
+HOMEPAGE="
+ https://libtmux.git-pull.com/
+ https://github.com/tmux-python/libtmux/
+ https://pypi.org/project/libtmux/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x86"
+
+RDEPEND="
+ >=app-misc/tmux-3.0a
+"
+
+EPYTEST_PLUGIN_LOAD_VIA_ENV=1
+EPYTEST_PLUGINS=( "${PN}" pytest-mock )
+EPYTEST_RERUNS=5
+distutils_enable_tests pytest
+
+python_test() {
+ # Avoid stale /tmp/tmux-$(id -u) confusing things (bug #896406)
+ local -x TMUX_TMPDIR=$(mktemp --directory --tmpdir=/tmp libtmux.XXXXXXXXXX)
+ # tests/test_window.py::test_fresh_window_data fails if TMUX_PANE is set
+ # https://bugs.gentoo.org/927158
+ local -x TMUX_PANE=
+
+ epytest -o addopts= tests
+}
diff --git a/dev-python/lit/Manifest b/dev-python/lit/Manifest
index 91d9f2577d36..ed7dc1b36ffc 100644
--- a/dev-python/lit/Manifest
+++ b/dev-python/lit/Manifest
@@ -12,4 +12,6 @@ DIST llvm-project-21.1.8.src.tar.xz 158958576 BLAKE2B 0d3d4ee920f8e5db50e9815261
DIST llvm-project-21.1.8.src.tar.xz.sig 119 BLAKE2B cffc1825f5778a3e3c128ec3e856ff6ee50687319d621cdf42e895abf67e05cc51cb7493308e2b506ab60dbdbaca7aa75eb9f78d91d42c81f9682a36f4042e9d SHA512 10f58eff58ed6e701d0f123b15e68c82ab8cbdf99b1c86c0d83e3b8553e90ea51055e30327e8e442ded57c8f503e2a2de9ee075e9c28b5ba815a0f8922f8671c
DIST llvm-project-22.1.7.src.tar.xz 167066344 BLAKE2B 201b7f8f8b4216ad250f9dcdc87f817ac2dac99c1c7f151077e46165c0efae6d04c33c84c70c04c670fe0733e621af866f78d4d93f49e4d8385645f71495f53b SHA512 b7e56121cd6cb24085185ca0b621fec272dd9aa237c49a901043a9a4c31fdbc1ff33e650891d9786cd9495c006e87d4553ac36b518c864c75e99a80e40771bfd
DIST llvm-project-22.1.7.src.tar.xz.sig 119 BLAKE2B 0a1125837ae881dcb356c43e6fcd24dd14e107cd045524906b3879db94184e2c74835ce1e3ee026e55790af5be4b861d629546de6f74374e71e164a571c6ecd0 SHA512 d56bc596b642d6e6e63f1d141dbc7b8151e58befc70fd3d28847f023789823c9daf90100be233ab6597219037ee28187e6e8996992b7226568265c205abad266
+DIST llvm-project-22.1.8.src.tar.xz 167061596 BLAKE2B 092204f62e0f0364a041c737eb2c25fd073cb5689663d6ccd5a9e4e1743d6d80822360d59b64bff7b4d7872a68a79e899bf2f75f384e55c7d313a79243576f03 SHA512 2615b20ba08534f83ab8ecc7b5ba43b5f1dfcf9cdb2534a32fcdbf0ccdd9a008b46276e45ef26ed9377f65b5e4ae89ea798f3863fd034484b5715140f3a7b35c
+DIST llvm-project-22.1.8.src.tar.xz.sig 119 BLAKE2B 2ce93472036e68782252991e4a8bdbeeec8706a56022220083a38a42ef18714a7894c41aaa04dc0d03f18601d8bfc1a5a030ed0ef0f0d64a662eae9843a4b362 SHA512 99a457b5b1fb409a5fe72b59ebd4ddae5cade3e5f2493e33b44d4f4b4625f7a1743f80106efb1134668842b15ea3400ce2c29263bec8ff986e05040910125e15
DIST llvm-project-6d4cd34d861baec5a761d15b81395fbe88f4391b.tar.gz 273781215 BLAKE2B 9ca9896ac0cfcb9449bd0975e16aca725e14ce5a4c3afd859799ef056a0e1341d63fa21b9bfd3ec1bee2a8482c5cecdd59482d373db72f083d399748a2396e15 SHA512 407e7d2ae1df19bf6095a953a1506583de91e203c4d0461b85a87f86d2069f2b23114b65c5c7f0065d9fbbf8d657bec6ef489ba9310b89f0bddab22c86cccb04
diff --git a/dev-python/lit/lit-22.1.8.ebuild b/dev-python/lit/lit-22.1.8.ebuild
new file mode 100644
index 000000000000..a233dc0bef70
--- /dev/null
+++ b/dev-python/lit/lit-22.1.8.ebuild
@@ -0,0 +1,46 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 llvm.org
+
+DESCRIPTION="A stand-alone install of the LLVM suite testing tool"
+HOMEPAGE="https://llvm.org/"
+
+LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+# Tests require 'FileCheck' and 'not' utilities (from llvm)
+BDEPEND="
+ test? (
+ dev-python/psutil[${PYTHON_USEDEP}]
+ llvm-core/llvm
+ )
+"
+
+LLVM_COMPONENTS=( llvm/utils/lit )
+llvm.org_set_globals
+
+# TODO: move the manpage generation here (from llvm-core/llvm)
+
+src_prepare() {
+ # flaky test
+ # https://github.com/llvm/llvm-project/issues/72022
+ rm tests/progress-bar.py || die
+
+ cd "${WORKDIR}" || die
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ local -x LIT_PRESERVES_TMP=1
+ local litflags=$(get_lit_flags)
+ ./lit.py ${litflags//;/ } tests || die
+}
diff --git a/dev-python/openstacksdk/Manifest b/dev-python/openstacksdk/Manifest
index 13ee1946b2be..25b3d176fd9b 100644
--- a/dev-python/openstacksdk/Manifest
+++ b/dev-python/openstacksdk/Manifest
@@ -2,3 +2,4 @@ DIST openstacksdk-4.12.0.tar.gz 1336787 BLAKE2B 4beacf1f769f1ba8f114087e70952671
DIST openstacksdk-4.13.0.tar.gz 1341338 BLAKE2B 2b7b74c7fa3f94aecf67b68ff48b24f8d44ab4f3e07d49ef6fc85facf7676e3a70fcdeb32b3aa129d0920ec25317c18647d268d308d5cdbb3346b2f11b57e23d SHA512 ba00c75a4c7575972d7218a0271b7261717e7386db84528fba304efc0607746a3b36f31c39d7eb594238004c523284e51db1836dd1e8764c55205268774fb733
DIST openstacksdk-4.14.0.tar.gz 1357501 BLAKE2B 574036f4827e045dae7da7058e86ab384614b03a669f25e8bdafc05d5f773265bb9282ddc764851d7391fd442f5b8c0f94c0e19ddc963c4baea13acd3c47fd3f SHA512 baf6234a52ddd1cffe1126f59fbc2daae014667fbbdd0dd8d65866e3f89da2372de00b7b6d54d486cd2a47d28d23c0e3ae9affcb79b4bc124270179eb67b7afc
DIST openstacksdk-4.15.0.tar.gz 1379204 BLAKE2B 2a1405af243909af4f7bfe356b42976a5ac2e21d9962da133971cfed087bfb8d387ae800ff420154bd189b97f148c7b0d517f1083e32da8a2ff3fe59315aad37 SHA512 ec4b16322db900c83a37a98a2ce59396dc82d69a5f6552a852422a4ceb9d333efe67c215290d051c8c0fcc14dec652f9db50930676101653d431e91f89a444dd
+DIST openstacksdk-4.16.0.tar.gz 1397114 BLAKE2B 3194184d19b96171f7c83fb5065d11d175b216c0fbc4f5286290dd5b680de4dd68b9e836bd3c12f519625dd2fa56d1a02a383539e6e9390eb63cd39eb0658d83 SHA512 669751049e7737a350c95fde28f3f1d78223bebf131ac7d9986a3530f4a92c5fbf71c5c713a45df4f70225fefbed98f4f233a584b6b285d57cd74e264b31cbb5
diff --git a/dev-python/openstacksdk/openstacksdk-4.16.0.ebuild b/dev-python/openstacksdk/openstacksdk-4.16.0.ebuild
new file mode 100644
index 000000000000..fc37787b90c1
--- /dev/null
+++ b/dev-python/openstacksdk/openstacksdk-4.16.0.ebuild
@@ -0,0 +1,94 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=pbr
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A collection of libraries for building applications to work with OpenStack"
+HOMEPAGE="
+ https://opendev.org/openstack/openstacksdk/
+ https://github.com/openstack/openstacksdk/
+ https://pypi.org/project/openstacksdk/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86"
+
+RDEPEND="
+ >=dev-python/cryptography-2.7[${PYTHON_USEDEP}]
+ >=dev-python/decorator-4.4.1[${PYTHON_USEDEP}]
+ >=dev-python/dogpile-cache-0.6.5[${PYTHON_USEDEP}]
+ >=dev-python/iso8601-0.1.11[${PYTHON_USEDEP}]
+ >=dev-python/jmespath-0.9.0[${PYTHON_USEDEP}]
+ >=dev-python/jsonpatch-1.21[${PYTHON_USEDEP}]
+ >=dev-python/keystoneauth1-5.10.0[${PYTHON_USEDEP}]
+ >=dev-python/os-service-types-1.8.1[${PYTHON_USEDEP}]
+ >=dev-python/pbr-2.2.0[${PYTHON_USEDEP}]
+ >=dev-python/platformdirs-3[${PYTHON_USEDEP}]
+ >=dev-python/psutil-3.2.2[${PYTHON_USEDEP}]
+ >=dev-python/pyyaml-3.13[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ >=dev-python/ddt-1.0.1[${PYTHON_USEDEP}]
+ >=dev-python/fixtures-3.0.0[${PYTHON_USEDEP}]
+ >=dev-python/jsonschema-3.2.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-config-6.1.0[${PYTHON_USEDEP}]
+ >=dev-python/oslotest-3.2.0[${PYTHON_USEDEP}]
+ >=dev-python/prometheus-client-0.4.2[${PYTHON_USEDEP}]
+ >=dev-python/requests-mock-1.2.0[${PYTHON_USEDEP}]
+ >=dev-python/statsd-3.3.0[${PYTHON_USEDEP}]
+ >=dev-python/testscenarios-0.4[${PYTHON_USEDEP}]
+ >=dev-python/testtools-2.2.0[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests unittest
+
+src_prepare() {
+ # Internet?
+ sed -e 's:test_create_dynamic_large_object:_&:' \
+ -i openstack/tests/unit/cloud/test_object.py || die
+
+ # TODO
+ sed -e 's:test_generate_form:_&:' \
+ -e 's:test_create_static_large_object:_&:' \
+ -e 's:test_object_segment_retries:_&:' \
+ -e 's:test_object_segment_retry_failure:_&:' \
+ -e 's:test_slo_manifest_retry:_&:' \
+ -i openstack/tests/unit/cloud/test_object.py || die
+ sed -e 's:test_servers:_&:' \
+ -i openstack/tests/unit/test_stats.py || die
+
+ # unhappy about paths due to test runner
+ sed -e 's:test_method_not_supported:_&:' \
+ -i openstack/tests/unit/test_exceptions.py || die
+ sed -e 's:test_repr:_&:' \
+ -i openstack/tests/unit/test_resource.py || die
+
+ # requires hacking
+ rm openstack/tests/unit/test_hacking.py || die
+
+ # fragile warning-based tests
+ sed -e 's:test_unsupported_version_override:_&:' \
+ -i openstack/tests/unit/test_missing_version.py || die
+ sed -e 's:test_create_unknown_proxy:_&:' \
+ -i openstack/tests/unit/test_connection.py || die
+
+ # stupid test checking if they pin to the newest os-service-types,
+ # except they don't actually do
+ sed -e 's:test_ost_version:_&:' \
+ -i openstack/tests/unit/test_utils.py || die
+
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ # functional tests require cloud instance access
+ eunittest -b openstack/tests/unit
+}
diff --git a/dev-python/parse/parse-1.22.1.ebuild b/dev-python/parse/parse-1.22.1.ebuild
index f71c3f8e2a4b..0a4993c43494 100644
--- a/dev-python/parse/parse-1.22.1.ebuild
+++ b/dev-python/parse/parse-1.22.1.ebuild
@@ -12,7 +12,7 @@ HOMEPAGE="https://github.com/r1chardj0n3s/parse/"
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc64 ~riscv x86"
EPYTEST_PLUGINS=()
distutils_enable_tests pytest
diff --git a/dev-python/peewee/Manifest b/dev-python/peewee/Manifest
index 075d8b4c9645..b10dccef3831 100644
--- a/dev-python/peewee/Manifest
+++ b/dev-python/peewee/Manifest
@@ -3,3 +3,4 @@ DIST peewee-4.0.6.gh.tar.gz 963861 BLAKE2B 4f1edded4a1e708ec2bf04b2af42b3fabe041
DIST peewee-4.0.7.gh.tar.gz 990613 BLAKE2B cec728c18d5be72b04cf82f9f0b58a7aa1de4bc7b8ff1b49ac543210e50f91ebf51c39d16315aed7c183e20dcb21a4c3e4a093d52bd8f05aaf1db90affefcafa SHA512 6e57b4cb98e68eb1a046c2ca9a58a3f07641b4c7a1ec3c8db23e97b199d2c61971178a3abbb9d7893e8f73ce83808124fdfa821a427ace116df826f1bd9000d3
DIST peewee-4.0.8.gh.tar.gz 1001592 BLAKE2B 4b2328fa31aab3315511ce4320008d56e51882c041a15f4ec5e4732fd4c72e2a5c98346b4e515619d2cde056d030e52e76a128db31e00b985b6ed6aa19623166 SHA512 2c9ee4d98f4e63eeb4ec1a28762a32efe41c506fd7437667325a65c73cad821c35d18faad8da5a30f8dde25af88f4f6431cc73858c735468be3837e675fa46d0
DIST peewee-4.0.9.gh.tar.gz 1002262 BLAKE2B 456af69c3d57d2e8344080cf40845163c9d0a9bd6b4a418940adc28ed388aea7faad8e3759973b23fcc8fb0e27e6a88c40b953081825f8a7acf6f8eb64c91894 SHA512 dd68b9e38dca84eff67c90f1f78cd6d59713c18b73faa8e2a36fa1b343e2e1f154a0dd57415803b763fd7368a151eb08c30312c72d1c2db665f7941a99a0ad8c
+DIST peewee-4.1.0.gh.tar.gz 1002833 BLAKE2B 65d8317829f59aa67b2650bd8e690e99f291d0bb8383a5945b16387c0c6a313236ec0b9654e8c81faf868208b41e4776d1d5dc1b2ce220aefd5215c4bed8b4a8 SHA512 c24e46e339b84e68db86efb2a39bc4c15a6620dd91c6c28ecf982bcf74499febdc878707bc35cfe49dbee960ab88d2162032cfd57057adcf212da8119910d747
diff --git a/dev-python/peewee/peewee-4.1.0.ebuild b/dev-python/peewee/peewee-4.1.0.ebuild
new file mode 100644
index 000000000000..354b1a91f483
--- /dev/null
+++ b/dev-python/peewee/peewee-4.1.0.ebuild
@@ -0,0 +1,83 @@
+# 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_{13..14} )
+PYTHON_REQ_USE="sqlite"
+
+inherit distutils-r1
+
+DESCRIPTION="Small Python ORM"
+HOMEPAGE="
+ https://github.com/coleifer/peewee/
+ https://pypi.org/project/peewee/
+"
+SRC_URI="
+ https://github.com/coleifer/peewee/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+IUSE="examples +native-extensions test"
+RESTRICT="!test? ( test )"
+
+DEPEND="
+ native-extensions? ( dev-db/sqlite:3= )
+"
+RDEPEND="
+ ${DEPEND}
+"
+BDEPEND="
+ native-extensions? (
+ dev-python/cython[${PYTHON_USEDEP}]
+ )
+ test? (
+ dev-db/postgresql
+ dev-python/psycopg:0[${PYTHON_USEDEP}]
+ sys-libs/timezone-data
+ )
+"
+
+distutils_enable_sphinx docs \
+ dev-python/sphinx-rtd-theme
+
+src_prepare() {
+ default
+
+ # disable test failing on postgres 16
+ sed -e 's/test_timeout/_&/' -i tests/sqliteq.py || die
+}
+
+src_compile() {
+ if ! use native-extensions; then
+ local -x NO_SQLITE=1
+ fi
+
+ distutils-r1_src_compile
+}
+
+src_test() {
+ initdb -D "${T}"/pgsql || die
+ pg_ctl -w -D "${T}"/pgsql start -o "-h '' -k '${T}'" || die
+ createdb -h "${T}" peewee_test || die
+ psql -h "${T}" peewee_test -c 'create extension hstore;' || die
+
+ local -x PEEWEE_PSQL_HOST="${T}"
+ distutils-r1_src_test
+
+ pg_ctl -w -D "${T}"/pgsql stop || die
+}
+
+python_test() {
+ "${EPYTHON}" runtests.py -v 2 || die "tests failed under ${EPYTHON}"
+}
+
+python_install_all() {
+ use examples && DOCS=( examples/ )
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/pulsectl-asyncio/Manifest b/dev-python/pulsectl-asyncio/Manifest
index 4cda73f7324f..c59d17efb319 100644
--- a/dev-python/pulsectl-asyncio/Manifest
+++ b/dev-python/pulsectl-asyncio/Manifest
@@ -1 +1,2 @@
DIST pulsectl-asyncio-1.2.2.gh.tar.gz 19528 BLAKE2B 8b4ccf8a1509fddff19cf201dc9ff4cbf03aedc2ab47c6f4920f95072706051a0a9ab3704e4a4650be8ebce67682bff28d8dacdfac272c36019810eea358f01f SHA512 ccaa7ae14fd2ca7e9d6483efcb3d48f8364ed87ab99c700323c2f2d803986408394ae0fe83880d4d77b77daf17dfb58c6e9f94043a9b03ad643bff2e909a673a
+DIST pulsectl-asyncio-1.3.0.gh.tar.gz 19393 BLAKE2B ebd07bb9335f3eb15a4dbe86f1c7cf5a357fd1354145a955adc1f74ebc813b697fd1033da3332b91d52ac4409dc3cdaf62ad2655e3c654fd639cf4f75eefbae6 SHA512 7f8997c855ca7f9b011950d471d37c3e45c011902c38bb094045e30056f5e21a19a1f423d8d3a3682e03dbb20318c877be6973ac7edeb35f8aed6fe7e49047df
diff --git a/dev-python/pulsectl-asyncio/pulsectl-asyncio-1.3.0.ebuild b/dev-python/pulsectl-asyncio/pulsectl-asyncio-1.3.0.ebuild
new file mode 100644
index 000000000000..860363af38fa
--- /dev/null
+++ b/dev-python/pulsectl-asyncio/pulsectl-asyncio-1.3.0.ebuild
@@ -0,0 +1,42 @@
+# Copyright 2023-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="Asyncio frontend for pulsectl, Python bindings of libpulse"
+HOMEPAGE="
+ https://github.com/mhthies/pulsectl-asyncio/
+ https://pypi.org/project/pulsectl-asyncio/
+"
+# sdist is missing examples that are used in tests
+SRC_URI="
+ https://github.com/mhthies/pulsectl-asyncio/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~riscv ~x86"
+
+RDEPEND="
+ >=dev-python/pulsectl-23.5.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ media-sound/pulseaudio-daemon
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+src_prepare() {
+ # unpin deps
+ sed -i -e 's:,<=[0-9.]*::' pyproject.toml || die
+ distutils-r1_src_prepare
+}
diff --git a/dev-python/pypdf/Manifest b/dev-python/pypdf/Manifest
index 9cadee7e2f63..b1bb5bb07e94 100644
--- a/dev-python/pypdf/Manifest
+++ b/dev-python/pypdf/Manifest
@@ -4,5 +4,6 @@ DIST pypdf-6.12.2.gh.tar.gz 9564951 BLAKE2B 3d4e38bbbec4e503a6f5a351b975075b598c
DIST pypdf-6.13.0.gh.tar.gz 9574131 BLAKE2B 73ec727a0e33c6a963ed8757110fd802f55b87823b4c68eb873199fc48c10345c8c526fdb702c70d555fba13d9c51e1b16cf59ab61c0e85365da32897b62422e SHA512 a45354d0be67d1e92e8935f6261a376fdd22e849135b99f0a5615d697e70eaba5475ba36fd94897d66d943fc9e160b06645e8ce94903a897749eea0fd4a3dca4
DIST pypdf-6.13.1.gh.tar.gz 9573137 BLAKE2B c2375ef5b1558a681ea0bfc24050c8ff43b35cbb896c711d6d06ad930ddc6367dda944c09fa612c8d56ec67500267de86270fcf8d4b2629fbe57e0667aa0e230 SHA512 160107859717d7caf1de379b9cb2e97d8703a4275f35c8e98c7f75f886503fba9ed34743a16f2991ae03ee70716e5190a53cfeb52f52e5eb30a5f092f6fa52a9
DIST pypdf-6.13.2.gh.tar.gz 9573514 BLAKE2B 992997319cfdd79172862490b2c13383c345c228f87fe266a8c4b9640768115db9c5908990aaaa65ba7c69431fc056479d922a4febc2a4307f485d459e2664d5 SHA512 23e9c7db1da5717ba77143bad3cff8921121079f5720d10fdb5336e51d421a0a3e690626fa0e2087fcdffb59de68b801195716ef2b4820a8a6ad57be688f52df
+DIST pypdf-6.13.3.gh.tar.gz 9579398 BLAKE2B 5d94501a9ccfe921dd0b5c77e5791a869f6e4a72c42faa083758cf6a8e7828a1bf83f54c693ac5f0940976a4a88e25d6e5b4be2e7acaea8d45cd05552ea6df16 SHA512 bf034ef2c62cdfcd18bad242cfbdcfeab0e289f776fb2bc3340f782f49d3836a07bfedc002076f0290780ccfb46f0d49329774198856bf4577ad30d19fdf8b7c
DIST pypdf-sample-files-65e82ed36c1efd9bd7172a35c8dcfd6e18aabfb2.gh.tar.gz 11748256 BLAKE2B f1820f38ebda08bbf2019e81e2cc605fef3dc366904ed552c3f95673d93c1bd440fdee4b8c199b6cbfd90a7ebfd5aab55b22edc6a3ad8418f9efdafd4e4c741d SHA512 5795189231e9e5f176b530c602ca778b1b8864c88b69c16c37f430ef6a2f3d4b08c3a8757f6522a1472b1b09583bd8df50f2628319bb076af45326b36f6b876a
DIST pypdf-sample-files-8c405ece5eff12396a34a1fae3276132002e1753.gh.tar.gz 11748093 BLAKE2B c5989200893b28a3c2062bb024a5cfc6f3389dc259ec129857979fa43469e1274559612b4d555499e2c7e16cf34be07825229932bf4d147fa6d7324d043e97d5 SHA512 c9771129b7668a2fd1fa79bb859ae9213f3d60341cf1b9937ff0eaab0de9bf4c35adcb7b896e93329038dc0f3809a0c697c523f8fe41b43030b0b029a88058e3
diff --git a/dev-python/pypdf/pypdf-6.13.3.ebuild b/dev-python/pypdf/pypdf-6.13.3.ebuild
new file mode 100644
index 000000000000..8356f2373919
--- /dev/null
+++ b/dev-python/pypdf/pypdf-6.13.3.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=flit
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1
+
+SAMPLE_COMMIT=8c405ece5eff12396a34a1fae3276132002e1753
+DESCRIPTION="Python library to work with PDF files"
+HOMEPAGE="
+ https://pypi.org/project/pypdf/
+ https://github.com/py-pdf/pypdf/
+"
+SRC_URI="
+ https://github.com/py-pdf/pypdf/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+ test? (
+ https://github.com/py-pdf/sample-files/archive/${SAMPLE_COMMIT}.tar.gz
+ -> ${PN}-sample-files-${SAMPLE_COMMIT}.gh.tar.gz
+ )
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
+
+BDEPEND="
+ test? (
+ >=dev-python/cryptography-3.1[${PYTHON_USEDEP}]
+ dev-python/fonttools[${PYTHON_USEDEP}]
+ >=dev-python/pillow-8.0.0[jpeg,jpeg2k,tiff,zlib,${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ media-libs/jbig2dec[png]
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-timeout )
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_unpack() {
+ default
+ if use test; then
+ mv "sample-files-${SAMPLE_COMMIT}"/* "${S}"/sample-files/ || die
+ fi
+}
+
+python_test() {
+ epytest -o addopts= -m "not enable_socket"
+}
diff --git a/dev-python/pyproject-fmt/Manifest b/dev-python/pyproject-fmt/Manifest
index 95912043c5bd..5f8cf268f682 100644
--- a/dev-python/pyproject-fmt/Manifest
+++ b/dev-python/pyproject-fmt/Manifest
@@ -8,7 +8,10 @@ DIST pyproject_fmt-2.24.0.tar.gz 281070 BLAKE2B a3b8b23f7a3f3e422423a5806e54d367
DIST pyproject_fmt-2.24.0.tar.gz.provenance 9841 BLAKE2B 68e52f9f7642d98206a45c582dc60201c7a7cb67fa9c152b1ef1c7dbfe29dfcf4716da98c218605274b2e45cb515662c09a8ab77cd03bd25fae486b029448457 SHA512 ea24c7c0aa8201f681f2dd525798b6ff52886f0eb25cb77ea4a674b89bb5eb221d32741a477a0f6f6370b69b5894bbdfc847b613c1b888d2d802f70944607fcf
DIST pyproject_fmt-2.24.1.tar.gz 280585 BLAKE2B 76dbf5443a7ff7215437b6b4d4a2cb9f6c752335d73dcec893fa1e222b3d459298e11265367ff2e76d63548b47e6c752266703d59329653d02113b2c410d178e SHA512 5b044182e27f881bc13d24406f5dabd68ab60e325ba748f460533640e87731cb30651e744ad0011e2ef4cddf5907f42e6f9d2aca6aa0a558dddfa5beaefbab9c
DIST pyproject_fmt-2.24.1.tar.gz.provenance 10064 BLAKE2B ec74f53fae059829f6e44434666d196b5ea92b787d80fe04d6a001e93f1563be978c6771918a3fe7af19ef1a41cc8ce04d21ef0f15ce9e7af39b3cbfe2af00b2 SHA512 4220f4b3fd4372dc0593da35341255778f25c4386eca6007f6e49252cccc861df75980ab74fc437ca26105687198c8b0bfad81579ef4341fd0e97c4ee3a9e79a
+DIST pyproject_fmt-2.25.0.tar.gz 292640 BLAKE2B a6d65982bd0591966a09218b74032e7da1aff8f99406bfdad405b10203a14096f6ebca761ec97861edbd5115845a75fcbf3ade1201a26f0f6d2a0dd717c3837f SHA512 d1fa497bd7fe76e6b3fae996cec29cf1a29fe3484a7b43dd81fbc50e3d1ee50eb096e891624d4942991cbb2ccf414d099a88b1649c5481d2bd3e26ddbd2e8348
+DIST pyproject_fmt-2.25.0.tar.gz.provenance 9829 BLAKE2B f6632a9b29fa43159badefe9a16355bc22b09b0a17bdb08fcc41ae89d3ff62cc5d2e79b5b4e996c794d863535b3cebf909e7cbc6abde8bcc28f1f09ee55b0bec SHA512 bb6e171ce072c8eb1a92127993e284a45414a54639a7f88478d6f0b09efa8db02fd93e2ddd9ee3e986567c26512de8ee2517f4770cd3ee0b72f09ae6bde10dc3
DIST tombi-0d64bd3bd8a5ddcaafdfc7b114e3b73ada0b325b.gh.tar.gz 10564681 BLAKE2B 1cc4e307d89ae978c8022aed63ad7a7c08e71f810e42743589a6bf44499051250102ca3a60aa2cea65292dfd187240da96f6fb963511b6d4c06559c20bbc67a3 SHA512 e398e14c9b092f2378dfa848c697ea5cb0af705bcb801f288d2ca98b8c0d4aa3abf7a71f2f5a10a4a6a77e1e8d1f7089a0359b2a3ec9b226a19bbb40f0aa0a14
+DIST tombi-362cafbd685311cb659ec0a422ebecc1eb332952.gh.tar.gz 10612816 BLAKE2B 8c1ada6d32c3b400110303243dc8f2070a395254a52f57cb4dff9bf788c43bf0491950cc563b2e9e19645a6fe785fbbafc61684446889e3d9b2a18f025d91b3e SHA512 e54f04e5bab4fcba6fa5562746c61a63f94954d5d46781277a9e83645182916c9131e4d09429e12e2dca7369947d68cb13d0cafea10cfbddecac85419f3f6031
DIST tombi-afbc4d39033e872c0739d43b66cb4b5c278ba11c.gh.tar.gz 10400276 BLAKE2B f697615f6538f0b47da592dc217342d915036223ecf0b97e05f6dcef15e8788e4314214dd7b624c1d6b7715df15ef5e6c480a0a9113f2016c58ab2744ec03f32 SHA512 87cfe1cf661c974dfb74382a178eb5d060cadc90eb62dbe8fe6671e3e29ff6cc77f4205be7a7ac0b15ad73be1529c2203a07e9fb383f81c72e07342705769d23
DIST tombi-d5056f9743d7e3f194158e125b90d7294aa59ad7.gh.tar.gz 10475854 BLAKE2B 6a629d533e576930e8e988662e3d350137d32ce9b517578f4ee5f20437b75d31300568adf4a4fae2e9fc7a033af1031d4fbcaafa51656a3af2b8a7e03365495e SHA512 74aa91819f15420207850951d0d6b41d61dadf3bdb38406299ae1126bb9ae597a7eb9b69a4485165bf465eb10384b67c73b0e231ce22e1910bc2db448c4eb626
DIST tombi-e9213370947e9d7ab6dd98c1cf17533bbbcc797f.gh.tar.gz 10608653 BLAKE2B 7fd8a27bec2e0c5ab357f2c56ca50c848d71e02da3faca9b0650541b35b177ce7b669d294c20add3dac2ba70e5ced46046d5c2de14df81fcee418fccaaa47344 SHA512 a84ca3f676b95d11c121df08382e3bc6ca2e31c0c867ff3027c5564219f637abda34bcc00d563d777280e1b4522354e83b6bb4b0412b067e9ce57272a4e34d15
@@ -17,3 +20,4 @@ DIST toml-fmt-pyproject-fmt-2.21.1-crates.tar.xz 18661404 BLAKE2B cb19d8ebbb7d4f
DIST toml-fmt-pyproject-fmt-2.21.2-crates.tar.xz 18776904 BLAKE2B ae748ae98a2769a78b34a2051e3237c40bc6714d88c58a22aec5af85caa86e4690e9749ddd1f87d2ebe0908a1a3f24a01a48e4abcf107fcdbd5d8322a0738c6a SHA512 474d707babc9a3f98a933ae645ffb951062491158c6863ff9dea7fee065b19f440501e092fbc28e62e4e67dce435689096a27b96c6acde3b8128b76b5890ca3e
DIST toml-fmt-pyproject-fmt-2.24.0-crates.tar.xz 18713448 BLAKE2B 6b5c71bc419891391ec4f375a29821ff8b2039222ace04da609d155b9260a187520ff70c3b71a7d804f628041e41df20d5b69c0e2cea9cc415404535407363dc SHA512 7a3726f24f7a4e00e892c24f1ee94e763f7faa212ed908c2b13ba70b5ae67cab3b269fcffc0c0755a13cdc6a290e281a274b5746fec0620cc6c980d0f3ddb7a5
DIST toml-fmt-pyproject-fmt-2.24.1-crates.tar.xz 18725980 BLAKE2B 75f6c4a07b14fc60cd3b7a00e902c2b37fe79ea3d03172e7271300d5ea5bd0bf9b7727c4af7e47e82d28424f677235a6e9c1d22ad3314210be93170d9f36ff76 SHA512 88da1827c097f712489276c48fbf10e4c61ef92b877cd8eb7f34eeb1e289ce0362661d3b01bf34c23c1f4cc67e23b05462773407eba7d17814c96d7885f23bd9
+DIST toml-fmt-pyproject-fmt-2.25.0-crates.tar.xz 18742060 BLAKE2B 5cc45568d2981e1804e8800b6d7da203eee70f022b86dff671580e91be90b6627bac38d58f3ba50d138dbe6a905b6a21b324c3fc6114b7a0de11fb6078dd4ef2 SHA512 27986f6f647b3e50d0de5ce3acd7b3b089db896b5560f15b9d7d11c98e4a9b9d5adea566034e533de177fd9e2c08f46f760f9bf73d39910dd2d0ddf85c526832
diff --git a/dev-python/pyproject-fmt/pyproject-fmt-2.25.0.ebuild b/dev-python/pyproject-fmt/pyproject-fmt-2.25.0.ebuild
new file mode 100644
index 000000000000..cfbb63d7fbe0
--- /dev/null
+++ b/dev-python/pyproject-fmt/pyproject-fmt-2.25.0.ebuild
@@ -0,0 +1,113 @@
+# Copyright 2022-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=maturin
+DISTUTILS_UPSTREAM_PEP517=standalone
+PYPI_VERIFY_REPO=https://github.com/tox-dev/toml-fmt
+PYTHON_COMPAT=( python3_{13..14} )
+
+RUST_MIN_VER="1.87.0"
+CRATES="
+"
+
+declare -A GIT_CRATES=(
+ [tombi-accessor]='https://github.com/tombi-toml/tombi;362cafbd685311cb659ec0a422ebecc1eb332952;tombi-%commit%/crates/tombi-accessor'
+ [tombi-ast-editor]='https://github.com/tombi-toml/tombi;362cafbd685311cb659ec0a422ebecc1eb332952;tombi-%commit%/crates/tombi-ast-editor'
+ [tombi-ast]='https://github.com/tombi-toml/tombi;362cafbd685311cb659ec0a422ebecc1eb332952;tombi-%commit%/crates/tombi-ast'
+ [tombi-cache]='https://github.com/tombi-toml/tombi;362cafbd685311cb659ec0a422ebecc1eb332952;tombi-%commit%/crates/tombi-cache'
+ [tombi-comment-directive-serde]='https://github.com/tombi-toml/tombi;362cafbd685311cb659ec0a422ebecc1eb332952;tombi-%commit%/crates/tombi-comment-directive-serde'
+ [tombi-comment-directive-store]='https://github.com/tombi-toml/tombi;362cafbd685311cb659ec0a422ebecc1eb332952;tombi-%commit%/crates/tombi-comment-directive-store'
+ [tombi-comment-directive]='https://github.com/tombi-toml/tombi;362cafbd685311cb659ec0a422ebecc1eb332952;tombi-%commit%/crates/tombi-comment-directive'
+ [tombi-config]='https://github.com/tombi-toml/tombi;362cafbd685311cb659ec0a422ebecc1eb332952;tombi-%commit%/crates/tombi-config'
+ [tombi-date-time]='https://github.com/tombi-toml/tombi;362cafbd685311cb659ec0a422ebecc1eb332952;tombi-%commit%/crates/tombi-date-time'
+ [tombi-diagnostic]='https://github.com/tombi-toml/tombi;362cafbd685311cb659ec0a422ebecc1eb332952;tombi-%commit%/crates/tombi-diagnostic'
+ [tombi-document-tree]='https://github.com/tombi-toml/tombi;362cafbd685311cb659ec0a422ebecc1eb332952;tombi-%commit%/crates/tombi-document-tree'
+ [tombi-document]='https://github.com/tombi-toml/tombi;362cafbd685311cb659ec0a422ebecc1eb332952;tombi-%commit%/crates/tombi-document'
+ [tombi-formatter]='https://github.com/tombi-toml/tombi;362cafbd685311cb659ec0a422ebecc1eb332952;tombi-%commit%/crates/tombi-formatter'
+ [tombi-future]='https://github.com/tombi-toml/tombi;362cafbd685311cb659ec0a422ebecc1eb332952;tombi-%commit%/crates/tombi-future'
+ [tombi-hashmap]='https://github.com/tombi-toml/tombi;362cafbd685311cb659ec0a422ebecc1eb332952;tombi-%commit%/crates/tombi-hashmap'
+ [tombi-json-lexer]='https://github.com/tombi-toml/tombi;362cafbd685311cb659ec0a422ebecc1eb332952;tombi-%commit%/crates/tombi-json-lexer'
+ [tombi-json-syntax]='https://github.com/tombi-toml/tombi;362cafbd685311cb659ec0a422ebecc1eb332952;tombi-%commit%/crates/tombi-json-syntax'
+ [tombi-json-value]='https://github.com/tombi-toml/tombi;362cafbd685311cb659ec0a422ebecc1eb332952;tombi-%commit%/crates/tombi-json-value'
+ [tombi-json]='https://github.com/tombi-toml/tombi;362cafbd685311cb659ec0a422ebecc1eb332952;tombi-%commit%/crates/tombi-json'
+ [tombi-lexer]='https://github.com/tombi-toml/tombi;362cafbd685311cb659ec0a422ebecc1eb332952;tombi-%commit%/crates/tombi-lexer'
+ [tombi-parser]='https://github.com/tombi-toml/tombi;362cafbd685311cb659ec0a422ebecc1eb332952;tombi-%commit%/crates/tombi-parser'
+ [tombi-regex]='https://github.com/tombi-toml/tombi;362cafbd685311cb659ec0a422ebecc1eb332952;tombi-%commit%/crates/tombi-regex'
+ [tombi-rg-tree]='https://github.com/tombi-toml/tombi;362cafbd685311cb659ec0a422ebecc1eb332952;tombi-%commit%/crates/tombi-rg-tree'
+ [tombi-schema-store]='https://github.com/tombi-toml/tombi;362cafbd685311cb659ec0a422ebecc1eb332952;tombi-%commit%/crates/tombi-schema-store'
+ [tombi-severity-level]='https://github.com/tombi-toml/tombi;362cafbd685311cb659ec0a422ebecc1eb332952;tombi-%commit%/crates/tombi-severity-level'
+ [tombi-syntax]='https://github.com/tombi-toml/tombi;362cafbd685311cb659ec0a422ebecc1eb332952;tombi-%commit%/crates/tombi-syntax'
+ [tombi-text]='https://github.com/tombi-toml/tombi;362cafbd685311cb659ec0a422ebecc1eb332952;tombi-%commit%/crates/tombi-text'
+ [tombi-toml-text]='https://github.com/tombi-toml/tombi;362cafbd685311cb659ec0a422ebecc1eb332952;tombi-%commit%/crates/tombi-toml-text'
+ [tombi-toml-version]='https://github.com/tombi-toml/tombi;362cafbd685311cb659ec0a422ebecc1eb332952;tombi-%commit%/crates/tombi-toml-version'
+ [tombi-uri]='https://github.com/tombi-toml/tombi;362cafbd685311cb659ec0a422ebecc1eb332952;tombi-%commit%/crates/tombi-uri'
+ [tombi-validator]='https://github.com/tombi-toml/tombi;362cafbd685311cb659ec0a422ebecc1eb332952;tombi-%commit%/crates/tombi-validator'
+ [tombi-version-sort]='https://github.com/tombi-toml/tombi;362cafbd685311cb659ec0a422ebecc1eb332952;tombi-%commit%/crates/tombi-version-sort'
+ [tombi-x-keyword]='https://github.com/tombi-toml/tombi;362cafbd685311cb659ec0a422ebecc1eb332952;tombi-%commit%/crates/tombi-x-keyword'
+)
+
+inherit cargo distutils-r1 pypi
+
+DESCRIPTION="Format your pyproject.toml file"
+HOMEPAGE="
+ https://github.com/tox-dev/toml-fmt/
+ https://pypi.org/project/pyproject-fmt/
+"
+SRC_URI+="
+ ${CARGO_CRATE_URIS}
+ https://github.com/gentoo-crate-dist/toml-fmt/releases/download/pyproject-fmt%2F${PV}/toml-fmt-${P}-crates.tar.xz
+"
+
+LICENSE="MIT"
+# Dependent crate licenses
+LICENSE+="
+ Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD ISC MIT MPL-2.0
+ Unicode-3.0 ZLIB
+"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ dev-python/toml-fmt-common[${PYTHON_USEDEP}]
+"
+# tox is called as a subprocess, to get targets from tox.ini
+BDEPEND="
+ test? (
+ dev-python/tox
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-mock )
+distutils_enable_tests pytest
+
+QA_FLAGS_IGNORED="usr/lib/py.*/site-packages/pyproject_fmt/_lib.*.so"
+
+src_unpack() {
+ pypi_src_unpack
+ cargo_src_unpack
+}
+
+src_prepare() {
+ distutils-r1_src_prepare
+ sed -i -e '/strip/d' pyproject.toml || die
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # something about ANSI codes, no clue
+ pyproject-fmt/tests/test_main.py::test_main[format-absolute-no_check-in_place]
+ pyproject-fmt/tests/test_main.py::test_main[format-cwd-no_check-in_place]
+ )
+
+ epytest pyproject-fmt
+}
+
+python_test_all() {
+ # default features cause linking errors because they make pyo3
+ # wrongly assume it's compiling a Python extension
+ # https://github.com/tox-dev/toml-fmt/issues/23
+ cargo_src_test --no-default-features
+}
diff --git a/dev-python/s3transfer/Manifest b/dev-python/s3transfer/Manifest
index 485ab08efc16..b0b80ff229a7 100644
--- a/dev-python/s3transfer/Manifest
+++ b/dev-python/s3transfer/Manifest
@@ -2,3 +2,4 @@ DIST s3transfer-0.16.1.tar.gz 154801 BLAKE2B 7a8684162402007c148b9cbd5eb29a006b9
DIST s3transfer-0.17.0.tar.gz 155337 BLAKE2B bc1898fc9cc8ca5bbedad81a3491127cdf2021ee522b099121592f89a0c3bb3ece9a9cae3d35593b1cf9b379790c7135523bcf2e53675a5060fe64ed5be9a5da SHA512 cbd5a5ac93d3cad66b54d93fdd07b36dbc40a377e89395fd16349f0e8e5abc66938f4c74c00cc8ee4a14b9ac4673a43b18c217357eb4fcd72cb61682605bd134
DIST s3transfer-0.17.1.tar.gz 159439 BLAKE2B 21d98ca77b864abb2fec9e14436c80072530eb191ed85d8ad653d77b6f297f38151dfcaf1d84569ac88df8c963eff2575f9dc4ee25051114a917bbd2e4c47cd4 SHA512 3af4ea30906004fab19e41d9c55d491908ee8750af8e2791c1c8644a73743e533c32aeb7bf3f5e4675c88575cd4c01246ab8a685669ea560af99a997862d9ba8
DIST s3transfer-0.18.0.tar.gz 160560 BLAKE2B dac8d96e8bb37cd5fe12a0777825c233015332482be0fd4ab718a0866569b309bc89f5b62d32c948da6935df06c8f46ff9a20b558271c9a36737a41140e42b39 SHA512 b9ffc2c01ff254203f7a909dc9e5c860708a49ded3763ce9f9bfc922a032f4f69db6a057765c48b087e060d9efed8b367bc04a71b5f3c36c1930bb43db533d76
+DIST s3transfer-0.19.0.tar.gz 165171 BLAKE2B df0310c69a6ec7687a94c1b9321c843c52578ef07e3ee7ae5c68ba1b4cb36d6172954c7d3d371f6ee31c45690240f7b3869620b5079bbfe951b9192576bd0299 SHA512 8f4deb706ac23add37472c6921ab1d63dc2def57f4bd27f372766f7208a136facf963db0ab484be72133ab6f8ba620277af098fc98f4f8f7d01fc490cf49c716
diff --git a/dev-python/s3transfer/s3transfer-0.19.0.ebuild b/dev-python/s3transfer/s3transfer-0.19.0.ebuild
new file mode 100644
index 000000000000..9742b462e53c
--- /dev/null
+++ b/dev-python/s3transfer/s3transfer-0.19.0.ebuild
@@ -0,0 +1,42 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="An Amazon S3 Transfer Manager"
+HOMEPAGE="
+ https://github.com/boto/s3transfer/
+ https://pypi.org/project/s3transfer/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
+
+RDEPEND="
+ <dev-python/botocore-2[${PYTHON_USEDEP}]
+ >=dev-python/botocore-1.37.4[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # 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
+}
+
+python_test() {
+ epytest tests/{unit,functional}
+}
diff --git a/dev-python/selenium/Manifest b/dev-python/selenium/Manifest
index f34484189bbd..894d815b3c13 100644
--- a/dev-python/selenium/Manifest
+++ b/dev-python/selenium/Manifest
@@ -1,6 +1,9 @@
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.44.0.tar.gz 993133 BLAKE2B 1c8f7f1fdfb21812569651c6086eba57455354b79ab1736d7fbfe6415affafed1f154bb21ead08a66fc5ffc638e05244a60f1ee1e85405b492ba3e84ac8b9f06 SHA512 72dabe202620ed29c9f66936827c257adf44d2f7c98a39724b1d2ef99fd7819875877f2d3cd2b1086f9e544a1f29bb3df6aa516ff8670f3701469b2ce75f5856
+DIST selenium-4.45.0.tar.gz 1005503 BLAKE2B ae9de988a6a7fd2b07aaac90d90973b600d7f494c8c840b8da7e19159222352382005e1d2a5774d2be6fff0987455e828da5227a8fdf71d0532e3ae759c1f6de SHA512 e67a731e93d172c0e1029656fdb06d4af808ccae3649fee85ba94f519da2407799b5d4a344c7334e0ce419031017493f83fd5fe82583d41060aeba49c369ff7a
+DIST selenium-4.45.0.tar.gz.provenance 9743 BLAKE2B 485094912f8be3583d22377e06248ac42c2aadf8d7eb4cc6a0fdef566532f33346f7ba32a0b190e34e8657755c886de3fde73633d0f349c7282579a8c0fc4965 SHA512 dcbd6d32d76b3d76cb273c2dcd80966a84113879e8731f81a598d3c66495c0e26d7d870dca78f36da413bee052ce4d9db16e938efa6b0c1f6b8c138c798340cc
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.44.0.gh.tar.gz 43755091 BLAKE2B 05a58f6cde1bf1a9cdd4aa7dc61a93bedbeed814f6b16c9876cb85879d5aa4f470db569c21b6582673a281af01637237c0e099c79d9dc6e602ceedfc57e1a04d SHA512 6b93db69b9c1196e72b0a762b64b0677d70262428fc5a8dfe8d93847588fa5b78e481e9fa195fac41279ebbe4f1dd354b1217635cabcf7fac1c964a3a8b18e7a
+DIST selenium-selenium-4.45.0.gh.tar.gz 43849895 BLAKE2B ac9f2a6fdb393946e4e92326174c07c36fb15e1a8fc5053cbe5b4f4c76234127545234863149ec2d1811445d0985794b51927924f86d1067f2a9b4a5e36e2835 SHA512 943db9e790a2e9f52dcab9ea688bf805a9e6875a7eb43972f3c2b2eb454d2067eeb14204146dbc203b255d7228b18d9806a41711c8e37fa2e3d07a5b0bb96985
diff --git a/dev-python/selenium/selenium-4.45.0.ebuild b/dev-python/selenium/selenium-4.45.0.ebuild
new file mode 100644
index 000000000000..27ddd7464f40
--- /dev/null
+++ b/dev-python/selenium/selenium-4.45.0.ebuild
@@ -0,0 +1,166 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_VERIFY_REPO=https://github.com/SeleniumHQ/selenium
+PYTHON_TESTED=( python3_{13..14} )
+PYTHON_COMPAT=( python3_{13..14} )
+
+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/snakeoil/Manifest b/dev-python/snakeoil/Manifest
index 4755a2674428..4fcaefc78408 100644
--- a/dev-python/snakeoil/Manifest
+++ b/dev-python/snakeoil/Manifest
@@ -1,3 +1,2 @@
-DIST snakeoil-0.10.11.tar.gz 174701 BLAKE2B 5dba8eac3fdd6dfc88fcb2ffac8cd16f18c28485d39e6726708f98f0c86cdc6d101bf343da75c505f34c59c0bede89b0adbc268bc6d93a996cfefce4e968ac75 SHA512 6cd4fb1449e1ccf74bf8042afa4e113704eb328c89ff1def59581e96031082b27d78f46574796f59a612148947626d727b13a04134bc895e96f2f4733ce54c41
DIST snakeoil-0.11.0.tar.gz 201462 BLAKE2B c8d9953b5fc482afbadd471c6de273518d1b30a42cff2cc45cd2700544bb9a84b25ea3686e8f056bd44562075f1eedf7db3af6cf935f177b513e9b3f0a76840c SHA512 6636def3a05469a3f22e0a510d00fd5d6399c561fa436f7028507b5b548c5d20200ec93fdf2d8ba03176e76f2d6a0e51f12f63fa4b6a16a11839552dcbd7543c
DIST snakeoil-0.11.0.tar.gz.provenance 9238 BLAKE2B 6724f3cde7cfabdfc44a8e0056a8c112d97ff7ffba98c90c998f8244a7ebf5b38198613b49f0df7dc9106cba6d07a68bb02b6cfaf70d83e6692f730a4fdce1c2 SHA512 990cf993fab784e7878517872183edf91b0a9725c08e618974a05b68c75c35b2bd03e865bd5a3ce21fcc138cbc84a1a0051be40fda639d5f3bcc8c8c0a6ef347
diff --git a/dev-python/snakeoil/snakeoil-0.10.11.ebuild b/dev-python/snakeoil/snakeoil-0.10.11.ebuild
deleted file mode 100644
index 8a6efb563bb6..000000000000
--- a/dev-python/snakeoil/snakeoil-0.10.11.ebuild
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=flit
-PYTHON_COMPAT=( python3_{13..14} )
-PYTHON_REQ_USE="threads(+)"
-inherit distutils-r1
-
-if [[ ${PV} == *9999 ]] ; then
- EGIT_REPO_URI="https://anongit.gentoo.org/git/proj/pkgcore/snakeoil.git
- https://github.com/pkgcore/snakeoil.git"
- inherit git-r3
-else
- KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
- inherit pypi
-fi
-
-DESCRIPTION="misc common functionality and useful optimizations"
-HOMEPAGE="https://github.com/pkgcore/snakeoil"
-
-LICENSE="BSD BSD-2 MIT"
-SLOT="0"
-
-RDEPEND="
- dev-python/lazy-object-proxy[${PYTHON_USEDEP}]
-"
-
-distutils_enable_tests pytest
diff --git a/dev-python/sphinxcontrib-programoutput/Manifest b/dev-python/sphinxcontrib-programoutput/Manifest
index 0fbad188abaa..7507a7c55c66 100644
--- a/dev-python/sphinxcontrib-programoutput/Manifest
+++ b/dev-python/sphinxcontrib-programoutput/Manifest
@@ -1 +1,2 @@
DIST sphinxcontrib_programoutput-0.19.tar.gz 27534 BLAKE2B 8a76c7c5026faac12bea50b5ba95e3e866069fb3f775c098af4523fa41cf2ae15458fa33a08c6dbef1fef7bed130bc20f281705acefa2a200e1d8c41d004a185 SHA512 817553a2ac53f08125725bdc16268af804c484ba99f27e5584719f3fc53e15d44ca0874e3af45cfeb5074b20cb464ee3c3444973f51b4495d6a2c3d735524738
+DIST sphinxcontrib_programoutput-0.20.tar.gz 28235 BLAKE2B 16dd6c683f98f8c9fa472809a08f6e172e83a2cbae797e3ad2d38d0d27fa875912b638d307179e33174ae46f2bd0018744b6cf70409ff733cfe223dfd9a95c0a SHA512 b5aae31688b907bdad8980f48ea41f2fde9a42fb9de549366ca4920746c93b058eae01bb15cb06a8b280e97d9dad83c914b6d67fd008afeae15e336612010a62
diff --git a/dev-python/sphinxcontrib-programoutput/sphinxcontrib-programoutput-0.20.ebuild b/dev-python/sphinxcontrib-programoutput/sphinxcontrib-programoutput-0.20.ebuild
new file mode 100644
index 000000000000..f862c4d85dd6
--- /dev/null
+++ b/dev-python/sphinxcontrib-programoutput/sphinxcontrib-programoutput-0.20.ebuild
@@ -0,0 +1,38 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Extension to sphinx to include program output"
+HOMEPAGE="
+ https://github.com/OpenNTI/sphinxcontrib-programoutput/
+ https://pypi.org/project/sphinxcontrib-programoutput/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ dev-python/docutils[${PYTHON_USEDEP}]
+ >=dev-python/sphinx-5[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+distutils_enable_sphinx docs \
+ dev-python/furo
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # requires 'erbsland'
+ test_directive.py::TestDirective::test_use_ansi_enabled_extension
+ )
+
+ epytest --pyargs sphinxcontrib.programoutput.tests
+}
diff --git a/dev-python/svglib/Manifest b/dev-python/svglib/Manifest
index ef5e23eee5a2..1010f4eeaae8 100644
--- a/dev-python/svglib/Manifest
+++ b/dev-python/svglib/Manifest
@@ -1,2 +1,5 @@
DIST svglib-1.6.0.tar.gz 1318276 BLAKE2B cc2ceb1850ad3a1c82f310b5b5c28f95ad047b3f933d323c40ab082df10b480788f24556fb29722ff5ae70490eeff5919780b979b9752c39e21523630dc3358a SHA512 7d6e30629b409cbdf80de3278a6b7a67ae4a3d82cd83c6f53cb72c21b59839eafbef4d34989621744773f9c7ba47b6cbe86d8f8b222054ff016061a740bf2bc2
DIST svglib-1.6.0.tar.gz.provenance 9400 BLAKE2B d570304d15dfac0590892b9c440e0c878a4d33f2e552b5f1f934cb741da4f58c407c4773f63e6528e4931ffd1a0fcc7e1d8db60122f0631d4e5846b0d492648c SHA512 51c43849de39807fd38002fddda0b544d92f3534619f0823cefeaf75d486d6d8833857c90603ce7bf64074db292b8f4effdaaf83afc62c3b11d29b8f51c2660a
+DIST svglib-2.0.0.tar.gz 1462932 BLAKE2B 7fa50da9bb93fbe452a1178fe40b4016a8a94cd444931dd95d163ad08b76e5e50fceb5c9e75b2bc4f775187380ccf469d13376ee7f94d22b931bfdbbe047a297 SHA512 74adb5a557c182144c20bf98d69219a904b22e67d37c5627e1ac4bbfdb62bd248e6f213edbf0ebd71e96eade90e3546245696eab768a6d0c9def2c531d5ed8a4
+DIST svglib-2.0.1.tar.gz 1340776 BLAKE2B b24fb4f7aba1bea90436b65857374067bc1175b03bbe1acd0ca2f3cff5bb1f0a1709c732114bfa817ea730fc0734ba7987a7f7b73b5ae9786b2faf3d7f9d92d7 SHA512 99e32be3baf2641751ce595d376a28a674a12cc59ca46c743a4cc9786199070cf51274bed855f7cff6527b90159f39a485f2324f5199bc4661054dee8bd2c4cd
+DIST svglib-2.0.1.tar.gz.provenance 9951 BLAKE2B b7df482af7aa831fbce5f93b0c88ba740d8be754d49ca206ee9393739eb0a2fafad33c7cb33de419ca6a28aa5b3d7d1f7dfa4cad7f52fc302490eed6e1ece26c SHA512 3dee7ef90a9cb32358281d0c226d2715cbf6cee4353686c91f791db27e148e1de2fa6aa653683f411c45339cdfcee77d49784b6b1ae0145bfde48e0edad86b93
diff --git a/dev-python/svglib/svglib-2.0.0.ebuild b/dev-python/svglib/svglib-2.0.0.ebuild
new file mode 100644
index 000000000000..4f488ad9d154
--- /dev/null
+++ b/dev-python/svglib/svglib-2.0.0.ebuild
@@ -0,0 +1,35 @@
+# Copyright 2021-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Pure-Python library for reading and converting SVG"
+HOMEPAGE="
+ https://github.com/deeplook/svglib/
+ https://pypi.org/project/svglib/
+"
+
+LICENSE="LGPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="
+ >=dev-python/cssselect2-0.2.0[${PYTHON_USEDEP}]
+ >=dev-python/lxml-6.0.0[${PYTHON_USEDEP}]
+ >=dev-python/reportlab-4.4.3[${PYTHON_USEDEP}]
+ >=dev-python/tinycss2-0.6.0[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # Needs network access
+ tests/test_samples.py::TestWikipediaFlags::test_convert_pdf
+ tests/test_samples.py::TestW3CSVG::test_convert_pdf_png
+)
diff --git a/dev-python/svglib/svglib-2.0.1.ebuild b/dev-python/svglib/svglib-2.0.1.ebuild
new file mode 100644
index 000000000000..bdddbe8b3b5c
--- /dev/null
+++ b/dev-python/svglib/svglib-2.0.1.ebuild
@@ -0,0 +1,37 @@
+# Copyright 2021-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/deeplook/svglib
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Pure-Python library for reading and converting SVG"
+HOMEPAGE="
+ https://github.com/deeplook/svglib/
+ https://pypi.org/project/svglib/
+"
+
+LICENSE="LGPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="
+ >=dev-python/cssselect2-0.2.0[${PYTHON_USEDEP}]
+ >=dev-python/lxml-6.0.0[${PYTHON_USEDEP}]
+ >=dev-python/pillow-9.0.0[${PYTHON_USEDEP}]
+ >=dev-python/reportlab-4.4.3[${PYTHON_USEDEP}]
+ >=dev-python/tinycss2-0.6.0[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # Needs network access
+ tests/test_samples.py::TestWikipediaFlags::test_convert_pdf
+ tests/test_samples.py::TestW3CSVG::test_convert_pdf_png
+)
diff --git a/dev-python/tqdm/Manifest b/dev-python/tqdm/Manifest
index 9a1864bf5511..696f6d645851 100644
--- a/dev-python/tqdm/Manifest
+++ b/dev-python/tqdm/Manifest
@@ -4,3 +4,5 @@ DIST tqdm-4.68.1.tar.gz 171236 BLAKE2B da159f99cf504d8ada8f0d4dd5dbcec2a0fcedf56
DIST tqdm-4.68.1.tar.gz.provenance 9189 BLAKE2B 6c7f6a3ad9b087ad520efd44cd6e386c2ae308b61c9998d16a91ff085aec613c63625f2ff8ce66dd60a08ac2249f1dd3a38d75798e4bc633443de26f53b6c386 SHA512 135fa4c6bd8e09d6512bc4c247d99e6e2848014d7ad759abf9a1b7a897e09985232c80d126848d848d2d145ef7311f9f5c1cc7a823d58a2fa7a7adbab4695bf8
DIST tqdm-4.68.2.tar.gz 171923 BLAKE2B 7a3587662766743952627ad294cca083cac58d576346f242c3499c78e56f528d9c0d454af241a8366eb6b38fa04ecc267579db94abae474d8a7e3c6fbbdcf1be SHA512 a023be68c85d807f2a3dfc225b9db09add9cf71b4f2fb69abf184ee47526afbdeef2ff7a16e6f02d0640eae3d37bb070eefdac050e54263b61ee6d916c8269a3
DIST tqdm-4.68.2.tar.gz.provenance 9146 BLAKE2B 315da20cff5c147ea9a42626f868121f89264fa0269892336883a5ad9aa0b545cf25fb9bc174656d5dee7196a394acde767e635b6296d29e0465703bff5fbfb5 SHA512 06f93344fe73eb5eee90d4094810540451baa7d7fcdf120ad77302e55b55d60bbefd8c5cc5ed6714b7a2aff7cb2c038278d1c14aaff911a3d56fbc17a12bf4b3
+DIST tqdm-4.68.3.tar.gz 170596 BLAKE2B ded12112cdb45a81d3ce85d6cf25f1968780f44962f686627d820c2121cef103f10b80c5e28bc155b765ed2622915c00e50288f4ef949dcc05e22fcc351257f9 SHA512 6421d3b2b4483aecc2e71f4061694c9219f5c99e0b4aedde2d752299a8643719a255ec783f944d3d1b3896c97e5d35b58b0cf1ecd97ac14806b50af65fb37e63
+DIST tqdm-4.68.3.tar.gz.provenance 9381 BLAKE2B 627c7f6da41395cfeca1b3b8f3d1643aac863786dc31e22f9f9289f071985ee70c65bb7cd18dc35b322aafe787d7365a294accf7a59583ac29bfe789625e5772 SHA512 52172af2cb84c14edc77b98f8cd436a981147f2f1134f26bcd172161dc467b0589d83f456d78344369d2303741d048aa4160b1dac52beb60edc0ef14420341b2
diff --git a/dev-python/tqdm/tqdm-4.68.3.ebuild b/dev-python/tqdm/tqdm-4.68.3.ebuild
new file mode 100644
index 000000000000..30d0ec6fe291
--- /dev/null
+++ b/dev-python/tqdm/tqdm-4.68.3.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
+PYPI_VERIFY_REPO=https://github.com/tqdm/tqdm
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit bash-completion-r1 distutils-r1 pypi
+
+DESCRIPTION="Add a progress meter to your loops in a second"
+HOMEPAGE="
+ https://github.com/tqdm/tqdm/
+ https://pypi.org/project/tqdm/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos"
+IUSE="examples"
+
+BDEPEND="
+ dev-python/setuptools-scm[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=( pytest-{asyncio,timeout} )
+distutils_enable_tests pytest
+
+EPYTEST_IGNORE=(
+ # Skip unpredictable performance tests
+ tests/tests_perf.py
+)
+
+python_install_all() {
+ doman tqdm/tqdm.1
+ newbashcomp tqdm/completion.sh tqdm
+ if use examples; then
+ dodoc -r examples
+ docompress -x /usr/share/doc/${PF}/examples
+ fi
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/tzlocal/Manifest b/dev-python/tzlocal/Manifest
index ddd93e036f73..cd63f0bf1632 100644
--- a/dev-python/tzlocal/Manifest
+++ b/dev-python/tzlocal/Manifest
@@ -1,2 +1,3 @@
DIST tzlocal-5.3.1.gh.tar.gz 26331 BLAKE2B d2f2f1981613fd148950bcfe5ab3797597c77342d0d848379562534a4fae2c9b9b0c98d6fb4cc1758d4b1dc6d6bda4d2f3ff9555d0bf0418c4cfa589fb720a12 SHA512 e72581649488e9771d314c7aea149367749866263df18baccb63c4fe369a863c392a8522c6be7987c32ff835dd11aae93b37028b0e7276dcf5c3d6e9a7b63ccc
+DIST tzlocal-5.4.3.tar.gz 30873 BLAKE2B 908ce9cd52df2d2c86d2d0d10ecd558ba441486e54b9cf02d1f7e7b32e7a1645d4875a858c83e8fab74c69557dfc854a5c95bad004f6705b8be1bd4d1fce04d6 SHA512 128068ea10f97742d844df9431ca6ccb0ddde974f8a0dce74ce86c792b079f3a0e9c441140a4f5889fa4bfea7f9c7fb91dda34c50e84a05998a0a6981e796b4b
DIST tzlocal-5.4.gh.tar.gz 26438 BLAKE2B b5c20d1214ce878aa3a63f363e45c1ea81376015a501b60163fdb43f39304909564d3ce1c6b610726d1201c01627fd151eb330fde59bf4178d62c2abdad2e3eb SHA512 e8ba42b9ca2391f05136dd253bf595f09093e33f4264c634afb7f88267188e1452ba78f15281f324d42fe00ccaa3b2565de985c8b5c647e9e6077f89d9c57db4
diff --git a/dev-python/tzlocal/tzlocal-5.4.3.ebuild b/dev-python/tzlocal/tzlocal-5.4.3.ebuild
new file mode 100644
index 000000000000..75762fd11002
--- /dev/null
+++ b/dev-python/tzlocal/tzlocal-5.4.3.ebuild
@@ -0,0 +1,22 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="tzinfo object for the local timezone"
+HOMEPAGE="
+ https://github.com/regebro/tzlocal/
+ https://pypi.org/project/tzlocal/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+EPYTEST_PLUGINS=( pytest-mock )
+distutils_enable_tests pytest
diff --git a/dev-python/vcrpy/Manifest b/dev-python/vcrpy/Manifest
index bd3d0b22f657..273b76748059 100644
--- a/dev-python/vcrpy/Manifest
+++ b/dev-python/vcrpy/Manifest
@@ -1,2 +1,3 @@
DIST vcrpy-8.1.1.gh.tar.gz 339641 BLAKE2B 140678b9d8ba38ac6c3492fcfe35ffaa9db17b9e07d52554466a84b5bf0ddb7d932eab8d009f20dd1e74722cf56c330b6bcb3c58245dac04613f480aca8586e2 SHA512 3596c1ca34dc9f9f461579e9f4ec64395d028abd8180388af664078a0cb9dd557aee3b5a654ff6873b63969865f9ac3c6e021ba1ac302c11def090d873ae5bf2
DIST vcrpy-8.2.0.gh.tar.gz 342891 BLAKE2B 1ac45a640cb8204c666b8f7f1ebc64a17c39abc08551d4d683d25beb1b2ab14723de64beed063b7e8e6e79bd926bbade7f48dc2a49802e404f031d79b9e1aae1 SHA512 97c621e12360f0de7c108b3914ee604d7d9abdf49c435addae687f4b732600a0a77a92b97447a518b6d1c42581781ee91c5cb714cfcdfb94c30afd8439f728da
+DIST vcrpy-8.2.1.gh.tar.gz 344628 BLAKE2B f1f5974b798f4cc9f43059de6afcae5473b605e8be392b876db30068f6a0e95ce8d709aca9d6dd2f05a487d1e567416a6ee5e1a57d6f05343f07bf942dfdb887 SHA512 7e997bced734f6d0379da018596b4f0aa91d3591190f1a1b2ec48516f6bc6085954314f945d242ae510f74d742bf820eff5732495696cfab7849f2011fd8f8ee
diff --git a/dev-python/vcrpy/vcrpy-8.2.1.ebuild b/dev-python/vcrpy/vcrpy-8.2.1.ebuild
new file mode 100644
index 000000000000..2d2a8bacfbe4
--- /dev/null
+++ b/dev-python/vcrpy/vcrpy-8.2.1.ebuild
@@ -0,0 +1,61 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="Automatically mock your HTTP interactions to simplify and speed up testing"
+HOMEPAGE="
+ https://github.com/kevin1024/vcrpy/
+ https://pypi.org/project/vcrpy/
+"
+SRC_URI="
+ https://github.com/kevin1024/vcrpy/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~ppc ~x86"
+
+RDEPEND="
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.22.0[${PYTHON_USEDEP}]
+ dev-python/urllib3[${PYTHON_USEDEP}]
+ dev-python/wrapt[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ >=dev-python/httplib2-0.9.1[${PYTHON_USEDEP}]
+ dev-python/httpx[${PYTHON_USEDEP}]
+ dev-python/httpx2[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-{asyncio,httpbin} )
+EPYTEST_RERUNS=5
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # aiohttp incompatibility
+ tests/transport/aio/test_aiohttp.py::TestRequest::test_request_clone_with_active_session
+ # Internet
+ "tests/integration/test_urllib3.py::test_post[https]"
+ )
+
+ local EPYTEST_IGNORE=(
+ # requires boto3
+ tests/integration/test_boto3.py
+ # Internet
+ tests/integration/test_tornado.py
+ tests/integration/test_aiohttp.py
+ )
+
+ local -x REQUESTS_CA_BUNDLE=$("${EPYTHON}" -m pytest_httpbin.certs)
+ epytest -m 'not online'
+}
diff --git a/dev-python/virtualenv/Manifest b/dev-python/virtualenv/Manifest
index 0054e76a40cf..ec913100c48d 100644
--- a/dev-python/virtualenv/Manifest
+++ b/dev-python/virtualenv/Manifest
@@ -6,3 +6,5 @@ DIST virtualenv-21.4.3.tar.gz 7644454 BLAKE2B ef289a57f1cad1c42aa0bb38624a0abd37
DIST virtualenv-21.4.3.tar.gz.provenance 9500 BLAKE2B d5adf2b90488d9d0728101d7ecebb593350d07d0f1b08f0acd67847f22b99a7b1b8d1fd082fe739bc927fd79c75cda1f55cf39b2b8467fa8ddaa6178505d1909 SHA512 6c5dfc394d1c95c161c30235994b2066127653678430e69b769dc50ed2a007b6703379eb8c495d1395b953ec67d797ad1e4433121cdfd6fc722367937ac5178a
DIST virtualenv-21.5.0.tar.gz 4577424 BLAKE2B 16f683b0c124478cd6dbd2eb4b4ad89c283c0669fe96062c199ae3e230e3009f5cd18066f4e98eeec3f6fab5f7bc04fbb5f1ecdafe2599d2bce13218fd8a5b2e SHA512 214d487e71fa30814982ea79979d37fd76f9dd175d47bbaa8704b917e917d348ad6a5352faf9a1fbd66cec40a51a7beb5b7a8d5f2adfba45f98de52c570b30fe
DIST virtualenv-21.5.0.tar.gz.provenance 9555 BLAKE2B e9e6410cc70900f98d039924e0fe95e1e8ff483f0b4e9072ead40f3ebfb80ee9b10c043d12f47cccada8037901a4e38f6cccfa979fd8fd08d36612a40d6f9950 SHA512 683baa83889889292ebeb5646662c91598bfdef6653a04ee07cd3e8dbb7ebd1647cb8a41544ae52ea4860a04a16eba0ab230bee49d4b67c4319be0e335abd796
+DIST virtualenv-21.5.1.tar.gz 4578798 BLAKE2B 495289992d27ca98114ad713e680c7db257ef887dae500cf2b432486984b3c9a84d2108a39318f2d95a840fb3d000aaa894a189a8345a0023024d9c4f3b17568 SHA512 c7d49b496ede5ffcd6bf10ba8bcf47acae3c98470c5bb1e41c2a074c9f128ee0a6d83f89a0e088c4ca1e237e27e6d73affe0adbaa884f5afd526ac6881d2dbb8
+DIST virtualenv-21.5.1.tar.gz.provenance 9602 BLAKE2B 1e436f34c3b5a85ef334727eed745f3ca76bdfb5f6e8d7a484d602c177f4b680e8200a7ffa4fd2d6c4b43ec53a3829dd4c6c2b90db0487d752fec175aec456fc SHA512 37b56c52097132ba42d78c606c13b1e2d2a470662e4de29ae32f923db735b538b13f7f7365e220da8b97f788ba496e53705b6af20060826fc0168d323608ae91
diff --git a/dev-python/virtualenv/files/virtualenv-21.5.1-ensurepip.patch b/dev-python/virtualenv/files/virtualenv-21.5.1-ensurepip.patch
new file mode 100644
index 000000000000..626c74bc45ea
--- /dev/null
+++ b/dev-python/virtualenv/files/virtualenv-21.5.1-ensurepip.patch
@@ -0,0 +1,28 @@
+From 1cca270137efcdd6ece52198f9b50e2ef3c98acc Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
+Date: Sat, 22 Jun 2024 14:28:23 +0200
+Subject: [PATCH] [Gentoo] Use ensurepip wheels instead of local bundle
+
+---
+ src/virtualenv/seed/wheels/embed/__init__.py | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/src/virtualenv/seed/wheels/embed/__init__.py b/src/virtualenv/seed/wheels/embed/__init__.py
+index ac9a85f8..4f93accc 100644
+--- a/src/virtualenv/seed/wheels/embed/__init__.py
++++ b/src/virtualenv/seed/wheels/embed/__init__.py
+@@ -77,6 +77,14 @@ def get_embed_wheel(distribution: str, for_py_version: str | None) -> Wheel | No
+ :raises RuntimeError: if the bundled wheel on disk fails SHA-256 verification.
+
+ """
++ # Gentoo hack: get wheel from ensurepip directory
++ import sysconfig
++ bundle_dir = Path(sysconfig.get_config_var("WHEEL_PKG_DIR"))
++ try:
++ return Wheel.from_path(next(bundle_dir.glob(f"{distribution}-*.whl")))
++ except StopIteration:
++ return None
++
+ if for_py_version is None or _release_tuple(for_py_version) > _release_tuple(MAX):
+ # no specific target, or a Python newer than anything bundled: reuse the newest bundle
+ mapping = BUNDLE_SUPPORT[MAX]
diff --git a/dev-python/virtualenv/virtualenv-21.5.1.ebuild b/dev-python/virtualenv/virtualenv-21.5.1.ebuild
new file mode 100644
index 000000000000..96575f686dd3
--- /dev/null
+++ b/dev-python/virtualenv/virtualenv-21.5.1.ebuild
@@ -0,0 +1,117 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYPI_VERIFY_REPO=https://github.com/pypa/virtualenv
+PYTHON_TESTED=( python3_{13..14} )
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Virtual Python Environment builder"
+HOMEPAGE="
+ https://virtualenv.pypa.io/en/stable/
+ https://pypi.org/project/virtualenv/
+ https://github.com/pypa/virtualenv/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~m68k ~ppc ~ppc64 ~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.4.2[${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/time-machine[${PYTHON_USEDEP}]
+ dev-python/wheel[${PYTHON_USEDEP}]
+ >=dev-python/packaging-20.0[${PYTHON_USEDEP}]
+ ' "${PYTHON_TESTED[@]}")
+ )
+"
+
+src_prepare() {
+ local PATCHES=(
+ # use wheels from ensurepip bundle
+ "${FILESDIR}/${PN}-21.5.1-ensurepip.patch"
+ )
+
+ distutils-r1_src_prepare
+
+ # workaround test failures due to warnings from setuptools-scm, sigh
+ echo '[tool.setuptools_scm]' >> pyproject.toml || die
+
+ # remove useless pins
+ sed -i -e 's:,<[=0-9.]*::' pyproject.toml || die
+
+ # remove bundled wheels
+ rm src/virtualenv/seed/wheels/embed/*.whl || die
+}
+
+python_test() {
+ if ! has "${EPYTHON}" "${PYTHON_TESTED[@]/_/.}"; then
+ einfo "Skipping testing on ${EPYTHON}"
+ return
+ fi
+
+ local EPYTEST_DESELECT=(
+ tests/unit/seed/embed/test_bootstrap_link_via_app_data.py::test_seed_link_via_app_data
+ # tests for old wheels with py3.7 support
+ tests/unit/seed/embed/test_pip_invoke.py::test_base_bootstrap_via_pip_invoke
+ tests/unit/seed/wheels/test_wheels_util.py::test_wheel_not_support
+ # broken by different wheel versions in ensurepip
+ tests/unit/seed/wheels/test_acquire_find_wheel.py::test_find_latest_string
+ tests/unit/seed/wheels/test_acquire_find_wheel.py::test_find_exact
+ tests/unit/seed/wheels/test_acquire_find_wheel.py::test_find_latest_none
+ tests/unit/seed/wheels/test_acquire.py::test_download_wheel_bad_output
+ tests/unit/seed/wheels/test_wheels_util.py::test_embed_wheel_below_oldest_supported_is_missing
+ # hangs on a busy system, sigh
+ tests/unit/test_util.py::test_reentrant_file_lock_is_thread_safe
+ # TODO
+ tests/unit/create/via_global_ref/test_build_c_ext.py::test_can_build_c_extensions
+ # random resource leaks or xdist
+ tests/unit/test_file_limit.py::test_too_many_open_files
+ # Internet
+ tests/unit/create/test_creator.py::test_create_distutils_cfg
+ # we do not use bundled wheels
+ tests/unit/seed/wheels/test_bundle.py::test_every_wheel_on_disk_has_sha256
+ )
+
+ local -x TZ=UTC
+ local EPYTEST_PLUGINS=( pytest-{mock,rerunfailures} time-machine )
+ local EPYTEST_RERUNS=5
+ local EPYTEST_TIMEOUT=180
+ local EPYTEST_XDIST=1
+ epytest -o addopts=
+}
+
+src_install() {
+ distutils-r1_src_install
+
+ # remove bundled wheels, we're using ensurepip bundle instead
+ find "${ED}" -name '*.whl' -delete || die
+}