summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/ast-serialize/ast-serialize-0.3.0.ebuild2
-rw-r--r--dev-python/aws-sam-translator/aws-sam-translator-1.109.0.ebuild2
-rw-r--r--dev-python/billiard/Manifest6
-rw-r--r--dev-python/billiard/billiard-3.6.4.0.ebuild36
-rw-r--r--dev-python/billiard/billiard-4.0.2.ebuild25
-rw-r--r--dev-python/billiard/billiard-4.2.4.ebuild24
-rw-r--r--dev-python/billiard/metadata.xml10
-rw-r--r--dev-python/boto3/Manifest1
-rw-r--r--dev-python/boto3/boto3-1.43.8.ebuild53
-rw-r--r--dev-python/botocore/Manifest1
-rw-r--r--dev-python/botocore/botocore-1.43.8.ebuild67
-rw-r--r--dev-python/cbor2/Manifest2
-rw-r--r--dev-python/cbor2/cbor2-6.1.1.ebuild72
-rw-r--r--dev-python/channels/Manifest6
-rw-r--r--dev-python/channels/channels-3.0.5.ebuild41
-rw-r--r--dev-python/channels/channels-4.2.2.ebuild34
-rw-r--r--dev-python/channels/channels-4.3.2.ebuild62
-rw-r--r--dev-python/channels/files/channels-4.3.2-fix-install.patch14
-rw-r--r--dev-python/channels/metadata.xml11
-rw-r--r--dev-python/cli-helpers/cli-helpers-2.14.0.ebuild2
-rw-r--r--dev-python/consonance/consonance-0.1.5-r1.ebuild2
-rw-r--r--dev-python/dbus-fast/Manifest1
-rw-r--r--dev-python/dbus-fast/dbus-fast-4.1.0.ebuild62
-rw-r--r--dev-python/faker/Manifest1
-rw-r--r--dev-python/faker/faker-40.18.0.ebuild41
-rw-r--r--dev-python/fonttools/Manifest1
-rw-r--r--dev-python/fonttools/fonttools-4.63.0.ebuild62
-rw-r--r--dev-python/google-api-python-client/google-api-python-client-2.194.0.ebuild2
-rw-r--r--dev-python/googleapis-common-protos/googleapis-common-protos-1.73.0.ebuild2
-rw-r--r--dev-python/langdetect/Manifest2
-rw-r--r--dev-python/langdetect/files/langdetect-1.0.9-explicit-config.patch13
-rw-r--r--dev-python/langdetect/langdetect-1.0.9.ebuild4
-rw-r--r--dev-python/langdetect/metadata.xml10
-rw-r--r--dev-python/lhafile/lhafile-0.3.1.ebuild2
-rw-r--r--dev-python/linode-metadata/Manifest2
-rw-r--r--dev-python/linode-metadata/linode-metadata-0.3.5.ebuild23
-rw-r--r--dev-python/magic-wormhole-mailbox-server/Manifest1
-rw-r--r--dev-python/magic-wormhole-mailbox-server/magic-wormhole-mailbox-server-0.7.0.ebuild40
-rw-r--r--dev-python/more-itertools/more-itertools-11.0.1.ebuild2
-rw-r--r--dev-python/mypy/mypy-2.1.0.ebuild2
-rw-r--r--dev-python/oslotest/oslotest-6.1.0.ebuild2
-rw-r--r--dev-python/peewee/peewee-4.0.4.ebuild2
-rw-r--r--dev-python/phonenumbers/phonenumbers-9.0.28.ebuild2
-rw-r--r--dev-python/pikepdf/Manifest2
-rw-r--r--dev-python/pikepdf/pikepdf-10.6.0.ebuild62
-rw-r--r--dev-python/pillow/pillow-12.2.0-r1.ebuild2
-rw-r--r--dev-python/platformdirs/platformdirs-4.9.6.ebuild2
-rw-r--r--dev-python/pydata-sphinx-theme/pydata-sphinx-theme-0.17.0.ebuild2
-rw-r--r--dev-python/pyfakefs/pyfakefs-6.2.0.ebuild2
-rw-r--r--dev-python/pyproject-fmt/pyproject-fmt-2.21.1.ebuild2
-rw-r--r--dev-python/pyside/Manifest1
-rw-r--r--dev-python/pyside/files/pyside-6.11.1-fix-llvm-version.patch16
-rw-r--r--dev-python/pyside/pyside-6.11.1.ebuild611
-rw-r--r--dev-python/pyspectrum2/pyspectrum2-0.2.0-r2.ebuild2
-rw-r--r--dev-python/pytest-jobserver/pytest-jobserver-1.1.0.ebuild2
-rw-r--r--dev-python/python-distutils-extra/Manifest1
-rw-r--r--dev-python/python-distutils-extra/python-distutils-extra-2.47.ebuild2
-rw-r--r--dev-python/python-distutils-extra/python-distutils-extra-3.3.ebuild42
-rw-r--r--dev-python/python-ldap/Manifest1
-rw-r--r--dev-python/python-ldap/python-ldap-3.4.6.ebuild81
-rw-r--r--dev-python/requests/Manifest2
-rw-r--r--dev-python/requests/requests-2.34.2.ebuild75
-rw-r--r--dev-python/sense-hat/sense-hat-2.6.0.ebuild2
-rw-r--r--dev-python/sphobjinv/sphobjinv-2.4.ebuild2
-rw-r--r--dev-python/testtools/testtools-2.9.0.ebuild2
-rw-r--r--dev-python/thrift/Manifest1
-rw-r--r--dev-python/thrift/thrift-0.23.0.ebuild38
-rw-r--r--dev-python/translate-toolkit/Manifest1
-rw-r--r--dev-python/translate-toolkit/translate-toolkit-3.19.10.ebuild131
-rw-r--r--dev-python/typeguard/Manifest2
-rw-r--r--dev-python/typeguard/typeguard-4.5.2.ebuild41
-rw-r--r--dev-python/uvicorn/Manifest2
-rw-r--r--dev-python/uvicorn/uvicorn-0.47.0.ebuild80
-rw-r--r--dev-python/xarray/xarray-2026.4.0.ebuild2
-rw-r--r--dev-python/zipp/zipp-3.23.1.ebuild2
75 files changed, 1813 insertions, 155 deletions
diff --git a/dev-python/ast-serialize/ast-serialize-0.3.0.ebuild b/dev-python/ast-serialize/ast-serialize-0.3.0.ebuild
index cfc6ce59ec9a..95129db8af74 100644
--- a/dev-python/ast-serialize/ast-serialize-0.3.0.ebuild
+++ b/dev-python/ast-serialize/ast-serialize-0.3.0.ebuild
@@ -121,7 +121,7 @@ LICENSE+="
Unicode-DFS-2016
"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~s390 ~sparc ~x86"
+KEYWORDS="~amd64 ~arm64 ~riscv ~s390 ~sparc ~x86"
EPYTEST_PLUGINS=()
distutils_enable_tests pytest
diff --git a/dev-python/aws-sam-translator/aws-sam-translator-1.109.0.ebuild b/dev-python/aws-sam-translator/aws-sam-translator-1.109.0.ebuild
index 5c14069dcbfe..4f77b82c4334 100644
--- a/dev-python/aws-sam-translator/aws-sam-translator-1.109.0.ebuild
+++ b/dev-python/aws-sam-translator/aws-sam-translator-1.109.0.ebuild
@@ -22,7 +22,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
+KEYWORDS="amd64 ~arm arm64 ~ppc64 ~riscv x86"
RDEPEND="
<dev-python/boto3-2[${PYTHON_USEDEP}]
diff --git a/dev-python/billiard/Manifest b/dev-python/billiard/Manifest
index 9318a0077575..5c6b11253b3d 100644
--- a/dev-python/billiard/Manifest
+++ b/dev-python/billiard/Manifest
@@ -1 +1,5 @@
-DIST billiard-4.0.2.gh.tar.gz 154301 BLAKE2B 5a4d1e185219886a419c82acb18e8f4adcba980d7732c7909a34f9e81af9936280ff1817ba92bef92333e7b57a4385339503e158d8766b8a8a9a1acd9de3202b SHA512 499ef834b98b2ce4a1afc4e069f43a96b9db8d7f52607fa5fe12298fc06faf25307a0208ac6df7643c0fff87deb5014d9bd1e375ab19731e98ac65ba3199fd4e
+DIST billiard-3.6.4.0.tar.gz 155303 BLAKE2B 93288ab56fedb9b86373318b339afc8c690ba5996d52b2e95197ffd8eda5bc86e9bb52c6364ade5dcda9e8afd52da0efebbc306facacb7c5383223bf2515e24e SHA512 9f2a44024e45c4e7667472a0a3ade7caae755ec7c163929433f818e4b87165218b9cc9545bdee2254e7159c206e525306e383d38906b00fd5428bd1616c39b8f
+DIST billiard-4.2.4.tar.gz 156537 BLAKE2B 62e7da57ed6ea27a6f89902e4f125c0c9288724703ea36654709cbf4cca875ff723edb2faca85f10e0f3f02fc2e55d609f3588f0908cef11c356faa6b9f587f5 SHA512 f05041661da59603da5bdcb3b696d75742d4cb7998f5bbf22474e001641f5be6cf693c3b329cda3e8983cc3fe56e5cc96a1d7880eefa5b2d68cd0d4ffe231626
+EBUILD billiard-3.6.4.0.ebuild 714 BLAKE2B e9f4ffbbb6e29bc07f04ff0cf7580832993530ff722d0a80063114eaea57df13ab225fca8a9c11a05bfeb35e2b338891b1fd62751d447fda9224e6cbe99fc43c SHA512 d64678a017351af1bd05e1d2d2979832e671b6dd90febb8bf85014631b521e25bd5003b0f3d340389b85abba8e22aa1827f23184ef1e20425af64a2474b80238
+EBUILD billiard-4.2.4.ebuild 475 BLAKE2B ee8b3702829fc279d8c82d1a6c0f5b4b1853b5dd2cef8a09c04316fcddbb9fd0c6cd5441e3583b3f9c834b9b2ce05111ded14243bb7a2f5daa7eaaba06a40acb SHA512 0f75807d2a219ff88525af4352293cf2307f528a87dc57b82fa7ab4b0955f6c15d45f6c8402bfc9c44b0aadc33320650f578363b15ff1ae2f8c4e255be45b55e
+MISC metadata.xml 445 BLAKE2B 6fd4606975ee6326c8b9f345dba131cfeda0dbfcb907818e5252378aa30fcf03eac31138c6fbc8b9de9d3e6ec3295c0950c97308801d0300d0371847d975be06 SHA512 8acd7e27fa3170c0af4b63e98642a4dbc445edcaa082b99745f6d251f8de3abf2ade36a36cb36c71f790a9fc85edf30118a5198717f3f3e44b1cc24b9f38caea
diff --git a/dev-python/billiard/billiard-3.6.4.0.ebuild b/dev-python/billiard/billiard-3.6.4.0.ebuild
new file mode 100644
index 000000000000..9387362274ae
--- /dev/null
+++ b/dev-python/billiard/billiard-3.6.4.0.ebuild
@@ -0,0 +1,36 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Python multiprocessing fork"
+HOMEPAGE="https://github.com/celery/billiard"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="amd64 x86"
+
+BDEPEND="
+ test? (
+ >=dev-python/psutil-5.9.0[${PYTHON_USEDEP}]
+ )"
+
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ # Remove Win32 test
+ rm t/unit/test_win32.py || die
+
+ # Get rid of dev-python/case dependency
+ sed \
+ -e 's/^from case \(.*\), skip$/from unittest.mock \1/' \
+ -e '/^@skip/d' \
+ -i t/unit/test_common.py
+
+ distutils-r1_python_prepare_all
+}
diff --git a/dev-python/billiard/billiard-4.0.2.ebuild b/dev-python/billiard/billiard-4.0.2.ebuild
deleted file mode 100644
index 744e1acb595e..000000000000
--- a/dev-python/billiard/billiard-4.0.2.ebuild
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{10..14} )
-DISTUTILS_USE_PEP517=setuptools
-inherit distutils-r1
-
-DESCRIPTION="Python multiprocessing fork"
-HOMEPAGE="
- https://pypi.org/project/billiard/
- https://github.com/celery/billiard
-"
-SRC_URI="https://github.com/celery/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.gh.tar.gz"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="~amd64 ~x86"
-
-BDEPEND="test? ( dev-python/psutil[${PYTHON_USEDEP}] )"
-
-distutils_enable_tests pytest
-
-distutils_enable_sphinx Doc
diff --git a/dev-python/billiard/billiard-4.2.4.ebuild b/dev-python/billiard/billiard-4.2.4.ebuild
new file mode 100644
index 000000000000..80c144ff8051
--- /dev/null
+++ b/dev-python/billiard/billiard-4.2.4.ebuild
@@ -0,0 +1,24 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Python multiprocessing fork"
+HOMEPAGE="https://github.com/celery/billiard"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="amd64 x86"
+
+BDEPEND="
+ test? (
+ >=dev-python/psutil-5.9.0[${PYTHON_USEDEP}]
+ )"
+
+distutils_enable_tests pytest
+distutils_enable_sphinx Doc
diff --git a/dev-python/billiard/metadata.xml b/dev-python/billiard/metadata.xml
index 736a1167c898..08db6659365d 100644
--- a/dev-python/billiard/metadata.xml
+++ b/dev-python/billiard/metadata.xml
@@ -1,6 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
<pkgmetadata>
-
- <origin>gentoo-guru-overlay</origin>
+ <maintainer type="person">
+ <email>marcin.deranek@slonko.net</email>
+ <name>Marcin Deranek</name>
+ </maintainer>
+ <upstream>
+ <bugs-to>https://github.com/celery/billiard/issues</bugs-to>
+ </upstream>
+ <origin>slonko-overlay</origin>
</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/boto3/Manifest b/dev-python/boto3/Manifest
index ebbdccbcf029..7e3e7a5b371a 100644
--- a/dev-python/boto3/Manifest
+++ b/dev-python/boto3/Manifest
@@ -4,3 +4,4 @@ DIST boto3-1.42.96.gh.tar.gz 1129293 BLAKE2B 186684ffe3d8e776e6f7462b4c7fdd996fe
DIST boto3-1.43.2.gh.tar.gz 1133320 BLAKE2B 21890b9f6629ec5af1da155d767a6117beada74550c292ba07d6900666bef39722740493e343a4770cf7f8adbb0030462d9e41366daee4c2bc17c391f14153f2 SHA512 b807ff1e6133285f6f64a83e328b7522f18d2de63838e9d6d70b982f44316b63aed90ddf3cbc12c6c32967c35807c0ef548d647588cd76c09a363e4de0c9b1e0
DIST boto3-1.43.6.gh.tar.gz 1137408 BLAKE2B 11a92806102c847f0072394f726a56c84f2378f9b75394d3b23f9357a35dd8ae2794149d7d20c0b4f0ba64a14e4234606ac49b846320e770b20eca51c9f53790 SHA512 e51787a036386af77a77f39ef1b857bf1fa6a6a106694ae0f6fd07097420fb1a01ad14037e55a8279c1aa8968c64becede89ef3ecbd5bd43c4af0f30f4e5cae5
DIST boto3-1.43.7.gh.tar.gz 1140164 BLAKE2B 76e36db7f01e937dcfa20d59e8fcae5a96631cbd78686c5dfb9f1cd505f00f39c055049038d8bc5f9744c0d10cbc8e000c4cb9443e38b546aac80648f520543c SHA512 7818d6774071a49874c4f553f86a9de399eb4a74e8a8f7f1aec55bf1bf14acf9058661e8e7b70ecbeb446a656501dc90c3ce3d23da048e91f2fba07740aa49f3
+DIST boto3-1.43.8.gh.tar.gz 1141468 BLAKE2B c8691e0827fa38f9b64f761411d7b8681dcbea1703c1da13337390259bf28265c1c74a0e29599460517023e1415a7c63088db5d3cf94c236fc221a5614b090f9 SHA512 74466359c15070ed42a0685f61fa3bd3543ceb6e1d12dcfcf0f40d292b508957e0c8cfe528112b76f3e1b14bfc9e2025611c9d3e5e67e302eb38734e192f78c1
diff --git a/dev-python/boto3/boto3-1.43.8.ebuild b/dev-python/boto3/boto3-1.43.8.ebuild
new file mode 100644
index 000000000000..11cadb4f704f
--- /dev/null
+++ b/dev-python/boto3/boto3-1.43.8.ebuild
@@ -0,0 +1,53 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="The AWS SDK for Python"
+HOMEPAGE="
+ https://github.com/boto/boto3/
+ https://pypi.org/project/boto3/
+"
+SRC_URI="
+ https://github.com/boto/boto3/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/botocore-${PV}[${PYTHON_USEDEP}]
+ >=dev-python/jmespath-0.7.1[${PYTHON_USEDEP}]
+ >=dev-python/s3transfer-0.17.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 8e5b2dc015d8..f8841361c627 100644
--- a/dev-python/botocore/Manifest
+++ b/dev-python/botocore/Manifest
@@ -4,3 +4,4 @@ DIST botocore-1.42.96.gh.tar.gz 16190988 BLAKE2B c63dbf335904dd9fd56d2881428fab2
DIST botocore-1.43.2.gh.tar.gz 16233880 BLAKE2B f35f27344dd853b1c6e7c1049d501f034c378149ccff13ebffafa054a1f76d56f54104046804e6957f533c0db7aa49c4249af8820ad9d382e522b1c1149de65d SHA512 72cc8eaf651b0634af1d023098994db3dc8d879f8c685e75c226935010d5dee08da00577a5192d68bb0c23c928efc9573820c74f468e79594ddc1f6e96e89e61
DIST botocore-1.43.6.gh.tar.gz 16273836 BLAKE2B 42049eda3d77066f53733fb4a7df1cbc4e0c7b5e7b2f6398ded8917935935ec7fcae1dd029156eba1eaaf16a73bea6ffe2983b39036552a34b17934985f8a002 SHA512 771d17792bf1c8e75028dcd0fb618ee52fb7c0a57fe2560f564d136cfe17ecdcb1f7185486a10ef60ce80ceb0d446c518e3b2e93facf52e736030b764e8c254b
DIST botocore-1.43.7.gh.tar.gz 16290338 BLAKE2B 0d002496b33db47ddfde7ddaf11dca94dbb6f448d0be1a1cb71af1adeaa91e9a9d21fb8e74cfe9f3810174bc9daab01fa7ade8581dd19317bb6d65189e5f6f75 SHA512 f76a811a8f0f3e1390e20350296589c8cc27850a26a647339e1125c259bca9c737862e0f113be671515cf0f0412999d75a8c7c257f65364ad61ed18d56d9f4bb
+DIST botocore-1.43.8.gh.tar.gz 16298702 BLAKE2B 034272f776c1c74b137cb437378d627390688c55f1ac2ba24922c91ce827b03323cfdaf73a612a7cbf0c0bec165305ce88d798bc54e22986b9dd9262274b3dca SHA512 1c35c1c325bef414ab2ae999c0d9c4a9d504ac300ee2cd16df95377acd7a7447ca3845bef844fabd29f35d85964d1dd7865a14df0ad811ba2b51e9994bf878d1
diff --git a/dev-python/botocore/botocore-1.43.8.ebuild b/dev-python/botocore/botocore-1.43.8.ebuild
new file mode 100644
index 000000000000..f6ce0d9ed8d5
--- /dev/null
+++ b/dev-python/botocore/botocore-1.43.8.ebuild
@@ -0,0 +1,67 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="Low-level, data-driven core of boto 3"
+HOMEPAGE="
+ https://github.com/boto/botocore/
+ https://pypi.org/project/botocore/
+"
+SRC_URI="
+ https://github.com/boto/botocore/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
+
+RDEPEND="
+ <dev-python/jmespath-2[${PYTHON_USEDEP}]
+ dev-python/python-dateutil[${PYTHON_USEDEP}]
+ >=dev-python/urllib3-1.25.4[${PYTHON_USEDEP}]
+"
+# unbundled packages
+RDEPEND+="
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/six[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/jsonschema[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ # unpin deps
+ sed -i -e "s:>=.*':':" setup.py || die
+
+ # unbundle deps
+ rm -r botocore/vendored || die
+ find -name '*.py' -exec sed -i \
+ -e 's:from botocore[.]vendored import:import:' \
+ -e 's:from botocore[.]vendored[.]:from :' \
+ {} + || die
+
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # rely on bundled six
+ tests/functional/test_six_imports.py::test_no_bare_six_imports
+ tests/functional/test_six_threading.py::test_six_thread_safety
+ )
+
+ epytest tests/{functional,unit}
+}
diff --git a/dev-python/cbor2/Manifest b/dev-python/cbor2/Manifest
index 9cc43b3fb0ca..db73111ea09a 100644
--- a/dev-python/cbor2/Manifest
+++ b/dev-python/cbor2/Manifest
@@ -6,6 +6,8 @@ DIST cbor2-6.0.1.tar.gz 84191 BLAKE2B 0f8522a2462d5362c8d19900d1973386060f08f3ff
DIST cbor2-6.0.1.tar.gz.provenance 9155 BLAKE2B fab57134c5eed10943d62ba66db393e448a1ac36e1f6b71e1e4ca63f820ffd3ec188228503815faef8f636e6c1fdee8ca1abeb221d4902ee6102ce9182e303d7 SHA512 ac48dcb4e5e6dcbdf1044a669adc84f7833f75262266c20a1665d7a895221562080db61404eb7407c63dc57939a2bf97c34c31fb4264b6a5c720557f841e2957
DIST cbor2-6.1.0.tar.gz 85870 BLAKE2B eb2d6b699d9294242acd1c626fb7e5c9f5dcb67d19ddd19fb58add69d0db56bac16162304bb00e26748a6171510a7ec99bb8d2c1d3ad159f19d405b6d28baa99 SHA512 e8ed4d21518b45f47e02233fe9d835c834aad6c4c6eb675f2d3fc66d90810e36f5673783b428fdabe79ced863a79698cbf50b088443a3315b411fd8e8d572a08
DIST cbor2-6.1.0.tar.gz.provenance 9625 BLAKE2B 106dc7b9667c195bd6934ee6c824c46f8290608a1e212d533c4dccc5e25c531a47caf1cd3babb8d093588a5118e5c72c5141df8037a92020738053dde650ffd2 SHA512 62e3cf64344be19ff1192cc748c28f276c1b02c2bd4bbe92b10636c752b68b453ec0e018e8a940bd9c1b2d36278e8bee158373a495498ab8c75195d698a16878
+DIST cbor2-6.1.1.tar.gz 86297 BLAKE2B 433a3b0d194eeca03158281216395d523d88155ecc01e415875c35fdb6b0c4900acdb2f5bdbe71cb792f1059743d7fc6040c9b190be30779dcf1496589e45f8c SHA512 0066671ae72229e415f857432cb352a5e6895aa0502e843e8442c93f3135ecd6acc2bf73172298b6e7714691f1965c5ac85232648588cc95971a75b035f84953
+DIST cbor2-6.1.1.tar.gz.provenance 9296 BLAKE2B c66d939f064649f7eae974870e11fefc00f577fd867b5c4774c8828ae21a982388f2aee60a6a227b14289b76ac50fcf93e6b6d1c0590df66eec86fa409811da2 SHA512 16bbd212dd36330380e3cd3e09cf70a4d6df9cf8704de8b0d5f2d3b6e46f649d4559b13fe465418469bae4b0af1464099fb0904fab24e78118bfc2ed62b2ca6e
DIST cfg-if-1.0.4.crate 9360 BLAKE2B beadbfb273ee97cbb6e3740891fbace57511399ad203459b66b397587d794677a9515cde4e9ec4320c3795518bf1551d72b9a889f8ac4b225168f493288b7c19 SHA512 176e04df7ba783b7143bb84397b777f5c5a1305c08a5c3a218d4a66830620be89ed68992ba27686165bcd3fb2f34b2daf80b2a1d4b481ecc267c988e84d28e9d
DIST crunchy-0.2.4.crate 3887 BLAKE2B f957597c82795eb10d43a6a98f7575e19b9484dcdf9fe35ac79ce406035d5d467021a0c563dcfe8f717e800b6bf532fcd72cc11be47e084405e16219b88e67b1 SHA512 72ecadb6c8558dcbf3cbc3a34bcefbf292e42999e7af6f59b9804e1233d87f6f65802b157f346a64cd7d2dc1a92564d5481211b081ba5ea170ecdb06dff9dd0b
DIST half-2.7.1.crate 61040 BLAKE2B bd78abf71b1b0ae219d2293f8edd5084fa630150016c95786d0af38a898d2775ff73ce848c4b2bbf02c2ea2dc8a610b2e045df78892d2b1de28981e8033625a7 SHA512 f47cc8bfb4c754a8585d4e8eca1a35039dc0879e87e59acb72e91bf2d33eca8c4f8dd17b3a56e8953bcba62cb08122120866e9d4b3ab9f008847d86a5f81716d
diff --git a/dev-python/cbor2/cbor2-6.1.1.ebuild b/dev-python/cbor2/cbor2-6.1.1.ebuild
new file mode 100644
index 000000000000..41ecb8352e7f
--- /dev/null
+++ b/dev-python/cbor2/cbor2-6.1.1.ebuild
@@ -0,0 +1,72 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYPI_VERIFY_REPO=https://github.com/agronholm/cbor2
+PYTHON_COMPAT=( python3_{10..14} )
+
+RUST_MIN_VER="1.85.0"
+CRATES="
+ autocfg@1.5.0
+ bigdecimal@0.4.10
+ cfg-if@1.0.4
+ crunchy@0.2.4
+ half@2.7.1
+ heck@0.5.0
+ libc@0.2.182
+ libm@0.2.16
+ num-bigint@0.4.6
+ num-integer@0.1.46
+ num-traits@0.2.19
+ once_cell@1.21.3
+ portable-atomic@1.13.1
+ proc-macro2@1.0.106
+ pyo3-build-config@0.28.2
+ pyo3-ffi@0.28.2
+ pyo3-macros-backend@0.28.2
+ pyo3-macros@0.28.2
+ pyo3@0.28.2
+ quote@1.0.44
+ syn@2.0.117
+ target-lexicon@0.13.5
+ unicode-ident@1.0.24
+ zerocopy-derive@0.8.40
+ zerocopy@0.8.40
+"
+
+inherit cargo distutils-r1 pypi
+
+DESCRIPTION="CBOR (de)serializer with extensive tag support"
+HOMEPAGE="
+ https://github.com/agronholm/cbor2/
+ https://pypi.org/project/cbor2/
+"
+SRC_URI+="
+ ${CARGO_CRATE_URIS}
+"
+
+LICENSE="MIT"
+# Dependent crate licenses
+LICENSE+=" Apache-2.0-with-LLVM-exceptions MIT Unicode-3.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+BDEPEND="
+ >=dev-python/setuptools-61[${PYTHON_USEDEP}]
+ dev-python/setuptools-rust[${PYTHON_USEDEP}]
+ >=dev-python/setuptools-scm-6.4[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=( hypothesis )
+distutils_enable_tests pytest
+
+# Files built without CFLAGS/LDFLAGS, acceptable for rust
+QA_FLAGS_IGNORED="usr/lib.*/py.*/site-packages/cbor2/_cbor2.*.so"
+
+src_unpack() {
+ pypi_src_unpack
+ cargo_src_unpack
+}
diff --git a/dev-python/channels/Manifest b/dev-python/channels/Manifest
index 93bbf2713782..b58c0c2009cc 100644
--- a/dev-python/channels/Manifest
+++ b/dev-python/channels/Manifest
@@ -1 +1,5 @@
-DIST channels-4.3.2.gh.tar.gz 206077 BLAKE2B c0913d67dc74bc728dd828584cf803b4ad175bab717de71ccf1e1c5b6aaca296fd15d011deb07b2876e63b7daaefab5e5ee24c323e907b3c563f5358759f14b8 SHA512 29d9c91aca721fad44143978863c45812bf596bb65cf99084803f78d85c664d5cc7ca1015df151cdc27754b822c9cfd18102989b6e5f59bc50257f6c9d8b8b3e
+DIST channels-3.0.5.gh.tar.gz 200118 BLAKE2B 7a7653f986face1e87369917317db013e5c9fc912c6e2d7c737054ffef167bd01feb48f7e2d00d0d331e7a16093478e5416645717aed59e46dfec8f9b3641a2e SHA512 b12d1aec9602b702b5a097e9ca52dccad49940f82fcbe5594890c9bd1f1879a2fcf0f29630ca53e4972a26853df8f71d07d7b2cccd876abbf2417a76dee281bf
+DIST channels-4.2.2.gh.tar.gz 197010 BLAKE2B 321bf62c68038ce511145acd43c036dd298d58056f20ab2d676c3e3a8d6360a86a4f07c8f9ed6c123f888c012d69da22cfae4fb477dd5422cf326bf2de6a4c8f SHA512 8f7c8f27981988fed8ec254db91ce0a130b24842949ef94cc9ae21b4a259a7003654ec86c4e18aa81924e26d9b81b6a2aafaac404e490cbdda6b4a100476917a
+EBUILD channels-3.0.5.ebuild 936 BLAKE2B 788d0e9a2822dd9d0ed2d1d1a62135aeb5f244710b66f7591962518a5204cde5b8e779280783dd1d1a1b1a3fa9b272a0eb457f1d88d62c8ecefc8f67384929ef SHA512 89003fa68c7ab1cdd1a329f4389ba6fe28f491217a70c03b2979a992b450d8aa1a02f024f073ad5fc0aa1d093d81c6c8b1adaa45bdc9a179f5bd1607d85c13ef
+EBUILD channels-4.2.2.ebuild 829 BLAKE2B e5946c4a0eaf9fb3ffa2092a3d5d49d3d6ee16f151483fa2b716c8bab3350eca5e330a22822f881421d8882ffb970f4c56154c613477d094319e46addf1a5537 SHA512 84ce30d87a654c1a89ac299fb0f6447ca9c736e4b63497d83fc2687384e9cbe8094ba8f5021a19f726f9bae97c6b6d11eddef6a9ee5c275efe827bf95d3848ec
+MISC metadata.xml 445 BLAKE2B b4c0a41d6caadfbc53cbba3c41f8b7689a286b3f8d285c37a88a1f79d8dc350b82fea255048c022b92091a1e0cc67bf19645d6c32183b82a6dd49cccadf5078f SHA512 380c8b98efe8d9a2513c51899b7de90b115d4a51f104f46b552ff8929c322850e511e245a2ba0e976213416ae7241a17292ca98248caacfc891fcdcf5cea5d44
diff --git a/dev-python/channels/channels-3.0.5.ebuild b/dev-python/channels/channels-3.0.5.ebuild
new file mode 100644
index 000000000000..03a4923889fe
--- /dev/null
+++ b/dev-python/channels/channels-3.0.5.ebuild
@@ -0,0 +1,41 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="Extends Django abilities beyond HTTP protocol"
+HOMEPAGE="https://github.com/django/channels"
+SRC_URI="https://github.com/django/${PN}/archive/${PV}.tar.gz -> ${P}.gh.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64"
+
+DEPEND="
+ >=dev-python/django-2.2[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/async-timeout[${PYTHON_USEDEP}]
+ >=dev-python/daphne-3.0[${PYTHON_USEDEP}]
+ <dev-python/daphne-4.0[${PYTHON_USEDEP}]
+ dev-python/pytest-asyncio[${PYTHON_USEDEP}]
+ dev-python/pytest-django[${PYTHON_USEDEP}]
+ )
+"
+
+DOCS=( README.rst )
+
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ # https://github.com/django/channels/issues/1915
+ echo 'asyncio_mode = auto' >> setup.cfg
+
+ distutils-r1_python_prepare_all
+}
diff --git a/dev-python/channels/channels-4.2.2.ebuild b/dev-python/channels/channels-4.2.2.ebuild
new file mode 100644
index 000000000000..710613a7cbd1
--- /dev/null
+++ b/dev-python/channels/channels-4.2.2.ebuild
@@ -0,0 +1,34 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="Extends Django abilities beyond HTTP protocol"
+HOMEPAGE="https://github.com/django/channels"
+SRC_URI="https://github.com/django/${PN}/archive/${PV}.tar.gz -> ${P}.gh.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64"
+
+DEPEND="
+ >=dev-python/asgiref-3.5.0[${PYTHON_USEDEP}]
+ >=dev-python/django-4.2[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/async-timeout[${PYTHON_USEDEP}]
+ >=dev-python/daphne-4.0.0[${PYTHON_USEDEP}]
+ dev-python/pytest-asyncio[${PYTHON_USEDEP}]
+ dev-python/pytest-django[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+distutils_enable_sphinx docs \
+ dev-python/sphinx-rtd-theme
diff --git a/dev-python/channels/channels-4.3.2.ebuild b/dev-python/channels/channels-4.3.2.ebuild
deleted file mode 100644
index ffafd1ece52b..000000000000
--- a/dev-python/channels/channels-4.3.2.ebuild
+++ /dev/null
@@ -1,62 +0,0 @@
-# Copyright 2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{10..14} )
-
-inherit distutils-r1 #pypi
-
-DESCRIPTION="Brings async, event-driven capabilities to Django"
-HOMEPAGE="
- https://channels.readthedocs.io/
- https://github.com/django/channels/
- https://pypi.org/project/channels/
-"
-# no tests in sdist
-SRC_URI="
- https://github.com/django/channels/archive/refs/tags/${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="~amd64"
-
-RDEPEND="
- <dev-python/asgiref-4[${PYTHON_USEDEP}]
- >=dev-python/asgiref-3.9.0[${PYTHON_USEDEP}]
- >=dev-python/django-4.2[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- dev-python/async-timeout[${PYTHON_USEDEP}]
- dev-python/selenium[${PYTHON_USEDEP}]
- )
-"
-
-EPYTEST_IGNORE=(
- # avoid daphne as it requires autobahn
- tests/sample_project/tests/test_selenium.py
- tests/security/test_websocket.py
- tests/test_database.py
- tests/test_generic_http.py
- tests/test_generic_websocket.py
- tests/test_http.py
- tests/test_testing.py
-)
-
-EPYTEST_PLUGINS=( pytest-django pytest-asyncio )
-distutils_enable_tests pytest
-
-PATCHES=(
- "${FILESDIR}"/channels-4.3.2-fix-install.patch
-)
-
-python_prepare_all() {
- # avoid daphne as it requires autobahn
- sed -e '/"daphne"/d' -i tests/sample_project/config/settings.py || die
-
- distutils-r1_python_prepare_all
-}
diff --git a/dev-python/channels/files/channels-4.3.2-fix-install.patch b/dev-python/channels/files/channels-4.3.2-fix-install.patch
deleted file mode 100644
index 18eca8f75445..000000000000
--- a/dev-python/channels/files/channels-4.3.2-fix-install.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff --git a/setup.cfg b/setup.cfg
-index 742e1f6..43d8c0d 100644
---- a/setup.cfg
-+++ b/setup.cfg
-@@ -52,7 +52,7 @@ types =
-
- [options.packages.find]
- exclude =
-- tests
-+ tests*
-
- [flake8]
- exclude = venv/*,tox/*,docs/*,testproject/*,build/*
-
diff --git a/dev-python/channels/metadata.xml b/dev-python/channels/metadata.xml
index 0dec5a678a5f..7093cae71294 100644
--- a/dev-python/channels/metadata.xml
+++ b/dev-python/channels/metadata.xml
@@ -2,10 +2,11 @@
<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
- <email>negril.nx+gentoo@gmail.com</email>
- <name>Paul Zander</name>
+ <email>marcin.deranek@slonko.net</email>
+ <name>Marcin Deranek</name>
</maintainer>
-
- <origin>gentoo-guru-overlay</origin>
- <stabilize-allarches/>
+ <upstream>
+ <bugs-to>https://github.com/django/channels/issues</bugs-to>
+ </upstream>
+ <origin>slonko-overlay</origin>
</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/cli-helpers/cli-helpers-2.14.0.ebuild b/dev-python/cli-helpers/cli-helpers-2.14.0.ebuild
index fb66eb78de98..6f03352e2759 100644
--- a/dev-python/cli-helpers/cli-helpers-2.14.0.ebuild
+++ b/dev-python/cli-helpers/cli-helpers-2.14.0.ebuild
@@ -23,7 +23,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~x86"
+KEYWORDS="amd64 ~arm64 x86"
RDEPEND="
>=dev-python/configobj-5.0.5[${PYTHON_USEDEP}]
diff --git a/dev-python/consonance/consonance-0.1.5-r1.ebuild b/dev-python/consonance/consonance-0.1.5-r1.ebuild
index aee2336f47d5..f4c83c66bfb7 100644
--- a/dev-python/consonance/consonance-0.1.5-r1.ebuild
+++ b/dev-python/consonance/consonance-0.1.5-r1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
diff --git a/dev-python/dbus-fast/Manifest b/dev-python/dbus-fast/Manifest
index 266633a3d49a..e1b23fd76efb 100644
--- a/dev-python/dbus-fast/Manifest
+++ b/dev-python/dbus-fast/Manifest
@@ -1 +1,2 @@
DIST dbus-fast-4.0.4.gh.tar.gz 209703 BLAKE2B b59bded537f19d90edcda03a3469e430a2fe4dfe2b9bea4a8ab0db825a7a419fc56410e2c38267f88aae1d9e1810e87875f56f70c29f497e29dff9d347cea44a SHA512 622e4030a97b6684b3d0e0848fd2d6e5029d3082ab009dd1a2802bb8dce1afb37722aeb9b2626f0c22f3f7c888571b5ccf1f39d24e0f3bf06f4490012bee0136
+DIST dbus-fast-4.1.0.gh.tar.gz 212685 BLAKE2B 2d2b275c049223657db7ddf910ed31b55c6f8014e77df2d8fb037a97dba77f0889a6fce05a2416c252fe003cf6151defb38ac086cab8cb86e0a5703463f87a83 SHA512 85e0492589181313ca4342c870613343b348e357c1e408ef387bc490cd2d11a4a97df3cf717321727b6e8c66fe97da4fb63f88ff4579d562aa2b9e343e647dbb
diff --git a/dev-python/dbus-fast/dbus-fast-4.1.0.ebuild b/dev-python/dbus-fast/dbus-fast-4.1.0.ebuild
new file mode 100644
index 000000000000..99ccc67c3c1c
--- /dev/null
+++ b/dev-python/dbus-fast/dbus-fast-4.1.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_EXT=1
+DISTUTILS_USE_PEP517=poetry
+# TODO: freethreading compatible
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 virtualx
+
+DESCRIPTION="A faster version of dbus-next"
+HOMEPAGE="
+ https://github.com/bluetooth-devices/dbus-fast/
+ https://pypi.org/project/dbus-fast/
+"
+SRC_URI="
+ https://github.com/Bluetooth-Devices/dbus-fast/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~riscv"
+
+BDEPEND="
+ >=dev-python/cython-3[${PYTHON_USEDEP}]
+ >=dev-python/setuptools-65.4.1[${PYTHON_USEDEP}]
+ test? (
+ >=dev-python/pycairo-1.21.0[${PYTHON_USEDEP}]
+ >=dev-python/pygobject-3.50[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-{asyncio,timeout} )
+distutils_enable_tests pytest
+
+export REQUIRE_CYTHON=1
+
+src_test() {
+ local dbus_params=(
+ $(dbus-daemon --session --print-address --fork --print-pid)
+ )
+ local -x DBUS_SESSION_BUS_ADDRESS=${dbus_params[0]}
+
+ virtx distutils-r1_src_test
+
+ kill "${dbus_params[1]}" || die
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # interface not found on this object: org.freedesktop.DBus.Debug.Stats
+ tests/client/test_signals.py::test_signals
+ )
+ local EPYTEST_IGNORE=(
+ tests/benchmarks
+ )
+
+ nonfatal epytest -o addopts= || die
+}
diff --git a/dev-python/faker/Manifest b/dev-python/faker/Manifest
index 8a1278557792..235adc8f1491 100644
--- a/dev-python/faker/Manifest
+++ b/dev-python/faker/Manifest
@@ -1,2 +1,3 @@
DIST faker-40.13.0.tar.gz 1962043 BLAKE2B 31cf6db337625a4ac077e62724b63995d8c9776cb0501082696909a1f1fe8b034635a0677ce52f77d8d280fe6693425d79d0da00d504cd1aeb94ae3f7be4d455 SHA512 8a150043d57ebf0edd556124d960215f3719904295ac42707e8f5c7cc55e8b3a7fd36d2f744681fdaa1c841c0dfbdace6dafdc6065a5098aaf1506a6e2f5d13e
DIST faker-40.14.1.tar.gz 1962264 BLAKE2B edfedc3d138937c87dfe27e3249a823053caac7befa2dc2d534b98dd0d20aa3a91965b056cd3a0b63afb976c9b6cbaea024801dc9ae0227d54897fe6ff463d88 SHA512 d97d1789c9bafa8c6e56af535db0b4af3bf3fd2ff251820b4e6bbca443ef37a243ae785ec8051a0597df6ca91c78349a23b312674ba6d6d315e8739f37d1277f
+DIST faker-40.18.0.tar.gz 1968243 BLAKE2B 931d7835aada7cad4b16a85af8b04b1284393210bd7faeaa07d9b54aae93318690e375d8f1e6729260bb3e02348ed3ed68cf8c63be7711d81900e290bd2c14c4 SHA512 eeb812137bc60176c34b448b902b5621c3c01a9036b4d0e83887741d32586458ddd0b8bfd66fb1ffc0f2defe056813352129d26fa31387c63bdd34dbdf42f1bc
diff --git a/dev-python/faker/faker-40.18.0.ebuild b/dev-python/faker/faker-40.18.0.ebuild
new file mode 100644
index 000000000000..22e0ad6d9c1f
--- /dev/null
+++ b/dev-python/faker/faker-40.18.0.ebuild
@@ -0,0 +1,41 @@
+# 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_{10..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 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ !dev-ruby/faker
+"
+BDEPEND="
+ test? (
+ dev-python/freezegun[${PYTHON_USEDEP}]
+ dev-python/pillow[${PYTHON_USEDEP},tiff]
+ 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/fonttools/Manifest b/dev-python/fonttools/Manifest
index bdf58e60ae6c..ca00ca27133e 100644
--- a/dev-python/fonttools/Manifest
+++ b/dev-python/fonttools/Manifest
@@ -1 +1,2 @@
DIST fonttools-4.62.1.gh.tar.gz 4012183 BLAKE2B a0ce63a4ee0a77ec52b00da7b2772f0e4916a41c58c9ce9eaa43c1120cace352ed244219dd0f9657ae7142c4a9c4d25d9c42746e941896ab10223c023820d9ae SHA512 6cd85502ea215c8d76918f82a633eae5e8961ad529f137e1064ab321c75167d86764198e9ae7bcdcbe6aed07ea6353a8e8ce318df58193afd2564a6f1d849b49
+DIST fonttools-4.63.0.gh.tar.gz 4031830 BLAKE2B 8cdb1d9018a44898fd792ee538c88443ecda34d7c896d280578d96b80c2f80064ad057b1e4bcb4a865dd706eb3605e86768eb141317fdcf5947a99fc873a7421 SHA512 a2d8df4fd11f36c45e838953d6c8bf1e25999382422d5fc3fe3418c985c06f30b52073f738278cb2a7b19da6e227e5ae709f016661a17e7ae96023b7a762365e
diff --git a/dev-python/fonttools/fonttools-4.63.0.ebuild b/dev-python/fonttools/fonttools-4.63.0.ebuild
new file mode 100644
index 000000000000..4ca323d0b781
--- /dev/null
+++ b/dev-python/fonttools/fonttools-4.63.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_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..14} )
+PYTHON_REQ_USE="xml(+)"
+
+inherit distutils-r1 virtualx
+
+DESCRIPTION="Library for manipulating TrueType, OpenType, AFM and Type1 fonts"
+HOMEPAGE="
+ https://github.com/fonttools/fonttools/
+ https://pypi.org/project/fonttools/
+"
+SRC_URI="
+ https://github.com/fonttools/fonttools/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="+native-extensions"
+
+BDEPEND="
+ native-extensions? (
+ $(python_gen_cond_dep '
+ dev-python/cython[${PYTHON_USEDEP}]
+ ' 'python*')
+ )
+ test? (
+ dev-python/brotlicffi[${PYTHON_USEDEP}]
+ dev-python/munkres[${PYTHON_USEDEP}]
+ app-arch/zopfli
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-rerunfailures )
+# woff2 tests are extremely flaky
+EPYTEST_RERUNS=20
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_compile() {
+ local -x FONTTOOLS_WITH_CYTHON=$(usex native-extensions)
+ [[ ${EPYTHON} == pypy3 ]] && FONTTOOLS_WITH_CYTHON=0
+ distutils-r1_python_compile
+}
+
+src_test() {
+ # virtualx used when matplotlib is installed causing plot module tests to run
+ virtx distutils-r1_src_test
+}
+
+python_test() {
+ # nonfatal for virtx
+ nonfatal epytest Tests fontTools ||
+ die -n "Tests failed with ${EPYTHON}"
+}
diff --git a/dev-python/google-api-python-client/google-api-python-client-2.194.0.ebuild b/dev-python/google-api-python-client/google-api-python-client-2.194.0.ebuild
index 16e1402184da..557dbeae96ec 100644
--- a/dev-python/google-api-python-client/google-api-python-client-2.194.0.ebuild
+++ b/dev-python/google-api-python-client/google-api-python-client-2.194.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~x86"
+KEYWORDS="amd64 arm64 x86"
RDEPEND="
>=dev-python/httplib2-0.15[${PYTHON_USEDEP}]
diff --git a/dev-python/googleapis-common-protos/googleapis-common-protos-1.73.0.ebuild b/dev-python/googleapis-common-protos/googleapis-common-protos-1.73.0.ebuild
index 41db217b68fa..499c1e6905ba 100644
--- a/dev-python/googleapis-common-protos/googleapis-common-protos-1.73.0.ebuild
+++ b/dev-python/googleapis-common-protos/googleapis-common-protos-1.73.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~x86"
+KEYWORDS="amd64 ~arm arm64 ~ppc ~ppc64 x86"
RDEPEND="
<dev-python/protobuf-7[${PYTHON_USEDEP}]
diff --git a/dev-python/langdetect/Manifest b/dev-python/langdetect/Manifest
index a11d7c268c91..d12ab8aeaca8 100644
--- a/dev-python/langdetect/Manifest
+++ b/dev-python/langdetect/Manifest
@@ -1 +1,3 @@
DIST langdetect-1.0.9.tar.gz 981474 BLAKE2B ea8a9c3f16a2987c080742473bff4f2c1503f53fb3c2b40b0b1d6212bb6133ea22dce7864ffcfb8968c3a46b157d45cb3e2cf6f84bdbed0266cc716a853b032c SHA512 7558d674c47b080c79e43a00a25d2c7f77188cf60bea2cecb3bebb803d75e1aa42b43c74bd26ea1b541f4cb927421908882cbec01a91f0913984217e71ccc8db
+EBUILD langdetect-1.0.9.ebuild 494 BLAKE2B 9cd8a2a93a8d45bf51fe2324402b175d641762ea591fcb99459427f977a95eccffa6ca4777ca4df39814eea6eac62711567faa654456d32f79023a4685804504 SHA512 d973b85ba1a44389a4275f02a779a93a005f7c2e096467b94b072862e4984d5b42cf33f9821ac68aa5b85b12c98983a90b96049989d8c84497969174b6bb838e
+MISC metadata.xml 457 BLAKE2B 630128a3e982b6d60cc7b9f74c79fcb5ee47a71a02c73a50af9da8cedb6fad8e20a7f74b881e5b25c6483b92c9edbd56552cd38b2d9cbfa8b3eb4530facea969 SHA512 674f4f5cd809c6c77bc14e0f5687fa972bef14bdfa0b3343c5d66b7163eef1906eb87d060c8288732f825de71dce291ad0b841a5f2f0dd230f957b5687e45d45
diff --git a/dev-python/langdetect/files/langdetect-1.0.9-explicit-config.patch b/dev-python/langdetect/files/langdetect-1.0.9-explicit-config.patch
deleted file mode 100644
index 637368d2f237..000000000000
--- a/dev-python/langdetect/files/langdetect-1.0.9-explicit-config.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Fix "Package 'langdetect.profiles' is absent from the `packages` configuration."
-
---- a/setup.py
-+++ b/setup.py
-@@ -18,7 +18,7 @@ setup(
- author_email='michal.danilak@gmail.com',
- url='https://github.com/Mimino666/langdetect',
- keywords='language detection library',
-- packages=['langdetect', 'langdetect.utils', 'langdetect.tests'],
-+ packages=['langdetect', 'langdetect.utils', 'langdetect.tests', 'langdetect.profiles'],
- include_package_data=True,
- install_requires=['six'],
- license='MIT',
diff --git a/dev-python/langdetect/langdetect-1.0.9.ebuild b/dev-python/langdetect/langdetect-1.0.9.ebuild
index 7100f5f39dd8..271137de443d 100644
--- a/dev-python/langdetect/langdetect-1.0.9.ebuild
+++ b/dev-python/langdetect/langdetect-1.0.9.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2022-2025 Gentoo Authors
+# Copyright 2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -19,6 +19,4 @@ KEYWORDS="~amd64"
RDEPEND="dev-python/six[${PYTHON_USEDEP}]"
-PATCHES=( "${FILESDIR}/${P}-explicit-config.patch" )
-
distutils_enable_tests unittest
diff --git a/dev-python/langdetect/metadata.xml b/dev-python/langdetect/metadata.xml
index c0f74ac187e2..020e07f2a3dd 100644
--- a/dev-python/langdetect/metadata.xml
+++ b/dev-python/langdetect/metadata.xml
@@ -2,9 +2,11 @@
<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
- <email>pastalian46@gmail.com</email>
- <name>Takuya Wakazono</name>
+ <email>marcin.deranek@slonko.net</email>
+ <name>Marcin Deranek</name>
</maintainer>
-
- <origin>gentoo-guru-overlay</origin>
+ <upstream>
+ <bugs-to>https://github.com/Mimino666/langdetect/issues</bugs-to>
+ </upstream>
+ <origin>slonko-overlay</origin>
</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/lhafile/lhafile-0.3.1.ebuild b/dev-python/lhafile/lhafile-0.3.1.ebuild
index caab3ea3124d..c2f9dd2af78b 100644
--- a/dev-python/lhafile/lhafile-0.3.1.ebuild
+++ b/dev-python/lhafile/lhafile-0.3.1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
diff --git a/dev-python/linode-metadata/Manifest b/dev-python/linode-metadata/Manifest
index 715bff0b514f..3f711818997a 100644
--- a/dev-python/linode-metadata/Manifest
+++ b/dev-python/linode-metadata/Manifest
@@ -1,2 +1,4 @@
DIST linode_metadata-0.3.4.tar.gz 17748 BLAKE2B c6f76e9c7c21a68f91fa908d6e6943df20e00acf624c182b27350a067994d53be29c593749c3df91b4225a6091d8d1d7855affeaa495a74e5e236fb71fc0b25c SHA512 da56c62148a3b6c32d26832b434fcf9f1169d9327e3a0d4c949de9efabc8b7287919157f640fe3a6f47b833dd48709f7bb35edd527bfe7ee96c6553ba35f766e
DIST linode_metadata-0.3.4.tar.gz.provenance 9477 BLAKE2B fde62b876d92d00ce6af8e8d35dc481c84dc93ece79014d85fa9e9ceab54dac8f97bf8c645761339eed5fe464585667880e921370d381568d28d4d82a245eabc SHA512 94c9eb711905c349d3ffea43c60de30446482403bd517e66aa0b2ac4121d0160d2f3567196c24b6f34ddeef5f4a3585674b59be8723ffe801883fc64358dca33
+DIST linode_metadata-0.3.5.tar.gz 17760 BLAKE2B db9373a64654136daf0c6211d8c75d59dfebdb3d3e528295407f7aaf0877ed7747f6be0d4aa63809c9774989872c0c717d514e14d793c78b7cdc48e5bf7180cd SHA512 d20c6666ecb1b0ba91c95309c7045d9831e727437fdb69af8d86db3189a36cdae0dcd1bd7ddba65b2d9c66fe36e93ced3947421c4d6765f787722e48ef1810a8
+DIST linode_metadata-0.3.5.tar.gz.provenance 9668 BLAKE2B ba199b0dd14788abafbdf0398f1fa689e7c7bd7048d1ede0176c582717b6928f4f1314390fc8a6c650b44e4970ec8b925c7f4d238fc62ca062e97d16e520fa8b SHA512 6e9eb52ee6944a7e23c5b54770de9bf44b2a20ecbfc7b919e2980f830d879ce3e29e77640bf31e113580e830123b51477fa43fe2cd878b49d30962c2af728973
diff --git a/dev-python/linode-metadata/linode-metadata-0.3.5.ebuild b/dev-python/linode-metadata/linode-metadata-0.3.5.ebuild
new file mode 100644
index 000000000000..284ec1e9ae84
--- /dev/null
+++ b/dev-python/linode-metadata/linode-metadata-0.3.5.ebuild
@@ -0,0 +1,23 @@
+# Copyright 2023-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..14} )
+DISTUTILS_USE_PEP517=setuptools
+PYPI_VERIFY_REPO=https://github.com/linode/py-metadata
+inherit distutils-r1 pypi
+
+DESCRIPTION="Python bindings for the Linode Metadata Service"
+HOMEPAGE="https://github.com/linode/py-metadata https://www.linode.com/"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64"
+
+# Tests require network, a linode account, an API key and a ssh key.
+RESTRICT="test"
+
+RDEPEND="
+ dev-python/httpx[${PYTHON_USEDEP}]
+"
diff --git a/dev-python/magic-wormhole-mailbox-server/Manifest b/dev-python/magic-wormhole-mailbox-server/Manifest
index e848c8efe9e6..e9e11e19df57 100644
--- a/dev-python/magic-wormhole-mailbox-server/Manifest
+++ b/dev-python/magic-wormhole-mailbox-server/Manifest
@@ -1 +1,2 @@
DIST magic_wormhole_mailbox_server-0.6.0.tar.gz 70160 BLAKE2B cfe6e8c8bdbb29fdc58c8aef613d806943594a1090566818f9e99cef026e0d73077e9a3d5890e137bb0eee57fbc73807f30d5fb9ee085a21c422f28abe21c7d0 SHA512 ff65bcecdb0e29b1ec79a91554a5d7ecf8dd226660f73f32bc7c4d2198a9e95b5a0229d66c178951bd41781fde9344f4fd7e7b0c456dad3c7eac2d738fb11a16
+DIST magic_wormhole_mailbox_server-0.7.0.tar.gz 71750 BLAKE2B c21d472f620798d7ed9088b69485a8c6b078ed334d68801d7aa051b3143dc2ac15b38e71e02229425e43baaf70d384f8c9c10c756a510cc806f415691916ba66 SHA512 6379c356755fbbbb9443cf27444be548d4384ed67a2a253a761d1c7f5c3fb70f81653edec81cdac97bd53b18d846e3dc0c7b3f1d250f2d7eec6937e35e7b3c29
diff --git a/dev-python/magic-wormhole-mailbox-server/magic-wormhole-mailbox-server-0.7.0.ebuild b/dev-python/magic-wormhole-mailbox-server/magic-wormhole-mailbox-server-0.7.0.ebuild
new file mode 100644
index 000000000000..3c37502c7bbd
--- /dev/null
+++ b/dev-python/magic-wormhole-mailbox-server/magic-wormhole-mailbox-server-0.7.0.ebuild
@@ -0,0 +1,40 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Mailbox server for magic-wormhole"
+HOMEPAGE="
+ https://magic-wormhole.readthedocs.io/en/latest/
+ https://github.com/magic-wormhole/magic-wormhole-mailbox-server/
+ https://pypi.org/project/magic-wormhole-mailbox-server/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="
+ dev-python/autobahn[${PYTHON_USEDEP}]
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ dev-python/twisted[ssl,${PYTHON_USEDEP}]
+"
+BDEPEND="
+ dev-python/versioneer[${PYTHON_USEDEP}]
+ test? (
+ dev-python/treq[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+ rm versioneer.py || die
+}
diff --git a/dev-python/more-itertools/more-itertools-11.0.1.ebuild b/dev-python/more-itertools/more-itertools-11.0.1.ebuild
index 569005c6a88b..b1644c6a1e91 100644
--- a/dev-python/more-itertools/more-itertools-11.0.1.ebuild
+++ b/dev-python/more-itertools/more-itertools-11.0.1.ebuild
@@ -16,7 +16,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"
distutils_enable_sphinx docs \
dev-python/furo
diff --git a/dev-python/mypy/mypy-2.1.0.ebuild b/dev-python/mypy/mypy-2.1.0.ebuild
index f2a92bfa1ffe..06a3f3fc8665 100644
--- a/dev-python/mypy/mypy-2.1.0.ebuild
+++ b/dev-python/mypy/mypy-2.1.0.ebuild
@@ -23,7 +23,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~s390 ~sparc ~x86"
+KEYWORDS="~amd64 ~arm64 ~riscv ~s390 ~sparc ~x86"
IUSE="native-extensions"
# stubgen collides with this package: https://bugs.gentoo.org/585594
diff --git a/dev-python/oslotest/oslotest-6.1.0.ebuild b/dev-python/oslotest/oslotest-6.1.0.ebuild
index 9f9e930c868f..7d11ab511f9a 100644
--- a/dev-python/oslotest/oslotest-6.1.0.ebuild
+++ b/dev-python/oslotest/oslotest-6.1.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~x86"
+KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 x86"
RDEPEND="
>=dev-python/fixtures-3.0.0[${PYTHON_USEDEP}]
diff --git a/dev-python/peewee/peewee-4.0.4.ebuild b/dev-python/peewee/peewee-4.0.4.ebuild
index eb74eea6a486..6cdc67d86bc4 100644
--- a/dev-python/peewee/peewee-4.0.4.ebuild
+++ b/dev-python/peewee/peewee-4.0.4.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/phonenumbers/phonenumbers-9.0.28.ebuild b/dev-python/phonenumbers/phonenumbers-9.0.28.ebuild
index 56b0d243a266..90c3ca74434c 100644
--- a/dev-python/phonenumbers/phonenumbers-9.0.28.ebuild
+++ b/dev-python/phonenumbers/phonenumbers-9.0.28.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv ~x86"
+KEYWORDS="amd64 arm64 ~ppc64 ~riscv x86"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/pikepdf/Manifest b/dev-python/pikepdf/Manifest
index 3a05b723c995..a91dd205dc30 100644
--- a/dev-python/pikepdf/Manifest
+++ b/dev-python/pikepdf/Manifest
@@ -1,2 +1,4 @@
DIST pikepdf-10.5.1.tar.gz 4582470 BLAKE2B 9a92e465f0972b289016786bba91fc322ed17cfba20c81f4f31aa9cdda65eab91f0203f668a713050d2d7551625f0d94cf6d4f16077e3cc44df3bc27d6c24da7 SHA512 a99abea6f54fe9f813e1fe6c0052d9e40537c7605c6e7f3a930cfb2dd59cd3eeb2c40afc5f0ad98aac7a76e692c842f0577e8188a6319a07e9461a3ac9c2cb73
DIST pikepdf-10.5.1.tar.gz.provenance 9398 BLAKE2B a760b31f221da8c04c350adf36a52a8664cfcd5ca74fdcaed26fa38f6a9b7ed57fb1e58eff525c8f03e3d8aa3924b6e82bfb759d7746db841cf0747e4428c482 SHA512 06357efef746dc2b316cf603e7c435ae4b9a1b354f895afc835877e7d7e95887a22e69261b1c6c345ebaee86f14a11f075991e714c4b6861547482719d71f906
+DIST pikepdf-10.6.0.tar.gz 23670594 BLAKE2B 569c8855d8c44aae6b65cf87974f79b3b4c89039b2c387cb76202eafe0019f47d9086d1ff27ee5fdaa5dddc3ec2bf24578eda15c833cbe736090375c62f9744f SHA512 1bd9addb88c6bd2ff6db10ad99f67c4db688736440ea1ccb171a1f739cf9e605b4ab8580209870178b2a713e4c11375e8c3e236aaa47b5fae1d521519c7d915c
+DIST pikepdf-10.6.0.tar.gz.provenance 9535 BLAKE2B e7a24aa79fbc1bde2d9af969029a6b6be670b7ea97315a033bcd8789f94b0346d2965feda53b51d598c03e3e722cc14742fde5cf57474c97ddd83905925291c7 SHA512 becb3501bde0497eb90d2eaab964ec3e4e3240974d479b1d03dc1a1c17150a625a8b040d0bee2be84457b484cc0a7d5c7104e5ce11e223bf669d82c2d56fd32f
diff --git a/dev-python/pikepdf/pikepdf-10.6.0.ebuild b/dev-python/pikepdf/pikepdf-10.6.0.ebuild
new file mode 100644
index 000000000000..c7456dc4a40d
--- /dev/null
+++ b/dev-python/pikepdf/pikepdf-10.6.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_EXT=1
+DISTUTILS_USE_PEP517=scikit-build-core
+PYPI_VERIFY_REPO=https://github.com/pikepdf/pikepdf
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Python library to work with pdf files based on qpdf"
+HOMEPAGE="
+ https://github.com/pikepdf/pikepdf/
+ https://pypi.org/project/pikepdf/
+"
+
+LICENSE="MPL-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv ~x86"
+IUSE="big-endian"
+
+# Check QPDF_MIN_VERSION in pyproject.toml on bumps, as well as
+# https://qpdf.readthedocs.io/en/stable/release-notes.html.
+DEPEND="
+ >=app-text/qpdf-12.2.0:0=
+"
+RDEPEND="
+ ${DEPEND}
+ dev-python/deprecated[${PYTHON_USEDEP}]
+ >=dev-python/lxml-4.0[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ >=dev-python/pillow-10.0.1[lcms,${PYTHON_USEDEP}]
+"
+BDEPEND="
+ >=dev-python/nanobind-2.0[${PYTHON_USEDEP}]
+ >=dev-python/setuptools-77.0.3[${PYTHON_USEDEP}]
+ >=dev-python/setuptools-scm-7.0.5[${PYTHON_USEDEP}]
+ test? (
+ >=dev-python/attrs-20.2.0[${PYTHON_USEDEP}]
+ >=dev-python/numpy-1.21.0[${PYTHON_USEDEP}]
+ >=dev-python/pillow-5.0.0[${PYTHON_USEDEP},jpeg,lcms,tiff]
+ >=dev-python/psutil-5.9[${PYTHON_USEDEP}]
+ >=dev-python/python-dateutil-2.8.1[${PYTHON_USEDEP}]
+ !big-endian? (
+ >=dev-python/python-xmp-toolkit-2.0.1[${PYTHON_USEDEP}]
+ )
+ media-libs/tiff[zlib]
+ )
+"
+
+EPYTEST_PLUGINS=( hypothesis pytest-timeout )
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ sed -e '/-n auto/d' -i pyproject.toml || die
+ # remove bundled qpdf
+ rm -rf qpdf || die
+}
diff --git a/dev-python/pillow/pillow-12.2.0-r1.ebuild b/dev-python/pillow/pillow-12.2.0-r1.ebuild
index 4d6ee2bf6e00..d814fa28fdb9 100644
--- a/dev-python/pillow/pillow-12.2.0-r1.ebuild
+++ b/dev-python/pillow/pillow-12.2.0-r1.ebuild
@@ -35,7 +35,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="HPND"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm64 ~x86"
+KEYWORDS="~alpha ~amd64 ~arm64 ~riscv ~x86"
IUSE="avif examples imagequant +jpeg jpeg2k lcms raqm test tiff tk truetype webp xcb zlib"
REQUIRED_USE="
raqm? ( truetype )
diff --git a/dev-python/platformdirs/platformdirs-4.9.6.ebuild b/dev-python/platformdirs/platformdirs-4.9.6.ebuild
index c5c85a45c499..09ff69344194 100644
--- a/dev-python/platformdirs/platformdirs-4.9.6.ebuild
+++ b/dev-python/platformdirs/platformdirs-4.9.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 ~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/pydata-sphinx-theme/pydata-sphinx-theme-0.17.0.ebuild b/dev-python/pydata-sphinx-theme/pydata-sphinx-theme-0.17.0.ebuild
index 6af557eca42d..d5cfd2bea111 100644
--- a/dev-python/pydata-sphinx-theme/pydata-sphinx-theme-0.17.0.ebuild
+++ b/dev-python/pydata-sphinx-theme/pydata-sphinx-theme-0.17.0.ebuild
@@ -24,7 +24,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="BSD-with-disclosure"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
dev-python/accessible-pygments[${PYTHON_USEDEP}]
diff --git a/dev-python/pyfakefs/pyfakefs-6.2.0.ebuild b/dev-python/pyfakefs/pyfakefs-6.2.0.ebuild
index 06a49696668a..965b216750ca 100644
--- a/dev-python/pyfakefs/pyfakefs-6.2.0.ebuild
+++ b/dev-python/pyfakefs/pyfakefs-6.2.0.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="Apache-2.0"
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"
EPYTEST_PLUGINS=( "${PN}" )
distutils_enable_tests pytest
diff --git a/dev-python/pyproject-fmt/pyproject-fmt-2.21.1.ebuild b/dev-python/pyproject-fmt/pyproject-fmt-2.21.1.ebuild
index 9a605c6fd5e3..b59ac66a6f33 100644
--- a/dev-python/pyproject-fmt/pyproject-fmt-2.21.1.ebuild
+++ b/dev-python/pyproject-fmt/pyproject-fmt-2.21.1.ebuild
@@ -67,7 +67,7 @@ LICENSE+="
Unicode-3.0 ZLIB
"
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/toml-fmt-common[${PYTHON_USEDEP}]
diff --git a/dev-python/pyside/Manifest b/dev-python/pyside/Manifest
index 24bdb49a8642..e063ed53d904 100644
--- a/dev-python/pyside/Manifest
+++ b/dev-python/pyside/Manifest
@@ -1,3 +1,4 @@
DIST pyside-setup-everywhere-src-6.10.2.tar.xz 17877708 BLAKE2B 67be6ef1aaadf36a6e8083f808b8f0e47256ac714f73660cb026ef977676928ae3a16b887fd6f31a343fa5d957b945ce0fc6249aa904d84c7e5a8e320502c2d3 SHA512 363b448fe1a304aea09e095aad9f1ecbe2798f0b0e046ca509e918fdc3e8e6a788928a84f2837ad6c75ea79ce37ec38aaff761ddf323bf8e264304ea3d54ceb4
DIST pyside-setup-everywhere-src-6.10.3.tar.xz 17900952 BLAKE2B e30ede40299161a928a919895a9d26e04e9b58eafa681c2c41ebd37eed39e9b7df74435720e693f87e72f67701dad92cc36938896946f382dac6db0266365fa9 SHA512 6a42478bdfbaef07a993451de423420b20b1a0858c3a86b67071d209a384a6ec6847d95a057a7fc8585206434b817c54f1e301ccf057635e04ea63c6713a7eec
DIST pyside-setup-everywhere-src-6.11.0.tar.xz 18017608 BLAKE2B 8a9b41cf6fd95788db430c348bc1a58d664db8c97329a21109e20a575f6caa6c8c1401cc195f4d0218ab56c36e5b6c5b38a7a59fdf2daf77fccb9df065eb1c07 SHA512 f99db04837a1b74534aef1906dd5be5f88130175374ff734bbf3de6e47d2c678789969b16c1ea01ef9d60127895d72081cdb56b6155871e9e43331a6fce9fb05
+DIST pyside-setup-everywhere-src-6.11.1.tar.xz 17963432 BLAKE2B 12c24c6840ef2e80a398e0697530c71f6a1dcd234f70b6c173cb216c1ccd3bcc0cdc51bf39704efd6ab1971d993ffbb41b5f7bf4774dacbd2a65914324d687c5 SHA512 662c07ee644b2f62cb91d5df81751fcbf81169e3a0f6d1ff7853334f9401b59dab9f0d5fdc368c6a730e72c04c8271d10215ae4a7419652b77b9808e7dd94d0f
diff --git a/dev-python/pyside/files/pyside-6.11.1-fix-llvm-version.patch b/dev-python/pyside/files/pyside-6.11.1-fix-llvm-version.patch
new file mode 100644
index 000000000000..28cc48601ef3
--- /dev/null
+++ b/dev-python/pyside/files/pyside-6.11.1-fix-llvm-version.patch
@@ -0,0 +1,16 @@
+https://codeberg.org/gentoo/gentoo/pulls/884#issuecomment-14921022
+
+Fixes https://github.com/pyside/pyside-setup/commit/2f25d2a3db2ffc4c5e18654138249d285e995d08
+
+--- a/sources/shiboken6_generator/cmake/ShibokenGeneratorSetup.cmake
++++ b/sources/shiboken6_generator/cmake/ShibokenGeneratorSetup.cmake
+@@ -36,7 +36,7 @@ compute_config_py_values(shiboken6_VERSION)
+
+ shiboken_internal_set_python_site_packages()
+
+-string(REGEX REPLACE "\\.[0-9]+\\.[0-9]+$" "" LLVM_VERSION "${LLVM_PACKAGE_VERSION}")
++set(LLVM_VERSION "${LLVM_VERSION_MAJOR}")
+
+ set_cmake_cxx_flags()
+ set(CMAKE_CXX_FLAGS
+
diff --git a/dev-python/pyside/pyside-6.11.1.ebuild b/dev-python/pyside/pyside-6.11.1.ebuild
new file mode 100644
index 000000000000..84afb8c77148
--- /dev/null
+++ b/dev-python/pyside/pyside-6.11.1.ebuild
@@ -0,0 +1,611 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# NOTE: We combine here several PyPI packages, we do this because
+# pyside can and does break if it is compiled with a different
+# toolchain then was used to build shiboken. This bundling ensures
+# that we always use the same toolchain for all components.
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..14} )
+LLVM_COMPAT=( {18..22} )
+DISTUTILS_USE_PEP517=setuptools
+DISTUTILS_EXT=1
+
+inherit distutils-r1 llvm-r2 multiprocessing ninja-utils qmake-utils virtualx
+
+MY_PN=${PN}-setup-everywhere-src
+MY_P=${MY_PN}-${PV}
+
+DESCRIPTION="Python bindings for the Qt framework"
+HOMEPAGE="https://wiki.qt.io/PySide6"
+
+if [[ ${PV} == *.9999 ]]; then
+ inherit git-r3
+ EGIT_REPO_URI=(
+ "https://code.qt.io/${PN}/${PN}-setup.git"
+ "https://github.com/qtproject/${PN}-${PN}-setup.git"
+ )
+ EGIT_BRANCH=dev
+ [[ ${PV} == 6.*.9999 ]] && EGIT_BRANCH=${PV%.9999}
+else
+ SRC_URI="https://download.qt.io/official_releases/QtForPython/${PN}6/PySide6-${PV}-src/${MY_P}.tar.xz"
+ S="${WORKDIR}/${MY_P}"
+ KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+fi
+
+LICENSE="|| ( GPL-2 GPL-3 LGPL-3 )"
+SLOT="6/${PV}"
+
+# If a flag enables multiple Qt modules, they should be ordered
+# according to their dependencies, e.g. for 3d, 3DCore must be first.
+# Widgets for various modules are handled as a special case later
+declare -A QT_MODULES=(
+ ["3d"]="3DCore 3DRender 3DLogic 3DInput 3DAnimation 3DExtras"
+ ["bluetooth"]="Bluetooth"
+ ["charts"]="Charts"
+ ["+concurrent"]="Concurrent"
+ ["+core"]="Core"
+ ["+dbus"]="DBus"
+ ["designer"]="Designer"
+ ["graphs"]="Graphs" # plus widgets
+ ["+gui"]="Gui"
+ ["help"]="Help"
+ ["httpserver"]="HttpServer"
+ ["location"]="Location"
+ ["multimedia"]="Multimedia" # plus widgets
+ ["network-auth"]="NetworkAuth"
+ ["+network"]="Network"
+ ["nfc"]="Nfc"
+ ["+opengl"]="OpenGL" # plus widgets
+ ["pdfium"]="Pdf" # plus widgets
+ ["positioning"]="Positioning"
+ ["+printsupport"]="PrintSupport"
+ ["qml"]="Qml"
+ ["quick3d"]="Quick3D"
+ ["quick"]="Quick" # plus widgets
+ ["remoteobjects"]="RemoteObjects"
+ ["scxml"]="Scxml"
+ ["sensors"]="Sensors"
+ ["serialbus"]="SerialBus"
+ ["serialport"]="SerialPort"
+ ["spatialaudio"]="SpatialAudio"
+ ["+sql"]="Sql"
+ ["svg"]="Svg" # plus widgets
+ ["speech"]="TextToSpeech"
+ ["+testlib"]="Test"
+ ["uitools"]="UiTools"
+ ["webchannel"]="WebChannel"
+ ["webengine"]="WebEngineCore" # plus widgets and quick
+ ["websockets"]="WebSockets"
+ ["webview"]="WebView"
+ ["+widgets"]="Widgets"
+ ["+xml"]="Xml"
+)
+
+# Manually reextract these requirements on version bumps by running the
+# following one-liner from within "${S}":
+# $ grep -E '(set|list).*_deps' sources/pyside6/PySide6/Qt*/CMakeLists.txt
+declare -A QT_REQUIREMENTS=(
+ ["3d"]="gui network"
+ ["bluetooth"]="core"
+ ["charts"]="core gui widgets"
+ ["concurrent"]="core"
+ ["dbus"]="core"
+ ["designer"]="widgets"
+ ["gles2-only"]="gui"
+ ["graphs"]="core network gui qml quick quick3d"
+ ["gui"]="core"
+ ["help"]="widgets"
+ ["httpserver"]="core concurrent network websockets"
+ ["location"]="core positioning"
+ ["multimedia"]="core gui network"
+ ["network-auth"]="network"
+ ["network"]="core"
+ ["nfc"]="core"
+ ["opengl"]="gui"
+ ["pdfium"]="core gui network"
+ ["positioning"]="core"
+ ["printsupport"]="widgets"
+ ["qml"]="network"
+ ["quick"]="gui network qml"
+ ["quick3d"]="gui network qml quick"
+ ["remoteobjects"]="core network"
+ ["scxml"]="core"
+ ["sensors"]="core"
+ ["serialbus"]="core network serialport"
+ ["serialport"]="core"
+ ["spatialaudio"]="core gui network multimedia"
+ ["speech"]="core multimedia"
+ ["sql"]="widgets"
+ ["svg"]="gui"
+ ["testlib"]="widgets"
+ ["uitools"]="widgets"
+ ["webchannel"]="core"
+ ["webengine"]="core gui network printsupport webchannel"
+ ["websockets"]="network"
+ ["webview"]="gui quick webengine"
+ ["widgets"]="gui"
+ ["xml"]="core"
+)
+# Manually reextract these requirements on version bumps by running the
+# following one-liner from within "${S}":
+# $ grep 'check_qt_opengl' sources/pyside6/PySide6/Qt*/CMakeLists.txt
+declare -a CONDITIONAL_OPENGL=(
+ 3d graphs quick
+)
+
+IUSE="${!QT_MODULES[*]} debug doc gles2-only numpy test tools"
+RESTRICT="!test? ( test )"
+
+# majority of QtQml tests require QtQuick support
+REQUIRED_USE="
+ test? (
+ qml? ( quick )
+ )
+"
+for requirement in "${!QT_REQUIREMENTS[@]}"; do
+ REQUIRED_USE+=" ${requirement}? ( ${QT_REQUIREMENTS[${requirement}]} ) "
+done
+
+# Minimal supported version of Qt.
+QT_PV="$(ver_cut 1-3)*:6"
+
+# USE="tools" is heavily automagic based on what other qt tools are installed at build time.
+
+# WebEngine needs sound support, so enable either pulseaudio or alsa
+RDEPEND="
+ dev-libs/libxml2:=
+ dev-libs/libxslt
+ =dev-qt/qtbase-${QT_PV}[concurrent?,dbus?,gles2-only=,network?,opengl=,sql?,widgets?,xml?]
+ $(llvm_gen_dep '
+ llvm-core/clang:${LLVM_SLOT}
+ ')
+ 3d? ( =dev-qt/qt3d-${QT_PV}[qml?,gles2-only=] )
+ bluetooth? ( =dev-qt/qtconnectivity-${QT_PV}[bluetooth] )
+ charts? ( =dev-qt/qtcharts-${QT_PV} )
+ designer? ( =dev-qt/qttools-${QT_PV}[designer,widgets,gles2-only=] )
+ graphs? ( =dev-qt/qtgraphs-${QT_PV}[quick3d] )
+ gui? (
+ =dev-qt/qtbase-${QT_PV}[gui,jpeg(+)]
+ x11-libs/libxkbcommon
+ )
+ help? ( =dev-qt/qttools-${QT_PV}[assistant,gles2-only=] )
+ httpserver? ( =dev-qt/qthttpserver-${QT_PV} )
+ location? ( =dev-qt/qtlocation-${QT_PV} )
+ multimedia? ( =dev-qt/qtmultimedia-${QT_PV}[widgets(+)?] )
+ network? ( =dev-qt/qtbase-${QT_PV}[ssl] )
+ network-auth? ( =dev-qt/qtnetworkauth-${QT_PV} )
+ nfc? ( =dev-qt/qtconnectivity-${QT_PV}[nfc] )
+ numpy? ( >=dev-python/numpy-2.1.3[${PYTHON_USEDEP}] )
+ pdfium? ( =dev-qt/qtwebengine-${QT_PV}[pdfium(-),widgets?] )
+ positioning? ( =dev-qt/qtpositioning-${QT_PV} )
+ printsupport? ( =dev-qt/qtbase-${QT_PV}[gui,widgets] )
+ qml? ( =dev-qt/qtdeclarative-${QT_PV}[opengl?,widgets?] )
+ quick3d? ( =dev-qt/qtquick3d-${QT_PV}[opengl?] )
+ remoteobjects? ( =dev-qt/qtremoteobjects-${QT_PV} )
+ scxml? ( =dev-qt/qtscxml-${QT_PV} )
+ sensors? ( =dev-qt/qtsensors-${QT_PV}[qml?] )
+ speech? ( =dev-qt/qtspeech-${QT_PV} )
+ serialbus? ( =dev-qt/qtserialbus-${QT_PV} )
+ serialport? ( =dev-qt/qtserialport-${QT_PV} )
+ svg? ( =dev-qt/qtsvg-${QT_PV} )
+ testlib? ( =dev-qt/qtbase-${QT_PV}[gui] )
+ tools? (
+ =dev-qt/qtbase-${QT_PV}
+ =dev-qt/qtdeclarative-${QT_PV}[qmlls]
+ =dev-qt/qttools-${QT_PV}[assistant,designer,linguist]
+ dev-python/pkginfo[${PYTHON_USEDEP}]
+ )
+ uitools? ( =dev-qt/qttools-${QT_PV}[gles2-only=,widgets] )
+ webchannel? ( =dev-qt/qtwebchannel-${QT_PV} )
+ webengine? ( || (
+ =dev-qt/qtwebengine-${QT_PV}[alsa,widgets?]
+ =dev-qt/qtwebengine-${QT_PV}[pulseaudio,widgets?]
+ )
+ )
+ websockets? ( =dev-qt/qtwebsockets-${QT_PV} )
+ webview? ( =dev-qt/qtwebview-${QT_PV} )
+ !dev-python/pyside:0
+ !dev-python/shiboken6
+ !dev-python/pyside6-tools
+"
+
+DEPEND="${RDEPEND}
+ $(llvm_gen_dep '
+ llvm-core/clang:${LLVM_SLOT}
+ llvm-core/llvm:${LLVM_SLOT}
+ ')
+ dev-util/vulkan-headers
+ test? ( =dev-qt/qtbase-${QT_PV}[gui] )
+" # testlib is toggled by the gui flag on qtbase
+
+BDEPEND="
+ dev-build/cmake
+ dev-python/distro[${PYTHON_USEDEP}]
+ dev-python/wheel[${PYTHON_USEDEP}]
+ dev-util/patchelf
+ doc? (
+ >=dev-libs/libxml2-2.6.32
+ >=dev-libs/libxslt-1.1.19
+ media-gfx/graphviz
+ dev-python/sphinx[${PYTHON_USEDEP}]
+ dev-python/myst-parser[${PYTHON_USEDEP}]
+ )
+ numpy? ( dev-python/numpy[${PYTHON_USEDEP}] )
+ test? ( dev-python/pkginfo[${PYTHON_USEDEP}] )
+"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-6.10.0-dont-vendor-ffmpeg.patch"
+ "${FILESDIR}/${PN}-6.10.1-pass-ninja-opts.patch"
+ "${FILESDIR}/${PN}-6.11.0-find-cmake-helpers.patch"
+ "${FILESDIR}/${PN}-6.11.1-fix-llvm-version.patch"
+)
+
+# Build system duplicates system libraries. TODO: fix
+QA_PREBUILT=(
+ "/usr/lib/python*/site-packages/PySide6/*"
+)
+
+python_prepare_all() {
+ distutils-r1_python_prepare_all
+
+ # Shiboken6 assumes Vulkan headers live under either "$VULKAN_SDK/include"
+ # or "$VK_SDK_PATH/include" rather than "${EPREFIX}/usr/include/vulkan".
+ sed -i -e "s~\bdetectVulkan(&headerPaths);~headerPaths.append(HeaderPath{QByteArrayLiteral(\"${EPREFIX}/usr/include/vulkan\"), HeaderType::System});~" \
+ sources/shiboken6_generator/ApiExtractor/clangparser/compilersupport.cpp || die
+
+ # Shiboken6 assumes the "/usr/lib/clang/${CLANG_NEWEST_VERSION}/include/"
+ # subdirectory provides Clang builtin includes (e.g., "stddef.h") for the
+ # currently installed version of Clang, where ${CLANG_NEWEST_VERSION} is
+ # the largest version specifier that exists under the "/usr/lib/clang/"
+ # subdirectory. This assumption is false in edge cases, including when
+ # users downgrade from newer Clang versions but fail to remove those
+ # versions with "emerge --depclean". See also:
+ # https://github.com/leycec/raiagent/issues/85
+ #
+ # Sadly, the clang-* family of functions exported by the "toolchain-funcs"
+ # eclass are defective, returning nonsensical placeholder strings if the
+ # end user has *NOT* explicitly configured their C++ compiler to be Clang.
+ # PySide6 does *NOT* care whether the end user has done so or not, as
+ # PySide6 unconditionally requires Clang in either case. See also:
+ # https://bugs.gentoo.org/619490
+ sed -e \
+ 's~(findClangBuiltInIncludesDir())~(QStringLiteral("'"${EPREFIX}"'/usr/lib/clang/'"${LLVM_SLOT}"'/include"))~' \
+ -i sources/shiboken6_generator/ApiExtractor/clangparser/compilersupport.cpp || die
+
+ sed -e \
+ 's~set(libclang_directory_suffix "lib")~set(libclang_directory_suffix "'"$(get_libdir)"'")~' \
+ -i sources/shiboken6/cmake/ShibokenHelpers.cmake || die
+
+ # blacklist.txt works like XFAIL
+ cat <<- EOF >> build_history/blacklist.txt || die
+ # segfaults with QOpenGLContext::create
+ [pysidetest::qapp_like_a_macro_test]
+ linux
+ # no mypy
+ [pysidetest::mypy_correctness_test]
+ linux
+ # Tries to execute pip install
+ [pyside6-deploy::test_pyside6_deploy]
+ linux
+ [pyside6-android-deploy::test_pyside6_android_deploy]
+ linux
+ # Behavior changed and test not changed to accomodate
+ # https://bugreports.qt.io/projects/PYSIDE/issues/PYSIDE-3135
+ [registry::existence_test]
+ linux
+ # Doesn't appear to play well with virtualx as it tries to use wayland
+ [QtUiTools::loadUiType_test]
+ linux
+ # py3.14?
+ [sample::multiple_derived]
+ linux
+ # Doesn't appear to play well with virtualx as it tries to use wayland
+ [QtWidgets::qapp_issue_585]
+ linux
+ EOF
+
+ if ! use numpy; then
+ cat <<- EOF >> build_history/blacklist.txt || die
+ # Requires numpy support to pass
+ [sample::array_numpy]
+ linux
+ [sample::nontypetemplate]
+ linux
+ [QtGui::qpainter_test]
+ linux
+ [QtCore::qrangemodel_test]
+ linux
+ [QtGraphs::qgraphs_numpy_test]
+ linux
+ EOF
+ fi
+}
+
+python_configure_all() {
+ export LLVM_INSTALL_DIR="$(get_llvm_prefix)"
+
+ # see pyside-6.10.1-pass-ninja-opts.patch
+ export NINJAOPTS="$(get_NINJAOPTS)"
+
+ ENABLED_QT_MODULES=()
+
+ # The order matters, dependencies must come first so process
+ # REQUIRED_USE and recursively enable modules
+ enable_qt_mod() {
+ local flag=${1}
+ local modules=${QT_MODULES[${flag}]}
+ if [[ -z ${modules} ]]; then
+ die "incorrect flag=${flag}, not registered"
+ fi
+ local dependencies=${QT_REQUIREMENTS[${flag//+}]}
+ if [[ -n ${dependencies} ]]; then
+ local depflag
+ for depflag in ${dependencies}; do
+ if use "${depflag}"; then
+ if [[ -z ${QT_MODULES[${depflag}]} ]]; then
+ depflag=+${depflag}
+ fi
+ enable_qt_mod "${depflag}"
+ else
+ die "${depflag} is required but not enabled"
+ fi
+ done
+ if use opengl && [[ ${CONDITIONAL_OPENGL[@]} =~ ${flag//+} ]]; then
+ # match key in QT_MODULES
+ enable_qt_mod "+opengl"
+ fi
+ fi
+ if [[ "${ENABLED_QT_MODULES[*]}" != *${modules}* ]]; then
+ # modules is whitespace separated. We expand implicitly.
+ ENABLED_QT_MODULES+=( ${modules} )
+ fi
+ }
+ # Enable specified qt modules
+ local flag
+ for flag in "${!QT_MODULES[@]}"; do
+ if use "${flag//+}"; then
+ enable_qt_mod "${flag}"
+ fi
+ done
+
+ # Special cases
+ if use widgets; then
+ use multimedia && ENABLED_QT_MODULES+=( MultimediaWidgets )
+ use opengl && ENABLED_QT_MODULES+=( OpenGLWidgets )
+ use pdfium && ENABLED_QT_MODULES+=( PdfWidgets )
+ use quick && ENABLED_QT_MODULES+=( QuickWidgets )
+ use graphs && ENABLED_QT_MODULES+=( GraphsWidgets ) # requires QuickWidgets
+ use svg && ENABLED_QT_MODULES+=( SvgWidgets )
+ use webengine && ENABLED_QT_MODULES+=( WebEngineWidgets )
+ fi
+ if use quick; then
+ use webengine && ENABLED_QT_MODULES+=( WebEngineQuick )
+ use testlib && ENABLED_QT_MODULES+=( QuickTest )
+ fi
+
+ # Arguments listed in options.py
+ MAIN_DISTUTILS_ARGS=(
+ --cmake="${ESYSROOT}/usr/bin/cmake"
+ --ignore-git
+ --limited-api=no
+ --module-subset="$(printf '%s,' "${ENABLED_QT_MODULES[@]}")"
+ --no-strip
+ --no-size-optimization
+ --openssl="${ESYSROOT}/usr/bin/openssl"
+ --qt="$(ver_cut 1-3)"
+ --qtpaths="$(qt6_get_bindir)/qtpaths"
+ --log-level=verbose
+ --parallel="$(makeopts_jobs)"
+ "$(usex debug "--debug" "--relwithdebinfo")"
+ "--$(usex doc "build" "skip")-docs"
+ "--$(usex numpy "enable" "disable")-numpy-support"
+ )
+
+ if use test; then
+ MAIN_DISTUTILS_ARGS+=(
+ "--build-tests"
+ "--use-xvfb"
+ )
+ fi
+
+ if ! use tools; then
+ MAIN_DISTUTILS_ARGS+=(
+ "--no-qt-tools"
+ )
+ fi
+}
+
+python_compile() {
+ DISTUTILS_ARGS=(
+ "${MAIN_DISTUTILS_ARGS[@]}"
+ --build-type=shiboken6-generator
+ )
+ distutils-r1_python_compile
+
+ # The build system uses its own build dir, find the name of this dir.
+ local pyside_build_dir
+ read -r pyside_build_dir < <(
+ find "${BUILD_DIR}/build$((${#DISTUTILS_WHEELS[@]}-1))" \
+ -maxdepth 1 -type d -name 'qfp*-py*-qt*-*' -printf "%f\n"
+ )
+ export pyside_build_id="${pyside_build_dir#"qfp$(usev debug d)-py${EPYTHON#python}-qt$(ver_cut 1-3)-"}"
+ export PYTHONPATH="${BUILD_DIR}/build$((${#DISTUTILS_WHEELS[@]}-1))/${pyside_build_dir}/package:${BUILD_DIR}/build$((${#DISTUTILS_WHEELS[@]}-1))/${pyside_build_dir}/install/lib/${EPYTHON}/site-packages:${PYTHONPATH}"
+
+ DISTUTILS_ARGS=(
+ "${MAIN_DISTUTILS_ARGS[@]}"
+ --reuse-build
+ --shiboken-target-path="${BUILD_DIR}/build$((${#DISTUTILS_WHEELS[@]}-1))/${pyside_build_dir}/package/shiboken6_generator"
+ --build-type=shiboken6
+ )
+ distutils-r1_python_compile
+ export PYTHONPATH="${BUILD_DIR}/build$((${#DISTUTILS_WHEELS[@]}-1))/${pyside_build_dir}/package:${BUILD_DIR}/build$((${#DISTUTILS_WHEELS[@]}-1))/${pyside_build_dir}/install/lib/${EPYTHON}/site-packages:${PYTHONPATH}"
+
+ # Copy shiboken6_generator files to shiboken6 package so we can reuse the shiboken-target-path
+ rsync -ur "${BUILD_DIR}/build$((${#DISTUTILS_WHEELS[@]}-2))/${pyside_build_dir}/package/shiboken6_generator/"* "${BUILD_DIR}/build$((${#DISTUTILS_WHEELS[@]}-1))/${pyside_build_dir}/package/shiboken6/" || die
+ ln -s shiboken6 "${BUILD_DIR}/build$((${#DISTUTILS_WHEELS[@]}-1))/${pyside_build_dir}/package/shiboken6_generator" || die
+
+ # If no pyside modules enabled, build just shiboken
+ if [[ ${#ENABLED_QT_MODULES[@]} -gt 0 ]]; then
+ DISTUTILS_ARGS=(
+ "${MAIN_DISTUTILS_ARGS[@]}"
+ --reuse-build
+ --shiboken-target-path="${BUILD_DIR}/build$((${#DISTUTILS_WHEELS[@]}-1))/${pyside_build_dir}/package/shiboken6"
+ --build-type=pyside6
+ )
+ distutils-r1_python_compile
+ export PYTHONPATH="${BUILD_DIR}/build$((${#DISTUTILS_WHEELS[@]}-1))/${pyside_build_dir}/package:${BUILD_DIR}/build$((${#DISTUTILS_WHEELS[@]}-1))/${pyside_build_dir}/install/lib/${EPYTHON}/site-packages:${PYTHONPATH}"
+ fi
+
+ # Link libraries to the usual location for backwards compatibility
+ pushd "${BUILD_DIR}/install/$(python_get_sitedir)" >/dev/null ||
+ die
+ mkdir -p "${BUILD_DIR}/install/usr/$(get_libdir)" || die
+ local lib
+ for lib in */*.cpython-*.so
+ do
+ local base=${lib##*/}
+ ln -s "${base}" "${lib%/*}/${base%%.*}-${EPYTHON}.so" ||
+ die
+ done
+ for lib in */*.cpython-*.so."$(ver_cut 1-2)"
+ do
+ local base=${lib##*/}
+ ln -s "${base}" "${lib%/*}/${base%%.*}-${EPYTHON}.so.$(ver_cut 1-2)" ||
+ die
+ done
+ for lib in */*.so*; do
+ ln -s "../../$(python_get_sitedir)/${lib}" \
+ "${BUILD_DIR}/install/usr/$(get_libdir)/${lib#*/}" || die
+ done
+ popd >/dev/null || die
+
+ # Symlinks for compatibility with pypi wheels
+ local dir
+ if [[ -d ${BUILD_DIR}/install/$(python_get_sitedir)/PySide6 ]]
+ then
+ pushd "${BUILD_DIR}/install/$(python_get_sitedir)/PySide6" \
+ >/dev/null || die
+ mkdir -p "${BUILD_DIR}/install/usr/share/PySide6" || die
+ for dir in doc glue typesystems; do
+ ln -s "../../../$(python_get_sitedir)/PySide6/${dir}" \
+ "${BUILD_DIR}/install/usr/share/PySide6/${dir}" ||
+ die
+ done
+ popd >/dev/null || die
+ fi
+ mkdir -p "${BUILD_DIR}/install/usr/include"
+ for dir in PySide6 shiboken6 shiboken6_generator; do
+ if [[ -d ${BUILD_DIR}/install/$(python_get_sitedir)/${dir}/include ]]
+ then
+ ln -s "../../$(python_get_sitedir)/${dir}/include" \
+ "${BUILD_DIR}/install/usr/include/${dir//_generator}" ||
+ die
+ fi
+ done
+
+ # Install misc files from inner install dir
+ find "${BUILD_DIR}"/build*/"${pyside_build_dir}"/install -type f \
+ -name libPySidePlugin.so -exec \
+ mkdir -p "${BUILD_DIR}/install/$(qt6_get_plugindir)/designer/" \; \
+ -exec \
+ cp "{}" "${BUILD_DIR}/install/$(qt6_get_plugindir)/designer/" \; \
+ || die
+
+ for dir in cmake pkgconfig; do
+ find "${BUILD_DIR}"/build*/"${pyside_build_dir}"/install -type d -name "${dir}" \
+ -exec cp -r "{}" "${BUILD_DIR}/install/usr/lib/" \; \
+ || die
+ done
+
+ # Uniquify the pkgconfigs file for the current Python target,
+ # preserving an unversioned "shiboken6.pc" file arbitrarily
+ # associated with the last Python target.
+ if [[ -f ${BUILD_DIR}/install/usr/lib/pkgconfig/shiboken6.pc ]]
+ then
+ sed -e 's~prefix=.*~prefix=/usr~g' \
+ -e 's~exec_prefix=.*~exec_prefix=${prefix}~g' \
+ -e "s~libdir=.*~libdir=$(python_get_sitedir)/shiboken6~g" \
+ -e "s~includedir=.*~includedir=$(python_get_sitedir)/shiboken6_generator/include~g" \
+ -i "${BUILD_DIR}/install/usr/lib/pkgconfig/shiboken6.pc" || die
+ cp "${BUILD_DIR}/install/usr/lib/pkgconfig/"shiboken6{,-${EPYTHON}}.pc || die
+ fi
+ if [[ -f ${BUILD_DIR}/install/usr/lib/pkgconfig/pyside6.pc ]]
+ then
+ sed -e 's~^Requires: shiboken6$~&-'${EPYTHON}'~' \
+ -e 's~prefix=.*~prefix=/usr~g' \
+ -e 's~exec_prefix=.*~exec_prefix=${prefix}~g' \
+ -e "s~libdir=.*~libdir=$(python_get_sitedir)/PySide6~g" \
+ -e "s~includedir=.*~includedir=$(python_get_sitedir)/PySide6/include~g" \
+ -e "s~typesystemdir=.*~typesystemdir=$(python_get_sitedir)/PySide6/typesystems~g" \
+ -e "s~gluedir=.*~gluedir=$(python_get_sitedir)/PySide6/glue~g" \
+ -e "s~pythonpath=.*~pythonpath=$(python_get_sitedir)~g" \
+ -i "${BUILD_DIR}/install/usr/lib/pkgconfig/pyside6.pc" || die
+ cp "${BUILD_DIR}/install/usr/lib/pkgconfig/"pyside6{,-${EPYTHON}}.pc || die
+ fi
+
+ # _IMPORT_PREFIX breaks on split-usr/merged-usr plus weird random issues.
+ # These are not duplicates, the generated files are somehow different on
+ # different systems.
+ sed \
+ -e "s~\${_IMPORT_PREFIX}/lib/libshiboken6\.cpython~/usr/$(get_libdir)/libshiboken6\.cpython~g" \
+ -e "s~\${_IMPORT_PREFIX}/shiboken6/libshiboken6\.cpython~/usr/$(get_libdir)/libshiboken6\.cpython~g" \
+ -e "s~\${_IMPORT_PREFIX}/bin/shiboken6~/usr/bin/shiboken6~g" \
+ -e "s~\${_IMPORT_PREFIX}/shiboken6_generator/shiboken6~/usr/bin/shiboken6~g" \
+ -e "s~\${_IMPORT_PREFIX}/lib/libpyside6\.cpython~/usr/$(get_libdir)/libpyside6\.cpython~g" \
+ -e "s~\${_IMPORT_PREFIX}/PySide6/libpyside6\.cpython~/usr/$(get_libdir)/libpyside6\.cpython~g" \
+ -e "s~\${_IMPORT_PREFIX}/lib/libpyside6qml\.cpython~/usr/$(get_libdir)/libpyside6qml\.cpython~g" \
+ -e "s~\${_IMPORT_PREFIX}/PySide6/libpyside6qml\.cpython~/usr/$(get_libdir)/libpyside6qml\.cpython~g" \
+ -e "s~libshiboken6\.cpython.*\.so\.$(ver_cut 1-3)~libshiboken6\${PYTHON_CONFIG_SUFFIX}\.so\.$(ver_cut 1-2)~g" \
+ -e "s~libpyside6\.cpython.*\.so\.$(ver_cut 1-3)~libpyside6\${PYTHON_CONFIG_SUFFIX}\.so\.$(ver_cut 1-2)~g" \
+ -e "s~libpyside6qml\.cpython.*\.so\.$(ver_cut 1-3)~libpyside6qml\${PYTHON_CONFIG_SUFFIX}\.so\.$(ver_cut 1-2)~g" \
+ -e "s~libshiboken6\.cpython.*\.so\.$(ver_cut 1-2)~libshiboken6\${PYTHON_CONFIG_SUFFIX}\.so\.$(ver_cut 1-2)~g" \
+ -e "s~libpyside6\.cpython.*\.so\.$(ver_cut 1-2)~libpyside6\${PYTHON_CONFIG_SUFFIX}\.so\.$(ver_cut 1-2)~g" \
+ -e "s~libpyside6qml\.cpython.*\.so\.$(ver_cut 1-2)~libpyside6qml\${PYTHON_CONFIG_SUFFIX}\.so\.$(ver_cut 1-2)~g" \
+ -e "s~\${PACKAGE_PREFIX_DIR}/~\${PACKAGE_PREFIX_DIR}/share/PySide6/~g" \
+ -e "s~\${_IMPORT_PREFIX}/shiboken6/include~/usr/include/shiboken6~g" \
+ -e "s~\${_IMPORT_PREFIX}/PySide6/include~/usr/include/PySide6~g" \
+ -i "${BUILD_DIR}/install/usr/lib/cmake/"*/*.cmake || die
+ local file
+ for file in "${BUILD_DIR}/install/usr/lib/cmake/"*/*.cpython-*.cmake
+ do
+ local base=${file##*/}
+ ln -s "${base}" "${file%/*}/${base%%.*}-${EPYTHON}.cmake" ||
+ die
+ done
+}
+
+python_test() {
+ # Otherwise it picks the last built directory breaking assumption for multi target builds
+ local pyside_build_dir="qfp$(usev debug d)-py${EPYTHON#python}-qt$(ver_cut 1-3)-${pyside_build_id}"
+
+ local buildno=$(find "${BUILD_DIR}"/build* -name "${pyside_build_dir}" | sort -V | tail -n1)
+ if [[ -z "${buildno}" ]]; then
+ die "could not find any build directories for ${pyside_build_dir}"
+ fi
+
+ buildno="${buildno#"${BUILD_DIR}/build"}"
+ buildno="${buildno%"/${pyside_build_dir}"}"
+
+ local -x PYTHONPATH="${BUILD_DIR}/install$(python_get_sitedir)"
+ local -x QTEST_ENVIRONMENT=ci
+
+ # test shiboken6 build
+ virtx ${EPYTHON} testrunner.py test --buildno "$((buildno - 1))" --projects=shiboken6 ||
+ die "Tests failed with ${EPYTHON}"
+
+ if use core; then
+ # test pyside6 build
+ virtx ${EPYTHON} testrunner.py test --buildno "${buildno}" --projects=pyside6 ||
+ die "Tests failed with ${EPYTHON}"
+ fi
+}
+
+pkg_preinst() {
+ # Avoid symlinks being blocked by directories
+ rm -rf "${EROOT}/usr/include/"{PySide6,shiboken6} || die
+ rm -rf "${EROOT}/usr/share/PySide6" || die
+}
diff --git a/dev-python/pyspectrum2/pyspectrum2-0.2.0-r2.ebuild b/dev-python/pyspectrum2/pyspectrum2-0.2.0-r2.ebuild
index 4747e0890a91..c287ad7297bb 100644
--- a/dev-python/pyspectrum2/pyspectrum2-0.2.0-r2.ebuild
+++ b/dev-python/pyspectrum2/pyspectrum2-0.2.0-r2.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
diff --git a/dev-python/pytest-jobserver/pytest-jobserver-1.1.0.ebuild b/dev-python/pytest-jobserver/pytest-jobserver-1.1.0.ebuild
index 1edcc7e5fc5e..b1cebb660757 100644
--- a/dev-python/pytest-jobserver/pytest-jobserver-1.1.0.ebuild
+++ b/dev-python/pytest-jobserver/pytest-jobserver-1.1.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~s390 ~x86"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~riscv ~s390 ~x86"
RDEPEND="
dev-python/pytest[${PYTHON_USEDEP}]
diff --git a/dev-python/python-distutils-extra/Manifest b/dev-python/python-distutils-extra/Manifest
index 3ae520c1618d..fe775f37eb94 100644
--- a/dev-python/python-distutils-extra/Manifest
+++ b/dev-python/python-distutils-extra/Manifest
@@ -1 +1,2 @@
DIST python-distutils-extra-2.47.tar.bz2 38346 BLAKE2B 2f9ad3c8c429570bd45c06af3eb2b12bf5f539c49e3b3a40c3558e67a4e4fc9f0bca0c4217bac6c8792e0514d75ac2b4b112dbeaffa96d626fffcc237860342d SHA512 b848b8ccfd84289e5482ba264a8d8d81cdbeba97358c9fff6fb02040eeb740bacfcc19b302e56a95b400528f7e03390ea4073b8c80d1e5a5e61e1b6c46b39648
+DIST python-distutils-extra-debian-3.3.tar.bz2 36563 BLAKE2B 033e83a69ec1ffc2980b4c4040dec1a0a466d3da7ff52e552c8d145e0f6b7bd3d93c4d214fde824ba09aa576054f6b8644e4c68bad30b9a0d3768ca43a6c7e5e SHA512 062c92a0eb6654d38e1d5934d1f98d04a83a3514d0f0fa997a84dd28d9b56d89c60dd000e0a89625d96cf94c1204ced00bc7b132b5d5be011f370afd9fd69a91
diff --git a/dev-python/python-distutils-extra/python-distutils-extra-2.47.ebuild b/dev-python/python-distutils-extra/python-distutils-extra-2.47.ebuild
index 8a173b078417..b15059aa9d76 100644
--- a/dev-python/python-distutils-extra/python-distutils-extra-2.47.ebuild
+++ b/dev-python/python-distutils-extra/python-distutils-extra-2.47.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
diff --git a/dev-python/python-distutils-extra/python-distutils-extra-3.3.ebuild b/dev-python/python-distutils-extra/python-distutils-extra-3.3.ebuild
new file mode 100644
index 000000000000..608ee62c2551
--- /dev/null
+++ b/dev-python/python-distutils-extra/python-distutils-extra-3.3.ebuild
@@ -0,0 +1,42 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+MY_P="${PN}-debian-${PV}"
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="Gettext support, themed icons and scrollkeeper-based documentation in distutils"
+HOMEPAGE="
+ https://salsa.debian.org/python-team/packages/python-distutils-extra/
+ https://launchpad.net/python-distutils-extra/
+"
+SRC_URI="
+ https://salsa.debian.org/python-team/packages/python-distutils-extra/-/archive/debian/${PV}/${MY_P}.tar.bz2
+"
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+DOCS=( doc/{README,FAQ} )
+
+BDEPEND="
+ test? (
+ >=dev-libs/gobject-introspection-1.82.0-r2
+ dev-python/httplib2[${PYTHON_USEDEP}]
+ dev-python/pygobject[${PYTHON_USEDEP}]
+ dev-util/intltool
+ )
+"
+
+python_test() {
+ local -x SETUPTOOLS_USE_DISTUTILS=stdlib
+ "${EPYTHON}" test/auto.py -v || die "Tests fail with ${EPYTHON}"
+}
diff --git a/dev-python/python-ldap/Manifest b/dev-python/python-ldap/Manifest
index f229740ce905..73dafd8a25ad 100644
--- a/dev-python/python-ldap/Manifest
+++ b/dev-python/python-ldap/Manifest
@@ -1 +1,2 @@
DIST python-ldap-3.4.5.gh.tar.gz 380704 BLAKE2B bd047f4472d23cbdb8573549e8b769b485bab1797d8325337a659e4388683ba44f8ab2709fa31289b46ab7198d3528247e0d156631c0e48ec7ee989d2b43802d SHA512 5161b7f2b5a0d975f7e5c7e16df132f0b709b986ec8a8e304d836bad278b971f5fdaf4ef39116d62947695f9eb5d7b3315317a3c7973d045c3cbde03933f4308
+DIST python-ldap-3.4.6.gh.tar.gz 381136 BLAKE2B 5d57d2f6d58facf4942a36ecfccd542e9a3bce91dbce1a49e7c94360f11486266aac469c4d4df00b61081395014def4c856c156c5f78ea1c1fb7dcc6edbbf26b SHA512 29d5fbb4e6c7e07160e591ef74aa342e4a7906ab712f6054f6e3eca1c7bd1164083c6bb9653260c12015a6e8ebcfe673e36f7614ff02f0dc1d9de7683a557a54
diff --git a/dev-python/python-ldap/python-ldap-3.4.6.ebuild b/dev-python/python-ldap/python-ldap-3.4.6.ebuild
new file mode 100644
index 000000000000..3d04dbdfcfee
--- /dev/null
+++ b/dev-python/python-ldap/python-ldap-3.4.6.ebuild
@@ -0,0 +1,81 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="Various LDAP-related Python modules"
+HOMEPAGE="
+ https://www.python-ldap.org/en/latest/
+ https://pypi.org/project/python-ldap/
+ https://github.com/python-ldap/python-ldap/
+"
+SRC_URI="
+ https://github.com/python-ldap/python-ldap/archive/${P}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+S=${WORKDIR}/${PN}-${P}
+
+LICENSE="MIT PSF-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
+IUSE="examples sasl ssl"
+
+RDEPEND="
+ >=dev-python/pyasn1-0.3.7[${PYTHON_USEDEP}]
+ >=dev-python/pyasn1-modules-0.1.5[${PYTHON_USEDEP}]
+ net-nds/openldap:=[sasl?,ssl?]
+"
+# We do not link against cyrus-sasl but we use some
+# of its headers during the build.
+DEPEND="
+ net-nds/openldap:=[sasl?,ssl?]
+ sasl? ( >=dev-libs/cyrus-sasl-2.1 )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+distutils_enable_sphinx Doc
+
+python_prepare_all() {
+ if ! use sasl; then
+ sed -i 's/HAVE_SASL//g' setup.cfg || die
+ fi
+ if ! use ssl; then
+ sed -i 's/HAVE_TLS//g' setup.cfg || die
+ fi
+
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ # Run all tests which don't require slapd
+ local EPYTEST_IGNORE=(
+ t_bind.py
+ t_cext.py
+ t_edit.py
+ t_ldapobject.py
+ t_ldap_options.py
+ t_ldap_sasl.py
+ t_ldap_schema_subentry.py
+ t_ldap_syncrepl.py
+ t_slapdobject.py
+ )
+ pushd Tests >/dev/null || die
+ epytest
+ popd > /dev/null || die
+}
+
+python_install_all() {
+ if use examples; then
+ docinto examples
+ dodoc -r Demo/.
+ docompress -x /usr/share/doc/${PF}/examples
+ fi
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/requests/Manifest b/dev-python/requests/Manifest
index c24c914e6df8..abc21471ae71 100644
--- a/dev-python/requests/Manifest
+++ b/dev-python/requests/Manifest
@@ -4,3 +4,5 @@ DIST requests-2.34.0.tar.gz 142436 BLAKE2B 3aa791f8ebc58f6cd0f51883653a6860ba650
DIST requests-2.34.0.tar.gz.provenance 9389 BLAKE2B b25418a2b8160ac911e40d74d6f5e5359752ed956c683acb06e6dc90b13eac198cce8f389f9e6a1ed68f5f7a0317e29bb3723fbfc4a71e6bcf08f604adc15d39 SHA512 8b6387f8c81e3b1d160498992af49991e50f9c85f064a9d4b88b2346f9524d5cc6e1f996b2b347a351b9681d51e1ba28cffb8d51c53d7143fdea99943d953ad1
DIST requests-2.34.1.tar.gz 142783 BLAKE2B 868efc2e60868d71437b007fc7bab44b344e573ed94a9dd551dd7d675924de581aa9e940ced50f60305c944b38c5be89ef2832904ea19ce2f36b994c70be8093 SHA512 1e734caa69e99c120cfff2bd5aade24feaa0000684f5499fcad94ae246aa68720724ab7acbdd611df14ca6d20f705c906fa27b808f6cf6b97fc325e41abb4dae
DIST requests-2.34.1.tar.gz.provenance 9503 BLAKE2B cffe5ceda2925e220b2af586bcc8363ad0ace0cb045e5a40d7a620ab8c4a43ab600c82d3579d7c6ef52eec9521c938c9fed5e823c5dba0089de09a70355f082e SHA512 ea1ec91731c4e70fa348b5acbcc88a9e9d0b46058e74d771565ad99704c4f48d8c7f511d94c3ff59ccd43c12d4a3014f8bb7c3cdb8610f7610322aef18940f40
+DIST requests-2.34.2.tar.gz 142856 BLAKE2B 94c27e54dd0d49571179fbfe7ec666e507a5b698ea93d26c66069fa3e08bd5aeed157124111cf0b730dcd2626f5fd03b5616f08ea723c9a1e55946bdbe30316b SHA512 106d99c51c7e76d35e27dd64988afb0cc339d4f05fabb3ba1a2480e34744b4a66393e0c7873d236a9f220f6a8990d5a45a251cdbe9ce25f01e1591e693b6c9e7
+DIST requests-2.34.2.tar.gz.provenance 9311 BLAKE2B 3600692e3fd67856e5cab04f9583cd134ada2783ed229f5deb04ff7f01fc692f85661871944dabb11d2f05ec25a3495b27e582736f73d8d3ac6b56aa79528611 SHA512 e2fbe3954e86a1ef1aa05bf58a9cfc45c0cc4e82ccd4fba67261ff87b94627956504764b29c0cded131f6e9ce22a0dbfe74a16eb4885cf164dea1eec16f5aa81
diff --git a/dev-python/requests/requests-2.34.2.ebuild b/dev-python/requests/requests-2.34.2.ebuild
new file mode 100644
index 000000000000..6914a45b50a2
--- /dev/null
+++ b/dev-python/requests/requests-2.34.2.ebuild
@@ -0,0 +1,75 @@
+# 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
+PYPI_VERIFY_REPO=https://github.com/psf/requests
+PYTHON_COMPAT=( python3_{10..14} )
+PYTHON_REQ_USE="threads(+)"
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="HTTP library for human beings"
+HOMEPAGE="
+ https://requests.readthedocs.io/
+ https://github.com/psf/requests/
+ https://pypi.org/project/requests/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos"
+IUSE="socks5 test-rust"
+
+RDEPEND="
+ >=dev-python/certifi-2017.4.17[${PYTHON_USEDEP}]
+ <dev-python/charset-normalizer-4[${PYTHON_USEDEP}]
+ <dev-python/idna-4[${PYTHON_USEDEP}]
+ <dev-python/urllib3-3[${PYTHON_USEDEP}]
+ socks5? ( >=dev-python/pysocks-1.5.6[${PYTHON_USEDEP}] )
+"
+
+BDEPEND="
+ test? (
+ dev-python/httpbin[${PYTHON_USEDEP}]
+ >=dev-python/pysocks-1.5.6[${PYTHON_USEDEP}]
+ test-rust? (
+ dev-python/trustme[${PYTHON_USEDEP}]
+ )
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-{httpbin,mock} )
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # remove useless dependency check spam
+ sed -i -e '/urllib3_version_list =/i\
+ return' src/requests/__init__.py || die
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # Internet (doctests)
+ requests/__init__.py::requests
+ requests/api.py::requests.api.request
+ requests/models.py::requests.models.PreparedRequest
+ requests/sessions.py::requests.sessions.Session
+ # require IPv4 interface in 10.* range
+ tests/test_requests.py::TestTimeout::test_connect_timeout
+ tests/test_requests.py::TestTimeout::test_total_timeout_connect
+ )
+
+ if ! has_version "dev-python/trustme[${PYTHON_USEDEP}]"; then
+ EPYTEST_DESELECT+=(
+ tests/test_requests.py::TestRequests::test_https_warnings
+ )
+ fi
+
+ epytest
+}
diff --git a/dev-python/sense-hat/sense-hat-2.6.0.ebuild b/dev-python/sense-hat/sense-hat-2.6.0.ebuild
index f0c9cbf1c9dd..f35be7c92eda 100644
--- a/dev-python/sense-hat/sense-hat-2.6.0.ebuild
+++ b/dev-python/sense-hat/sense-hat-2.6.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
diff --git a/dev-python/sphobjinv/sphobjinv-2.4.ebuild b/dev-python/sphobjinv/sphobjinv-2.4.ebuild
index b47e7a0ec2b3..093392ef6546 100644
--- a/dev-python/sphobjinv/sphobjinv-2.4.ebuild
+++ b/dev-python/sphobjinv/sphobjinv-2.4.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="MIT"
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/attrs-19.2[${PYTHON_USEDEP}]
diff --git a/dev-python/testtools/testtools-2.9.0.ebuild b/dev-python/testtools/testtools-2.9.0.ebuild
index f76cca969639..317d02be0b2b 100644
--- a/dev-python/testtools/testtools-2.9.0.ebuild
+++ b/dev-python/testtools/testtools-2.9.0.ebuild
@@ -18,7 +18,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"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/thrift/Manifest b/dev-python/thrift/Manifest
index 840a578b3e87..0586552d4594 100644
--- a/dev-python/thrift/Manifest
+++ b/dev-python/thrift/Manifest
@@ -1 +1,2 @@
DIST thrift-0.22.0.tar.gz 4422267 BLAKE2B b91b3379dcce0222e0cc29cd783710ef183694d96e4794535d72a7a49764e994e70a6560841bc93668d4997a68f405eaa5a5f2d0c5a1c6238c6bd9b3556d9400 SHA512 beb37ee2a295fae7df12cce6449c92799076771bae515fafcc790a62ac6e76ac5584f102315d466b8f5f98e236c9dc4a244695bdcd9f1392d6e9a13d365ddadc
+DIST thrift-0.23.0.tar.gz 4608023 BLAKE2B 6780b4afa3d85e106f81458a8d11f823233baa890df1ddc17b059c9394bfb7e13ef6699697b8c3ef991e24f74611c3040490175be90fa0cd46b12d8c4f44ddc3 SHA512 a57c6fa645852f22ca10380621facc193393b19d1d760e113baa0f964365839043f2b527bd8cd3c03808380e9f09e9a8f707f8abbd931c51632e9d5181a459cf
diff --git a/dev-python/thrift/thrift-0.23.0.ebuild b/dev-python/thrift/thrift-0.23.0.ebuild
new file mode 100644
index 000000000000..cc21e688c766
--- /dev/null
+++ b/dev-python/thrift/thrift-0.23.0.ebuild
@@ -0,0 +1,38 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="Python implementation of Thrift"
+HOMEPAGE="
+ https://pypi.org/project/thrift/
+ https://thrift.apache.org/
+ https://github.com/apache/thrift
+"
+SRC_URI="
+ mirror://apache/${PN}/${PV}/${P}.tar.gz
+"
+S="${WORKDIR}/${P}/lib/py"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~riscv ~x86"
+
+distutils_enable_tests unittest
+
+python_test() {
+ eunittest test
+}
+
+src_install() {
+ distutils-r1_src_install
+ # avoid file collision with dev-libs/thrift (bug #933272)
+ mv "${D}"/usr/share/doc/${P}/README.md \
+ "${D}"/usr/share/doc/${P}/ReadMe.md || die
+}
diff --git a/dev-python/translate-toolkit/Manifest b/dev-python/translate-toolkit/Manifest
index 45adfedb32f4..2d477e1f17d9 100644
--- a/dev-python/translate-toolkit/Manifest
+++ b/dev-python/translate-toolkit/Manifest
@@ -1,3 +1,4 @@
+DIST translate-3.19.10.gh.tar.gz 1353016 BLAKE2B 7da28b38c72fd834edceb0f556a13967f75e139418145f5baf981cdde2cb1cab7fae3503b9aae88be395d4e2bc99422d9b06fbb0247b379d6020201729526c67 SHA512 3a26ad243203fff2352f714e19a9024dfe39d5a46a14ba6682efb54f2832866a246446328be79b8efc39b89bf48e150dd90e289082e164376381ba64ff64f88f
DIST translate-3.19.4.gh.tar.gz 1312664 BLAKE2B 90da92402354a10bb68701781bd2572aa8461aa858840badbbdc866da8ddc600006b9d22e177f5f3ce68a5eaec14f38373f6c13c758d84f208da71a97885161d SHA512 e4fbf1276205452782f798b1f57fb2acb57fc1d92246a032e2912def53db1764121a6a0ddff9a9237a21f9bb1fad274129133517ec28e8d26add592ac7b4ebcc
DIST translate-3.19.5.gh.tar.gz 1320567 BLAKE2B ea27702656b25423fa71f0624d68a82d75ba8a4bb334846f3dfa2f4448ead68987ad6ff15a7cd1c74f6199ecf14c80e9d3d7b50b914f74756848ed37a6974ed3 SHA512 92a5d65217ff15cee3753071cd78b218c6492049752b395fc841799c71eea056027515455b65565b2d22f1eba7305bc0d5ee453cd7995d52fa7f88f0d3fe7876
DIST translate-3.19.6.gh.tar.gz 1327150 BLAKE2B a1337276a2a15a7d522e86def20df4137fec8f566df8ca1ec945b12e627a4ebf78aaace4266ef1ef00dca5ac30b3767dea0a1dcd79d3fe8bb8b5cf74dcff1117 SHA512 c21c563e530fe3550c1e5d97f30cb861f47bcde867547a07aaa992fe8721ad20fa18a2a2227fccd2b458cf14a2788137176a1eff5b11f4cfbc4f5cbdfdfc7729
diff --git a/dev-python/translate-toolkit/translate-toolkit-3.19.10.ebuild b/dev-python/translate-toolkit/translate-toolkit-3.19.10.ebuild
new file mode 100644
index 000000000000..223963d5c476
--- /dev/null
+++ b/dev-python/translate-toolkit/translate-toolkit-3.19.10.ebuild
@@ -0,0 +1,131 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..14} )
+PYTHON_REQ_USE="sqlite"
+
+inherit distutils-r1
+
+MY_P=translate-${PV}
+DESCRIPTION="Toolkit to convert between many translation formats"
+HOMEPAGE="
+ https://github.com/translate/translate/
+ https://pypi.org/project/translate-toolkit/
+"
+SRC_URI="
+ https://github.com/translate/translate/archive/${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S="${WORKDIR}"/${MY_P}
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE="+html +ical +ini +subtitles +yaml"
+
+RDEPEND="
+ app-text/iso-codes
+ >=dev-python/chardet-3.0.4[${PYTHON_USEDEP}]
+ dev-python/cheroot[${PYTHON_USEDEP}]
+ >=dev-python/levenshtein-0.12.0[${PYTHON_USEDEP}]
+ >=dev-python/lxml-5.2.0[${PYTHON_USEDEP}]
+ >=dev-python/mistletoe-1.1.0[${PYTHON_USEDEP}]
+ >=dev-python/pyparsing-3[${PYTHON_USEDEP}]
+ dev-python/ruamel-yaml[${PYTHON_USEDEP}]
+ dev-python/tomlkit[${PYTHON_USEDEP}]
+ >=dev-python/unicode-segmentation-rs-0.2.0[${PYTHON_USEDEP}]
+ >=dev-python/wcwidth-0.2.14[${PYTHON_USEDEP}]
+ sys-devel/gettext
+ html? ( dev-python/utidylib[${PYTHON_USEDEP}] )
+ ical? ( dev-python/vobject[${PYTHON_USEDEP}] )
+ ini? ( >=dev-python/iniparse-0.5[${PYTHON_USEDEP}] )
+ subtitles? ( media-video/gaupol[${PYTHON_USEDEP}] )
+ yaml? ( dev-python/pyyaml[${PYTHON_USEDEP}] )
+"
+# Technically, the test suite also has undeclared dependency
+# on dev-python/snapshottest but all the tests using it are broken
+# anyway, so we skip them.
+BDEPEND="
+ test? (
+ dev-python/phply[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # strip unnecessary pins
+ sed -i -e 's:,<[0-9.]*::' pyproject.toml || die
+}
+
+src_test() {
+ # unfortunately, this bad quality package doesn't support XDG_DATA_DIRS
+ # correctly, so we need to reassemble all data files in a single directory
+ local -x XDG_DATA_HOME=${T}/share
+ cp -r translate/share "${T}/" || die
+ cp -r "${ESYSROOT}"/usr/share/gaupol "${XDG_DATA_HOME}"/ || die
+
+ distutils-r1_src_test
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # Fails with network-sandbox (and even with it off but w/ softer fail)
+ 'tests/xliff_conformance/test_xliff_conformance.py::test_open_office_to_xliff'
+ 'tests/xliff_conformance/test_xliff_conformance.py::test_po_to_xliff'
+ # all tests based on snapshottest are broken and I'm too tired
+ # to figure this out
+ tests/translate/tools/test_pocount.py::test_{cases,output}
+ tests/translate/tools/test_junitmsgfmt.py::test_output
+ tests/cli/test_cli_snapshots.py
+ )
+ local EPYTEST_IGNORE=(
+ # unpackaged fluent.*
+ tests/translate/storage/test_fluent.py
+ tests/translate/convert/test_fluent2po.py
+ # changes directory and does not change it back, sigh
+ tests/odf_xliff/test_odf_xliff.py
+ )
+
+ if ! has_version "dev-python/iniparse[${PYTHON_USEDEP}]"; then
+ EPYTEST_IGNORE+=(
+ translate/convert/test_ini2po.py
+ translate/convert/test_po2ini.py
+ )
+ fi
+
+ if ! has_version "media-video/gaupol[${PYTHON_USEDEP}]"; then
+ EPYTEST_IGNORE+=(
+ translate/storage/test_subtitles.py
+ )
+ fi
+
+ epytest
+}
+
+python_install_all() {
+ distutils-r1_python_install_all
+
+ insinto /usr
+ doins -r translate/share
+
+ if ! use html; then
+ rm "${ED}"/usr/bin/{html2po,po2html} || die
+ fi
+ if ! use ical; then
+ rm "${ED}"/usr/bin/{ical2po,po2ical} || die
+ fi
+ if ! use ini; then
+ rm "${ED}"/usr/bin/{ini2po,po2ini} || die
+ fi
+ if ! use subtitles; then
+ rm "${ED}"/usr/bin/{sub2po,po2sub} || die
+ fi
+}
diff --git a/dev-python/typeguard/Manifest b/dev-python/typeguard/Manifest
index aa40d8328e12..0522a20a9a6c 100644
--- a/dev-python/typeguard/Manifest
+++ b/dev-python/typeguard/Manifest
@@ -1,2 +1,4 @@
DIST typeguard-4.5.1.tar.gz 80121 BLAKE2B 4156be34863fa4d14ef1c928059f3a6d5ffe5e508d09fedaa729c668fa9b3e8d3a6357082308c761440d4ebb55bec396c333b1c0b76ae23f2cb9396e5dd1e67d SHA512 6f9dea4b0eab7f9480d93d021673d61292bcaf4c2c688d7e00a3ce9948f18d230d4707c532ea40e588bb883fc5b60c59b385276e2e8963c31eb696f3891d3439
DIST typeguard-4.5.1.tar.gz.provenance 9482 BLAKE2B 18feded8f2be9faffe6c23eba7b7bbc5346ea39c9b49bd236f0509ceaec975cc51ecb6268b1e182ea0bc706222bc899b0be1f449dbe527ec83d43fe749e755ee SHA512 48b8a6155eb34939678ff867c967909456aa39ec1d1babb02327d837887afd9e9609b6681b7fa62350560ab57a3477112798515ba5fd4f7585d38fce74364469
+DIST typeguard-4.5.2.tar.gz 80240 BLAKE2B c01e45060bc5a89e6545e7f627e3889580f712025affbe3022d6338bfc6b34f0cad0da5b20e7a8898606a9a1b7f189d2b90432e576c58f73329959a0b48961d1 SHA512 29f8ef17f148489656e7dc16ab89a2bcc890c43d54834c095ec238649028cfeb585238935cbbd2bed5311f530a1a9c4341a075466a605c471d6982aeb1dc5488
+DIST typeguard-4.5.2.tar.gz.provenance 9478 BLAKE2B cdbf5265c47a4373f5fa11257eae249928a7f52ae1c4cef835bb9789a81874b91c46f653c89dc96276b3984aa9a076566d3a3f706cadfe808e00c8573a95d322 SHA512 df64d46286633d1b538a05f9b6b4042b9d5219e2f55938e49e31a39619200f4ce2d48776fa1758d112b0cefa35521aa2b9094e2ebc47de3ecf47514642f89e4e
diff --git a/dev-python/typeguard/typeguard-4.5.2.ebuild b/dev-python/typeguard/typeguard-4.5.2.ebuild
new file mode 100644
index 000000000000..c6a8a47df7ab
--- /dev/null
+++ b/dev-python/typeguard/typeguard-4.5.2.ebuild
@@ -0,0 +1,41 @@
+# Copyright 2021-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/agronholm/typeguard
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Run-time type checker for Python"
+HOMEPAGE="
+ https://pypi.org/project/typeguard/
+ https://github.com/agronholm/typeguard/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/typing-extensions-4.14.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ >=dev-python/setuptools-scm-6.4[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_IGNORE=(
+ # mypy changes results from version to version
+ tests/mypy
+ )
+
+ local -x PYTHONDONTWRITEBYTECODE=
+ # the XFAIL test pass due to some package being installed
+ epytest -o xfail_strict=False -p typeguard
+}
diff --git a/dev-python/uvicorn/Manifest b/dev-python/uvicorn/Manifest
index ae27b994561f..e39d9d7698be 100644
--- a/dev-python/uvicorn/Manifest
+++ b/dev-python/uvicorn/Manifest
@@ -4,3 +4,5 @@ DIST uvicorn-0.45.0.tar.gz 87818 BLAKE2B fcee2f622aa6dfebf403fc8467381196c8eb737
DIST uvicorn-0.45.0.tar.gz.provenance 9302 BLAKE2B 382e7c472df9fa8acc89509c32c3fa9d6c00f0689722203ee3a0bde25952fba6884a9a1ba67c470816de9db6910d32f1b7940d9ffbb33a18759b9f1ed07fa135 SHA512 1c810d2a2e90bb27471853ca8ffc710ae824ec07f396e32075c36cbbfc154dcfdca759d35fe412aa3b656e447d3a29323be4b7fa34ac24779a5674d137ec0749
DIST uvicorn-0.46.0.tar.gz 88758 BLAKE2B b2ea96cf8985d5cee09edb119d0198bc901c8167b6f05bdf4528a0407a571fc0ad814dbf4fd7ac7a20a66d355bcbb1bfbf9bcf1656d94e12d875d7583fe4cfdb SHA512 409d162e597ca5ee8a0155e885f706914e449b1316be6e45401a6ee606997035ccd3950a6841a4bd6daf594dc779420ad35b47479a229fa599821018cc7a4e4b
DIST uvicorn-0.46.0.tar.gz.provenance 9204 BLAKE2B f96dea92f1167050ec785b67fae0a9b89d9e8aebc17d2f299beb3dd3c0627e9a07cf69011b88c0880c37e6f1e45c97cf00900c182afd305689c2a875901f847b SHA512 38e22587c3f1ff4508c19b1bc67da378b7c4c0b006467ac70ec42f8b77f57014836a8e519c6bf3918d4965677ca3acb333f020e512a3e17314facbb4b53a52dd
+DIST uvicorn-0.47.0.tar.gz 90582 BLAKE2B f37c8705b37daf7bb1dd6baf6baa3e310354fce4ffc96d0f4c2e3e57e6cd4ca500a37a8f0057200334c233130f774544b4b0c5939a659fbc53f549751d59a64e SHA512 877518bdaf9f3bb734353949461dd3eec49e24129afcb6a82a908af101cd54acd8364be07fc5b03cd02260577faa3c709574e4e0cbd44ee59922d7b2e2099f92
+DIST uvicorn-0.47.0.tar.gz.provenance 9431 BLAKE2B cd6f6ee3a48e788aa5161d1d9fc9066ce49456042c98acdd46adaea60439870f7c6276ab14793a040736aaf497e1b1b82f2e6a010ae8ec445ab29b2a44eaa4c1 SHA512 b0a4fb992aaeca52774751137070e8fd26d55e61491efae97454f37ea043bf437e455775f1b3ba99b95b603da21a8feda54d295dac83dbb0f5957a0b8f653162
diff --git a/dev-python/uvicorn/uvicorn-0.47.0.ebuild b/dev-python/uvicorn/uvicorn-0.47.0.ebuild
new file mode 100644
index 000000000000..9e0112dba2fa
--- /dev/null
+++ b/dev-python/uvicorn/uvicorn-0.47.0.ebuild
@@ -0,0 +1,80 @@
+# Copyright 2021-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYPI_VERIFY_REPO=https://github.com/Kludex/uvicorn
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 optfeature pypi
+
+DESCRIPTION="Lightning-fast ASGI server implementation"
+HOMEPAGE="
+ https://www.uvicorn.org/
+ https://github.com/Kludex/uvicorn/
+ https://pypi.org/project/uvicorn/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="test-rust"
+
+RDEPEND="
+ >=dev-python/asgiref-3.4.0[${PYTHON_USEDEP}]
+ >=dev-python/click-7.0[${PYTHON_USEDEP}]
+ >=dev-python/h11-0.8[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/a2wsgi[${PYTHON_USEDEP}]
+ >=dev-python/httptools-0.6.3[${PYTHON_USEDEP}]
+ >=dev-python/httpx-0.28[${PYTHON_USEDEP}]
+ dev-python/python-dotenv[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ dev-python/typing-extensions[${PYTHON_USEDEP}]
+ >=dev-python/websockets-10.4[${PYTHON_USEDEP}]
+ dev-python/wsproto[${PYTHON_USEDEP}]
+ test-rust? (
+ dev-python/cryptography[${PYTHON_USEDEP}]
+ dev-python/trustme[${PYTHON_USEDEP}]
+ >=dev-python/watchfiles-0.20[${PYTHON_USEDEP}]
+ )
+ )
+"
+
+EPYTEST_PLUGINS=( anyio pytest-mock )
+EPYTEST_RERUNS=5
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # too long path for unix socket
+ tests/test_config.py::test_bind_unix_socket_works_with_reload_or_workers
+ # TODO
+ 'tests/protocols/test_http.py::test_close_connection_with_multiple_requests[httptools]'
+ 'tests/protocols/test_websocket.py::test_send_binary_data_to_server_bigger_than_default_on_websockets[httptools-max=defaults sent=defaults+1]'
+ 'tests/protocols/test_websocket.py::test_send_binary_data_to_server_bigger_than_default_on_websockets[h11-max=defaults sent=defaults+1]'
+ # tests broken with non-ancient dev-python/websockets
+ tests/protocols/test_websocket.py::test_fragmented_message_exceeding_max_size
+ tests/protocols/test_websocket.py::test_fragmented_message_reassembly
+ )
+ case ${EPYTHON} in
+ pypy3*)
+ EPYTEST_DESELECT+=(
+ # TODO
+ tests/middleware/test_logging.py::test_running_log_using_fd
+ # crashes pytest-xdist
+ tests/test_config.py::test_bind_stdin_works_with_reload_or_workers
+ )
+ ;;
+ esac
+
+ epytest
+}
+
+pkg_postinst() {
+ optfeature "auto reload on file changes" dev-python/watchfiles
+}
diff --git a/dev-python/xarray/xarray-2026.4.0.ebuild b/dev-python/xarray/xarray-2026.4.0.ebuild
index 3a5104a7509c..2a73ffdb0113 100644
--- a/dev-python/xarray/xarray-2026.4.0.ebuild
+++ b/dev-python/xarray/xarray-2026.4.0.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+KEYWORDS="amd64 arm64 ~riscv ~x86"
IUSE="big-endian"
RDEPEND="
diff --git a/dev-python/zipp/zipp-3.23.1.ebuild b/dev-python/zipp/zipp-3.23.1.ebuild
index 73de532c202b..1a37d4cc6d4c 100644
--- a/dev-python/zipp/zipp-3.23.1.ebuild
+++ b/dev-python/zipp/zipp-3.23.1.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 ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos ~x64-solaris"
# big_o is only used in test_complexity, that we ignore
BDEPEND="