summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
authorCrucible <crucible@localhost>2026-10-10 03:05:02 -0500
committerCrucible <crucible@localhost>2026-10-10 03:05:02 -0500
commit8d50579e39879dc6ba06d9fa6829f2e9a2c77420 (patch)
tree02fb01f1f55d0cf4b5660cb1cc12f2e2fccae010 /dev-python
parentfe1add1bc6351c4b156c993343992fe4de29c61e (diff)
downloadsrcux-8d50579e39879dc6ba06d9fa6829f2e9a2c77420.tar.gz
srcux-8d50579e39879dc6ba06d9fa6829f2e9a2c77420.tar.xz
srcux-8d50579e39879dc6ba06d9fa6829f2e9a2c77420.zip
Publish srcux candidate 0000000619-20261010-030308
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/absl-py/Manifest2
-rw-r--r--dev-python/absl-py/absl-py-2.5.1.ebuild (renamed from dev-python/absl-py/absl-py-2.4.0.ebuild)2
-rw-r--r--dev-python/ast-serialize/ast-serialize-0.10.0.ebuild2
-rw-r--r--dev-python/awscrt/awscrt-0.37.0.ebuild2
-rw-r--r--dev-python/bitarray/Manifest2
-rw-r--r--dev-python/bitarray/bitarray-3.12.0.ebuild (renamed from dev-python/bitarray/bitarray-3.9.2.ebuild)2
-rw-r--r--dev-python/blockbuster/Manifest2
-rw-r--r--dev-python/blockbuster/blockbuster-1.5.29.ebuild (renamed from dev-python/blockbuster/blockbuster-1.5.26.ebuild)17
-rw-r--r--dev-python/blurb/Manifest4
-rw-r--r--dev-python/blurb/blurb-2.2.0.ebuild (renamed from dev-python/blurb/blurb-2.0.0.ebuild)0
-rw-r--r--dev-python/boto3/Manifest1
-rw-r--r--dev-python/boto3/boto3-1.43.111.ebuild53
-rw-r--r--dev-python/botocore/Manifest1
-rw-r--r--dev-python/botocore/botocore-1.43.111.ebuild80
-rw-r--r--dev-python/cappa/Manifest2
-rw-r--r--dev-python/cappa/cappa-0.33.0.ebuild49
-rw-r--r--dev-python/cattrs/cattrs-26.2.0-r1.ebuild2
-rw-r--r--dev-python/cmd2/cmd2-4.2.4.ebuild2
-rw-r--r--dev-python/cssselect/Manifest2
-rw-r--r--dev-python/cssselect/cssselect-1.6.0.ebuild (renamed from dev-python/cssselect/cssselect-1.4.0.ebuild)2
-rw-r--r--dev-python/faker/Manifest2
-rw-r--r--dev-python/faker/faker-40.42.0.ebuild42
-rw-r--r--dev-python/faker/faker-40.43.0.ebuild42
-rw-r--r--dev-python/filelock/Manifest4
-rw-r--r--dev-python/filelock/filelock-3.32.6.ebuild2
-rw-r--r--dev-python/filelock/filelock-4.1.0.ebuild (renamed from dev-python/filelock/filelock-3.32.5.ebuild)9
-rw-r--r--dev-python/gitpython/gitpython-3.1.62.ebuild2
-rw-r--r--dev-python/httptools/Manifest1
-rw-r--r--dev-python/httptools/httptools-0.9.0.ebuild63
-rw-r--r--dev-python/hypothesis/hypothesis-6.168.0.ebuild2
-rw-r--r--dev-python/json5/Manifest1
-rw-r--r--dev-python/json5/json5-0.17.3.ebuild22
-rw-r--r--dev-python/jsonpatch/Manifest1
-rw-r--r--dev-python/jsonpatch/jsonpatch-1.34.ebuild51
-rw-r--r--dev-python/mapbox-earcut/mapbox-earcut-2.1.0.ebuild2
-rw-r--r--dev-python/meson-python/meson-python-0.21.0.ebuild2
-rw-r--r--dev-python/multidict/Manifest1
-rw-r--r--dev-python/multidict/multidict-7.1.0.ebuild71
-rw-r--r--dev-python/narwhals/narwhals-2.26.0.ebuild2
-rw-r--r--dev-python/parse/parse-1.22.2.ebuild2
-rw-r--r--dev-python/peewee/peewee-4.5.1.ebuild2
-rw-r--r--dev-python/platformdirs/platformdirs-4.11.8.ebuild2
-rw-r--r--dev-python/protobuf/protobuf-7.35.1.ebuild13
-rw-r--r--dev-python/pyarrow/Manifest2
-rw-r--r--dev-python/pyarrow/pyarrow-26.0.0.ebuild109
-rw-r--r--dev-python/pycparser/Manifest1
-rw-r--r--dev-python/pycparser/pycparser-3.11.ebuild64
-rw-r--r--dev-python/pypdf/Manifest2
-rw-r--r--dev-python/pypdf/pypdf-6.18.0.ebuild2
-rw-r--r--dev-python/pypdf/pypdf-6.20.0.ebuild62
-rw-r--r--dev-python/pyquery/Manifest1
-rw-r--r--dev-python/pyquery/pyquery-2.0.2.ebuild44
-rw-r--r--dev-python/pytest-env/pytest-env-1.7.1.ebuild2
-rw-r--r--dev-python/python-discovery/Manifest6
-rw-r--r--dev-python/python-discovery/python-discovery-1.4.4.ebuild57
-rw-r--r--dev-python/python-discovery/python-discovery-1.6.2.ebuild (renamed from dev-python/python-discovery/python-discovery-1.5.3.ebuild)4
-rw-r--r--dev-python/python-openstackclient/Manifest2
-rw-r--r--dev-python/python-openstackclient/python-openstackclient-10.4.0.ebuild (renamed from dev-python/python-openstackclient/python-openstackclient-10.2.1.ebuild)4
-rw-r--r--dev-python/python-socks/python-socks-3.1.1.ebuild2
-rw-r--r--dev-python/python-tests/Manifest3
-rw-r--r--dev-python/python-tests/python-tests-0.3.15.0.ebuild75
-rw-r--r--dev-python/python-tests/python-tests-3.15.0.ebuild74
-rw-r--r--dev-python/pyupgrade/Manifest1
-rw-r--r--dev-python/pyupgrade/pyupgrade-3.22.0.ebuild31
-rw-r--r--dev-python/readme-renderer/readme-renderer-46.0-r1.ebuild2
-rw-r--r--dev-python/sabctools/Manifest1
-rw-r--r--dev-python/sabctools/sabctools-9.7.2.ebuild40
-rw-r--r--dev-python/securesystemslib/securesystemslib-1.5.1.ebuild2
-rw-r--r--dev-python/selenium/Manifest3
-rw-r--r--dev-python/selenium/selenium-4.51.0.ebuild151
-rw-r--r--dev-python/setuptools-scm/setuptools-scm-10.2.3.ebuild2
-rw-r--r--dev-python/siphash24/siphash24-1.9.ebuild2
-rw-r--r--dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-3.13.6.ebuild2
-rw-r--r--dev-python/sqlglot/Manifest2
-rw-r--r--dev-python/sqlglot/sqlglot-30.22.0.ebuild (renamed from dev-python/sqlglot/sqlglot-30.20.0.ebuild)0
-rw-r--r--dev-python/urwid/urwid-4.1.2.ebuild2
-rw-r--r--dev-python/virtualenv/virtualenv-21.7.9.ebuild2
-rw-r--r--dev-python/weasyprint/weasyprint-70.0.ebuild2
-rw-r--r--dev-python/xvfbwrapper/Manifest1
-rw-r--r--dev-python/xvfbwrapper/xvfbwrapper-0.2.35.ebuild31
80 files changed, 1205 insertions, 158 deletions
diff --git a/dev-python/absl-py/Manifest b/dev-python/absl-py/Manifest
index 5f9908eac1ce..91ed63c4847c 100644
--- a/dev-python/absl-py/Manifest
+++ b/dev-python/absl-py/Manifest
@@ -1,2 +1,2 @@
-DIST abseil-py-2.4.0.gh.tar.gz 241073 BLAKE2B bd1d2d0771f64be4eedfa8475dae16cb4590cda5fe66edc8ccfcb395b93cc9f95a561538d1002eccf5fb764c4c4e902ddfa5bf736a31cbaec1450f89105ba225 SHA512 26278e1b64e803f3a171cb7cbe4e188df0d1e27c69042b932a97160b77778e72af518b62564f5682b0a6d506ec74f8491015e37dcd1b1e1a305ac19b1505a935
DIST abseil-py-2.5.0.gh.tar.gz 244482 BLAKE2B 51d35b7ef5f18a8579962de43d4a707c6aeaca0471ff83769f2d43728cd2fa3f53a50eab3dc263248d5f18ddf55ebb580b5c4bd11cc0d24a1c19a4fec3c81bfe SHA512 7c38a940467e518e9a9617d97da1411ef893d616ca3057faa1be6ad279ecfe0c2a49d912e2dddfa65bedebb9b5ddf31f9c3af8ada103fc7e2dc095d27998dac8
+DIST abseil-py-2.5.1.gh.tar.gz 245540 BLAKE2B a2a4d8855ae7560b18b18792bd527b8e0113107e6b3ad02677335ce497cd470ca9d47bec8864340b7265ecbeb440f29b2b8841c6bdabd1cce22a984ad0bd5668 SHA512 0ee8055920b4b8f5f2374bf38c576f879bea71a00232a48684f0862278e0cb91865df5382b940579bc91e1e1084e5162322591d1a6a27b27a37051cc3ca013c0
diff --git a/dev-python/absl-py/absl-py-2.4.0.ebuild b/dev-python/absl-py/absl-py-2.5.1.ebuild
index abc3ed1f2521..20b9e341c495 100644
--- a/dev-python/absl-py/absl-py-2.4.0.ebuild
+++ b/dev-python/absl-py/absl-py-2.5.1.ebuild
@@ -22,7 +22,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~sparc x86"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
RDEPEND="
dev-python/setuptools[${PYTHON_USEDEP}]
diff --git a/dev-python/ast-serialize/ast-serialize-0.10.0.ebuild b/dev-python/ast-serialize/ast-serialize-0.10.0.ebuild
index 7142c24913c5..eace6f949383 100644
--- a/dev-python/ast-serialize/ast-serialize-0.10.0.ebuild
+++ b/dev-python/ast-serialize/ast-serialize-0.10.0.ebuild
@@ -30,7 +30,7 @@ LICENSE+="
Unicode-DFS-2016 ZLIB
"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="amd64 arm arm64 ppc ppc64 ~riscv ~s390 ~sparc x86"
EPYTEST_PLUGINS=()
distutils_enable_tests pytest
diff --git a/dev-python/awscrt/awscrt-0.37.0.ebuild b/dev-python/awscrt/awscrt-0.37.0.ebuild
index 0f94267bdd74..97eb0e3fd6cf 100644
--- a/dev-python/awscrt/awscrt-0.37.0.ebuild
+++ b/dev-python/awscrt/awscrt-0.37.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86"
+KEYWORDS="amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86"
DEPEND="
>=dev-libs/aws-c-common-1.0.0:=
diff --git a/dev-python/bitarray/Manifest b/dev-python/bitarray/Manifest
index f3b24397aeaa..78f9d45cf908 100644
--- a/dev-python/bitarray/Manifest
+++ b/dev-python/bitarray/Manifest
@@ -1,3 +1,3 @@
DIST bitarray-3.10.1.tar.gz 168648 BLAKE2B 12b22225a86c93db32dc70854c17a5046fd0ec2baa6686edea9c0cb795ce0714713c7c8f3964714d16a59ee8343636b68a0da4d54f35233df904d954b2e6f76a SHA512 330881a94c31f51501b9ab610b6567e6c347e17833cb882d7268281ee876da41bea7242ce061633eca8fd1a5826fedab7dba313aa896d4579335037b9a0afead
DIST bitarray-3.11.0.tar.gz 174911 BLAKE2B e9a2444607225488576e565046039ae5fa8787543ca6a3c75cd72fc28a49944168cc5cbdf0f573c32ba1387007dc665bbde7c11d260af3cc1fc85c1e3d7f77af SHA512 de61eff60c8534af4505046e99b1343d49e6a29f39bcd02693ad28a6ff03643c04103c2ab21c19d1515a9720721765a41a3acfb5c1452df44fb4561e8b79c691
-DIST bitarray-3.9.2.tar.gz 160932 BLAKE2B 41bd8f964644df43aaa53d3f247d56d7eb313d65b7cc2f0b90215e58c9adc1d6d39254c24d4002da03d433958039818f29e952c6c95f5a971154300975792a75 SHA512 6d7c7dab22a7fdc3d4e6db3e0c582565470063de9e05baa572d5a059d0ea01bd5dc07e72a7c5ba29b37bfde5f78f2eafa7074752f67ad87d624dddfd3bff1a95
+DIST bitarray-3.12.0.tar.gz 186999 BLAKE2B 258cb651eb603b391f7713e6590122375cee85448f2d009c817602b4bdf2a56af2df3631d7f27cb51429008a2059e5349e9a7b4e8b103a8ab109db9f6f551d78 SHA512 36852e5dce353a640aff490064b0604effac3481c9ed9f32ba510f4bb2ed98b7fc9a06e3ea19a78fe838ea7a2177835d0376dfde7c5366452f73830d97194528
diff --git a/dev-python/bitarray/bitarray-3.9.2.ebuild b/dev-python/bitarray/bitarray-3.12.0.ebuild
index d209348146c9..c70a37e0f30b 100644
--- a/dev-python/bitarray/bitarray-3.9.2.ebuild
+++ b/dev-python/bitarray/bitarray-3.12.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="PSF-2"
SLOT="0"
-KEYWORDS="amd64 ~arm arm64 x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86"
python_test() {
"${EPYTHON}" bitarray/test_bitarray.py -v || die "Tests fail with ${EPYTHON}"
diff --git a/dev-python/blockbuster/Manifest b/dev-python/blockbuster/Manifest
index e79c59205bb0..111d64264ec5 100644
--- a/dev-python/blockbuster/Manifest
+++ b/dev-python/blockbuster/Manifest
@@ -1,3 +1,3 @@
-DIST blockbuster-1.5.26.tar.gz 36085 BLAKE2B 856a57dae55251771cd3340b1b6cad84fa168d7ca63630401fbbd8acf27b99d77759e3161b77f94abf7085035ef9303bf7b693561fad4cf8796009a2297bee5d SHA512 d12263e81c2acc97a537b3067632a6fc41af214125bd4c4c16f12079531fe4d6addc48091942fa5311dec6024113492ee585a185127c0cf69abfde4e3c1a8ce0
DIST blockbuster-1.5.27.tar.gz 96732 BLAKE2B 70aa3b65a1ca31fd0acecd9d2973b07af968ca5dee27deaf6d6c975790d11f0b0f15ed5c83a3afb3d706703de082222619fef86f9e56af78b94cf985e8623c8a SHA512 6344bbca0c9a926fa7e5b80d0a48689144a71dce6dfb0f8c5f4b263431abab10e01705cc93bfc93d6e3f55e37203e50019b50a1088e5b5b774729a640e23e53f
DIST blockbuster-1.5.28.tar.gz 98235 BLAKE2B f7307610dc2991a5d276070c26a2be03e06b6bb2ac717623a2131f187f10d6fbdf934d8cc115f8077a8d5e1b34e93236598929219f2786694c77562176ec8665 SHA512 f21b9e9f939acff62cadc859ad2ba9c854c23df7f4da72fdf6a17e0a929796a94431437eb00a688091367b85edbd70c3360a57629db42c209cf616e1406638e7
+DIST blockbuster-1.5.29.tar.gz 100653 BLAKE2B 1facb104003cef58a09bc7eac4a5893bd44f5f6159b74452f47f717397b5e8a0559f3db2bfe8b2251825922b10bd2d55353a310bfb4e6e8d99699828d239421e SHA512 662de90d8f10c58804a8760fc5d8e061784a9f9e1a33ce655b1b6ada3c1f60bc3ffe428290c22335c4d06b42d08c8b74da4663df3d8b094eb232bc290e2dc06e
diff --git a/dev-python/blockbuster/blockbuster-1.5.26.ebuild b/dev-python/blockbuster/blockbuster-1.5.29.ebuild
index f8f1f25580ed..b20940e8ee85 100644
--- a/dev-python/blockbuster/blockbuster-1.5.26.ebuild
+++ b/dev-python/blockbuster/blockbuster-1.5.29.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
RDEPEND="
>=dev-python/forbiddenfruit-0.1.4[${PYTHON_USEDEP}]
@@ -31,11 +31,10 @@ BDEPEND="
EPYTEST_PLUGINS=( pytest-asyncio )
distutils_enable_tests pytest
-python_test() {
- local EPYTEST_DESELECT=(
- # Internet
- tests/test_blockbuster.py::test_ssl_socket
- )
-
- epytest
-}
+EPYTEST_IGNORE=(
+ benchmarks/
+)
+EPYTEST_DESELECT=(
+ # Internet
+ tests/test_blockbuster.py::test_ssl_socket
+)
diff --git a/dev-python/blurb/Manifest b/dev-python/blurb/Manifest
index 2ce0cdb7727b..c68f725a6251 100644
--- a/dev-python/blurb/Manifest
+++ b/dev-python/blurb/Manifest
@@ -1,4 +1,4 @@
-DIST blurb-2.0.0.tar.gz 24666 BLAKE2B 74ff80ab4503278423c5ac600d71e5fea57e837f39aedf6f12b24841aa96ffadd030ae61898964527218fc32468efa8885374165221c7131882f63127ce9b981 SHA512 ef943797fb6c5a3716aa86af0741c267b6ed1760c305e779410cd7ce0e2c99b0ce2437b8c6f5b8b39c01850cc79819f5977eefdb3906269af321a78b60d95f49
-DIST blurb-2.0.0.tar.gz.provenance 8927 BLAKE2B 37c8234e264edffa36eb394c6731dcfd1ffe8983dc28654a789de108e0de5a49b0be961d36810d8c10e8f2eabf3c2116a43f4ff61f48c8978c0d74eded7bc580 SHA512 c2fb82f7c7e19cf48400843d0c8a56a8f7120295dc0ac4f00b4ab2f11cb482fbd20b795bbef4311abb4ad046486ae4ec1497c32b043f107fcbe4077c4f09b52f
DIST blurb-2.1.0.tar.gz 28097 BLAKE2B 9ca21b64f994395de70f386e219600e714d3ef43e68db6153154ea126669c021097c3f81a19fd06bd3d52ec27d1f99730aa8c39a302573086e1accca74c365f8 SHA512 af7cdbb75f1c710f0a88cd3a410b6e80924239b6985c7650d5580ac27c54eca6cfcecc63d88c8c6362e2045758acfc962b97a76e5b4508f7974bd14b0ba0f39a
DIST blurb-2.1.0.tar.gz.provenance 9408 BLAKE2B 472859864202f4150a59bf701b29d55b34c965a8540acde6271bc8d1bfeb0a94b04eea7a4f623bbe76669babc0987c4ba66ff9564576b66aa3b0acade99242c4 SHA512 6ef52687c06feddd40e0d6f57212fc1553c25068bf407d647445d9ec4790e264786f6a80cd5c9f3b22a42a6bb3e16e16f80379cf2a3994618b2da2c300dedafe
+DIST blurb-2.2.0.tar.gz 28063 BLAKE2B 57cb6344b8dd4eb169eabc526d8ed074eddfa173867cd9a75a5b3f9dab153215a32d905ec8dcdbf08e6f1ff09cfd2c163813e9a87a23385370521acc7dd1729b SHA512 c3f6c0db26d380d5eb5246230e27c9f3702c72c945136d0f03111af6080cdda07c27f67e847e71c59d422f918d003065acea7bfeba122e32b86dd04e1eaf47bf
+DIST blurb-2.2.0.tar.gz.provenance 9374 BLAKE2B e1eab67d74340f7663c7ef68eb5b3f1d40ac322aa50e05f57650c7702dde1439a77bd8b15f4643d8b2a6d6873a8b2f19c9edda5076053bed7b5f48b18a087102 SHA512 0d8da6ebee66c836998f27d424789f65f5caa83e923e645b410773f08d6e37b1544472a0fa90b81e05e5399fef9eeb996ff0e1b353408d2ce2057dbaf5bb77c1
diff --git a/dev-python/blurb/blurb-2.0.0.ebuild b/dev-python/blurb/blurb-2.2.0.ebuild
index d633fc7040dd..d633fc7040dd 100644
--- a/dev-python/blurb/blurb-2.0.0.ebuild
+++ b/dev-python/blurb/blurb-2.2.0.ebuild
diff --git a/dev-python/boto3/Manifest b/dev-python/boto3/Manifest
index 7efe5c17f0c8..2fc64ba181c2 100644
--- a/dev-python/boto3/Manifest
+++ b/dev-python/boto3/Manifest
@@ -6,6 +6,7 @@ DIST boto3-1.43.107.gh.tar.gz 1249178 BLAKE2B 22bc47915a435c0d16d55e297d4454a778
DIST boto3-1.43.108.gh.tar.gz 1250263 BLAKE2B 73f98863859b8c1ff06655d84d6b155811ac120dc88afd377272187b000e09346ac9c6843967521d1576753427490080e4104ba811defc96bf7fc1595ba649c2 SHA512 e1a95db416b3f7966bac99d7b54fa839b7dfc5d42e8319516fe0bc8e6882ecb1741c11fffc350b438f7bd07d634b0fc2f0ee50916ac5df8622c533b91ed39856
DIST boto3-1.43.109.gh.tar.gz 1250335 BLAKE2B 123e603070178356d83cc84f81efa58eff6ff6d0058a303b7365c3ab91420348220b260f7a959c4400b5b058e9b9d9c68cdf293fcb1ceb24dbcef94790335e7d SHA512 34006ec58722b1d8a691bc75a71b96bf66e4ddc4523ef3fcbd528a6de6961fe5b341c27b488047daee7b81f4fd041c1a2b059dc97db4b451ee0e2284400c5f56
DIST boto3-1.43.110.gh.tar.gz 1253379 BLAKE2B b15c529db3a148a8b955881980fe6ead80d1059739cc93de399a0189e677d0dd2b04fae9d15d855d0d624615e80f5027dececa793cb95695eade998ffd53c9ec SHA512 65ae9d55ccda4851a34a2217d461a4044d9762b77501537ac3c8178a6c9be7a73b8a1d2b45f2b68958732d0a999a3033400421fcb61726187030458c35b3a0c5
+DIST boto3-1.43.111.gh.tar.gz 1253888 BLAKE2B 972d4fbed26dc6ef267f1ee9433d13a9030a405a7dca1da23f2b3b39a6c32e13bbb8a15d202e3c86d067040326934c57161901262c409262c3bd2e41ea003bef SHA512 bd26006eb35ad806c071e185bf86d92c8eeb2345871575cb26812c1bffcdca602a54244074bcd2edce1487b17240caf9975f98037eee02a01dd4d07f1f964190
DIST boto3-1.43.78.gh.tar.gz 1213393 BLAKE2B b3e4188ba53609873bf6613d5667792d24634d728dfe0e0588917ade93c4d6c9a5a28d2e46bd5ca314723604a9cab9a4fae7ca1e6f9e496cc29671bc68849d7e SHA512 c98ede06cf4934089ba4a62c4fb03da692a5f9e2a415728e9f51979e33942229d8f4cd6fa02ac229b360b63a930fd91890f2ed645d17011d4a42e236943fd780
DIST boto3-1.43.83.gh.tar.gz 1218064 BLAKE2B 0758e28dd9b086615b045e107aece2ef46bee541110e51fdcd231c60cac0452f4cdfec58ea4041757835c195cd2b8becb3c4e9fd24ad7bc306d90b16af082f63 SHA512 ed110edd551138c5d63ab7ead46a4c9ddb410dea1b5e642045102936af22c4208f357f79fc994434fc6a7df7c16aba99052508103bad7599f8cc558ae1c5f842
DIST boto3-1.43.89.gh.tar.gz 1225424 BLAKE2B 625bb37a542644c8fe37aab42a115bf8be2e36373d7f6149dcc7e150e327c75b334ef480897be1d4954809b233a47e02854d7b28b4a3904f0e5cdcea3f0440d7 SHA512 1c04fd6df819abbe60d551c6d706f7254fe6d6758e95fd53ec70d4dd892b6f7bf69981cb001fc6ca5bc5885f083718b80a4fd045b146e7f4add16a50ac3a9d38
diff --git a/dev-python/boto3/boto3-1.43.111.ebuild b/dev-python/boto3/boto3-1.43.111.ebuild
new file mode 100644
index 000000000000..fcfc7c9a743e
--- /dev/null
+++ b/dev-python/boto3/boto3-1.43.111.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 ~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 62a55d86fba5..7ad407cbdce5 100644
--- a/dev-python/botocore/Manifest
+++ b/dev-python/botocore/Manifest
@@ -6,6 +6,7 @@ DIST botocore-1.43.107.gh.tar.gz 17365768 BLAKE2B 85efbe0a1576e1c7c43b68f8f722c8
DIST botocore-1.43.108.gh.tar.gz 17372621 BLAKE2B c4a053b10a7a95d78a84254aabe941f721fbb3cf5595a6c84b286e7527d4f90eb86312c211547fe5fa0ca593caa3b8bd2ff4f1e84534e565a171c7acca968b6e SHA512 15db0910153e66c9ad251866d89a3510548be2391e6aaf9f6178dd3149077a9563888a2558602358d31257991aac631bb50b9e3b99ffee18d1d7653cfc462f77
DIST botocore-1.43.109.gh.tar.gz 17363382 BLAKE2B 99c98bd37df5e5fe900a591f23bfff6994e023775ffe08babce03a95b04797acc35c3032fb283403b0ab1a3d7f8296260c4cff31b68d2fd024f372253d487401 SHA512 a0f0f1e404563d84a8fee428978312c531a4ffab7f4859625b6b6f9552006485fd04e43545d4b9a0c80f9384f1b434a4ce6cac8f23931122678a5bbd41ed21c4
DIST botocore-1.43.110.gh.tar.gz 17383160 BLAKE2B dd5ecdff3d66631a87d0a0cb2ad323bf324afb9d5fcd5ab19485fcbfd05c4974c0e694ea5766013eed7d12f9a3e22f6ab9f804fd35b0de04e98332c9e84ca462 SHA512 8be7507d614cdc4b3b830e230f236e709b2e0f19ce6bb3c7566aa9abdd7d285ca7baa2acc8f0893a63f14d131d380cf1c7c7c754b791d18ddcc163111fc3cbca
+DIST botocore-1.43.111.gh.tar.gz 17387410 BLAKE2B 36f5cde64e3be6b364ed4b0338531e8dca38e5b817e6e2607a16ef48ae1ad4cd21bcfc48a7c982358ad45b7fab3073f995817da8689ef7a8c0d8a376d079d88e SHA512 fb63e7844d5d74bbae67fe601b18629f4f366128972bd35498263b3f7fc5d3af7fa1a3e39f3cc9673d87954aff6990bcbff350ea8ed28ab6d887fb8e33e6652a
DIST botocore-1.43.78.gh.tar.gz 17008224 BLAKE2B 137656d64f62025ca47f03c48ba84aa7eccae9dbc752c81f909c3c3f12dd843bb40173075fc7e255492385d8ea8824da08e5d3155bb5ff1dbfd62c858c0a057f SHA512 bd65c7fe451ef0b3bef21e25e557aa37748ca01f71e567b31b852ac356d323f1cfa6dd0e920eff7c52e0db879a34cf99eed6c1b841dfa6065e139362702f9d13
DIST botocore-1.43.83.gh.tar.gz 17038145 BLAKE2B f74b399b04f9b259e1a2f424719c4b80cc279627174ac96f9b79d85418ecc0442fbd27d7e79ccdf12526ac02489fde4254e360f216103f3cd5ff050b3cf1a838 SHA512 618c0ef0fc89879ee6900606e3378b2876901c4a63ede52529de12898a65e34fc41a8f0ad8ab682b7788626176f9b86904e257b63d88be9d58c53116918b1d12
DIST botocore-1.43.89.gh.tar.gz 17111395 BLAKE2B 25837125b5d9477b011c065594ffa1b49a2f5d0cf76e1c664aa5401d50dfe8dd9573d0ab3a60f739c796c32965a7dd7608e302a284bfcc97d9f7f4a8a2b698e3 SHA512 c9c0b7636fb7595d4ff3ee2ec7e1ef8ad3000e9e453ce6edb827a1152109fc2fb6b226bd08f27653fc1436444c39be6f160fa4f7c34eb50a7384988686933590
diff --git a/dev-python/botocore/botocore-1.43.111.ebuild b/dev-python/botocore/botocore-1.43.111.ebuild
new file mode 100644
index 000000000000..c5a99a77214e
--- /dev/null
+++ b/dev-python/botocore/botocore-1.43.111.ebuild
@@ -0,0 +1,80 @@
+# 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 ~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
+ )
+
+ # The test suite can eat up a lot of memory when running via xdist,
+ # and slow down some tiny tests. Let's just run a safe subset
+ # of tests known to be slow-ish in parallel, and the rest in series.
+ local parallel_tests=(
+ tests/functional/*/
+ tests/functional/test_event_alias.py
+ tests/functional/test_[cds-z]*.py
+ tests/unit/
+ )
+
+ epytest "${parallel_tests[@]}"
+
+ local EPYTEST_IGNORE=( "${parallel_tests[@]}" )
+ EPYTEST_XDIST= epytest tests/functional
+}
diff --git a/dev-python/cappa/Manifest b/dev-python/cappa/Manifest
index 1bd2c235eb56..ec05923711fe 100644
--- a/dev-python/cappa/Manifest
+++ b/dev-python/cappa/Manifest
@@ -1,2 +1,4 @@
DIST cappa-0.32.2.tar.gz 361403 BLAKE2B 31a5064ab830db3be913103a92bc5be4a49d16e4def61c36efdd9aeca034bbc7ace1e60e6563e2e555b6298785744b921c3fb8436f2a4051cd238bb27825d08e SHA512 e8284463a9a01d0f5c950181fa40674711de0631761389c8db0bf3255e9c30fbac01a45524ea4df0bd811eeb74078db223720742097bd505205d3d94d4f7ad40
DIST cappa-0.32.2.tar.gz.provenance 9968 BLAKE2B f4287bf8c1c1895d29ee58292cceacd53cd2fb17272530c548440781c5f5a1f9986fdd8946059f38f6b220304845b61375b72c61c8e13ecd9fe089619af3a15d SHA512 be7aea8e1a8d0f12cbcfdf8cdf2805890c9d31a8f6115c2aaac953939324e57838828b9fa424ad7d0d5cb89c16de4fde5be7f099a40b177240cafb13eab61ed1
+DIST cappa-0.33.0.tar.gz 362237 BLAKE2B 7cad307d164316106e179e45d92d94a90435e007fc18a993b1b81bf4ceeaa8138ca801f3d1d77ea107bd249c3cd4bbc9a7ab684bbc8e035c2437385d394ad246 SHA512 2973db2bd1e071264d32f234e44be90a519c122f6ac51fbac943577c71909a0ded1479cfe09ece0e191326f26b3e1c86479b85f0bd47807aef1d4b45340680e2
+DIST cappa-0.33.0.tar.gz.provenance 9752 BLAKE2B 3870fe9f05659de2eebe7ecb95545305e1c334caf102e532f24a581dcc6f9f80da3a978f36d0818104cb013b52d1bacef7b4c70818f54e8f0a3f6395716cc121 SHA512 3df9738035c90c8c800d6d51b190ec9b92c330539ec14c33f94ec9946c9695e10ff1049d97591512eed0218d414a92eb79968b77fe562186b4d6ba38a551646d
diff --git a/dev-python/cappa/cappa-0.33.0.ebuild b/dev-python/cappa/cappa-0.33.0.ebuild
new file mode 100644
index 000000000000..16af47f62c6f
--- /dev/null
+++ b/dev-python/cappa/cappa-0.33.0.ebuild
@@ -0,0 +1,49 @@
+# Copyright 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/DanCardin/cappa
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Declarative CLI argument parser"
+HOMEPAGE="
+ https://github.com/DanCardin/cappa/
+ https://pypi.org/project/cappa/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64"
+
+RDEPEND="
+ >=dev-python/rich-12.1.0[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.12.0[${PYTHON_USEDEP}]
+ >=dev-python/type-lens-0.2.5[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ >=dev-python/attrs-18.0[${PYTHON_USEDEP}]
+ >=dev-python/docstring-parser-0.17[${PYTHON_USEDEP}]
+ >=dev-python/msgspec-0.19.0[${PYTHON_USEDEP}]
+ >=dev-python/pydantic-1.8.0[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # sphinx can't find extension prior to installing the package
+ tests/test_e2e.py::test_docutils
+ # TODO, test env problem
+ tests/help/test_line_wrapping.py::test_line_wraps_correctly_with_terminal_escape_codes
+ )
+
+ local -x COLUMNS=80
+ epytest tests
+}
diff --git a/dev-python/cattrs/cattrs-26.2.0-r1.ebuild b/dev-python/cattrs/cattrs-26.2.0-r1.ebuild
index e55ebb75734a..d122a08b136f 100644
--- a/dev-python/cattrs/cattrs-26.2.0-r1.ebuild
+++ b/dev-python/cattrs/cattrs-26.2.0-r1.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64"
+KEYWORDS="~alpha amd64"
IUSE="test-rust"
RDEPEND="
diff --git a/dev-python/cmd2/cmd2-4.2.4.ebuild b/dev-python/cmd2/cmd2-4.2.4.ebuild
index 0dd4a4021580..cbf30c816bea 100644
--- a/dev-python/cmd2/cmd2-4.2.4.ebuild
+++ b/dev-python/cmd2/cmd2-4.2.4.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~mips ~ppc64 ~riscv ~s390 ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~mips ~ppc64 ~riscv ~s390 x86"
RDEPEND="
>=dev-python/prompt-toolkit-3.0.53[${PYTHON_USEDEP}]
diff --git a/dev-python/cssselect/Manifest b/dev-python/cssselect/Manifest
index 0cc5f5c8c7cf..7c81856e0cda 100644
--- a/dev-python/cssselect/Manifest
+++ b/dev-python/cssselect/Manifest
@@ -1,2 +1,2 @@
-DIST cssselect-1.4.0.gh.tar.gz 42120 BLAKE2B a87b6a1f40417f16669e6325d90407038056d6525e10fa0254706ad854dc67ba71262f29c2b328eba97a32aaadc67f5578799a1740639056b6f0d3c6ea9153f8 SHA512 37f1822a741269b95588b01d1b7fd1f6255138ab0c082a8035a91cd54f8feb2a79d278efa18e343c4ae063c6ae8469b1a210c9297f5e3ba1952898170daccf4f
DIST cssselect-1.5.0.gh.tar.gz 49136 BLAKE2B 014c8853d3cbd927ee9132d5f85040b342523db6e7a8a7227e49a573d77add526464d8e4327c1252c3830918d851ecf1d075f1305c473e110a7ba2209a12fefc SHA512 4c6292363d9109c74b08bda414c43d073ff989755a394acf919dec27ebef08e91773bbd52f5bae2b34477d025a70a93f162e09e98121a0352d9bbbdce4ec27b3
+DIST cssselect-1.6.0.gh.tar.gz 53971 BLAKE2B f75ba2e88e7d13f7de09e91e4ebc2947fc1c72d84c30ed10f1f6ce843236a7a17f9fe15a3557136704d43d5a979599b59ebe322ca328a769aed97f1adf631fed SHA512 d17fd442c622f77a5227da2fdbb1f3dd9c257ddbbcb994760271536849ddfa70c4626484c8fdf9b90426620f6970431f2698e179a06fa5e1320aae28f6ec2f67
diff --git a/dev-python/cssselect/cssselect-1.4.0.ebuild b/dev-python/cssselect/cssselect-1.6.0.ebuild
index 3159407902cd..a980428864b2 100644
--- a/dev-python/cssselect/cssselect-1.4.0.ebuild
+++ b/dev-python/cssselect/cssselect-1.6.0.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/faker/Manifest b/dev-python/faker/Manifest
index dc128a89cbba..d1bec518cdf5 100644
--- a/dev-python/faker/Manifest
+++ b/dev-python/faker/Manifest
@@ -1,3 +1,5 @@
DIST faker-40.38.0.tar.gz 2029190 BLAKE2B 5cf20928b68bb9bfd899e4e2a597cf4e61ad606036b03632f9b2cb9ae853ecdabd3be0201c878bf8c0f6f68b17e45def090500c687e89187880a60358044c9bc SHA512 40007ace30ca733e0a7a8f5dfd4aeda628ee9a889b47f4e7f8bcfcc19630ce17da908856b15e6d9a07141dceb4da89bc8af10d070a0ed36b11170851cd05d981
DIST faker-40.40.0.tar.gz 2029985 BLAKE2B 4d385b57376ce8732ff30d288acef671635050cf22b6ec77df42580c6986935625124bd7d86739eddc3d10a9088de90a361e158c81b14e7727ce169677876a12 SHA512 db5b29dfe440020586396d339074b3ac46e3629a959fb9e22ab645c9da36cfacdb336de33b5c64d82bc7acf418b13e77351b9dc767f913de9c77e30713d2c234
DIST faker-40.41.0.tar.gz 2031440 BLAKE2B c1d2676e49499a0697cf13547a916f772153d341adfb149aaf76066584f6c4d79579db1f8b32770c059876f3b13b5c3a20bc8519152a70bea06ff6da50d88e97 SHA512 082269ee541fcbe8971ee09c595ec8b5063681fc93418762ccaf3686a92bc9c95b6efd1c712276025083baef90c8f7c971f80e5d6e23761dbf8c1c9e7180c5a9
+DIST faker-40.42.0.tar.gz 2031876 BLAKE2B 21265f3988f6898e617476f20776c72829df7ec510f8b7022eef8be0f35fc4849f7bd1f22dfd71c0beaad2dac37d0432250d88c6925004185b099fea2341adf2 SHA512 3906f22d49f2cf15bbbe52f4b4a66f3278915ccf1699cc4b76389a663bc758a137900a1588cc2d6bb3e3475eeab53ef2d35d68a2f730f1f132d1cbc34226ddf3
+DIST faker-40.43.0.tar.gz 2032713 BLAKE2B 6391b2a2c321c3d4879e4248d510ddfae08f2d65ad85d84017d3dd7d13947fa858861290df5fd7219ecfab7b959844dedcfc17768d58c1672e55b3d403e12a2f SHA512 a93922d1fdf3f0056c34ad48c68a631dd79a244546c54b1c8a9df34e4ecfee6d83d277990e693db82a49203dc147b1d7652c04f7d77ccf1e82f98d2cf5851660
diff --git a/dev-python/faker/faker-40.42.0.ebuild b/dev-python/faker/faker-40.42.0.ebuild
new file mode 100644
index 000000000000..77c0d350b935
--- /dev/null
+++ b/dev-python/faker/faker-40.42.0.ebuild
@@ -0,0 +1,42 @@
+# Copyright 2022-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_PN=${PN^}
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A Python package that generates fake data for you"
+HOMEPAGE="
+ https://github.com/joke2k/faker/
+ https://pypi.org/project/Faker/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~ppc ~ppc64 ~x86"
+
+RDEPEND="
+ !dev-ruby/faker
+"
+BDEPEND="
+ test? (
+ dev-python/freezegun[${PYTHON_USEDEP}]
+ dev-python/pillow[${PYTHON_USEDEP},tiff]
+ dev-python/python-stdnum[${PYTHON_USEDEP}]
+ dev-python/validators[${PYTHON_USEDEP}]
+ )
+"
+
+# note: tests are flaky with xdist
+EPYTEST_PLUGIN_LOAD_VIA_ENV=1
+EPYTEST_PLUGINS=( "${PN}" )
+distutils_enable_tests pytest
+
+python_test() {
+ epytest
+ epytest --exclusive-faker-session tests/pytest/session_overrides
+}
diff --git a/dev-python/faker/faker-40.43.0.ebuild b/dev-python/faker/faker-40.43.0.ebuild
new file mode 100644
index 000000000000..77c0d350b935
--- /dev/null
+++ b/dev-python/faker/faker-40.43.0.ebuild
@@ -0,0 +1,42 @@
+# Copyright 2022-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_PN=${PN^}
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A Python package that generates fake data for you"
+HOMEPAGE="
+ https://github.com/joke2k/faker/
+ https://pypi.org/project/Faker/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~ppc ~ppc64 ~x86"
+
+RDEPEND="
+ !dev-ruby/faker
+"
+BDEPEND="
+ test? (
+ dev-python/freezegun[${PYTHON_USEDEP}]
+ dev-python/pillow[${PYTHON_USEDEP},tiff]
+ dev-python/python-stdnum[${PYTHON_USEDEP}]
+ dev-python/validators[${PYTHON_USEDEP}]
+ )
+"
+
+# note: tests are flaky with xdist
+EPYTEST_PLUGIN_LOAD_VIA_ENV=1
+EPYTEST_PLUGINS=( "${PN}" )
+distutils_enable_tests pytest
+
+python_test() {
+ epytest
+ epytest --exclusive-faker-session tests/pytest/session_overrides
+}
diff --git a/dev-python/filelock/Manifest b/dev-python/filelock/Manifest
index c1c032c72e66..792ddce073c2 100644
--- a/dev-python/filelock/Manifest
+++ b/dev-python/filelock/Manifest
@@ -1,5 +1,3 @@
-DIST filelock-3.32.5.tar.gz 222838 BLAKE2B 61ea53f89ec434d8ab49cf468fed811486e4c5638b5c14df5d38e441ec1f45533dc406bba401ce871792eda20d4d0c9040553ea0e9a39d06db7a9892ce0323a3 SHA512 2ac9dd42e244cdf7c45527743c6f42b67e955b4001449237a2a016c5bc7bfc52094298f50e89aad1a41a940b986f16a42923f737b8044ba2d9398a9bb045d231
-DIST filelock-3.32.5.tar.gz.provenance 9622 BLAKE2B 076bfaf9260ac890f689d84bb0b85d8807536804e14c79c5843a29c10806cf4806b77862761daf9b01a053af73aa611abe0af839d8792d29b1063c657c83f121 SHA512 3df81c5cda929a05ed494b06359431d42c2522b7cb0a640ca3a13657486f23d270cc930b28cf6e5cc948462d1fcf6eb6268b9c82de820b3dcc2c11134d485c8a
DIST filelock-3.32.6.tar.gz 225172 BLAKE2B f077ad228f28f6080cff6487b10d18789174592ccca9117766946572e07f97af88c68c796665e1183d39b9d92aa5c6881da3a278ce3ca2691b8f85ce4abaf116 SHA512 a2431f17c1f7e01e0eb704354a8e3b27c2e0b2e769962ea904b20206ef36e1b173fca846c696680b7c6c8a0bee846b9a6d5449a4b09e0ae7c390bb374380ccc6
DIST filelock-3.32.6.tar.gz.provenance 9904 BLAKE2B f3509822beb0993f3050ac404835a62a1beec9f98ca4f28202b237daf7f1db0fa8ac2803d822138a140761229d9334928f85e54583d7aaefc7bafdfca607f51e SHA512 6a30896d8c8166f19be54362a7e278922d6104f8e5093dca36e25d9fb7331f7918201b19919c56feef9005e6a62fd2766b9ebea371c8fff419b63f0634c419d6
DIST filelock-4.0.1.tar.gz 238888 BLAKE2B bb91d78763860858904b39d489a6b6c7287b1d622a23b609d2b2635fa0235e3ea1c1cced96add0d4ee4ef94ed69183179baf32fb442238efdff182f88d6c6414 SHA512 d3d5f58792ad13778aa4de689728e894c457186c780daf1ffc89f914de5bca969e660fc2fcabd91daeb1383d1affe47f3a8970b09159cd770b494ccbcda59424
@@ -20,3 +18,5 @@ DIST filelock-4.0.7.tar.gz 248489 BLAKE2B 02edcb6cbfe6921c566b116b02d7cbf583e5be
DIST filelock-4.0.7.tar.gz.provenance 9708 BLAKE2B 46fb800821c4c5a0ea1a873c51881c09b46e87adea2fa9d1cf84227e4e9c1ef4a417cb1876f48876c7853afe3da58adf0e6f983ffc97ba4df2c741c46768c334 SHA512 558b7f8dc2e1cdfdf90e815d19fef5e9f34f6d50a18629ebde6b057a2af741ce3aaa07e14771bc9272b3a445de2110b0c6014526a0587d5e448b9a2bc56d51ab
DIST filelock-4.0.9.tar.gz 251200 BLAKE2B 1190286a3407f940203b9beba059c744dd0e1c3f8ca9c46c9c6b12e3e33345d6d07b23186496b08c2ccc8d55842f4dc76af4e15bdae5e34306ac02f678fc8711 SHA512 60d3be5353ed6770622bc9069bb6ac6b0ce001abede030ed09882bf1aecf304b83e8e0dac9c92e4308ab1933246a9a44c331cd78ee7c13c545ceb6cf0fc43ecb
DIST filelock-4.0.9.tar.gz.provenance 9790 BLAKE2B f047c65d86669e37d89d19e53e408d8f864b60b1a68802ffd44c44754a1760afffb1dc66763e98db3416358b3091d8ca2d7b88bdbf8e4f041f8411d499299501 SHA512 b31f2cb8d6dbd6058bae573a2a5f1338290f04cd4d6058a2f00c450f5a73e66bc0766f80b971736401bec399ebf8e6e3d75ca5e285e48e6511f54378c87fb8fd
+DIST filelock-4.1.0.tar.gz 561277 BLAKE2B 4e8a7cc38da18ca61323a0c6fe6a733ed56843fca09f673abc2c616cc577838c33fbeedbef2ffc8556fad1bea7bed67893a3a9fdebf89baf18e0eccd41f95169 SHA512 c2126c4163b5d66c3842722e0c7edeb984a46921839a188f4ba1c3f01604c6ec8d517b4d5664734c6021a7ee2ee3dbdaaf4612f268ac57cdfe3dcb774bd2f37b
+DIST filelock-4.1.0.tar.gz.provenance 9815 BLAKE2B edeae542d4fe299d180e674402fa07da3432893b1ec757267fea6a0b0589a18a03ed4de3180e2be71ae726c46d1163b49d51a7a437401bbc5269247a585fb4f0 SHA512 b96c082948fba515e3d14d0d14e90954b26da26da1235d5d09c858dac10e174f38c3959c8c2c843a9050b21fb1582fdaecd2faab8c9c88af4ef60839c670b4de
diff --git a/dev-python/filelock/filelock-3.32.6.ebuild b/dev-python/filelock/filelock-3.32.6.ebuild
index 1f38026c0588..0c8f0c0c6c99 100644
--- a/dev-python/filelock/filelock-3.32.6.ebuild
+++ b/dev-python/filelock/filelock-3.32.6.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
BDEPEND="
dev-python/hatch-vcs[${PYTHON_USEDEP}]
diff --git a/dev-python/filelock/filelock-3.32.5.ebuild b/dev-python/filelock/filelock-4.1.0.ebuild
index 0c8f0c0c6c99..51d73c002e05 100644
--- a/dev-python/filelock/filelock-3.32.5.ebuild
+++ b/dev-python/filelock/filelock-4.1.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
BDEPEND="
dev-python/hatch-vcs[${PYTHON_USEDEP}]
@@ -28,4 +28,11 @@ BDEPEND="
EPYTEST_PLUGINS=( pytest-{asyncio,mock,timeout} )
EPYTEST_RERUNS=5
+EPYTEST_XDIST=1
distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # TODO
+ tests/soft_rw/test_soft_rw_async.py::test_async_leaked_singleton_is_closed_on_teardown
+ tests/soft_rw/test_soft_rw_sync.py::test_leaked_acquired_singleton_is_closed_on_teardown
+)
diff --git a/dev-python/gitpython/gitpython-3.1.62.ebuild b/dev-python/gitpython/gitpython-3.1.62.ebuild
index ebe35bd5a941..3bce7e846e7a 100644
--- a/dev-python/gitpython/gitpython-3.1.62.ebuild
+++ b/dev-python/gitpython/gitpython-3.1.62.ebuild
@@ -27,7 +27,7 @@ SRC_URI+="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
dev-vcs/git
diff --git a/dev-python/httptools/Manifest b/dev-python/httptools/Manifest
index 761e3d228dcb..aa7233802cfb 100644
--- a/dev-python/httptools/Manifest
+++ b/dev-python/httptools/Manifest
@@ -1 +1,2 @@
DIST httptools-0.8.0.gh.tar.gz 16922 BLAKE2B 3d352ac18005d5d0cfd657dc608cf59d84f6143f858e70b56a29b7c173720135cf0b419b228da00fc83341479329e243bb0263230f3bc576d3d67faf9b515a3e SHA512 32556fc4ba282d91bf71323ff27aba1b5dae54838101780c5e35b80f26d3922cc9b944ecdf74c9792a3830d56fa67d91a3e47223f5f45bcd018567092a5f9687
+DIST httptools-0.9.0.gh.tar.gz 22788 BLAKE2B 86f508e4c6c092f688948e35fd99b6bc5858a85421533f8bedd69f00c15aaaeb8ad8d5bc7b443237481df014d8de4eac3f7b0b35821b3729e28bd53f2659b997 SHA512 f254f835665ec001e8f493d3045e96a38966181556aaf643bf25654813c4572d25fa6d4fcc55fd69683f6f5735f31d514f1ee99031d00df4414fe01ed87194a6
diff --git a/dev-python/httptools/httptools-0.9.0.ebuild b/dev-python/httptools/httptools-0.9.0.ebuild
new file mode 100644
index 000000000000..b6f5ee14ca3f
--- /dev/null
+++ b/dev-python/httptools/httptools-0.9.0.ebuild
@@ -0,0 +1,63 @@
+# Copyright 2024-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
+
+DESCRIPTION="A collection of framework independent HTTP protocol utils"
+HOMEPAGE="
+ https://github.com/MagicStack/httptools/
+ https://pypi.org/project/httptools/
+"
+# sdist is missing cython source files, as of 0.6.2
+SRC_URI="
+ https://github.com/MagicStack/httptools/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+# don't ask me why they use both
+DEPEND="
+ net-libs/http-parser:=
+ net-libs/llhttp:=
+"
+RDEPEND="
+ ${DEPEND}
+"
+BDEPEND="
+ >=dev-python/cython-3.1.0[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+src_configure() {
+ cat > setup.cfg <<-EOF || die
+ [build_ext]
+ use_system_llhttp = true
+ use_system_http_parser = true
+ cython_always = true
+ EOF
+}
+
+python_test() {
+ local EPYTEST_DESELECT=()
+
+ case ${EPYTHON} in
+ pypy3*)
+ # no point trying to fix it
+ return
+ ;;
+ esac
+
+ rm -rf httptools || die
+ epytest tests
+}
diff --git a/dev-python/hypothesis/hypothesis-6.168.0.ebuild b/dev-python/hypothesis/hypothesis-6.168.0.ebuild
index bf665e6799ed..f1f3ea75a998 100644
--- a/dev-python/hypothesis/hypothesis-6.168.0.ebuild
+++ b/dev-python/hypothesis/hypothesis-6.168.0.ebuild
@@ -58,7 +58,7 @@ LICENSE="MPL-2.0"
# Dependent crate licenses
LICENSE+=" Apache-2.0-with-LLVM-exceptions MIT Unicode-3.0"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
IUSE="cli"
RDEPEND="
diff --git a/dev-python/json5/Manifest b/dev-python/json5/Manifest
index 23085f0eafce..d5191ab360d4 100644
--- a/dev-python/json5/Manifest
+++ b/dev-python/json5/Manifest
@@ -1,2 +1,3 @@
DIST json5-0.15.0.tar.gz 53278 BLAKE2B e9e5e747183ced6aa3262f1e17631b983323a8bcef9261028996a696dc6bd575ed726236b01e1833ab4fc4e3f56661728741fb700ec7a0c1d5af14726b566cdf SHA512 f60c7317e376ce3734b514edb5d68f994154571dd9a829918278390fb5b9e8fc50afb66c5067f980985db61a8900269c522a9a5194f8fe0397297059ad4dddf4
DIST json5-0.16.0.tar.gz 55924 BLAKE2B 572cb6d5bfe8fa74b68ddc8a497290afcbba261d9331b3573915e3bf3ae00f679b34036df4cad94e39793c3c1af7561684f728f4fab58d9d022cdc90dfc28952 SHA512 fc473c46eb1d0f2d835eabc58482b670275ae938f6e3db272b699b8c07c1df18b7e6d8d1966a7c0967347ee1b62442581640d0bd0157e3bba73b9cea9e876c25
+DIST json5-0.17.3.tar.gz 54234 BLAKE2B 5d0377239b89f41415b411d548c222cb646882a3a783c66cfe3f638850dd5ab22f6f3509e93d8af3521d9efbb38e0b9942c48d3c6c419fa36a176bd6f905fcb5 SHA512 9674ff258268aab5809f7e64f7a66f18d4cad5909ebc915313815aa6e9de00fec92efeb91d554c353c325b7f423c2c12627e32aa56041ecc754b04a11d7c0a63
diff --git a/dev-python/json5/json5-0.17.3.ebuild b/dev-python/json5/json5-0.17.3.ebuild
new file mode 100644
index 000000000000..e25e3624e35e
--- /dev/null
+++ b/dev-python/json5/json5-0.17.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="A Python implementation of the JSON5 data format"
+HOMEPAGE="
+ https://github.com/dpranke/pyjson5/
+ https://pypi.org/project/json5/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
diff --git a/dev-python/jsonpatch/Manifest b/dev-python/jsonpatch/Manifest
index ec6703058afd..ec18857c6f13 100644
--- a/dev-python/jsonpatch/Manifest
+++ b/dev-python/jsonpatch/Manifest
@@ -1 +1,2 @@
DIST python-json-patch-1.33.gh.tar.gz 28475 BLAKE2B 7d95ab23e09141cbe26618c91b12558d5fbfecda3e5b148d834753a364155d30859a9bdc3d321bdfcc5269f7e0170671524ae78f5fe65a8c97041bab3fb522b9 SHA512 0685f63949bee135b19d0962bdaab32ba97e02772b6650d885be57c09a2e89546222ebba1a4cf146b2f91027790b0a3ff2ea072d66dcebf9153aa601638bbfa2
+DIST python-json-patch-1.34.gh.tar.gz 39356 BLAKE2B 57342b6f47099bce4f2f2d28f6db7ceb8e5e399f20d0ebeb1577fde3e206569f42dd6f0822fcddfbd15922ff82397468fa8fb807e81f79a22c494bcc0d52ef09 SHA512 503f07689f96369e43a6d689bcbf5763445f5e7f93a2ee5c409f1abc17d57ec06165e1458a31903bc67d740fd02ea135d95454b81bde22b895492438949abc89
diff --git a/dev-python/jsonpatch/jsonpatch-1.34.ebuild b/dev-python/jsonpatch/jsonpatch-1.34.ebuild
new file mode 100644
index 000000000000..33a544ab47f4
--- /dev/null
+++ b/dev-python/jsonpatch/jsonpatch-1.34.ebuild
@@ -0,0 +1,51 @@
+# 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
+
+MY_P=python-json-patch-${PV}
+DESCRIPTION="Apply JSON-Patches like http://tools.ietf.org/html/draft-pbryan-json-patch-04"
+HOMEPAGE="
+ https://github.com/stefankoegl/python-json-patch/
+ https://pypi.org/project/jsonpatch/
+"
+SRC_URI="
+ https://github.com/stefankoegl/python-json-patch/archive/v${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-python/jsonpointer-1.9[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ ${RDEPEND}
+ dev-python/hypothesis[${PYTHON_USEDEP}]
+ )
+"
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # https://github.com/stefankoegl/python-json-patch/pull/159
+ sed -e 's/unittest.makeSuite/unittest.defaultTestLoader.loadTestsFromTestCase/' \
+ -i ext_tests.py tests.py
+}
+
+python_test() {
+ "${EPYTHON}" tests.py || die "Tests of tests.py fail with ${EPYTHON}"
+ "${EPYTHON}" ext_tests.py || die "Tests of ext_tests.py fail with ${EPYTHON}"
+ "${EPYTHON}" property_tests.py || die "Tests of property_tests.py fail with ${EPYTHON}"
+}
diff --git a/dev-python/mapbox-earcut/mapbox-earcut-2.1.0.ebuild b/dev-python/mapbox-earcut/mapbox-earcut-2.1.0.ebuild
index 07ca7c04fbe6..fd48147b6789 100644
--- a/dev-python/mapbox-earcut/mapbox-earcut-2.1.0.ebuild
+++ b/dev-python/mapbox-earcut/mapbox-earcut-2.1.0.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~x86"
+KEYWORDS="amd64 arm64 ~x86"
DEPEND="
dev-python/numpy:=[${PYTHON_USEDEP}]
diff --git a/dev-python/meson-python/meson-python-0.21.0.ebuild b/dev-python/meson-python/meson-python-0.21.0.ebuild
index e16aee261d69..813aeeb15ea6 100644
--- a/dev-python/meson-python/meson-python-0.21.0.ebuild
+++ b/dev-python/meson-python/meson-python-0.21.0.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos"
RDEPEND="
>=dev-python/pyproject-metadata-0.7.1[${PYTHON_USEDEP}]
diff --git a/dev-python/multidict/Manifest b/dev-python/multidict/Manifest
index d63d5967dbec..74d4c6cead7c 100644
--- a/dev-python/multidict/Manifest
+++ b/dev-python/multidict/Manifest
@@ -3,3 +3,4 @@ DIST multidict-6.8.0.gh.tar.gz 149210 BLAKE2B b8ef7da3fb565110418796c01258a71ba1
DIST multidict-6.9.0.gh.tar.gz 204284 BLAKE2B 797706fffd07a9486d354bf5c51e5e62df511517cf8b979148af2f3f55fc5fc400f800013f0c77a5ea1fc35ce6b24c69b95531d2ffecadecbe3376311a90e81f SHA512 b6d4a7ba2308c1726cde04213fdbd4b7528de2dcbcffe377660a72bed409d6c9321db99983f8ad717eeaa4ba2b1fcd16f5b0bbe038ed8e6b28c42fb971c2a7ff
DIST multidict-6.9.1.gh.tar.gz 214750 BLAKE2B 8962c996894570489321e312ea765d9fb2da84817b465adfbf27195b6e383c9bd1b0cfcd9b93f0a2e2824db7a9de070dd47e0ac2c99164fc4818ec52b24ee1e2 SHA512 b3c14370c98a34c03c8aceec54c3f1784c1e294209db8bc5363c3db7ed2836fa8384e1ffceb959597e646ca275f47eaecc82352608863ba60e4fe69dc2a17e36
DIST multidict-7.0.0.gh.tar.gz 333752 BLAKE2B 1d89bf9ec9c28487598e1bbaaa12d451cc6c05f0bd62ddbabeb4beea5e11b6a5515cdf0188d0bc01df6b5a2f73c5c360a7c6e8d5266354a3a50c441ddccf1cbb SHA512 7521ab5a512138aaeaacebeecb9f5c016071157392886750a284b86bb23553e528e818ebcc3fe51d6c53f4fce05408366db38ebc5965aa964b32b345af67333c
+DIST multidict-7.1.0.gh.tar.gz 396703 BLAKE2B bf6115bb30868357d29f51ccb3686850967dd86b149f828adb5756410e399752b17eb4e021814402d7bb19444837d608450824c2ad99df7b4c5e2fa5e0824cb8 SHA512 d2ee0fae5965a8a92f421aaa54ff81007d836731415b4ec22bb12ab90e3b1369b017de454c46837a3c63c5ff6258b77a9e0ba457d9991fca6e3e38d3e390e8b1
diff --git a/dev-python/multidict/multidict-7.1.0.ebuild b/dev-python/multidict/multidict-7.1.0.ebuild
new file mode 100644
index 000000000000..24a30aaea447
--- /dev/null
+++ b/dev-python/multidict/multidict-7.1.0.ebuild
@@ -0,0 +1,71 @@
+# 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
+
+DESCRIPTION="multidict implementation"
+HOMEPAGE="
+ https://github.com/aio-libs/multidict/
+ https://pypi.org/project/multidict/
+"
+SRC_URI="
+ https://github.com/aio-libs/${PN}/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
+IUSE="+native-extensions"
+
+BDEPEND="
+ native-extensions? (
+ dev-python/cython[${PYTHON_USEDEP}]
+ )
+ test? (
+ dev-python/objgraph[${PYTHON_USEDEP}]
+ dev-python/psutil[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( hypothesis )
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ # don't enable coverage or other pytest settings
+ sed -i -e '/cov/d' pytest.ini || die
+ # don't mangle CFLAGS
+ sed -i -e 's/^CFLAGS = .*/CFLAGS = []/' setup.py || die
+ distutils-r1_python_prepare_all
+}
+
+python_compile() {
+ if ! use native-extensions || [[ ${EPYTHON} == pypy3* ]]; then
+ local -x MULTIDICT_NO_EXTENSIONS=1
+ fi
+
+ distutils-r1_python_compile
+}
+
+python_test() {
+ local EPYTEST_IGNORE=(
+ tests/isolated
+ tests/test_multidict_benchmarks.py
+ tests/test_views_benchmarks.py
+ tests/test_watched_benchmarks.py
+ )
+
+ rm -rf multidict || die
+
+ local cext=--c-extensions
+ if ! use native-extensions || [[ ${EPYTHON} == pypy3* ]]; then
+ cext=--no-c-extensions
+ fi
+ epytest "${cext}"
+}
diff --git a/dev-python/narwhals/narwhals-2.26.0.ebuild b/dev-python/narwhals/narwhals-2.26.0.ebuild
index 359955646416..659973ad0528 100644
--- a/dev-python/narwhals/narwhals-2.26.0.ebuild
+++ b/dev-python/narwhals/narwhals-2.26.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm64"
+KEYWORDS="amd64 ~arm64"
BDEPEND="
test? (
diff --git a/dev-python/parse/parse-1.22.2.ebuild b/dev-python/parse/parse-1.22.2.ebuild
index f71c3f8e2a4b..0a4993c43494 100644
--- a/dev-python/parse/parse-1.22.2.ebuild
+++ b/dev-python/parse/parse-1.22.2.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/peewee-4.5.1.ebuild b/dev-python/peewee/peewee-4.5.1.ebuild
index 354b1a91f483..e41bf9288df5 100644
--- a/dev-python/peewee/peewee-4.5.1.ebuild
+++ b/dev-python/peewee/peewee-4.5.1.ebuild
@@ -22,7 +22,7 @@ SRC_URI="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+KEYWORDS="amd64 ~arm64 ~riscv x86"
IUSE="examples +native-extensions test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/platformdirs/platformdirs-4.11.8.ebuild b/dev-python/platformdirs/platformdirs-4.11.8.ebuild
index 97987e113428..efc02002085f 100644
--- a/dev-python/platformdirs/platformdirs-4.11.8.ebuild
+++ b/dev-python/platformdirs/platformdirs-4.11.8.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos ~x64-solaris"
BDEPEND="
test? (
diff --git a/dev-python/protobuf/protobuf-7.35.1.ebuild b/dev-python/protobuf/protobuf-7.35.1.ebuild
index b62aadff19ee..2bd4c0d63cc8 100644
--- a/dev-python/protobuf/protobuf-7.35.1.ebuild
+++ b/dev-python/protobuf/protobuf-7.35.1.ebuild
@@ -10,7 +10,7 @@ DISTUTILS_EXT=1
DISTUTILS_USE_PEP517=setuptools
PYTHON_COMPAT=( python3_{13..14} )
-inherit distutils-r1 pypi
+inherit distutils-r1 pypi toolchain-funcs
GH_PV=$(ver_cut 2-3)
GH_P=${PN}-${GH_PV}
@@ -31,7 +31,7 @@ SRC_URI="
LICENSE="BSD"
SLOT="0/$(ver_cut 1-3)"
-KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~sparc x86"
# need protobuf compiler
BDEPEND="
@@ -88,6 +88,15 @@ python_test() {
;;
esac
+ if [[ $(tc-get-ptr-size) == 4 ]]; then
+ EPYTEST_DESELECT+=(
+ # overflows 32-bit time_t in the test's own precondition check (not in protobuf code)
+ # https://github.com/protocolbuffers/protobuf/issues/17003
+ google/protobuf/internal/well_known_types_test.py::TimeUtilTest::testTimezoneAwareDatetimeConversionWhereTimestampLosesPrecision
+ google/protobuf/internal/well_known_types_test.py::TimeUtilTest::testTimezoneNaiveDatetimeConversionWhereTimestampLosesPrecision
+ )
+ fi
+
cp -r "${BUILD_DIR}"/{install,test} || die
local -x PATH="${BUILD_DIR}/test${EPREFIX}/usr/bin:${PATH}"
cd "${BUILD_DIR}/test$(python_get_sitedir)" || die
diff --git a/dev-python/pyarrow/Manifest b/dev-python/pyarrow/Manifest
index 8e26d07ec991..92178c31621e 100644
--- a/dev-python/pyarrow/Manifest
+++ b/dev-python/pyarrow/Manifest
@@ -1,8 +1,10 @@
DIST apache-arrow-23.0.1.tar.gz 17296212 BLAKE2B 7023df6e6900dc239edc757fef76a89d2169e4fd3e1eaf3471f805a6e1c39014b9ec1e5a3d7c9e7a590b8d007c4adc1d15b8ed22ecf4724b24a33ffa96557db2 SHA512 c687e50dfcdbf7e0e39710224360d35d9aa734452b3a47adc8c101f3019b6b4116310c05b9f3cd0a5ed4ad9b7bd8fb88edb70e79b3cbd413a57e5e35e4554a6c
DIST apache-arrow-24.0.0.tar.gz 17360520 BLAKE2B 1d50493b3b74e1c16ba406b5cea93712a332b8ea2db405c31aca844a8fa2d6ef9bcecf3a3bc84dc4bc6ddf946e55251e6d270c85c15b7f461765b6fc72b3a492 SHA512 ffbac0c198c74f26b2ac173aa2b054cfd3902927ca3db36fbbae25353e8696c32b744e805c25801ced22641af71a5a8ea441202d8d3494aa803b797995d9d408
DIST apache-arrow-25.0.1.tar.gz 17489182 BLAKE2B 2437feb4f96c83c1e7123550ce4d1047bdbbb2afbe52f6bcddc2bc9b2a581245579b09b3e39052a07f90576dccafe91ac41d8e0aaa5223a054f60d6b20deba0d SHA512 e75d384b4fdbdee29eb8ad29800c731843e7c43d90a43995dcc77390008723537791e212333178625345c718bdab15e0f3d8c12aa86b336918598c7d3fefc6e5
+DIST apache-arrow-26.0.0.tar.gz 17873899 BLAKE2B 08005178dd825abdc3ead0d4305696bd99ec86094e400fd346d84d2544eb74f27c877f27148bb5d9650dade8c70e67aaceb4a0eabc0368f16529d0a93d07d5f3 SHA512 c8769d4198f1c8e309e1e02e3d7e1db82706d98a7b500ae4e563d0ab504373c26de5141a5efa695541275fc95e8f4ef6a245a95f9ada7958f754e8e82145f9fd
DIST arrow-testing-249079a810caedda6898464003c7ef8a47efeeae.tar.gz 4155027 BLAKE2B 4fc4cf5153382b476d66265d5ab2fd5e512fdd0766bcf94bf675e5fefd15523fc8e0f87d9708285fd94e59b8d2a895f4f70855f0e1a826587897bef303887584 SHA512 a7134f3a4dc9c1ce09c1b522ee38e1cb9e04aef08e32bdd18297b9b3a73971f632b97d18f955e59e1cefa38f7f6417a9a2bc2fef787f5174ddcd71733305d2d3
DIST arrow-testing-725fd4a4b12d01c53c98e80274c0b23aa8397082.tar.gz 3752144 BLAKE2B bbfde361f8da376f228720de00a3f6c2b42051e53580f650ad5621086cbf4828a289d86815ac1143720d80f230a851c9602bf198a32e457c1a0f7767790968ee SHA512 0789bf65fc2609f84a9c2865bc8e12f8c63fdd138eff02af1b24ba2c0e925d8c0ecfbe57515786e91531d918ef1a0d92fd5becb553682eafdcedd7678ddacb9e
DIST arrow-testing-9ff285c88565f0f6abc855918c6a342e70e4909c.tar.gz 4159134 BLAKE2B 7fc939f816fdbce465429b72c411b7afdb06585742c985d421e10f9e880e9fbe600f86d5ab0f94b1f2a14e289e0bee588fbae90646b5dfb8ea12db18c73d55e4 SHA512 87980b57ec747ee6a3ed3093051fe06ba6d7c7b25f16926a78be3cbbf99c3fa1ac4f10d7014fd6d4eac6b6284c523d86739a72cf3331a691c115c416247d53bf
+DIST parquet-testing-56653c437c8092f704a092d0d1d4e600124cd49f.tar.gz 1460024 BLAKE2B ae28f0cb4ef12c14e2d9c9f70d0a9114bfc7e4c4d83a21ae4f41021d9855b60f5d7bf126f568f3bf5db7ff09026264a41500f940269a183ec2937bf418fc04a6 SHA512 3564ef2188b891be28f2b78fb8891ca614a1091609eaef54e8533a4af56a8c34218d904a76eca36f9d7f70c824600fe03b0622ac2ccd142e17cbcae1a23da37c
DIST parquet-testing-a3d96a65e11e2bbca7d22a894e8313ede90a33a3.tar.gz 1150001 BLAKE2B 2c991bca5679ba25767fea1c9e17991ec7661e302adc55bf353a9d7b1c3a91269a9d464cc15743ab0a056591939ed43f0d500ef51275d7d10cb96055c773d44c SHA512 2559f3c3d5f4cc22299482f352ad67a5145a9d0727675932031f8b5977acaabfe29838b0e147d72066bd8cad6c046ee60cc60b364118cd9187be37fd22937205
DIST parquet-testing-e74785d85a4ecee829e1e405444d6a1b24b8bc9c.tar.gz 1231649 BLAKE2B c9dea116ba68b896d4542ee182e42fb52a579022a89eba2a95222274a6d8bc1c8a83039c22dccdce434e01967e4010229cf864c68568a40a888bc410fc2c032b SHA512 d46330962c64ab86ec7ed8ec5416820428c0e87460bd12a7fcf04ac860b9d6985f37d5bfbfc4c53fba762f84cdc6f2acfe52900c4c19d2b73a5a2787a50853bd
diff --git a/dev-python/pyarrow/pyarrow-26.0.0.ebuild b/dev-python/pyarrow/pyarrow-26.0.0.ebuild
new file mode 100644
index 000000000000..b0aedab0744a
--- /dev/null
+++ b/dev-python/pyarrow/pyarrow-26.0.0.ebuild
@@ -0,0 +1,109 @@
+# Copyright 2023-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=scikit-build-core
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 multiprocessing
+
+# arrow.git: testing
+ARROW_DATA_GIT_HASH=9ff285c88565f0f6abc855918c6a342e70e4909c
+# arrow.git: cpp/submodules/parquet-testing
+PARQUET_DATA_GIT_HASH=56653c437c8092f704a092d0d1d4e600124cd49f
+
+DESCRIPTION="Python library for Apache Arrow"
+HOMEPAGE="
+ https://arrow.apache.org/
+ https://github.com/apache/arrow/
+ https://pypi.org/project/pyarrow/
+"
+SRC_URI="
+ mirror://apache/arrow/arrow-${PV}/apache-arrow-${PV}.tar.gz
+ test? (
+ https://github.com/apache/parquet-testing/archive/${PARQUET_DATA_GIT_HASH}.tar.gz
+ -> parquet-testing-${PARQUET_DATA_GIT_HASH}.tar.gz
+ https://github.com/apache/arrow-testing/archive/${ARROW_DATA_GIT_HASH}.tar.gz
+ -> arrow-testing-${ARROW_DATA_GIT_HASH}.tar.gz
+ )
+"
+S="${WORKDIR}/apache-arrow-${PV}/python"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~riscv"
+IUSE="+parquet +snappy ssl"
+
+RDEPEND="
+ ~dev-libs/apache-arrow-${PV}[compute,dataset,json,parquet?,re2,snappy?,ssl?]
+ >=dev-python/numpy-2.0.0:=[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/cffi[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ dev-python/pandas[${PYTHON_USEDEP}]
+ dev-python/pytz[${PYTHON_USEDEP}]
+ dev-libs/apache-arrow[lz4,zlib]
+ )
+"
+
+EPYTEST_PLUGINS=( hypothesis )
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # cython's -Werror
+ sed -i -e '/--warning-errors/d' CMakeLists.txt || die
+}
+
+src_compile() {
+ export PYARROW_PARALLEL="$(makeopts_jobs)"
+ export PYARROW_BUILD_VERBOSE=1
+ export PYARROW_CXXFLAGS="${CXXFLAGS}"
+ export PYARROW_BUNDLE_ARROW_CPP_HEADERS=0
+ export PYARROW_CMAKE_GENERATOR=Ninja
+ export PYARROW_WITH_HDFS=1
+ if use parquet; then
+ export PYARROW_WITH_DATASET=1
+ export PYARROW_WITH_PARQUET=1
+ use ssl && export PYARROW_WITH_PARQUET_ENCRYPTION=1
+ fi
+ if use snappy; then
+ export PYARROW_WITH_SNAPPY=1
+ fi
+
+ distutils-r1_src_compile
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # wtf?
+ tests/test_fs.py::test_localfs_errors
+ # these require apache-arrow with jemalloc that doesn't seem
+ # to be supported by the Gentoo package
+ tests/test_memory.py::test_env_var
+ tests/test_memory.py::test_specific_memory_pools
+ tests/test_memory.py::test_supported_memory_backends
+ # require mimalloc
+ tests/test_memory.py::test_memory_pool_factories
+ # fragile memory tests
+ tests/test_csv.py::TestSerialStreamingCSVRead::test_batch_lifetime
+ tests/test_csv.py::TestThreadedStreamingCSVRead::test_batch_lifetime
+ tests/test_array.py::test_to_pandas_zero_copy
+ # takes forever, and manages to generate timedeltas over 64 bits
+ tests/test_strategies.py
+ "tests/test_array.py::test_pickling[builtin_pickle]"
+ # scipy.sparse does not support dtype float16
+ "tests/test_sparse_tensor.py::test_sparse_coo_tensor_scipy_roundtrip[f2-arrow_type8]"
+ )
+
+ cd "${T}" || die
+ local -x PARQUET_TEST_DATA="${WORKDIR}/parquet-testing-${PARQUET_DATA_GIT_HASH}/data"
+ local -x ARROW_TEST_DATA="${WORKDIR}/arrow-testing-${ARROW_DATA_GIT_HASH}/data"
+ epytest --pyargs pyarrow
+}
diff --git a/dev-python/pycparser/Manifest b/dev-python/pycparser/Manifest
index e50649a9cefb..db850e8a4197 100644
--- a/dev-python/pycparser/Manifest
+++ b/dev-python/pycparser/Manifest
@@ -1,2 +1,3 @@
DIST pycparser-3.0.tar.gz 103492 BLAKE2B 20415045953c72f2aa90f1edd2dbace57958dcae74d8ce4fb5676576e30fc94c3657bbb3f688edaa082263844b0fdb98ef0acb2c06825accc81f52270909ada1 SHA512 333504ef076e369661823abcd1d1f0d4e01ebadd43b7039e403d80fc2418500c2ed2c42e7b997c6eaf9c56b16085dfccacc6d0be2d45f0033a90eac1a7ed49d0
DIST pycparser-3.1.tar.gz 105946 BLAKE2B 1e38c8d5bb84c509cd1fe43356262e9a3823f1645bbd07dda54ce89068758374b22d0aa16549f60d4638b917c4a96d7c5bb09dec351af5c3042b6d31d640dc7e SHA512 8041586d8bd7f993cd0cbee7bcf22c03224459ac853580fc70b590607d014ef750ac75c598fb7829979d9d7c4c05b2278b4346fe09904cf42c224134c3499f1f
+DIST pycparser-3.11.tar.gz 113796 BLAKE2B 85b3d20e8f4547f03d93c05287c3bd298b913a512033799a9960225718e3c00590686245a8ac4c00311cf0fa55833c0e3266712b7bffa4baa1d972b70748d834 SHA512 6f2be578e646438d8c451cdbd19a97741e6c6cad05f608376f2bae40435afdecaab95d1aa2fa6b9dc7ffc010597c294dfb32154859557c77533e55bc1ddef82f
diff --git a/dev-python/pycparser/pycparser-3.11.ebuild b/dev-python/pycparser/pycparser-3.11.ebuild
new file mode 100644
index 000000000000..4d23d4d400da
--- /dev/null
+++ b/dev-python/pycparser/pycparser-3.11.ebuild
@@ -0,0 +1,64 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# please keep this ebuild at EAPI 8 -- sys-apps/portage dep
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="C parser and AST generator written in Python"
+HOMEPAGE="
+ https://github.com/eliben/pycparser/
+ https://pypi.org/project/pycparser/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos ~x64-solaris"
+
+RDEPEND="
+ dev-python/ply:=[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ ${RDEPEND}
+"
+
+distutils_enable_tests unittest
+
+python_prepare_all() {
+ # c_ast.py is preprocessed from _c_ast.cfg, really no point
+ # in regenerating it
+
+ # kill sys.path manipulations to force the tests to use built files
+ sed -i -e '/sys\.path/d' tests/*.py || die
+
+ # Ensure we can find tests in our directory
+ sed -i -e 's/from tests.test_util/from test_util/g' tests/test_*.py || die
+
+ ln -s "${S}"/examples tests/examples || die
+
+ rm tests/test_examples.py || die
+
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ # Skip tests if cpp is not in PATH
+ type -P cpp >/dev/null || return 0
+ # change workdir to avoid '.' import
+ cd tests || die
+
+ # Ensure that 'cpp' is called with the right arguments
+ # Tests don't seem to always pass the include they intend to use.
+ mkdir -p "${T}"/bin || die
+ cat > "${T}"/bin/cpp <<-EOF || die
+ #!${BROOT}/bin/bash
+ exec ${BROOT}/usr/bin/cpp -I${S}/utils/fake_libc_include/ \$@
+ EOF
+ chmod +x "${T}"/bin/cpp || die
+
+ PATH="${T}/bin:${PATH}" eunittest
+}
diff --git a/dev-python/pypdf/Manifest b/dev-python/pypdf/Manifest
index 43a50faefde0..72b78cdd4ff2 100644
--- a/dev-python/pypdf/Manifest
+++ b/dev-python/pypdf/Manifest
@@ -8,4 +8,6 @@ DIST pypdf-6.18.1.tar.gz 7027577 BLAKE2B 21880eb3da99e5ad432466a76abf57b2e3a3fc8
DIST pypdf-6.18.1.tar.gz.provenance 9788 BLAKE2B 3b073bb57e7d2ea5d98083213dc594e3b147370e4e44c6c743992bdc2e09d52d2b5cee3f9f1bcb99f1293458327ed0af35699c5477aa9d6339d4ae0a194a7e66 SHA512 7c253ea25e4ded5a649d3aa811f41ed94e0dc5e5eb183ca8c5ad4affa981be7bdc1e0e0070c35b2eb4f16df92ef180d0d04755556bfe1c8df63a8eba41165ad4
DIST pypdf-6.19.0.tar.gz 7033266 BLAKE2B 3929cdf43fce4133c13dbbf6db50a94c602f9ff5408db2e2079075162ee4df3713d621df661511ec2d046f95a8719b46315033ce4db32c005eeb6a746a2e0b2e SHA512 61bf1b941500b935966b5dc01a64778d69d2afb9b6331c707cc0b48e165f5c2b316a6b8cf7c97603ff4b836ed09569e3530f1e44e8f655e013419a0e2aac018c
DIST pypdf-6.19.0.tar.gz.provenance 9549 BLAKE2B 3cdf57e48527696229e53909b83e48ba9e5478bea7143c7128bf4b789acd0676ee0550f933c53af8855df16b665af768b632bc4aa41e668dded7a0a7fc29fb02 SHA512 d369583aec1be36f4b79129951345f5134a18c3cb769749a729db80d0ff12dcc956bd10f471a865ede8ae0473047a21cf284784d29c7e63faef0cc7220aba38e
+DIST pypdf-6.20.0.tar.gz 7072602 BLAKE2B 077fda66d0c13c430e86964aff1f42ee08d8998ccd5ec435896b0a521aa96137b1144d717efaf822cbac69a5ddfb2b998b3d6d394212bc85c85ce05ea68f43ec SHA512 7a03b5be34dcfa50ede09a742d8263cd96d88ed11f3344708f8113661a7e8f87005787cc7ca94422fafb34dc069585201c2cc8600af8de4ea9ce041403eed75d
+DIST pypdf-6.20.0.tar.gz.provenance 9621 BLAKE2B 41ad2e67c10eb3761f6b76641f7a5a5382564b5c359b80376addbf97f0ed5302aadd4ed53ad6fe68c37a9093920b4855a29614150a04dcfa1ab403f2190424d8 SHA512 fcba515f2c5f0572caec8083ac31d405d54b0fbe63a73595785d1ee324e791efb2b70ea289bd3c32eb4856392d2c22b8c0f30e12e34eba246a3993fa40e9578a
DIST pypdf-sample-files-818dc013ad1f537198e9fcfae8a6b0dffe25ffa3.gh.tar.gz 11850954 BLAKE2B fbd0af91de44f2d224b3266727f0dfc462efb4d23176f4ebff147cbfa37337d891859c468b545d0c00796048584e6b621dc622d667e3d45c0b89b92f29ca3030 SHA512 bc601bfaf17f31c6358f594eaf879479e97028d7f5e5825c309a5d1eb843bfea5080c9e151287a0d915ecbc3f4d4755e326ac8fa1ceeb696c76b9f5ecc0d7e9f
diff --git a/dev-python/pypdf/pypdf-6.18.0.ebuild b/dev-python/pypdf/pypdf-6.18.0.ebuild
index c5dfe9f5773b..e865650c4ddd 100644
--- a/dev-python/pypdf/pypdf-6.18.0.ebuild
+++ b/dev-python/pypdf/pypdf-6.18.0.ebuild
@@ -24,7 +24,7 @@ SRC_URI+="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
+KEYWORDS="amd64 arm arm64 ~loong ~ppc ppc64 ~riscv x86"
BDEPEND="
test? (
diff --git a/dev-python/pypdf/pypdf-6.20.0.ebuild b/dev-python/pypdf/pypdf-6.20.0.ebuild
new file mode 100644
index 000000000000..4dc16068247d
--- /dev/null
+++ b/dev-python/pypdf/pypdf-6.20.0.ebuild
@@ -0,0 +1,62 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=flit-core
+PYPI_VERIFY_REPO=https://github.com/py-pdf/pypdf
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+SAMPLE_COMMIT=818dc013ad1f537198e9fcfae8a6b0dffe25ffa3
+DESCRIPTION="Python library to work with PDF files"
+HOMEPAGE="
+ https://pypi.org/project/pypdf/
+ https://github.com/py-pdf/pypdf/
+"
+SRC_URI+="
+ test? (
+ https://github.com/py-pdf/sample-files/archive/${SAMPLE_COMMIT}.tar.gz
+ -> ${PN}-sample-files-${SAMPLE_COMMIT}.gh.tar.gz
+ )
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
+
+BDEPEND="
+ test? (
+ >=dev-python/cryptography-3.1[${PYTHON_USEDEP}]
+ dev-python/fonttools[${PYTHON_USEDEP}]
+ >=dev-python/pillow-8.0.0[jpeg,jpeg2k,tiff,zlib,${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ media-libs/jbig2dec[png]
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-timeout )
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # probably requires extra deps
+ tests/test_appearance_stream.py::test_appearance_stream_rtl
+ # speed test, uses tons of memory
+ tests/test_filters.py::test_flatedecode__decode_png_prediction__speed
+ # apparently we get half the limit somehow?
+ tests/generic/test_data_structures.py::test_dictionary_object__read_from_stream__missing_length__limit
+ tests/generic/test_data_structures.py::test_dictionary_object__read_from_stream__read_unsized__limit
+)
+
+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/pyquery/Manifest b/dev-python/pyquery/Manifest
index 97da3b1ba2b9..787f11aac3d6 100644
--- a/dev-python/pyquery/Manifest
+++ b/dev-python/pyquery/Manifest
@@ -1,2 +1 @@
-DIST pyquery-2.0.2.tar.gz 46043 BLAKE2B fcad274336c834376b2f2954f2da699992017d416aa67315351bfc701f6841629189ee794a04648368b1dc22029b4ad740f2ee0a713111aa882815b3ea9a3688 SHA512 20a88b974d6379c7e30a30c1fe1c55e497a7b60165317f356e709d86cdc26140756227b9742d88dfaf615006d68e8d369d1b221683a0835a656f7b8d9a6adbd7
DIST pyquery-2.1.0.tar.gz 45963 BLAKE2B aa1042c34c8f91d7af0c4a419158ca588663b350e4b7351bf9cf05b7fb44d81820595175aff1221e8e6c1498860fb180b8fdc1f0cb2959f4e144eee7329a9260 SHA512 1c6a93ec36cdbcd0b30eecfe56c15bf8751bb19b7acb1c29bf02084ed72743130235bc7cc8babd4c5ba2f655eb1d8ebab58865a7960c0dfbd7a7b2f7e1128a31
diff --git a/dev-python/pyquery/pyquery-2.0.2.ebuild b/dev-python/pyquery/pyquery-2.0.2.ebuild
deleted file mode 100644
index d3c080b9338f..000000000000
--- a/dev-python/pyquery/pyquery-2.0.2.ebuild
+++ /dev/null
@@ -1,44 +0,0 @@
-# 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 optfeature pypi
-
-DESCRIPTION="A jQuery-like library for python"
-HOMEPAGE="
- https://github.com/gawel/pyquery/
- https://pypi.org/project/pyquery/
-"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
-
-RDEPEND="
- >=dev-python/lxml-2.1[${PYTHON_USEDEP}]
- <dev-python/cssselect-1.5[${PYTHON_USEDEP}]
- >=dev-python/cssselect-1.2.0[${PYTHON_USEDEP}]
-"
-DEPEND="
- test? (
- dev-python/beautifulsoup4[${PYTHON_USEDEP}]
- dev-python/requests[${PYTHON_USEDEP}]
- dev-python/webtest[${PYTHON_USEDEP}]
- dev-python/webob[${PYTHON_USEDEP}]
- )
-"
-
-EPYTEST_DESELECT=(
- # needs network
- tests/test_pyquery.py::TestWebScrappingEncoding::test_get
-)
-EPYTEST_PLUGINS=()
-distutils_enable_tests pytest
-
-pkg_postinst() {
- optfeature "Support for BeautifulSoup3 as a parser backend" dev-python/beautifulsoup4
-}
diff --git a/dev-python/pytest-env/pytest-env-1.7.1.ebuild b/dev-python/pytest-env/pytest-env-1.7.1.ebuild
index 91585a3371ef..53377984e1c8 100644
--- a/dev-python/pytest-env/pytest-env-1.7.1.ebuild
+++ b/dev-python/pytest-env/pytest-env-1.7.1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~riscv ~x86"
+KEYWORDS="amd64 ~arm arm64 ~hppa ~ppc ppc64 ~riscv x86"
RDEPEND="
>=dev-python/python-dotenv-1.2.2[${PYTHON_USEDEP}]
diff --git a/dev-python/python-discovery/Manifest b/dev-python/python-discovery/Manifest
index 4d9e561d66e8..b2c44894605f 100644
--- a/dev-python/python-discovery/Manifest
+++ b/dev-python/python-discovery/Manifest
@@ -1,8 +1,6 @@
-DIST python_discovery-1.4.4.tar.gz 72212 BLAKE2B e272217c9b5975aceb21d368b0b5486ebd216602906dc061ccdb9f56d94d9a24cf018182655ef0ec06bb0d3c4240c255d8bb44dc9afee6510a25902980b8f14e SHA512 508d2c4d29272b66ef8ccf1a0b35f1c5967ea5848a92eade610e13d58e8927cb12f6c7049e6b035f8319d12541a997117fac10d2cfd10047f4ee76ccfa7b5680
-DIST python_discovery-1.4.4.tar.gz.provenance 9887 BLAKE2B e52e59f1064d2e9763d2db64c501950a42625db2bd77f225843a71ce0eb676aa33a9727503bc1e95c73e79d37ddfceb30ff3a0e7db0c342d0f4623efa4253f33 SHA512 c02e940e81bfcde654cbf2aa273d91c1d50ef312c25c35a13c979025156ad9963b969f09bbe0854953f3bd326ae51ddc6ad6a3dbcdbaf781db1241e2010ab89f
-DIST python_discovery-1.5.3.tar.gz 82477 BLAKE2B 9c4fb00eaed1f285fbc11f17329b2b15cef76d7dabda740f25247b952d73446feabe66cb3697651050289206644849959424176180c1ad075d984c77cbc2dea1 SHA512 27df23aac5b1c1d0959a2982260362f7126f630bcf00ef239d3bfe8b30b4eeb21d11f857b83b91d4c82b7b07a2da565cdaf54637228636b771e42bc809cc88bd
-DIST python_discovery-1.5.3.tar.gz.provenance 9705 BLAKE2B 3b868680b81b7b357f6b1a746c1c3f9dd3647d661357aecf2d56b29c020775878ab1e99702ca1cdb543329eec78b2f178d063d3aeb69aa114336f74b0e1c2809 SHA512 6d4308a4cd90f1eb880f9a787bb43e1f96c169304009efd7fff673df6816e02adbe6124d8c52eff2be5a03e2a1892f3ffdef35ddf3cd788c5c78eaf04ea11de0
DIST python_discovery-1.6.0.tar.gz 82849 BLAKE2B f4eb680ebac443ef96d3b02c38c084077daa63125c78f1528414e316ccaafa15e33fec2e247c62faed19be9884ebb1f5b91f3ee24b343b8a6531f39f68ee4056 SHA512 dbf16e32b74aa5d02c07219688d1bddab550321cd1bd6e2d424cdf4970c2a80973d0f1b3348a41974fa86dd3d283641f19fe6b8434aee1b35c2ce70102f7562d
DIST python_discovery-1.6.0.tar.gz.provenance 9936 BLAKE2B 293c80437cec2b33211ef2b28d4021f01cfbed0f769adcef52f090f40300fabb437cb544516c4ad2aa5d4e4646b4384877a56dd12f369a5085c82a7b06962e7b SHA512 f2e2911814b42b44fb5616450e6264787f2bfae71385f7258ab29428ee3fe3b07e6952f4c0c2fda50796b3be531e04429cfca6433d9ba7091801a8f50279609a
DIST python_discovery-1.6.1.tar.gz 84338 BLAKE2B 817e18c8706a1d582c928b65b7252c04f8b312b4a301ffe1cbdfb20328edc2705c49d1a8a705736150113d4f08c3bf4f70cc9b89b32fd732ab0b93f74aee83cb SHA512 c65201e066c2debf3e8457befab259fa807621cd2dbc46fad5188234a16ea32207c868aad66d913f8dd6e58dc084054ac18ada4ea7e3820a8fe10fab5f1b9dda
DIST python_discovery-1.6.1.tar.gz.provenance 9713 BLAKE2B 07cd6ce6319c44ed3f41fb53a481bb142a6c6c3c095d0254eb3933227e2ecb1baad428c1b6d011c0581fa4ab97d1465219044741002dfc2a25ff24363381f9e4 SHA512 6b177195e35a8bfb438c98f3f048f5d0179003b247033dc099ae2673c68d32f30e16d2eb3e5a3252c199c5365e015e906e73b242f49c1eaf9b67abb44a12ef69
+DIST python_discovery-1.6.2.tar.gz 86921 BLAKE2B e5e79967f4781e17c18277b00e550314032be295aa4508841cdcfd978ba2a04a883da3627ac5c813145304e3a1f0e961a73995bd7e526e4ea6ed3366c520f3fa SHA512 b3843ff26640a0dda4c1b0ac4b8732776357b7fcdc7e7cddbb63d082c0e65aa69025f6dfbd06738483c1a4444e16fabc7abdffbe863f76401f61c1eeb1574d64
+DIST python_discovery-1.6.2.tar.gz.provenance 9679 BLAKE2B 6da1fc38df4ed46f9101b1fb8182e2bde68f04d3c9192f87a667dba3ed05500ec0525003ea7140acb467e14860357ae046acc5a0380df79b8a8cb561667a52e3 SHA512 e0abc195f761676ee3b497fddd4ee0569620372a1d4322c43b2f34c9c534522582c60b052746e1ea6ff6c28a8bde0a8077e03533dac9edd3e1e9059a0608c309
diff --git a/dev-python/python-discovery/python-discovery-1.4.4.ebuild b/dev-python/python-discovery/python-discovery-1.4.4.ebuild
deleted file mode 100644
index 8ef3ac6d6d13..000000000000
--- a/dev-python/python-discovery/python-discovery-1.4.4.ebuild
+++ /dev/null
@@ -1,57 +0,0 @@
-# Copyright 2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=hatchling
-PYPI_VERIFY_REPO=https://github.com/tox-dev/python-discovery
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Python interpreter discovery"
-HOMEPAGE="
- https://github.com/tox-dev/python-discovery/
- https://pypi.org/project/python-discovery/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
-
-RDEPEND="
- >=dev-python/filelock-3.15.4[${PYTHON_USEDEP}]
- <dev-python/platformdirs-5[${PYTHON_USEDEP}]
- >=dev-python/platformdirs-4.3.6[${PYTHON_USEDEP}]
-"
-BDEPEND="
- dev-python/hatch-vcs[${PYTHON_USEDEP}]
- test? (
- >=dev-python/setuptools-75.1[${PYTHON_USEDEP}]
- )
-"
-
-EPYTEST_PLUGINS=( pytest-mock )
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-python_test() {
- local EPYTEST_DESELECT=()
-
- case ${EPYTHON} in
- python3.*t)
- EPYTEST_DESELECT+=(
- # TODO
- tests/test_py_info_extra.py::test_satisfies_path_not_abs_basename_match
- )
- ;;
- python3.15)
- EPYTEST_DESELECT+=(
- # TODO
- tests/test_discovery.py::test_predicate_with_fallback_specs
- )
- ;;
- esac
-
- epytest
-}
diff --git a/dev-python/python-discovery/python-discovery-1.5.3.ebuild b/dev-python/python-discovery/python-discovery-1.6.2.ebuild
index 7689500218f9..fddf512947d9 100644
--- a/dev-python/python-discovery/python-discovery-1.5.3.ebuild
+++ b/dev-python/python-discovery/python-discovery-1.6.2.ebuild
@@ -20,7 +20,7 @@ SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
RDEPEND="
- >=dev-python/filelock-3.15.4[${PYTHON_USEDEP}]
+ >=dev-python/filelock-3.16.1[${PYTHON_USEDEP}]
"
BDEPEND="
dev-python/hatch-vcs[${PYTHON_USEDEP}]
@@ -45,6 +45,8 @@ python_test() {
EPYTEST_DESELECT+=(
# TODO
tests/test_py_info_extra.py::test_satisfies_path_not_abs_basename_match
+ tests/test_iter_interpreters.py::test_iter_interpreters_dedups_symlinks
+ tests/test_iter_interpreters.py::test_iter_interpreters_no_key_includes_running_interpreter
)
;;
esac
diff --git a/dev-python/python-openstackclient/Manifest b/dev-python/python-openstackclient/Manifest
index 345bc713fc9f..f5148759981d 100644
--- a/dev-python/python-openstackclient/Manifest
+++ b/dev-python/python-openstackclient/Manifest
@@ -1,3 +1,3 @@
DIST python_openstackclient-10.1.0.tar.gz 994222 BLAKE2B 6b13897115e8f72113ff815cb120e0d5ff52edd7cd863d478f3c196fce005b149c1af39492306cac20278375d3bd20d6da00609398884d791f4695a226de3f75 SHA512 caa16f30705f2b5d8779f2513df3b50b2aabe1fbe986aa70e0e74e11f0b2026d0814224ddbc6541bdfe9c377e93d254671544ba88e2be6e0ac5c32d5b10b9041
-DIST python_openstackclient-10.2.1.tar.gz 1037636 BLAKE2B 6000dfc3a1470970199bac2bb8b9447b3b7e1f96fb14b37c1e91d412e5088b7a481200e17a06bd2b1980e03b4231ba86e6c8cbd7339375ff734729178f42c8f1 SHA512 b3f4d9a20850db2f2af1a9647f1c57a9055b88d8f5da03d6357eb683ab86abfcbffcbb2b75087f6315735eb679120f07457fc9c9ca5e299110ba5378360b3fbc
DIST python_openstackclient-10.3.0.tar.gz 1044755 BLAKE2B 63b3b0fca0c3b0a9fb9c18180ed94bc7ef46b5ff49662a06c1c127d263959492ddeea6b4e578a82f89db34e34ee79ef610b8bb8a2406c4eaa0a2314f7afcbff6 SHA512 543e398cdf2234638e3dfbb224b5a1212bcc09132daa455a2436d8e4380669b008c15cc5a5388c677e335b5115f042a47703ad91ff568ac90ffb9323678f48b6
+DIST python_openstackclient-10.4.0.tar.gz 1060775 BLAKE2B 6968e1ec42491565eb24e7dd4412f6669307a58e61b44d7882351f01386f922949c2a8a1bef8af578aeed27ffe38b65749dc4694b9ba1e40d9a1e7070391fc73 SHA512 9a43aa67678e60c8f7348c131cd2a83ed45c6605018d14bc5fa35f8c0891081a3bfd051a0832ecbecec983ec48700e27e73d76d8ad90cc769a9310327e944e30
diff --git a/dev-python/python-openstackclient/python-openstackclient-10.2.1.ebuild b/dev-python/python-openstackclient/python-openstackclient-10.4.0.ebuild
index ac1986428985..192c39e5b0b1 100644
--- a/dev-python/python-openstackclient/python-openstackclient-10.2.1.ebuild
+++ b/dev-python/python-openstackclient/python-openstackclient-10.4.0.ebuild
@@ -17,12 +17,12 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="amd64 arm64 x86"
+KEYWORDS="~amd64 ~arm64 ~x86"
RDEPEND="
>=dev-python/cliff-4.13.0[${PYTHON_USEDEP}]
>=dev-python/cryptography-2.7[${PYTHON_USEDEP}]
- >=dev-python/openstacksdk-4.16.0[${PYTHON_USEDEP}]
+ >=dev-python/openstacksdk-4.20.0[${PYTHON_USEDEP}]
>=dev-python/osc-lib-4.6.0[${PYTHON_USEDEP}]
>=dev-python/oslo-i18n-3.15.3[${PYTHON_USEDEP}]
>=dev-python/python-keystoneclient-3.22.0[${PYTHON_USEDEP}]
diff --git a/dev-python/python-socks/python-socks-3.1.1.ebuild b/dev-python/python-socks/python-socks-3.1.1.ebuild
index 364e8b802100..193a71c32cb6 100644
--- a/dev-python/python-socks/python-socks-3.1.1.ebuild
+++ b/dev-python/python-socks/python-socks-3.1.1.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
# curio is not packaged
# asyncio is the only backend we have, so dep on its deps unconditionally
diff --git a/dev-python/python-tests/Manifest b/dev-python/python-tests/Manifest
index 7155573630ef..540c5df317a2 100644
--- a/dev-python/python-tests/Manifest
+++ b/dev-python/python-tests/Manifest
@@ -16,6 +16,8 @@ DIST Python-3.14.7.tar.xz 24053924 BLAKE2B 7d6988f906a402dbfc87b690f228b5fc53de0
DIST Python-3.14.7.tar.xz.sigstore 7101 BLAKE2B 9c016780aad594596b5f4782e755f211bf6c635026c2c854d6594aba2254c84eeb78f0e90eae4b0ba218168c2162999b2e9327184031c43d8b111fb72e95f888 SHA512 6e56084d4c45712d2ce21c4f16008513e4daa22f2a6174b4d715c2bcf80a2fa9a1356ea6c4ecb8470ab2f08117ef79301da666b53b264bac53ae0801e410d189
DIST Python-3.14.8.tar.xz 24130644 BLAKE2B c357ff7ad35ed9daac86cf8b9ba05c2735104aaedd3b4e942e16f4f76ea4990d678f932da11b7d3e8677df5e3e848ed28d89b172844c53675cf09c86b2289903 SHA512 f9e6809b0c45d90fcc174b8051e15058a3037981c9136c598d110a118a22cbbb8263fbd677e07b2b9d93e1aa83cd9cb835b61b6af898fd301d1080a29c2156fe
DIST Python-3.14.8.tar.xz.sigstore 7489 BLAKE2B 9815b29e63c481ecb5bdd37f2f8da2d1a363adb1fc138ac00fec37732ecd5dcb34e010c2aaed4dea3aa688543768870aad17cd7999006b8b7974ed05e125e4e2 SHA512 cc030677f2b22287ed42974cd5d2654d1eadec38d66080b04b4a5bf468e9055aeff127dbd5cce508d31c977a38d84a0e87eb3c6375b2b924e03f7883e1d602a9
+DIST Python-3.15.0.tar.xz 35688820 BLAKE2B fd061cceb89dc512b0e68f32189ba6d89e5707b633d5606215bdfa173ed67918127c195cbde6c0d759cb1197ebbbb030129f0520ef59eec83554d5d810257983 SHA512 293cbdbb20076c8d9f1ddfb9b72796974b00802f96691843af3924e55e2a7cbd89c1cd85ebd8e35a474eda9e7a878b6622238178ef2de4427e4e34ef70d04265
+DIST Python-3.15.0.tar.xz.sigstore 7310 BLAKE2B dc13104044018b770628b085b3baabba2e06decfb0f5d31573fc847c6ca0f933a5a8bf3ff8241fe948009c6a190ea1b3aaf9d787c8b6b8a89dd15bade6a60096 SHA512 995e0bc6732c27a8c18a4f8d0db957fbe6b8e777d7e0b92669e03918aeabbade5443429ff5070bf02a5e03f8c873db1e92fa83e5bf63340b10d8653550ee4bd6
DIST Python-3.15.0b2.tar.xz 35381676 BLAKE2B 59834dc8301dcc9d7e25fd3faf6060a6755443f3782fd3f035d82896468013d01be1b558f7d5c7099b32d49256b09055fde324660d66a52900f519f75acb5556 SHA512 fae17efc3bd2604fdff2d63e0afeac47562165a5da2e1e027f4126b4f8bbb4957f3a2f406d6db23a20c8881fad108385b4b2afb53482075dbe16a690778ccd4a
DIST Python-3.15.0b2.tar.xz.sigstore 5583 BLAKE2B a766583eb8340ac3bef93ac0bde0ffa66f4680361bb369b3baccd715eb24a8a1f2e5f1ba049e1e8d3c7c53f41a2fe4b0402104156f7c0609355a18dbb24c99e2 SHA512 78f437419f67b10d556ec2304e9f46af4ee0114434e1c51594ccf202aa98ae3b733f4022aeac8fc1afdeeb29fda9328f855dd4914d38318c9ec965b45358153c
DIST Python-3.15.0b3.tar.xz 35459584 BLAKE2B 613f3609775df8b899603363a5e6cce39d3e1e56451c626cf87adc6149d9bbe5d1cddce86e3d86eb521747f4f0ada226322d0d737f881d107adccfd7b8533098 SHA512 a8c73a8e373ca921c87778d011072c1a0602cc203c65acda69117189cf5bd6c277c54044af381f27c243b187bbbb7b3ef47b9318bc89e2c044de9723175d7dca
@@ -38,6 +40,7 @@ DIST python-gentoo-patches-3.14.6.tar.xz 10312 BLAKE2B 3415bb7859cdd8754987afdc7
DIST python-gentoo-patches-3.14.6_p1.tar.xz 12032 BLAKE2B 315de6cb5f346c6406e12d4cb6ccbc986e6a39dc334e5ceb4d1ba4922a336d77f0bd0167fb7ef4d1c40ce0829e03248e838dbfbd0a46c0e4e0f6cf9e999e09e8 SHA512 2ac689aa6cff138782440ce1104bf21eace756fd1a72e22590c14157390937f7f50cd1e1ca774bb5a1ff08404b74901fb55d703c39a6ff9c9165e420d1b045e9
DIST python-gentoo-patches-3.14.7.tar.xz 10304 BLAKE2B df9214b27caaef53da93e5468faae24186d5f37b675a86289ae0161539935a509d60635cde4569efd03769e228fb7d450e396bf731db2b49d4a46e0f70df4a87 SHA512 d8313edbf5126df6ed59d4e06fb813574e4dd672ccd433e6de776a06757deda0e0495bb92e59508d86bb5ee84d2fab8141c5446f6541104b1bd80c8647a1f705
DIST python-gentoo-patches-3.14.8.tar.xz 10300 BLAKE2B d03992cf3aa224c03bdff6bb837879fac6c935265a384170c4139d09a9e3fb246cd7822ae171ed88999d6120512e7f49bd04c1d3f7ccee1967e194e1186ce7b3 SHA512 9d05432b04718ddaa5d09a0fc99d2498078398e94f00470b48f19c1779cc86997917825a1d2ac539e2170d8f0a9ade82a9b8909ae221db395a6f9fdbde3a24f6
+DIST python-gentoo-patches-3.15.0.tar.xz 4624 BLAKE2B 844b76e97fe4564613e4a00d02f77b18ef63a1b731ee7112789f9067d973decbcab05aeca2da32945b2c1f03e81705e7b102d4281b43287db948a3483e702f35 SHA512 0b0df753ab876f579e59b351d72b80279562236a1f5b36016eff133e4e3a7bdac7705af53a2f3a8ec4a0836c9357ceb5ea236047e3b12ceedb8ed593267f6cfe
DIST python-gentoo-patches-3.15.0b2.tar.xz 3436 BLAKE2B fa2128b899f2d93078058ccd3e47b780bd092a841b07add94da61a55bb1f9846ec1fa5e00bcd78fcdd1d7da80fdf1dbabcc5d644a70cebce2018c457b186c74a SHA512 e92e87c027c8d777faae20b264cd83353dbb23d15679e99465f014277d02078b8c68fce3723e176cbebd94ac2057e5a9703f0ae5f5691e934b74947735ec3a86
DIST python-gentoo-patches-3.15.0b3.tar.xz 3432 BLAKE2B 994e9339e00dfa4b40395e763f25dde4813d791151787028dafcf2e5159c38bbe88d4b56d07fc4c7454a09bd55edfda94b9cb8cf5c0ff0ffe7db4bb1a8eea8b6 SHA512 8c3a8dea43fc42179679b1f6811979dabb4e1c34821b4aecd894d661842df26e7592f5c74787157f36ccddf9ce233994c774fbe8381dc0ccaff3dfcff0c6c572
DIST python-gentoo-patches-3.15.0b4.tar.xz 3436 BLAKE2B 82a8b6a3467613229b938313f69dca219793fe5e4a16266483705f00062eec30f775bbaf4b50aa38062a96377a44071f2d29b5ae7926a003d3b70094ddc0db5e SHA512 0858432978d85453ca136c4b54737c6df8ca536852723f0625984ca7cb4aef623286d94e34b8ac80f2f7547a8fe95390972e569bdcdb30c93f4466eab586022b
diff --git a/dev-python/python-tests/python-tests-0.3.15.0.ebuild b/dev-python/python-tests/python-tests-0.3.15.0.ebuild
new file mode 100644
index 000000000000..f3a756fe9c02
--- /dev/null
+++ b/dev-python/python-tests/python-tests-0.3.15.0.ebuild
@@ -0,0 +1,75 @@
+# Copyright 2024-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+VERIFY_SIG_METHOD=sigstore
+
+inherit python-r1 verify-sig
+
+REAL_PV=${PV#0.}
+MY_PV=${REAL_PV/_}
+MY_P="Python-${MY_PV%_p*}"
+PYVER=$(ver_cut 2-3)t
+PATCHSET="python-gentoo-patches-${MY_PV}"
+
+DESCRIPTION="Test modules from dev-lang/python"
+HOMEPAGE="
+ https://www.python.org/
+ https://github.com/python/cpython/
+"
+SRC_URI="
+ https://www.python.org/ftp/python/${REAL_PV%%_*}/${MY_P}.tar.xz
+ https://distfiles.gentoo.org/pub/proj/python/patchsets/${PYVER%t}/${PATCHSET}.tar.xz
+ verify-sig? (
+ https://www.python.org/ftp/python/${REAL_PV%%_*}/${MY_P}.tar.xz.sigstore
+ )
+"
+S="${WORKDIR}/${MY_P}/Lib"
+
+LICENSE="PSF-2"
+SLOT="${PYVER}"
+if [[ ${PV} != *_* ]]; then
+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+fi
+# enable by default to help CI handle it (we have no additional deps)
+IUSE="+python_targets_${PYTHON_COMPAT[0]}"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+RDEPEND="
+ ${PYTHON_DEPS}
+ ~dev-lang/python-${PV}:${PYVER}
+"
+BDEPEND="
+ ${PYTHON_DEPS}
+"
+
+# https://www.python.org/downloads/metadata/sigstore/
+VERIFY_SIG_CERT_IDENTITY=hugo@python.org
+VERIFY_SIG_CERT_OIDC_ISSUER=https://github.com/login/oauth
+
+src_unpack() {
+ if use verify-sig; then
+ verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.xz{,.sigstore}
+ fi
+ default
+}
+
+src_prepare() {
+ local PATCHES=(
+ "${WORKDIR}/${PATCHSET}"
+ )
+
+ cd .. || die
+ default
+}
+
+src_install() {
+ python_setup
+ # keep in sync with TESTSUBDIRS in Makefile.pre.in
+ python_moduleinto "/usr/lib/python${PYVER}"
+ python_domodule test
+ python_moduleinto "/usr/lib/python${PYVER}/idlelib"
+ python_domodule idlelib/idle_test
+}
diff --git a/dev-python/python-tests/python-tests-3.15.0.ebuild b/dev-python/python-tests/python-tests-3.15.0.ebuild
new file mode 100644
index 000000000000..b7e5d0c7a099
--- /dev/null
+++ b/dev-python/python-tests/python-tests-3.15.0.ebuild
@@ -0,0 +1,74 @@
+# Copyright 2024-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+VERIFY_SIG_METHOD=sigstore
+
+inherit python-r1 verify-sig
+
+MY_PV=${PV/_}
+MY_P="Python-${MY_PV%_p*}"
+PYVER=$(ver_cut 1-2)
+PATCHSET="python-gentoo-patches-${MY_PV}"
+
+DESCRIPTION="Test modules from dev-lang/python"
+HOMEPAGE="
+ https://www.python.org/
+ https://github.com/python/cpython/
+"
+SRC_URI="
+ https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz
+ https://distfiles.gentoo.org/pub/proj/python/patchsets/${PYVER%t}/${PATCHSET}.tar.xz
+ verify-sig? (
+ https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz.sigstore
+ )
+"
+S="${WORKDIR}/${MY_P}/Lib"
+
+LICENSE="PSF-2"
+SLOT="${PYVER}"
+if [[ ${PV} != *_* ]]; then
+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+fi
+# enable by default to help CI handle it (we have no additional deps)
+IUSE="+python_targets_${PYTHON_COMPAT[0]}"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+RDEPEND="
+ ${PYTHON_DEPS}
+ ~dev-lang/python-${PV}:${PYVER}
+"
+BDEPEND="
+ ${PYTHON_DEPS}
+"
+
+# https://www.python.org/downloads/metadata/sigstore/
+VERIFY_SIG_CERT_IDENTITY=hugo@python.org
+VERIFY_SIG_CERT_OIDC_ISSUER=https://github.com/login/oauth
+
+src_unpack() {
+ if use verify-sig; then
+ verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.xz{,.sigstore}
+ fi
+ default
+}
+
+src_prepare() {
+ local PATCHES=(
+ "${WORKDIR}/${PATCHSET}"
+ )
+
+ cd .. || die
+ default
+}
+
+src_install() {
+ python_setup
+ # keep in sync with TESTSUBDIRS in Makefile.pre.in
+ python_moduleinto "/usr/lib/python${PYVER}"
+ python_domodule test
+ python_moduleinto "/usr/lib/python${PYVER}/idlelib"
+ python_domodule idlelib/idle_test
+}
diff --git a/dev-python/pyupgrade/Manifest b/dev-python/pyupgrade/Manifest
index bc6c3abbc18b..320a1d0435c9 100644
--- a/dev-python/pyupgrade/Manifest
+++ b/dev-python/pyupgrade/Manifest
@@ -1 +1,2 @@
DIST pyupgrade-3.21.2.gh.tar.gz 67006 BLAKE2B 73753913d1f6493d271214b567b374ab0d4cd32cc4f385746fd8ce58157adfd4ce195184d25cd79efbc23186d8825e92d7cce6ac19c81ab9f7e27b897dd6710c SHA512 4b6d5629da057c2dc1890aa6a7c8d83d7669a1bed27d284595355b0b3b4566543750644127adea088646de26f0cb40352340db93b4002c7124dacf994483a372
+DIST pyupgrade-3.22.0.gh.tar.gz 73452 BLAKE2B 359cffb4caac594dd9f9d4082a86b82e93cbe4add3fc7dabb8d5b31fb8ea34d50fd2b303356a160bab7fa504700a3a19e7d9f6481e2392a7232847794ec24332 SHA512 7b511be15b0d6df4638ea2ad205f85c999c2539c78ee9431baea68003480e991e3a2a0df48b0cb5cde1ec0f18d52be6567302189bcaf9455997985977197a517
diff --git a/dev-python/pyupgrade/pyupgrade-3.22.0.ebuild b/dev-python/pyupgrade/pyupgrade-3.22.0.ebuild
new file mode 100644
index 000000000000..f2bab31b30ed
--- /dev/null
+++ b/dev-python/pyupgrade/pyupgrade-3.22.0.ebuild
@@ -0,0 +1,31 @@
+# Copyright 2022-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="Tool + pre-commit hook to automatically upgrade syntax for newer Pythons"
+HOMEPAGE="
+ https://github.com/asottile/pyupgrade/
+ https://pypi.org/project/pyupgrade/
+"
+# no tests in sdist, as of 3.3.2
+SRC_URI="
+ https://github.com/asottile/pyupgrade/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+
+RDEPEND="
+ >=dev-python/tokenize-rt-6.1.0[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
diff --git a/dev-python/readme-renderer/readme-renderer-46.0-r1.ebuild b/dev-python/readme-renderer/readme-renderer-46.0-r1.ebuild
index ee4c2b3ead7d..8a71b9a3a379 100644
--- a/dev-python/readme-renderer/readme-renderer-46.0-r1.ebuild
+++ b/dev-python/readme-renderer/readme-renderer-46.0-r1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/docutils-0.21.2[${PYTHON_USEDEP}]
diff --git a/dev-python/sabctools/Manifest b/dev-python/sabctools/Manifest
index a87acb52df8f..eb900abff2f2 100644
--- a/dev-python/sabctools/Manifest
+++ b/dev-python/sabctools/Manifest
@@ -1,2 +1,3 @@
DIST sabctools-9.6.3.gh.tar.gz 9737914 BLAKE2B 297a2a59ce3787fac301d6e655274dc6b66c53dd8a96481483d124c68d75cb4a4efaa8ca8be2b12b85006769268606e25e33e45bf686740585de58b31c0e94f5 SHA512 d326d06d53c85ffb39d0bad38d358a650e7b40dbffdfb9a5b6ba68c381b71568e0ff3fffb05529ecdbd0dddb3a14eaab72317fe9ea7356c178cb10bb6f7aeebd
DIST sabctools-9.7.1.gh.tar.gz 9666974 BLAKE2B c6e70d203127db4999b138f135bd8359ad08fd00028f805327dc18d80de68d8452bc212218e06dff8a3b87b71541a7853cd5608f35a484bd35507a94600557cf SHA512 75957f9ddd7710832046764999eba30203b590b87bf53a547ca60ba59a7603890deadeaf4f45e79ae08bb35cbbc01c9b5df5b68cb441c23351efef2f9bcef7fe
+DIST sabctools-9.7.2.gh.tar.gz 9667583 BLAKE2B 4cd1679f62d1eef5e5d6d8d22513fcaa1939101b4905b2d3b128699ff9519baf977de347d36f9a7089b9f06bd0e6afad961522ca1e6285f3fdcd17d8cd379c18 SHA512 c55595d1e0c79575952d8a32497923fd09de57b2f3a93c864877fd91a3478c03eb319d08fd49c98c1cac0e4e7d788efed1a4634759351521f10d86c7f0e4a49c
diff --git a/dev-python/sabctools/sabctools-9.7.2.ebuild b/dev-python/sabctools/sabctools-9.7.2.ebuild
new file mode 100644
index 000000000000..dec4e7ac4f98
--- /dev/null
+++ b/dev-python/sabctools/sabctools-9.7.2.ebuild
@@ -0,0 +1,40 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=scikit-build-core
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1
+
+MY_PN="sabctools"
+MY_P="${MY_PN}-${PV}"
+
+DESCRIPTION="Module providing raw yEnc encoding/decoding for SABnzbd"
+HOMEPAGE="
+ https://github.com/sabnzbd/sabctools/
+ https://pypi.org/project/sabctools/
+"
+SRC_URI="
+ https://github.com/sabnzbd/${MY_PN}/archive/v${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+BDEPEND="
+ test? (
+ dev-python/chardet[${PYTHON_USEDEP}]
+ dev-python/portend[${PYTHON_USEDEP}]
+ )
+"
+
+DOCS=( README.md doc/yenc-draft.1.3.txt )
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
diff --git a/dev-python/securesystemslib/securesystemslib-1.5.1.ebuild b/dev-python/securesystemslib/securesystemslib-1.5.1.ebuild
index 85f990a37fe9..cd15fa53a520 100644
--- a/dev-python/securesystemslib/securesystemslib-1.5.1.ebuild
+++ b/dev-python/securesystemslib/securesystemslib-1.5.1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~x86"
+KEYWORDS="amd64 ~arm ~arm64 ~ppc ~ppc64 ~x86"
RDEPEND="
>=dev-python/cryptography-48.0.0[${PYTHON_USEDEP}]
diff --git a/dev-python/selenium/Manifest b/dev-python/selenium/Manifest
index c45fadbd594d..e3a88c5e5bb9 100644
--- a/dev-python/selenium/Manifest
+++ b/dev-python/selenium/Manifest
@@ -8,9 +8,12 @@ DIST selenium-4.49.0.tar.gz 1059027 BLAKE2B 9e35fb89dc9966c22ea1577ce7bc0aa39115
DIST selenium-4.49.0.tar.gz.provenance 9690 BLAKE2B bbaccc4cba8a4da1c8c5278eb5e4ff2e765920721530eaf041d6b834d14fc60911db530fa93d0b9f9048381627e34e0ca9bf590527354b3a7af233e67095bf49 SHA512 0544fd467dc562e65ffb0125df2d424047890dcae01cd28639c2eabea73be7892d05be6095f4cb739d1f1a239f1d187c0afc0b083bfebbce9ed877660ab7a890
DIST selenium-4.50.0.tar.gz 1051762 BLAKE2B 6b8854841d8738b8ad36d3654f8a80f8a34b612755380f194cbc3ef4eb83c45d4491cbbf37fd5f4be49a4e431f16f68c0a2b3a24c92bdef961eb2b61b01c91b1 SHA512 59c5f16fb34cd4fa18e6c4d0fd3e8d0cd30ebcaa3e4e255be26ecbc83094da49634ef63be8ced154b0de357d11d2f8f7c4652d4a85b7b2e6385d68ef79f8efd2
DIST selenium-4.50.0.tar.gz.provenance 9600 BLAKE2B 3e6faa407fd5dac2057d3bb86f18767ff1cc2308cc46a3712c4b9eee5af2abcbd6ce517d9b7182a759d6a832d2d892b5e593c3ccf21da6b4d23765a862591a51 SHA512 f3b9dc689bc5884fc959dda9dece84eb3fbc28f837a579220ffcddf44489a4360cad1649619ab06d75a0dce29a49ec4fc042d353d5934d60cf746739a38bf236
+DIST selenium-4.51.0.tar.gz 1050794 BLAKE2B 79e6f120eb490971f90c045680c551dc07c1837a0e66e95f8cc5af5dee9d7760a32759c54bb41fb0a0b2627cfffb3269259da4d7fd6e38ba52e61dcd03e9ea85 SHA512 d90976764a113a8ce93fdf2bc6102a6d3704500cdc741a5e99412e8b0ceb32148c0524aed6dfb7ef5fcea2040718db01d5afc5c9b2a7d4c8525a1df6836712f1
+DIST selenium-4.51.0.tar.gz.provenance 9625 BLAKE2B eb4574a599fc0e1ce13840d16267450f87dc3c26657354658a63088009e80a1dfd40479785b28e0849042113099469ad26832395f5af85d33c5d93f821ffc5fe SHA512 0fdcca7aeeed94c45690155f5df2805911219d0de3937bb02cf73c266e775b057f2236c3b5b6c542b890dca1b14724e3327bb902e9d934b4e563b42e689a89fa
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.47.0.gh.tar.gz 44062095 BLAKE2B d6ce15ce857d3dd0e796935981e419be5357d49921ff76d5bcdf508408022234a2f96859e961b29e62666d3f28875910384900701629a4646b809f1b9c0e8617 SHA512 bb8dc827715fcb276211dd9800e8a375fa2b59b4e42a2952091946c7df2dabe226517633191da3b134d7fdd1554b0643added277be577fe4985dc54d141fad5d
DIST selenium-selenium-4.48.0.gh.tar.gz 44169864 BLAKE2B 6c3073b38b660f73fbfd1b683403d851c62ef1fd13a8d6f4e2df60e562e895ea323cdd999686e70d22b3a40e2cd0194b27cd88a4b4bbbe2dd4795ece30496659 SHA512 f1e5a02d9b2946586263b50be33aea75c3cc98013bafcbe52f8c787f497011528c25d392c0af3af0b3a0023ddfe1a87ab10eb3e813eef6feff3bd9bbe285cd77
DIST selenium-selenium-4.49.0.gh.tar.gz 44228222 BLAKE2B 3efebe68d3b3b70e5089225d86b693357154d8c66d0ec6545d77012edc54edcc1ecde69b92f4e7bb110ce734c49a1766cb8d8fcb13814bac9d0b7dbd49a41567 SHA512 f5aba633816adf0d57814ce62832d3d0ec70ad75c466af4696c47b904f69411afc7a23464544d699b6b1f7d5b927c18e817c45e993c57c98b9f37299949bf625
DIST selenium-selenium-4.50.0.gh.tar.gz 44272291 BLAKE2B 01dbb95665649c693909f8ebeec0de60f7b219eedbfa320e509689e1bf03d6468a07811e4d68b083af12b79e74f2d60a47e018337952ffead96005c632e09c22 SHA512 34a17233ad4e8caf156993efb9d3860468ed96b71c319735019cfec3461938b035555136a7ed6ae3c529260e59b08c00d5522991391da2fd474bc33413814cea
+DIST selenium-selenium-4.51.0.gh.tar.gz 41939407 BLAKE2B 38338997d76397c468d13cda194b2b9c866a6914dfcb058fbdd6ae60977d748d95aa25aa615e236d672d9f0a97603144b7c1b98983a0b453a6f1854b836e866e SHA512 07d3fab4a98c8b816dd4263989d413caf5cc7365f243cb72369b486c27b3643dbaae882cb8948a075c5c7075c366fe9bb0589df7fbc45b82dfac5480e7cbfd15
diff --git a/dev-python/selenium/selenium-4.51.0.ebuild b/dev-python/selenium/selenium-4.51.0.ebuild
new file mode 100644
index 000000000000..6bc9836d962e
--- /dev/null
+++ b/dev-python/selenium/selenium-4.51.0.ebuild
@@ -0,0 +1,151 @@
+# 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
+ )
+
+ EPYTEST_IGNORE+=(
+ # throws some error that pytest doesn't even show
+ test/selenium/webdriver/firefox/ff_installs_addons_tests.py
+ test/selenium/webdriver/common/bidi/
+ )
+ 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]'
+ test/selenium/webdriver/common/_bidi/
+ 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/setuptools-scm/setuptools-scm-10.2.3.ebuild b/dev-python/setuptools-scm/setuptools-scm-10.2.3.ebuild
index 1670599d087d..2f227ea43d3e 100644
--- a/dev-python/setuptools-scm/setuptools-scm-10.2.3.ebuild
+++ b/dev-python/setuptools-scm/setuptools-scm-10.2.3.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
# there's an optional dep on rich for cute logs
RDEPEND="
diff --git a/dev-python/siphash24/siphash24-1.9.ebuild b/dev-python/siphash24/siphash24-1.9.ebuild
index fc1c4e88278f..1f0ed92a50dd 100644
--- a/dev-python/siphash24/siphash24-1.9.ebuild
+++ b/dev-python/siphash24/siphash24-1.9.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="|| ( Apache-2.0 LGPL-2.1+ )"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv"
+KEYWORDS="amd64 arm64 ~ppc64 ~riscv"
DEPEND="
dev-libs/c-siphash
diff --git a/dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-3.13.6.ebuild b/dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-3.13.6.ebuild
index 238733c448a1..fc631287b941 100644
--- a/dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-3.13.6.ebuild
+++ b/dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-3.13.6.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/sphinx-9.0.4[${PYTHON_USEDEP}]
diff --git a/dev-python/sqlglot/Manifest b/dev-python/sqlglot/Manifest
index bfe6512d0ee4..28bc0bd47881 100644
--- a/dev-python/sqlglot/Manifest
+++ b/dev-python/sqlglot/Manifest
@@ -1,2 +1,2 @@
-DIST sqlglot-30.20.0.tar.gz 6051245 BLAKE2B e0345dcae023a8e750095fda5d39d6f480d0c3ebfc2812f7eb68760759324575fdba51d5c7895cf31b985f248219850205892018ed8bc2c236e164c312f10a22 SHA512 8ad562c3c2895416ac604892386d1fa453a04de05553003d1cf94eba99b6dc5d739e5f0d7724bc6a0d72120a7ed1e0382bc6597e4ada5077048ecfae02d6d8dd
DIST sqlglot-30.21.0.tar.gz 6064227 BLAKE2B f68dfa2c03ed44f3cf12d5654ab9ba95ccc7ca188018ded9e1e2edbc1e73c4eb3a37041dd2bf35269e8f4127093ad26e31936423c75eb147de5e03fde60137af SHA512 3ec6790fed025087b14c885a29a5e84c998a33fcbe4676592ec920cac69d07e72ae3e0edf2c54405eb097a1569dbb70bf8ea068e9e680054d70622e782b97356
+DIST sqlglot-30.22.0.tar.gz 6088770 BLAKE2B bca7d80d5fde475419a4bae31dca2f1be4a4e5b90d2312d9c9b283bbb2927c013a0f849be17142860124b3f830e3adb4b7854c4a4a2ecb2ea1d961ed80145bd8 SHA512 40186858888fe174ec9371b78bd8f72fb04c371341f5ce746b10026feb59530c0477f7f9022edff37ef447e5cb9ef60cc9d20804aa69ddd8a88de9a68b8d0a0f
diff --git a/dev-python/sqlglot/sqlglot-30.20.0.ebuild b/dev-python/sqlglot/sqlglot-30.22.0.ebuild
index 063fa5096326..063fa5096326 100644
--- a/dev-python/sqlglot/sqlglot-30.20.0.ebuild
+++ b/dev-python/sqlglot/sqlglot-30.22.0.ebuild
diff --git a/dev-python/urwid/urwid-4.1.2.ebuild b/dev-python/urwid/urwid-4.1.2.ebuild
index aba0d14bbb3d..ad1835cc6ede 100644
--- a/dev-python/urwid/urwid-4.1.2.ebuild
+++ b/dev-python/urwid/urwid-4.1.2.ebuild
@@ -19,7 +19,7 @@ HOMEPAGE="
LICENSE="LGPL-2.1"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~sparc x86"
IUSE="examples"
RDEPEND="
diff --git a/dev-python/virtualenv/virtualenv-21.7.9.ebuild b/dev-python/virtualenv/virtualenv-21.7.9.ebuild
index b2791558c0f7..5875640262a6 100644
--- a/dev-python/virtualenv/virtualenv-21.7.9.ebuild
+++ b/dev-python/virtualenv/virtualenv-21.7.9.ebuild
@@ -19,7 +19,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/weasyprint/weasyprint-70.0.ebuild b/dev-python/weasyprint/weasyprint-70.0.ebuild
index 9452021038cd..d12a9fb4a045 100644
--- a/dev-python/weasyprint/weasyprint-70.0.ebuild
+++ b/dev-python/weasyprint/weasyprint-70.0.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~amd64 ~x86"
+KEYWORDS="amd64 ~x86"
RDEPEND="
>=dev-python/cffi-0.6:=[${PYTHON_USEDEP}]
diff --git a/dev-python/xvfbwrapper/Manifest b/dev-python/xvfbwrapper/Manifest
index 491bcc8c5fca..a8d342a382f8 100644
--- a/dev-python/xvfbwrapper/Manifest
+++ b/dev-python/xvfbwrapper/Manifest
@@ -2,3 +2,4 @@ DIST xvfbwrapper-0.2.29.tar.gz 12853 BLAKE2B d6d931a9742e29e34bc1506da2121c67eaf
DIST xvfbwrapper-0.2.32.tar.gz 13308 BLAKE2B 2bc2a5d5c681a7ff898c09803b1fd16c8550bbd0871705ac950c0daec64df58525dc249c3d475e28266d0ea3fdb6c0b5d0c681fb9b4bcecca8846dad7db162c1 SHA512 0c4cf35816e325de2688b3781d4a96518d97ac1c2654a5c422ac5787bf6306cfb3af2b57a526823715286c0cba0a0b3b02694c29c14995f5f5ff59a189b2e802
DIST xvfbwrapper-0.2.33.tar.gz 13488 BLAKE2B c0d8ab22efa27c0d20b6b77499e0f10a260b3ae1f533a714d633c9542439c550deb33d237a9a44efb2a94096702de28e07ae306c1ad238fb468ddb73e4116c8e SHA512 2898cd60db19823fd0cb482402e5dc243fa5188bdc7029e27d9b900251fb8822b9aa7b1a5e8e8649b10986c6f6a2bbaa3457064ad680e6a406283c42c55e779c
DIST xvfbwrapper-0.2.34.tar.gz 13264 BLAKE2B d1ec1808f0f6824397cff5d75ded199c9e578aa129593088a15a121a473afd4bafdc08edc44a49988f49f87534886a0b282bf257f9eba9c2412b3d0228b61704 SHA512 ae94b449e87b4136e058ad30dc7e02de5618cf1bffb7bf5cba1d2fc4e653c96c8d2626792860375e4c25c98c39233e2e3374aa5509e99868d7378259473fad3b
+DIST xvfbwrapper-0.2.35.tar.gz 13322 BLAKE2B 9b1593595540599da3f206560dbdbd045126e20d039d749d564197e4042d28378ef7be653a896d8930bb5915b7f8c94eff00f738d196e60ac6dcf4cf55779687 SHA512 36a3962f122ec1de2b44f488012d8999f3c0acbff6593c9f360940073c7c3cb79286612d4ee4b7b80add4e30d6f8fac444e9862abefd56823949f04f9c9a6e25
diff --git a/dev-python/xvfbwrapper/xvfbwrapper-0.2.35.ebuild b/dev-python/xvfbwrapper/xvfbwrapper-0.2.35.ebuild
new file mode 100644
index 000000000000..787856574075
--- /dev/null
+++ b/dev-python/xvfbwrapper/xvfbwrapper-0.2.35.ebuild
@@ -0,0 +1,31 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Python wrapper for running a display inside X virtual framebuffer"
+HOMEPAGE="
+ https://github.com/cgoldberg/xvfbwrapper/
+ https://pypi.org/project/xvfbwrapper/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ x11-base/xorg-server[xvfb]
+"
+BDEPEND="
+ test? (
+ dev-python/psutil[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest