summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/aiodns/aiodns-4.0.4.ebuild2
-rw-r--r--dev-python/autobahn/Manifest2
-rw-r--r--dev-python/autobahn/autobahn-25.10.2.ebuild125
-rw-r--r--dev-python/autobahn/autobahn-25.11.1.ebuild128
-rw-r--r--dev-python/aws-sam-translator/aws-sam-translator-1.110.0.ebuild2
-rw-r--r--dev-python/black/black-26.5.1.ebuild2
-rw-r--r--dev-python/boltons/Manifest1
-rw-r--r--dev-python/boltons/boltons-26.0.0.ebuild20
-rw-r--r--dev-python/boto3/Manifest1
-rw-r--r--dev-python/boto3/boto3-1.43.33.ebuild53
-rw-r--r--dev-python/botocore/Manifest1
-rw-r--r--dev-python/botocore/botocore-1.43.33.ebuild67
-rw-r--r--dev-python/cachetools/cachetools-7.1.3.ebuild2
-rw-r--r--dev-python/cli-helpers/cli-helpers-2.15.0.ebuild2
-rw-r--r--dev-python/dbus-fast/dbus-fast-4.3.0.ebuild2
-rw-r--r--dev-python/decorator/decorator-5.3.1.ebuild2
-rw-r--r--dev-python/django-debug-toolbar/Manifest2
-rw-r--r--dev-python/django-debug-toolbar/django-debug-toolbar-7.0.0.ebuild46
-rw-r--r--dev-python/genshi/genshi-0.7.11.ebuild2
-rw-r--r--dev-python/hcloud/Manifest1
-rw-r--r--dev-python/hcloud/hcloud-2.22.0.ebuild51
-rw-r--r--dev-python/hypothesis/Manifest1
-rw-r--r--dev-python/hypothesis/hypothesis-6.155.5.ebuild105
-rw-r--r--dev-python/icalendar/icalendar-7.1.1.ebuild2
-rw-r--r--dev-python/iterable-io/iterable-io-1.0.4.ebuild2
-rw-r--r--dev-python/jc/Manifest1
-rw-r--r--dev-python/jc/jc-1.25.7.ebuild37
-rw-r--r--dev-python/msgpack/Manifest2
-rw-r--r--dev-python/msgpack/msgpack-1.2.1.ebuild61
-rw-r--r--dev-python/nanobind/Manifest1
-rw-r--r--dev-python/nanobind/nanobind-2.13.0.ebuild63
-rw-r--r--dev-python/oslo-config/oslo-config-10.4.0.ebuild2
-rw-r--r--dev-python/oslo-context/oslo-context-6.4.0.ebuild2
-rw-r--r--dev-python/oslo-i18n/oslo-i18n-6.8.0.ebuild2
-rw-r--r--dev-python/oslo-log/oslo-log-8.2.0.ebuild2
-rw-r--r--dev-python/oslo-serialization/oslo-serialization-5.10.0.ebuild2
-rw-r--r--dev-python/parver/parver-1.0.ebuild2
-rw-r--r--dev-python/pathable/pathable-0.6.0.ebuild2
-rw-r--r--dev-python/pygal/Manifest1
-rw-r--r--dev-python/pygal/pygal-3.1.3.ebuild56
-rw-r--r--dev-python/python-ironicclient/python-ironicclient-6.1.0.ebuild2
-rw-r--r--dev-python/python-multipart/python-multipart-0.0.29.ebuild2
-rw-r--r--dev-python/python-openstackclient/python-openstackclient-10.0.0.ebuild2
-rw-r--r--dev-python/repoze-lru/repoze-lru-0.8.ebuild2
-rw-r--r--dev-python/stevedore/stevedore-5.8.0.ebuild2
-rw-r--r--dev-python/svglib/Manifest2
-rw-r--r--dev-python/svglib/svglib-2.0.2.ebuild37
-rw-r--r--dev-python/tavern/tavern-3.5.0.ebuild2
-rw-r--r--dev-python/txaio/Manifest2
-rw-r--r--dev-python/txaio/txaio-25.12.2.ebuild39
-rw-r--r--dev-python/txaio/txaio-25.9.2.ebuild3
-rw-r--r--dev-python/uv-build/Manifest1
-rw-r--r--dev-python/uv-build/uv-build-0.11.22.ebuild99
-rw-r--r--dev-python/uv/Manifest2
-rw-r--r--dev-python/uv/uv-0.11.22.ebuild163
-rw-r--r--dev-python/uv/uv-9999.ebuild3
-rw-r--r--dev-python/watchfiles/watchfiles-1.2.0.ebuild2
-rw-r--r--dev-python/zeep/Manifest2
-rw-r--r--dev-python/zeep/zeep-4.3.3.ebuild49
-rw-r--r--dev-python/zipp/zipp-4.1.0.ebuild2
-rw-r--r--dev-python/zipstream-ng/zipstream-ng-1.9.2.ebuild2
61 files changed, 956 insertions, 324 deletions
diff --git a/dev-python/aiodns/aiodns-4.0.4.ebuild b/dev-python/aiodns/aiodns-4.0.4.ebuild
index b2b44f0990c0..5991dd1e3aee 100644
--- a/dev-python/aiodns/aiodns-4.0.4.ebuild
+++ b/dev-python/aiodns/aiodns-4.0.4.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
# Tests fail with network-sandbox, since they try to resolve google.com
PROPERTIES="test? ( test_network )"
RESTRICT="test"
diff --git a/dev-python/autobahn/Manifest b/dev-python/autobahn/Manifest
index 6b323e4e5b44..68828d5d45c7 100644
--- a/dev-python/autobahn/Manifest
+++ b/dev-python/autobahn/Manifest
@@ -1,3 +1 @@
DIST autobahn-24.4.2.tar.gz 482700 BLAKE2B e94026e0cfbb3a3ba2a494ac50e851ed1c35a842dd6b5ce2ac437a19fa0d30061d16b0965831ce57067d6682df256e5140d67e0e9b4d71cc1dbcc16287ffbed1 SHA512 2caffa9a49e3661e665a4e2641b96ff48581264654cb35ebc2e8a67620ce81bd330895bb12a098488676ab74c8275e601f45357840ca074c3c6a3d7247e563e9
-DIST autobahn-25.10.2.tar.gz 375689 BLAKE2B 6017b902a776d1f912facc488b0186cd53029c2e223920b92e06bb011d56b42279d2225af73ae561b6c21fc9b9509231761753a42146529baa19d30a03932bc1 SHA512 134a484c16392fe58b0acfae247cd783a1278c0b818c110b68e20428bffcc804dc99d449b1567fed976cf69823ce9269243e2cd968357ae9a23689ad0d7032b7
-DIST autobahn-25.11.1.tar.gz 447019 BLAKE2B 05c8e7c5d3dc4de5db032030815af43531243f5c8b345474669a5ce9064f61ad44f3703a33df3600070952a786193bba748c6c372e0e86d9aea4ce4a425881d1 SHA512 8960a76558e51900cffda20c97c070a7bd26d0dc3c9d21f6db03ca152d526e52a4070b25fad313f1c5aeda5fb398af2447a2913cd842fede4d591111bb8cef60
diff --git a/dev-python/autobahn/autobahn-25.10.2.ebuild b/dev-python/autobahn/autobahn-25.10.2.ebuild
deleted file mode 100644
index d4579a09205c..000000000000
--- a/dev-python/autobahn/autobahn-25.10.2.ebuild
+++ /dev/null
@@ -1,125 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1 optfeature pypi
-
-DESCRIPTION="WebSocket and WAMP for Twisted and Asyncio"
-HOMEPAGE="
- https://github.com/crossbario/autobahn-python/
- https://pypi.org/project/autobahn/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86"
-IUSE="+native-extensions test xbr"
-RESTRICT="!test? ( test )"
-
-# The order of deps is based on their appearance in pyproject.toml
-# All extra deps should be included in test and in optfeature
-RDEPEND="
- >=dev-python/txaio-25.9.2[${PYTHON_USEDEP}]
- >=dev-python/cryptography-3.4.6[${PYTHON_USEDEP}]
- >=dev-python/hyperlink-21.0.0[${PYTHON_USEDEP}]
-
- >=dev-python/zope-interface-5.2.0[${PYTHON_USEDEP}]
- >=dev-python/twisted-24.3.0[${PYTHON_USEDEP}]
- >=dev-python/attrs-20.3.0[${PYTHON_USEDEP}]
-
- native-extensions? (
- $(python_gen_cond_dep '
- >=dev-python/cffi-1.14.5[${PYTHON_USEDEP}]
- ' 'python*')
- )
-"
-BDEPEND="
- native-extensions? (
- $(python_gen_cond_dep '
- >=dev-python/cffi-1.14.5[${PYTHON_USEDEP}]
- ' 'python*')
- )
-
- test? (
- >=dev-python/wsaccel-0.6.3[${PYTHON_USEDEP}]
- >=dev-python/python-snappy-0.6.0[${PYTHON_USEDEP}]
- >=dev-python/msgpack-1.0.2[${PYTHON_USEDEP}]
- >=dev-python/ujson-4.0.2[${PYTHON_USEDEP}]
- >=dev-python/cbor2-5.2.0[${PYTHON_USEDEP}]
- >=dev-python/py-ubjson-0.16.1[${PYTHON_USEDEP}]
- >=dev-python/flatbuffers-22.12.06[${PYTHON_USEDEP}]
- >=dev-python/pyopenssl-20.0.1[${PYTHON_USEDEP}]
- >=dev-python/service-identity-18.1.0[${PYTHON_USEDEP}]
- >=dev-python/pynacl-1.4.0[${PYTHON_USEDEP}]
- >=dev-python/pytrie-0.4.0[${PYTHON_USEDEP}]
- >=dev-python/qrcode-7.3.1[${PYTHON_USEDEP}]
- >=dev-python/base58-2.1.1[${PYTHON_USEDEP}]
- >=dev-python/ecdsa-0.19.1[${PYTHON_USEDEP}]
- >=dev-python/argon2-cffi-20.1.0[${PYTHON_USEDEP}]
- >=dev-python/passlib-1.7.4[${PYTHON_USEDEP}]
- )
-"
-
-EPYTEST_PLUGINS=( pytest-{asyncio,aiohttp} )
-distutils_enable_tests pytest
-
-python_prepare_all() {
- if use xbr ; then
- eerror "***************"
- eerror "Required xbr dependencies are incomplete in Gentoo."
- eerror "So this functionality will not yet work"
- eerror "Please file a bug if this feature is needed"
- eerror "***************"
- else
- # remove xbr components
- export AUTOBAHN_STRIP_XBR="True"
- fi
-
- distutils-r1_python_prepare_all
-
- if ! use native-extensions; then
- export AUTOBAHN_USE_NVX=0
- fi
-}
-
-python_test() {
- rm -rf autobahn || die
-
- einfo "Testing all, cryptosign using twisted"
- local -x USE_TWISTED=true
- "${EPYTHON}" -m twisted.trial autobahn || die "Tests failed with ${EPYTHON}"
- unset USE_TWISTED
-
- einfo "RE-testing cryptosign and component_aio using asyncio"
- local -x USE_ASYNCIO=true
- epytest --pyargs \
- autobahn.asyncio.test.test_aio_{raw,web}socket \
- autobahn.wamp.test.test_wamp_{cryptosign,component_aio}
- unset USE_ASYNCIO
-
- rm -f twisted/plugins/dropin.cache || die
-}
-
-pkg_postinst() {
- optfeature "C-based WebSocket acceleration" "dev-python/wsaccel"
- optfeature "non-standard WebSocket compression support" \
- "dev-python/python-snappy"
- optfeature "accelerated WAMP serialization support" \
- "dev-python/msgpack dev-python/ujson dev-python/cbor2 dev-python/flatbuffers dev-python/py-ubjson"
- optfeature "TLS transport encryption" \
- "dev-python/pyopenssl dev-python/pynacl dev-python/pytrie dev-python/qrcode dev-python/service-identity"
- optfeature "WAMP-SCRAM authentication" \
- "dev-python/cffi dev-python/argon2-cffi dev-python/passlib"
- optfeature "native SIMD acceleration" "dev-python/cffi"
-
- python_foreach_impl twisted-regen-cache
-}
-
-pkg_postrm() {
- python_foreach_impl twisted-regen-cache
-}
diff --git a/dev-python/autobahn/autobahn-25.11.1.ebuild b/dev-python/autobahn/autobahn-25.11.1.ebuild
deleted file mode 100644
index 74f0ccbfb389..000000000000
--- a/dev-python/autobahn/autobahn-25.11.1.ebuild
+++ /dev/null
@@ -1,128 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1 optfeature pypi
-
-DESCRIPTION="WebSocket and WAMP for Twisted and Asyncio"
-HOMEPAGE="
- https://github.com/crossbario/autobahn-python/
- https://pypi.org/project/autobahn/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86"
-IUSE="+native-extensions test xbr"
-RESTRICT="!test? ( test )"
-
-# The order of deps is based on their appearance in pyproject.toml
-# All extra deps should be included in test and in optfeature
-RDEPEND="
- >=dev-python/txaio-25.9.2[${PYTHON_USEDEP}]
- >=dev-python/cryptography-3.4.6[${PYTHON_USEDEP}]
- >=dev-python/hyperlink-21.0.0[${PYTHON_USEDEP}]
- >=dev-python/ujson-4.0.2[${PYTHON_USEDEP}]
- >=dev-python/cbor2-5.2.0[${PYTHON_USEDEP}]
- >=dev-python/py-ubjson-0.16.1[${PYTHON_USEDEP}]
- >=dev-python/msgpack-1.0.2[${PYTHON_USEDEP}]
-
- >=dev-python/flatbuffers-22.12.06[${PYTHON_USEDEP}]
-
- >=dev-python/zope-interface-5.2.0[${PYTHON_USEDEP}]
- >=dev-python/twisted-24.3.0[${PYTHON_USEDEP}]
- >=dev-python/attrs-20.3.0[${PYTHON_USEDEP}]
-
- native-extensions? (
- $(python_gen_cond_dep '
- >=dev-python/cffi-1.14.5[${PYTHON_USEDEP}]
- ' 'python*')
- )
-"
-BDEPEND="
- native-extensions? (
- $(python_gen_cond_dep '
- >=dev-python/cffi-1.14.5[${PYTHON_USEDEP}]
- ' 'python*')
- )
-
- test? (
- >=dev-python/wsaccel-0.6.3[${PYTHON_USEDEP}]
- >=app-arch/brotli-1.0.0[python,${PYTHON_USEDEP}]
- >=dev-python/pyopenssl-20.0.1[${PYTHON_USEDEP}]
- >=dev-python/service-identity-18.1.0[${PYTHON_USEDEP}]
- >=dev-python/pynacl-1.4.0[${PYTHON_USEDEP}]
- >=dev-python/pytrie-0.4.0[${PYTHON_USEDEP}]
- >=dev-python/qrcode-7.3.1[${PYTHON_USEDEP}]
- >=dev-python/base58-2.1.1[${PYTHON_USEDEP}]
- >=dev-python/ecdsa-0.19.1[${PYTHON_USEDEP}]
- >=dev-python/argon2-cffi-20.1.0[${PYTHON_USEDEP}]
- >=dev-python/passlib-1.7.4[${PYTHON_USEDEP}]
- )
-"
-
-EPYTEST_PLUGINS=( pytest-{asyncio,aiohttp} )
-distutils_enable_tests pytest
-
-python_prepare_all() {
- if use xbr ; then
- eerror "***************"
- eerror "Required xbr dependencies are incomplete in Gentoo."
- eerror "So this functionality will not yet work"
- eerror "Please file a bug if this feature is needed"
- eerror "***************"
- else
- # remove xbr components
- export AUTOBAHN_STRIP_XBR="True"
- fi
-
- distutils-r1_python_prepare_all
-
- # remove "vendored" flatbuffers that conflict with actual flatbuffers
- # https://github.com/crossbario/autobahn-python/issues/1782
- rm -rf flatbuffers || die
-
- if ! use native-extensions; then
- export AUTOBAHN_USE_NVX=0
- fi
-}
-
-python_test() {
- rm -rf autobahn || die
-
- einfo "Testing all, cryptosign using twisted"
- local -x USE_TWISTED=true
- "${EPYTHON}" -m twisted.trial autobahn || die "Tests failed with ${EPYTHON}"
- unset USE_TWISTED
-
- einfo "RE-testing cryptosign and component_aio using asyncio"
- local -x USE_ASYNCIO=true
- epytest --pyargs \
- autobahn.asyncio.test.test_aio_{raw,web}socket \
- autobahn.wamp.test.test_wamp_{cryptosign,component_aio}
- unset USE_ASYNCIO
-
- rm -f twisted/plugins/dropin.cache || die
-}
-
-pkg_postinst() {
- optfeature "C-based WebSocket acceleration" "dev-python/wsaccel"
- optfeature "non-standard WebSocket compression support" \
- "dev-python/python-snappy"
- optfeature "TLS transport encryption" \
- "dev-python/pyopenssl dev-python/pynacl dev-python/pytrie dev-python/qrcode dev-python/service-identity"
- optfeature "WAMP-SCRAM authentication" \
- "dev-python/cffi dev-python/argon2-cffi dev-python/passlib"
- optfeature "native SIMD acceleration" "dev-python/cffi"
-
- python_foreach_impl twisted-regen-cache
-}
-
-pkg_postrm() {
- python_foreach_impl twisted-regen-cache
-}
diff --git a/dev-python/aws-sam-translator/aws-sam-translator-1.110.0.ebuild b/dev-python/aws-sam-translator/aws-sam-translator-1.110.0.ebuild
index 0d8190acb68d..a4a49b7e29ce 100644
--- a/dev-python/aws-sam-translator/aws-sam-translator-1.110.0.ebuild
+++ b/dev-python/aws-sam-translator/aws-sam-translator-1.110.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/black/black-26.5.1.ebuild b/dev-python/black/black-26.5.1.ebuild
index 8ad35b825823..a2cc86760f4f 100644
--- a/dev-python/black/black-26.5.1.ebuild
+++ b/dev-python/black/black-26.5.1.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/click-8.0.0[${PYTHON_USEDEP}]
diff --git a/dev-python/boltons/Manifest b/dev-python/boltons/Manifest
index d9fabdfc262f..8c0c209a718d 100644
--- a/dev-python/boltons/Manifest
+++ b/dev-python/boltons/Manifest
@@ -1 +1,2 @@
DIST boltons-25.0.0.tar.gz 246294 BLAKE2B 10b2e19188e287d9ed8071b30300456d48883dfa39e3673c0a11381d653f222c8ae1c66f68db80017ae42df55ba9ee77678c36e6b8ab4b608071ae46b2a5aa37 SHA512 4a1c9a511d5628c21c0416f289260f0dcbf4ebc38338d8dbf2d9a7ee8031b5d69c74ca6f5bc0a97fee1773a6e86fdb470af9b643f0c0b89db23987fe842dff4f
+DIST boltons-26.0.0.tar.gz 225129 BLAKE2B 037569911f7644649bb9f8286a142106ade00c170221fdcdebf74800f47789934bc608fa714a3db36bdbe8a1096ea04aed767dd891f13ab3a698756348b84904 SHA512 c2f1f61d57ad9716da07a0d8f128cf8624f9c9134d659f7f7f6fe87471e1738a5ce29f486f8cf2348e292c4f30e500825b45577cefefa54c5a67e5acbc09813f
diff --git a/dev-python/boltons/boltons-26.0.0.ebuild b/dev-python/boltons/boltons-26.0.0.ebuild
new file mode 100644
index 000000000000..a2dc8fc45838
--- /dev/null
+++ b/dev-python/boltons/boltons-26.0.0.ebuild
@@ -0,0 +1,20 @@
+# Copyright 2021-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=flit
+PYTHON_COMPAT=( python3_{13..14} )
+inherit distutils-r1 pypi
+
+DESCRIPTION="Pure-python utilities in the same spirit as the standard library"
+HOMEPAGE="https://boltons.readthedocs.io/"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+DOCS=( CHANGELOG.md README.md )
diff --git a/dev-python/boto3/Manifest b/dev-python/boto3/Manifest
index 9d2b9c433ef4..d89158095c40 100644
--- a/dev-python/boto3/Manifest
+++ b/dev-python/boto3/Manifest
@@ -5,4 +5,5 @@ DIST boto3-1.43.29.gh.tar.gz 1161648 BLAKE2B 3f0a040019fd8ea2a42a82c75bf31e563ef
DIST boto3-1.43.30.gh.tar.gz 1162726 BLAKE2B fe0050e7ef6187bc9bd96f90e05a216cfc80ddba18c7913548d9371530b8c900d32babd42c20e584f49b36996d13a25a6dbff44ffdb5e6691fbd3884815d2653 SHA512 7ba475dfff395d1d6ba3113a967f090650d75a6e4cfb01f0e2abc157b64b90ba00600501b76a9910fc4586f4480301dca07b304a5c98d6d6ecb555435e0929ba
DIST boto3-1.43.31.gh.tar.gz 1163677 BLAKE2B 708e4f4b96f9bca483fdb2febda4d482c6ccd26afdd818cb57e8c8915c8cc75ea3ea05d03e488e3c076bff1021bb381e824de02b8ceacac5beab155047a6cf07 SHA512 c8dad5e0a76143225f2069c999e3b1679a71f255277fa2d019c4d4d7b7df5e9d39c0997de8544bdeb40c4c0a78981643050edfbe47cba9a133fa743596a96e11
DIST boto3-1.43.32.gh.tar.gz 1165416 BLAKE2B b9de6a5e1f1ead2ff872059b67214d94a14709c44d18dd89733f6eaf700cc2bfce21b6c4664b78f26b96031dc54c0cb21e2d695919244e66fc0d595c86405a5a SHA512 97604f3d6b7b9aa18ad735c4d1ff9eb7040bead20de7a3fe57ff4d20e4e1396f7f5b5d27b885daa041d3471b2e394a2067bde6b8745e049ddf310ba178e60d72
+DIST boto3-1.43.33.gh.tar.gz 1167445 BLAKE2B c83bf148ce91377ca0128b6884cdb262d60b8527e1e89ae05e3838e47afd18eccd3c16d7793a191972410e0f550024cb1de27dee05723eb388ee3a63daaefeb0 SHA512 c707d5cf52bdbbdec779489db4af6a065b22201a0f48db2b89153fdd1b247d71506d37cb3c8bca71355ecf85a82cd9263803cfe3fa231675192d6ab41a12e185
DIST boto3-1.43.9.gh.tar.gz 1141698 BLAKE2B 37721c03d15d8cc7d290dcf9e56c5a83d480379514b0504a5164ab0dcec1211f3df001a966562f5f69e94325ccd42bc0da787121c68b75419fa45913feb5a4e6 SHA512 a130960634934428ab43845f69a2997638077c3bf856e12b00637dcd995dd835ad0a01eedd0a25d003d7c3e4515077c5ff19f90d289f5fe3c8bf5d837a629d09
diff --git a/dev-python/boto3/boto3-1.43.33.ebuild b/dev-python/boto3/boto3-1.43.33.ebuild
new file mode 100644
index 000000000000..93fbbe6dd59b
--- /dev/null
+++ b/dev-python/boto3/boto3-1.43.33.ebuild
@@ -0,0 +1,53 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="The AWS SDK for Python"
+HOMEPAGE="
+ https://github.com/boto/boto3/
+ https://pypi.org/project/boto3/
+"
+SRC_URI="
+ https://github.com/boto/boto3/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/botocore-${PV}[${PYTHON_USEDEP}]
+ >=dev-python/jmespath-0.7.1[${PYTHON_USEDEP}]
+ >=dev-python/s3transfer-0.19.0[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ # don't lock versions to narrow ranges
+ sed -e '/botocore/ d' \
+ -e '/jmespath/ d' \
+ -e '/s3transfer/ d' \
+ -i setup.py || die
+
+ # do not rely on bundled deps in botocore (sic!)
+ find -name '*.py' -exec sed -i \
+ -e 's:from botocore[.]vendored import:import:' \
+ -e 's:from botocore[.]vendored[.]:from :' \
+ {} + || die
+
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ epytest tests/{functional,unit}
+}
diff --git a/dev-python/botocore/Manifest b/dev-python/botocore/Manifest
index ac2e2e30ec60..b0da03530506 100644
--- a/dev-python/botocore/Manifest
+++ b/dev-python/botocore/Manifest
@@ -5,4 +5,5 @@ DIST botocore-1.43.29.gh.tar.gz 16476072 BLAKE2B 2525545c2425568e8765100bad446e2
DIST botocore-1.43.30.gh.tar.gz 16486799 BLAKE2B 222aa0d179e48243317f78f828e1d897b4fd1e8cf5848963d47c2dabfb05890d79a10cd1d3b448661e36c116e94d9c28f6cad48a7e8c4053b1bb655082e6ca13 SHA512 a9e9ba3e57f0c71a654c226633afe4fa699c798c4ddcedd3c0c66238bc2c9d1a27e404e27d691865d558b17b6ea63b483ea326369b5c94a4673a9a3f32d89bcd
DIST botocore-1.43.31.gh.tar.gz 16506820 BLAKE2B 6b28f96c1fc09f9789bfaa3facdc1afc8e4e1bae7750a91b20d6e4e243cb2a3dfbb9a43371de3313bbdb7c7a53e5d6603d56084d6dd204ce48f8c4f7ebdcc2da SHA512 eac8482458d6bfab2e25ce181880068809942b967d275133961d433eb9247c85d51060a2c7b56002d1fe13f4a572387b6b5cbac173b65322675a9b15b0251651
DIST botocore-1.43.32.gh.tar.gz 16547131 BLAKE2B 8eed11508d11c6825ca4db693eb7e2d4a72deaf99b4200a209c3e376eec6f4ac16290f87679fe311911f62f2ce7ee8256f35b22dfa42010d4f61f1037f37f827 SHA512 ac6d548ca08674fcfcb9744cd9da792bfb60e9b6b3167ace49040974be2ea3c7ed74e70683c86652017b38df5dbe97bbbbef7bc205b282d58e23e84d3c423829
+DIST botocore-1.43.33.gh.tar.gz 16557926 BLAKE2B 610ffbe5f0baf89f67f696a88258f1d3242247548f9b2b6368079b757637e5afe5af417c2107e69f6ea0a253b5dede424b9b0bbdb8c96c5c066480e462bbf80b SHA512 8bfb7852f1ea2e3cf3621a666e454863eb6641b33dab0f55deff111c10e56a8c323d177c1d8cef6b3a2b35ba7033e2ef339423ca6379329cc54bd352a23661aa
DIST botocore-1.43.9.gh.tar.gz 16299354 BLAKE2B fcb35ec47d892c36c319a14e62ffedec51fe48ad68beeb2e527c3f282647a5f980a182c8d66ff12a69a45e4c137f1f486b0056345cfeb2c1e52b03b76df5015c SHA512 20033802430564aa77607a0c042511c7831c75f92240da388aaf036d90969f5560b9cb5dbb01f590b95cc9a2039557fd3f540fd6c4170104d732d033e142c08a
diff --git a/dev-python/botocore/botocore-1.43.33.ebuild b/dev-python/botocore/botocore-1.43.33.ebuild
new file mode 100644
index 000000000000..a3a161f78545
--- /dev/null
+++ b/dev-python/botocore/botocore-1.43.33.ebuild
@@ -0,0 +1,67 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="Low-level, data-driven core of boto 3"
+HOMEPAGE="
+ https://github.com/boto/botocore/
+ https://pypi.org/project/botocore/
+"
+SRC_URI="
+ https://github.com/boto/botocore/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
+
+RDEPEND="
+ <dev-python/jmespath-2[${PYTHON_USEDEP}]
+ dev-python/python-dateutil[${PYTHON_USEDEP}]
+ >=dev-python/urllib3-1.25.4[${PYTHON_USEDEP}]
+"
+# unbundled packages
+RDEPEND+="
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/six[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/jsonschema[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ # unpin deps
+ sed -i -e "s:>=.*':':" setup.py || die
+
+ # unbundle deps
+ rm -r botocore/vendored || die
+ find -name '*.py' -exec sed -i \
+ -e 's:from botocore[.]vendored import:import:' \
+ -e 's:from botocore[.]vendored[.]:from :' \
+ {} + || die
+
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # rely on bundled six
+ tests/functional/test_six_imports.py::test_no_bare_six_imports
+ tests/functional/test_six_threading.py::test_six_thread_safety
+ )
+
+ epytest tests/{functional,unit}
+}
diff --git a/dev-python/cachetools/cachetools-7.1.3.ebuild b/dev-python/cachetools/cachetools-7.1.3.ebuild
index e673540cf34e..c5eb5c67461d 100644
--- a/dev-python/cachetools/cachetools-7.1.3.ebuild
+++ b/dev-python/cachetools/cachetools-7.1.3.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
EPYTEST_PLUGINS=()
distutils_enable_tests pytest
diff --git a/dev-python/cli-helpers/cli-helpers-2.15.0.ebuild b/dev-python/cli-helpers/cli-helpers-2.15.0.ebuild
index fd5388c4374f..820dcce7de91 100644
--- a/dev-python/cli-helpers/cli-helpers-2.15.0.ebuild
+++ b/dev-python/cli-helpers/cli-helpers-2.15.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/dbus-fast/dbus-fast-4.3.0.ebuild b/dev-python/dbus-fast/dbus-fast-4.3.0.ebuild
index d5d17c317555..68352c97fed2 100644
--- a/dev-python/dbus-fast/dbus-fast-4.3.0.ebuild
+++ b/dev-python/dbus-fast/dbus-fast-4.3.0.ebuild
@@ -22,7 +22,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~riscv"
+KEYWORDS="amd64 ~riscv"
BDEPEND="
>=dev-python/cython-3[${PYTHON_USEDEP}]
diff --git a/dev-python/decorator/decorator-5.3.1.ebuild b/dev-python/decorator/decorator-5.3.1.ebuild
index e35f736167aa..03ae30a16834 100644
--- a/dev-python/decorator/decorator-5.3.1.ebuild
+++ b/dev-python/decorator/decorator-5.3.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos"
python_test() {
"${EPYTHON}" tests/test.py -v || die "Tests failed with ${EPYTHON}"
diff --git a/dev-python/django-debug-toolbar/Manifest b/dev-python/django-debug-toolbar/Manifest
index 4c47fc021c4c..84f26f577e4c 100644
--- a/dev-python/django-debug-toolbar/Manifest
+++ b/dev-python/django-debug-toolbar/Manifest
@@ -1,2 +1,4 @@
DIST django_debug_toolbar-6.3.0.tar.gz 334079 BLAKE2B 915fbf49bea584d4fec79f5f93b7520e3be59343ff7fbff34293aa8249bcf4ac4d1190977d1e8cb1a249561f3f5539f343126a9dfe0b66a212776421a8ff2528 SHA512 07db996bdb044855ba011c58e3d9b90a43dbb9b54ec170ab22b97ede2ccaff06de9a3fe9823beaddb681c4f11d5df060f8655307c346af02b15a32c70fc7241b
DIST django_debug_toolbar-6.3.0.tar.gz.provenance 9964 BLAKE2B 6f1806e35927ff864b287ca2cccbcce5b5498cce5479f2ceedf9fc1af77f47e7ef272ea14bcf120fc7d0a7e0f9cf7bac341be4720dbb1a4eb6ed07fdca748825 SHA512 8c72d5e1f28af1e4775b2cd65edb13bc34817ed79978ef22f8cefefcb0393566200636e5746b278c9b0ec5cb981392b495a98b4b90d02069afa1d53e1b44af6e
+DIST django_debug_toolbar-7.0.0.tar.gz 359560 BLAKE2B 0918ff8661276d13e2a4ee16192cbfec766b9462c3cee9f1930d417483d59c105601b4cbac902b7c6b3bc16dc425396ba29a2551dd9987528e7208581395553a SHA512 bc45f07999c3ffbe68ffd5775919dd6ff6a2ba39652477e6ef47b7933c372cd7472cab70b905c3acf3f33487066badd4db7bee8339a363ddc2674fa6a77df111
+DIST django_debug_toolbar-7.0.0.tar.gz.provenance 10569 BLAKE2B 0013ded09c57414dbc0ebb9d671b8b19bcefe3caf3637fe14f3b58c2339342c6181968a454aa95d6002b6dca22a13ed4bfc9ace39256685600c0bcb8bda5cd69 SHA512 3e41f9da90c53ad8bc05fbdf03063e58ddb57e6214ab1f5c07c06d37c3eb2b37cb9a778c730f2c8ae8a8ca8d2cbf4fe198de438a7c92bd785c604893a949a465
diff --git a/dev-python/django-debug-toolbar/django-debug-toolbar-7.0.0.ebuild b/dev-python/django-debug-toolbar/django-debug-toolbar-7.0.0.ebuild
new file mode 100644
index 000000000000..1bb7c4deefe7
--- /dev/null
+++ b/dev-python/django-debug-toolbar/django-debug-toolbar-7.0.0.ebuild
@@ -0,0 +1,46 @@
+# Copyright 2023-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/django-commons/django-debug-toolbar
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A configurable set of panels that display various debug information"
+HOMEPAGE="
+ https://github.com/django-commons/django-debug-toolbar/
+ https://pypi.org/project/django-debug-toolbar/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-python/django-5.2[${PYTHON_USEDEP}]
+ elibc_musl? ( dev-python/tzdata )
+"
+
+BDEPEND="
+ test? (
+ dev-python/django-template-partials[${PYTHON_USEDEP}]
+ dev-python/html5lib[${PYTHON_USEDEP}]
+ )
+"
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # requires django-csp
+ rm tests/test_csp_rendering.py || die
+}
+
+python_test() {
+ "${EPYTHON}" -m django test -v 2 --settings tests.settings tests \
+ || die "Tests failed with ${EPYTHON}"
+}
diff --git a/dev-python/genshi/genshi-0.7.11.ebuild b/dev-python/genshi/genshi-0.7.11.ebuild
index 9676d51107e1..3b9bb508674f 100644
--- a/dev-python/genshi/genshi-0.7.11.ebuild
+++ b/dev-python/genshi/genshi-0.7.11.ebuild
@@ -19,7 +19,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~sparc ~x86 ~x64-macos"
+KEYWORDS="amd64 ~arm arm64 ~ppc ~ppc64 ~riscv ~sparc x86 ~x64-macos"
IUSE="doc examples test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/hcloud/Manifest b/dev-python/hcloud/Manifest
index f3ca39828b97..6819ba381d4f 100644
--- a/dev-python/hcloud/Manifest
+++ b/dev-python/hcloud/Manifest
@@ -1,2 +1,3 @@
DIST hcloud-python-2.20.0.gh.tar.gz 151611 BLAKE2B e4c713352523c773108fa3807dd0374bc60b006dd62790cebdc32fbeda50e01fadccd823cdcc5c35d312fae9c404e08d0cbe91f240a11cf057c782229c7e48cf SHA512 bdb2280fc68c3cae275689bdd40cbe9d9d6f680535040bb250a7beeacc01411815d841ddb2b55d42ebb0bef3c201b1a3626df8e605a21574d2a8d6f88634907a
DIST hcloud-python-2.21.0.gh.tar.gz 152096 BLAKE2B 4fdda2178958cb159f178ad4574e4c3b647008cef13fe1fe66543a4569664b3d9eeedb824adc29330fd02b50feef4c71a70f7674c83bd568adf05391f0d25498 SHA512 f4b5c6d1b53b0f4f31da607e84e4db98c1a23fe00e17631db3216e23dca1db8d2f1443b1da50dae346f63b4e5756113ce460bc7fb9e8d3f05c32ccb2ed59eae8
+DIST hcloud-python-2.22.0.gh.tar.gz 152735 BLAKE2B 65f255dcc47470050e5619dd6335f83664789d88c4a5d9e5f6c3cff6c6f25f8f881b2ed23d01e426b331f1cda8d5610c870c46b01467fc642b87e46427f7eec0 SHA512 4706147405fe50c5db44ab181607c660bf71faf595f75229a46cc00ed4a9fbcf70a86e91b104e86fcacb54ef8d0804d33919a65db299da57b0cf660e04ebb7f6
diff --git a/dev-python/hcloud/hcloud-2.22.0.ebuild b/dev-python/hcloud/hcloud-2.22.0.ebuild
new file mode 100644
index 000000000000..9b729306ac26
--- /dev/null
+++ b/dev-python/hcloud/hcloud-2.22.0.ebuild
@@ -0,0 +1,51 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1
+
+MY_P=hcloud-python-${PV}
+DESCRIPTION="Official Hetzner Cloud python library"
+HOMEPAGE="
+ https://github.com/hetznercloud/hcloud-python/
+ https://pypi.org/project/hcloud/
+"
+# sdist is missing doc assets as of 1.19.0
+# https://github.com/hetznercloud/hcloud-python/pull/183
+SRC_URI="
+ https://github.com/hetznercloud/hcloud-python/archive/v${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="examples"
+
+RDEPEND="
+ >=dev-python/python-dateutil-2.7.5[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.20[${PYTHON_USEDEP}]
+"
+
+distutils_enable_sphinx docs \
+ dev-python/myst-parser \
+ dev-python/sphinx-rtd-theme
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+EPYTEST_IGNORE=(
+ # Integration tests need docker:
+ # https://github.com/hetznercloud/hcloud-python/blob/master/.travis.yml#L16
+ tests/integration
+)
+
+python_install_all() {
+ use examples && dodoc -r examples
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/hypothesis/Manifest b/dev-python/hypothesis/Manifest
index 013c8f2191a0..c64d1317f8cc 100644
--- a/dev-python/hypothesis/Manifest
+++ b/dev-python/hypothesis/Manifest
@@ -3,3 +3,4 @@ DIST hypothesis-6.152.7.gh.tar.gz 9606598 BLAKE2B cdb7eb39e0ae74dada61ba4573e874
DIST hypothesis-6.152.9.gh.tar.gz 9612140 BLAKE2B b4d2009d46eb28751446963edc51a653d05c5a39a28e76aa120a2ca00fd7d6c0f07c42f1026a16e0b4dc75742a66a191a8f5aa67249ecc3a397e8123f8153058 SHA512 b1f2301b7ced669dd4d53ee37173a48e8a937241138900c9dd17e70c1e4c8357215679c9ebb6e8a96c0d2fbe5e8e43aa45a21da569c624111b17417d0be1d426
DIST hypothesis-6.155.2.gh.tar.gz 9627022 BLAKE2B 26d1a794ffce5268febc83aae708794fc60d2e1ab40620826a499e254a8f8d00dce2b984547c683ca768751bc2a35554a64e83b9ba3156e5139319ed9683be1d SHA512 559670b3f42ead6aa830335a273984f036c8b26226bc9b3e2f83c751a53d7364e02479e11c7e1aaa468fad69c37920e30e7416028177753c042a4571613a8e91
DIST hypothesis-6.155.3.gh.tar.gz 9627758 BLAKE2B 57673977f3188c76fbacdda7494408490373c9eefe71195aae915b32ee7502189262028fc63d117e5ec801059bb2f7d7dafdcb25bb4c2c92986942222c493316 SHA512 5293d4c9c3bff7d72e417853b7cc45bf3bdf55c4931ac1cdeeabc014a1fe8e11128b7cc2b8bd21ccc4b9bca128ac4e6f990be309ce4c9c24f8f53c463584417d
+DIST hypothesis-6.155.5.gh.tar.gz 9628104 BLAKE2B 61055153990cc3455868842eb2c3b35171873656684324b09c71fb8c4935ec6317a6ca128cf477566cd3114965b36aea92f7f023294c5ffbd6dc61b4a06375b2 SHA512 527f417250cc2677cc5451c49e77e245e852b680c7902bf878200b9785030d4fb588c6251a1bea35180f359e6b0ebf482a0f766c567c9b962f02117dfca15095
diff --git a/dev-python/hypothesis/hypothesis-6.155.5.ebuild b/dev-python/hypothesis/hypothesis-6.155.5.ebuild
new file mode 100644
index 000000000000..28342394d688
--- /dev/null
+++ b/dev-python/hypothesis/hypothesis-6.155.5.ebuild
@@ -0,0 +1,105 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+CLI_COMPAT=( python3_{11..13} )
+PYTHON_COMPAT=( python3_{13..14} )
+PYTHON_REQ_USE="threads(+),sqlite"
+
+inherit distutils-r1 optfeature
+
+DESCRIPTION="A library for property based testing"
+HOMEPAGE="
+ https://github.com/HypothesisWorks/hypothesis/
+ https://pypi.org/project/hypothesis/
+"
+SRC_URI="
+ https://github.com/HypothesisWorks/hypothesis/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+S="${WORKDIR}/${P}/hypothesis"
+
+LICENSE="MPL-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="cli"
+
+RDEPEND="
+ >=dev-python/sortedcontainers-2.1.0[${PYTHON_USEDEP}]
+ cli? (
+ $(python_gen_cond_dep '
+ dev-python/black[${PYTHON_USEDEP}]
+ dev-python/click[${PYTHON_USEDEP}]
+ ' "${CLI_COMPAT[@]}")
+ )
+"
+BDEPEND="
+ test? (
+ >=dev-python/attrs-22.2.0[${PYTHON_USEDEP}]
+ dev-python/pexpect[${PYTHON_USEDEP}]
+ >=dev-python/pytest-8[${PYTHON_USEDEP}]
+ )
+"
+PDEPEND="
+ dev-python/hypothesis-gentoo[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGIN_LOAD_VIA_ENV=1
+EPYTEST_PLUGINS=( "${PN}" pytest-xdist )
+EPYTEST_RERUNS=5
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_test() {
+ # NB: paths need to be relative to pytest.ini, i.e. start with hypothesis/
+ local EPYTEST_DESELECT=(
+ # broken somehow (xdist?)
+ 'hypothesis/tests/pytest/test_constant_collection_timing.py::test_constant_collection_timing[True]'
+ )
+ local EPYTEST_IGNORE=(
+ # require syrupy
+ tests/cover/test_custom_reprs.py
+ )
+
+ case ${EPYTHON} in
+ python3.15*)
+ EPYTEST_DESELECT+=(
+ 'hypothesis/tests/cover/test_lookup.py::test_resolves_forwardrefs_to_builtin_types[sentinel]'
+ 'hypothesis/tests/cover/test_lookup.py::test_resolves_builtin_types[sentinel]'
+ )
+ ;;
+ esac
+
+ local -x HYPOTHESIS_NO_PLUGINS=1
+ epytest -o filterwarnings= tests/{cover,pytest,quality}
+}
+
+src_install() {
+ local HAD_CLI=
+
+ distutils-r1_src_install
+
+ if [[ ! ${HAD_CLI} ]]; then
+ rm -r "${ED}/usr/bin" || die
+ fi
+}
+
+python_install() {
+ distutils-r1_python_install
+ if use cli && has "${EPYTHON}" "${CLI_COMPAT[@]/_/.}"; then
+ HAD_CLI=1
+ else
+ rm -r "${D}$(python_get_scriptdir)" || die
+ fi
+}
+
+pkg_postinst() {
+ optfeature "datetime support" dev-python/pytz
+ optfeature "dateutil support" dev-python/python-dateutil
+ optfeature "numpy support" dev-python/numpy
+ optfeature "django support" dev-python/django dev-python/pytz
+ optfeature "pandas support" dev-python/pandas
+ optfeature "pytest support" dev-python/pytest
+}
diff --git a/dev-python/icalendar/icalendar-7.1.1.ebuild b/dev-python/icalendar/icalendar-7.1.1.ebuild
index a97aa6f71f40..d40c3d3447c7 100644
--- a/dev-python/icalendar/icalendar-7.1.1.ebuild
+++ b/dev-python/icalendar/icalendar-7.1.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD-2"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86"
+KEYWORDS="amd64 ~arm arm64 ~riscv x86"
RDEPEND="
dev-python/python-dateutil[${PYTHON_USEDEP}]
diff --git a/dev-python/iterable-io/iterable-io-1.0.4.ebuild b/dev-python/iterable-io/iterable-io-1.0.4.ebuild
index 6f667014db2b..695e8e71d31f 100644
--- a/dev-python/iterable-io/iterable-io-1.0.4.ebuild
+++ b/dev-python/iterable-io/iterable-io-1.0.4.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="LGPL-3"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~x86"
+KEYWORDS="amd64 ~arm64 ~x86"
EPYTEST_PLUGINS=()
distutils_enable_tests pytest
diff --git a/dev-python/jc/Manifest b/dev-python/jc/Manifest
index fc75d4758f8e..55976c1c2b68 100644
--- a/dev-python/jc/Manifest
+++ b/dev-python/jc/Manifest
@@ -1 +1,2 @@
DIST jc-1.25.6.gh.tar.gz 15300270 BLAKE2B a49f05773eb74288dcd93795aed0c2ae8e8efddffdaa20736fbfc1b7397e52fe1f07618c7fb835e304ca845eb93ce3f827cb161a93c6eb3cf4fe4b1821f51e9b SHA512 5ec64731f5e01608fb5cd97fa0e12ad43e7147b79ccc3ab86c685aba7742cdd8a7d8da8d2bec518f675625e569287661a68bc5351f85c2db3776db0644d26dc4
+DIST jc-1.25.7.gh.tar.gz 15380863 BLAKE2B 7005171140989c3b4b9053a663e0e2aee6bc8815a541ab61e04373add275806a22b4c13ac10ce1e5875a221d6b3c8c03aab3d79f2edc1161f15f4cb05dfe82e0 SHA512 2b06e538850f91c57b547272468e6096ef6a64e95206cbdd298296eda90605deda96a64ee63b8648bc9d710927249c1639a8cba9423746db2b8b19c61ed0af1d
diff --git a/dev-python/jc/jc-1.25.7.ebuild b/dev-python/jc/jc-1.25.7.ebuild
new file mode 100644
index 000000000000..e505b0d29422
--- /dev/null
+++ b/dev-python/jc/jc-1.25.7.ebuild
@@ -0,0 +1,37 @@
+# Copyright 2022-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="Converts the output of popular command-line tools and file-types to JSON"
+HOMEPAGE="
+ https://github.com/kellyjonbrazil/jc/
+ https://pypi.org/project/jc/
+"
+# no tests in sdist, as of 1.23.2
+SRC_URI="
+ https://github.com/kellyjonbrazil/jc/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~ppc64"
+
+RDEPEND="
+ dev-python/pygments[${PYTHON_USEDEP}]
+ dev-python/ruamel-yaml[${PYTHON_USEDEP}]
+ dev-python/xmltodict[${PYTHON_USEDEP}]
+"
+
+distutils_enable_tests unittest
+
+python_test() {
+ local -x TZ=America/Los_Angeles
+ eunittest
+}
diff --git a/dev-python/msgpack/Manifest b/dev-python/msgpack/Manifest
index 8374f19fd46a..41240bea2b2d 100644
--- a/dev-python/msgpack/Manifest
+++ b/dev-python/msgpack/Manifest
@@ -3,3 +3,5 @@ DIST msgpack-1.1.2.tar.gz 173581 BLAKE2B f1631eef4699525d58f258194a9ca216294eb0c
DIST msgpack-1.1.2.tar.gz.provenance 9256 BLAKE2B 0b8cb372ad31aae1a03e9c9467264b0eea53849a3d291c16426f91eaa8ee61eae69f313da9bad8cd64ed355e787553cfc7deed7aa709671e4296aa153c9c7988 SHA512 64eef61e138039043d7610d3718fb9374bb65704f1c2b7cccabf37c44f316f2cfa9b1695fd5918c1f2b6526332bb570293019a0e59c3aa5f2918905c904b8c53
DIST msgpack-1.2.0.tar.gz 183017 BLAKE2B 7ee574414901552d50fd3ab870e7d84470890078b96ba42502746597f4f748d868858bf81376754d034366995299bc9d7151b87a159fbf1f56a26e612de756e6 SHA512 0a0c9a83d2348354ab7f4edfef009561bba4584c07e1523fc27cb0ab3890045c91984ef9ad14b20de63a05c27753fa8037c77e3d521f1f92f86d552e62b07163
DIST msgpack-1.2.0.tar.gz.provenance 9905 BLAKE2B 99b29e47e13eeaa13874ca06e8a6ada16676992d1fe024d35e01fff7a0a69198fd76fa144c34d7b8c634adf45e82447913e4d5b18d359938e05b5d2e9d439bb5 SHA512 a58ed4e6ec4bf137165562602ef8970edf0607b43d0a14a6a641eba9fa0d7cf023471414c27052c11da5fa6ab2e6cbb93f582f270863bc526f348a7322f37d40
+DIST msgpack-1.2.1.tar.gz 183960 BLAKE2B 3fca10a89d0259ba6bcc26d9e98a69e64b82662f3bec852e26073d581c4df7f6d5f9655d94e23c172d9d8e57de5850da9df87de61fc7ffeae13a9870f21e1488 SHA512 3e018978b2b3ec04508c6b8a12a16daf23e95f7d7c1f846e09e27082197a92566e3c4c5a8a6db51c52b1c8ab66bb55d4d1498373bab99a7fd193efaba53834eb
+DIST msgpack-1.2.1.tar.gz.provenance 9819 BLAKE2B 2f03d8e995865b73eaf4cf51ba502082f44b16b13960163153e9dfc14019b42fc4678ff7af923642198c7a128afa4388640de4a626c825f82469216fce369cce SHA512 1b9f4202669c4ffa29ef6bb985d860a6b6f58f1b24fd46cc3720eb53beeea629db5d3b627386b2980cb4bcfae51e83d246e0eaceef20b5e92c231f7432d20fac
diff --git a/dev-python/msgpack/msgpack-1.2.1.ebuild b/dev-python/msgpack/msgpack-1.2.1.ebuild
new file mode 100644
index 000000000000..cf8f4ff54a1c
--- /dev/null
+++ b/dev-python/msgpack/msgpack-1.2.1.ebuild
@@ -0,0 +1,61 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYPI_VERIFY_REPO=https://github.com/msgpack/msgpack-python
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="MessagePack (de)serializer for Python"
+HOMEPAGE="
+ https://msgpack.org/
+ https://github.com/msgpack/msgpack-python/
+ https://pypi.org/project/msgpack/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
+IUSE="+native-extensions"
+
+# extension code is relying on CPython implementation details
+BDEPEND="
+ native-extensions? (
+ $(python_gen_cond_dep '
+ >=dev-python/cython-3.0.8[${PYTHON_USEDEP}]
+ ' 'python*')
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ # Remove pre-generated cython files
+ rm msgpack/_cmsgpack.c || die
+
+ # native-extensions are always disabled on PyPy
+ # https://github.com/msgpack/msgpack-python/blob/main/setup.py#L76
+ if ! use native-extensions; then
+ export MSGPACK_PUREPYTHON=1
+ fi
+
+ distutils-r1_python_prepare_all
+}
+
+python_configure() {
+ if [[ ${EPYTHON} == python* && ! -f msgpack/_cmsgpack.c ]] &&
+ use native-extensions
+ then
+ cython -v msgpack/_cmsgpack.pyx || die
+ fi
+}
+
+python_test() {
+ rm -rf msgpack || die
+ epytest
+}
diff --git a/dev-python/nanobind/Manifest b/dev-python/nanobind/Manifest
index 2559d5c42d4f..0ec1233c6ab2 100644
--- a/dev-python/nanobind/Manifest
+++ b/dev-python/nanobind/Manifest
@@ -1 +1,2 @@
DIST nanobind-2.12.0.gh.tar.gz 940575 BLAKE2B 8eee3f682ed9139704946946c3d58fd8c0060634aba382d709802e36a9d9798fd932d8933cce53ef019d9149c422bdee68d5d4664c302c84b102bb9deca9027e SHA512 a187f0efae1833b2caeaff41074a3d8fbd866ee1874aac088ffd5daf026aeaa6a73a8943b682bd39ef59b755e36b73a221eaf71343a28351dce0c8f284debdd9
+DIST nanobind-2.13.0.gh.tar.gz 989569 BLAKE2B a392ea44b8d60f4244374f6e2ade5b6abdd7dd787b0108395149a68890f2eaa25c3e5fe4e0e6fe9ebaf3d0cfa54d86f978ac0a599604cd7d078de3e0912e1038 SHA512 8ab384572d8142b29fdccab2e3693e576cee4cbd6c8d8ac54b3426e45dba6618beb4ccb3e413d41fc405d09935da1fd65f75ef46cf6f78156c2273052fe3e22a
diff --git a/dev-python/nanobind/nanobind-2.13.0.ebuild b/dev-python/nanobind/nanobind-2.13.0.ebuild
new file mode 100644
index 000000000000..62b8073c6b06
--- /dev/null
+++ b/dev-python/nanobind/nanobind-2.13.0.ebuild
@@ -0,0 +1,63 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=scikit-build-core
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit cmake distutils-r1
+
+DESCRIPTION="Tiny and efficient C++/Python bindings"
+HOMEPAGE="
+ https://github.com/wjakob/nanobind/
+ https://pypi.org/project/nanobind/
+"
+SRC_URI="
+ https://github.com/wjakob/nanobind/archive/refs/tags/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~s390 ~x86"
+
+DEPEND="
+ >=dev-cpp/robin-map-1.3.0
+"
+RDEPEND="
+ ${DEPEND}
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ cmake_src_prepare
+ distutils-r1_src_prepare
+}
+
+src_configure() {
+ # XXX: nanobind installs a CMake config file which by default passes -Os
+ # We currently patch around it in dev-python/pyopencl. In future, we
+ # may want to add some override with Gentoo specific environment vars.
+ DISTUTILS_ARGS=(
+ -DNB_CREATE_INSTALL_RULES=ON
+ -DNB_USE_SUBMODULE_DEPS=OFF
+ -DNB_TEST=OFF
+ )
+}
+
+python_test() {
+ local mycmakeargs=(
+ -DNB_CREATE_INSTALL_RULES=OFF
+ -DNB_USE_SUBMODULE_DEPS=OFF
+ -DNB_TEST=ON
+ )
+ cmake_src_configure
+ cmake_src_compile
+
+ cd "${BUILD_DIR}/tests" || die
+ epytest
+}
diff --git a/dev-python/oslo-config/oslo-config-10.4.0.ebuild b/dev-python/oslo-config/oslo-config-10.4.0.ebuild
index e09c7a788d49..0a45dd0a1782 100644
--- a/dev-python/oslo-config/oslo-config-10.4.0.ebuild
+++ b/dev-python/oslo-config/oslo-config-10.4.0.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86"
+KEYWORDS="amd64 ~arm arm64 ~riscv x86"
RDEPEND="
>=dev-python/pbr-1.3[${PYTHON_USEDEP}]
diff --git a/dev-python/oslo-context/oslo-context-6.4.0.ebuild b/dev-python/oslo-context/oslo-context-6.4.0.ebuild
index 6aa8f1b2e39d..85052ad97c44 100644
--- a/dev-python/oslo-context/oslo-context-6.4.0.ebuild
+++ b/dev-python/oslo-context/oslo-context-6.4.0.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86"
+KEYWORDS="amd64 ~arm arm64 ~riscv x86"
RDEPEND="
>=dev-python/pbr-2.1.0[${PYTHON_USEDEP}]
diff --git a/dev-python/oslo-i18n/oslo-i18n-6.8.0.ebuild b/dev-python/oslo-i18n/oslo-i18n-6.8.0.ebuild
index 6a3073cf887c..e40977681953 100644
--- a/dev-python/oslo-i18n/oslo-i18n-6.8.0.ebuild
+++ b/dev-python/oslo-i18n/oslo-i18n-6.8.0.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86"
+KEYWORDS="amd64 ~arm arm64 ~riscv x86"
RDEPEND="
>=dev-python/pbr-2.0.0[${PYTHON_USEDEP}]
diff --git a/dev-python/oslo-log/oslo-log-8.2.0.ebuild b/dev-python/oslo-log/oslo-log-8.2.0.ebuild
index 47d42f39ad42..7a75460437b1 100644
--- a/dev-python/oslo-log/oslo-log-8.2.0.ebuild
+++ b/dev-python/oslo-log/oslo-log-8.2.0.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86"
+KEYWORDS="amd64 ~arm arm64 ~riscv x86"
RDEPEND="
>=dev-python/debtcollector-3.0.0[${PYTHON_USEDEP}]
diff --git a/dev-python/oslo-serialization/oslo-serialization-5.10.0.ebuild b/dev-python/oslo-serialization/oslo-serialization-5.10.0.ebuild
index 6dbd4f6eb343..52902b34922f 100644
--- a/dev-python/oslo-serialization/oslo-serialization-5.10.0.ebuild
+++ b/dev-python/oslo-serialization/oslo-serialization-5.10.0.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86"
+KEYWORDS="amd64 ~arm arm64 ~riscv x86"
RDEPEND="
>=dev-python/msgpack-0.5.2[${PYTHON_USEDEP}]
diff --git a/dev-python/parver/parver-1.0.ebuild b/dev-python/parver/parver-1.0.ebuild
index a58d5e97c764..62218fa048a6 100644
--- a/dev-python/parver/parver-1.0.ebuild
+++ b/dev-python/parver/parver-1.0.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+KEYWORDS="amd64 arm64 ~riscv x86"
BDEPEND="
test? (
diff --git a/dev-python/pathable/pathable-0.6.0.ebuild b/dev-python/pathable/pathable-0.6.0.ebuild
index 1bcc0b220ffc..6334ea8b1814 100644
--- a/dev-python/pathable/pathable-0.6.0.ebuild
+++ b/dev-python/pathable/pathable-0.6.0.ebuild
@@ -23,7 +23,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="Apache-2.0"
SLOT="0"
if [[ ${PV} != *_beta* ]]; then
- KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+ KEYWORDS="amd64 arm arm64 ~loong ppc64 ~riscv x86"
fi
RDEPEND="
diff --git a/dev-python/pygal/Manifest b/dev-python/pygal/Manifest
index 5faa4d317b5e..402f32c2ddb4 100644
--- a/dev-python/pygal/Manifest
+++ b/dev-python/pygal/Manifest
@@ -1 +1,2 @@
DIST pygal-3.1.0.gh.tar.gz 3570546 BLAKE2B 30ef1ebd5a8b13b894c1101913dbd01493ef4e1cc13da4a5d49bba1312a929843b0c6f5d0b1e4e9e21c8db1753852fe902abfe4d44d8bd32b03d082faaf09a0d SHA512 fe220527818b46a5bdad0325c0a3c43ed3d2eb1033795e005c6b4a3bfe221bd0af8169f30f58c4fe7a827d0f4a50ece43b69a93fd75cd494b6228787790dbca6
+DIST pygal-3.1.3.gh.tar.gz 3575092 BLAKE2B ad46c6ce3b37feaf918389f24e372ae6c8624cb3ef7d357ecc0472023994e71c9cc4d3d806b19852aa2e9d7d0839816bd6c8ba4aca0f6e6183795f4b14267f34 SHA512 f3f735b6a554ed7c7ce92a051eeae3cb9c6f32fdf8961ebbd247c5b8139423dead9cfafc48253be7b4c5797bfba1245ae78d1ef4fcd3eebda5db3467264ec509
diff --git a/dev-python/pygal/pygal-3.1.3.ebuild b/dev-python/pygal/pygal-3.1.3.ebuild
new file mode 100644
index 000000000000..1fc81156f8d6
--- /dev/null
+++ b/dev-python/pygal/pygal-3.1.3.ebuild
@@ -0,0 +1,56 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+PYTHON_REQ_USE="xml(+)"
+
+inherit distutils-r1 optfeature
+
+DESCRIPTION="A python SVG charts generator"
+HOMEPAGE="
+ https://github.com/Kozea/pygal/
+ https://pypi.org/project/pygal/
+"
+SRC_URI="
+ https://github.com/Kozea/pygal/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="LGPL-3+"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+
+RDEPEND="
+ dev-python/importlib-metadata[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/lxml[${PYTHON_USEDEP}]
+ dev-python/pyquery[${PYTHON_USEDEP}]
+ media-gfx/cairosvg[${PYTHON_USEDEP}]
+ )
+"
+
+# CHANGELOG is a symlink to docs/changelog.rst
+DOCS=( docs/changelog.rst README.md )
+
+distutils_enable_sphinx docs dev-python/sphinx-rtd-theme
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ # Not actually required unless we want to do setup.py test
+ # https://github.com/Kozea/pygal/issues/430
+ sed -i -e "/setup_requires/d" setup.py || die
+ distutils-r1_python_prepare_all
+}
+
+pkg_postinst() {
+ optfeature "improving rendering speed" "dev-python/lxml"
+ optfeature "png rendering" "dev-python/cairosvg"
+}
diff --git a/dev-python/python-ironicclient/python-ironicclient-6.1.0.ebuild b/dev-python/python-ironicclient/python-ironicclient-6.1.0.ebuild
index 94c49f7c511e..46fc5bbaca70 100644
--- a/dev-python/python-ironicclient/python-ironicclient-6.1.0.ebuild
+++ b/dev-python/python-ironicclient/python-ironicclient-6.1.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~x86"
+KEYWORDS="amd64 arm64 x86"
RDEPEND="
>=dev-python/pbr-6.0.0[${PYTHON_USEDEP}]
diff --git a/dev-python/python-multipart/python-multipart-0.0.29.ebuild b/dev-python/python-multipart/python-multipart-0.0.29.ebuild
index cbb77fc73024..baf480839387 100644
--- a/dev-python/python-multipart/python-multipart-0.0.29.ebuild
+++ b/dev-python/python-multipart/python-multipart-0.0.29.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
BDEPEND="
test? (
diff --git a/dev-python/python-openstackclient/python-openstackclient-10.0.0.ebuild b/dev-python/python-openstackclient/python-openstackclient-10.0.0.ebuild
index ecaeb39b9020..1f7178938fd2 100644
--- a/dev-python/python-openstackclient/python-openstackclient-10.0.0.ebuild
+++ b/dev-python/python-openstackclient/python-openstackclient-10.0.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+KEYWORDS="amd64 arm64 ~riscv x86"
RDEPEND="
>=dev-python/cliff-4.13.0[${PYTHON_USEDEP}]
diff --git a/dev-python/repoze-lru/repoze-lru-0.8.ebuild b/dev-python/repoze-lru/repoze-lru-0.8.ebuild
index ee988e12e5b2..ba44445528d1 100644
--- a/dev-python/repoze-lru/repoze-lru-0.8.ebuild
+++ b/dev-python/repoze-lru/repoze-lru-0.8.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="repoze"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
EPYTEST_PLUGINS=()
distutils_enable_tests pytest
diff --git a/dev-python/stevedore/stevedore-5.8.0.ebuild b/dev-python/stevedore/stevedore-5.8.0.ebuild
index 16569141fa9b..d7f2690bc3a2 100644
--- a/dev-python/stevedore/stevedore-5.8.0.ebuild
+++ b/dev-python/stevedore/stevedore-5.8.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~mips ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~mips ~ppc64 ~riscv ~s390 ~sparc x86"
BDEPEND="
test? (
diff --git a/dev-python/svglib/Manifest b/dev-python/svglib/Manifest
index 1010f4eeaae8..bd7933d9c746 100644
--- a/dev-python/svglib/Manifest
+++ b/dev-python/svglib/Manifest
@@ -3,3 +3,5 @@ DIST svglib-1.6.0.tar.gz.provenance 9400 BLAKE2B d570304d15dfac0590892b9c440e0c8
DIST svglib-2.0.0.tar.gz 1462932 BLAKE2B 7fa50da9bb93fbe452a1178fe40b4016a8a94cd444931dd95d163ad08b76e5e50fceb5c9e75b2bc4f775187380ccf469d13376ee7f94d22b931bfdbbe047a297 SHA512 74adb5a557c182144c20bf98d69219a904b22e67d37c5627e1ac4bbfdb62bd248e6f213edbf0ebd71e96eade90e3546245696eab768a6d0c9def2c531d5ed8a4
DIST svglib-2.0.1.tar.gz 1340776 BLAKE2B b24fb4f7aba1bea90436b65857374067bc1175b03bbe1acd0ca2f3cff5bb1f0a1709c732114bfa817ea730fc0734ba7987a7f7b73b5ae9786b2faf3d7f9d92d7 SHA512 99e32be3baf2641751ce595d376a28a674a12cc59ca46c743a4cc9786199070cf51274bed855f7cff6527b90159f39a485f2324f5199bc4661054dee8bd2c4cd
DIST svglib-2.0.1.tar.gz.provenance 9951 BLAKE2B b7df482af7aa831fbce5f93b0c88ba740d8be754d49ca206ee9393739eb0a2fafad33c7cb33de419ca6a28aa5b3d7d1f7dfa4cad7f52fc302490eed6e1ece26c SHA512 3dee7ef90a9cb32358281d0c226d2715cbf6cee4353686c91f791db27e148e1de2fa6aa653683f411c45339cdfcee77d49784b6b1ae0145bfde48e0edad86b93
+DIST svglib-2.0.2.tar.gz 1341040 BLAKE2B 8ab7efbb3e9fa3cb7a304c6ae61d32144bbb838329042ffde6f94204e0daff73f462b8afa4ae9f2a0c079f914971751a01e978d80072f3fc3cb672bde5dbb38a SHA512 695bd1aa17cd590c2d3bb5a4745d253d52b34f330c717c32ebaa8dceb13b5e442346f4fc848f962f16aa22cf6a2bde0eed2ef1466b76d7eb519487fab0fa3609
+DIST svglib-2.0.2.tar.gz.provenance 9758 BLAKE2B 6d65324a25ca0c58e86bd487dcb95d6f04d7b860450b9916c5fd3f84b9a7583d57d349b8744ef447ad2d7e99a001ac9407a66435e5d7cfb43a7aafb11d8dc060 SHA512 2f9380b55b94c7355d2ec284b01a127cb8d76e26223e27c44beb8dbc03579243a831bb53e2bb87e88d3e344b61aa0d15a1724f8a24a90e8b543980453633bd9c
diff --git a/dev-python/svglib/svglib-2.0.2.ebuild b/dev-python/svglib/svglib-2.0.2.ebuild
new file mode 100644
index 000000000000..bdddbe8b3b5c
--- /dev/null
+++ b/dev-python/svglib/svglib-2.0.2.ebuild
@@ -0,0 +1,37 @@
+# Copyright 2021-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYPI_VERIFY_REPO=https://github.com/deeplook/svglib
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Pure-Python library for reading and converting SVG"
+HOMEPAGE="
+ https://github.com/deeplook/svglib/
+ https://pypi.org/project/svglib/
+"
+
+LICENSE="LGPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="
+ >=dev-python/cssselect2-0.2.0[${PYTHON_USEDEP}]
+ >=dev-python/lxml-6.0.0[${PYTHON_USEDEP}]
+ >=dev-python/pillow-9.0.0[${PYTHON_USEDEP}]
+ >=dev-python/reportlab-4.4.3[${PYTHON_USEDEP}]
+ >=dev-python/tinycss2-0.6.0[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # Needs network access
+ tests/test_samples.py::TestWikipediaFlags::test_convert_pdf
+ tests/test_samples.py::TestW3CSVG::test_convert_pdf_png
+)
diff --git a/dev-python/tavern/tavern-3.5.0.ebuild b/dev-python/tavern/tavern-3.5.0.ebuild
index 14fb4c92503a..2faef7044a97 100644
--- a/dev-python/tavern/tavern-3.5.0.ebuild
+++ b/dev-python/tavern/tavern-3.5.0.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm64"
+KEYWORDS="amd64 ~arm64"
RDEPEND="
>=dev-python/hypothesis-6[${PYTHON_USEDEP}]
diff --git a/dev-python/txaio/Manifest b/dev-python/txaio/Manifest
index 0251c0442a38..bc68d334b70e 100644
--- a/dev-python/txaio/Manifest
+++ b/dev-python/txaio/Manifest
@@ -1,2 +1,2 @@
-DIST txaio-25.12.2.tar.gz 117393 BLAKE2B 69a44a4c7a78ec118415524539b3de67c5f6c53e1cfe9f5d4805209ea2b26ad7c8f50c723ee571f1b8efb79eeb8f8cbce5424cb54a131b3f8951e8aed2901da3 SHA512 9d06c3d613a47328933637b4f4de5535d40b5be80c06f9c24de6499c8371789bd2281807c177272c5ca9556fec56a74dd9d41da890c392886dff62feb40337f1
DIST txaio-25.9.2.tar.gz 50008 BLAKE2B ac43909f92370475d9ef64b8a64a454dbec1f3c28cac13d876ea7877b4f0b92d274867eabbdca7bceae5d32588e2e6befde2399e09a293e5a0548222cb1d1e6e SHA512 6a9ade6b8a7a7a29b96d8bc2a9ee5c2981270000b44736a753ef32aa6aa5f40b0fb0302d0b789795b313379eec236e8e5d02c5bebeefff1832a276994716794d
+DIST txaio-25.9.2.tar.gz.provenance 9106 BLAKE2B eb904e3550062fa984b8ec517cc67d87625f9a0fd5b383cbafe655034254ed9864d1cc09735748ffbb5f4f542cb5df7d8d736628f77a23a0df22524f1a22035d SHA512 41151e97941babfdc8f02006f1804d9d2dcc5d29529fea5f3044674553b244f729c3b19ed7f5be504b99b20cb41d5ca73836a7f475d7ae4d1fb439d51ffc32bb
diff --git a/dev-python/txaio/txaio-25.12.2.ebuild b/dev-python/txaio/txaio-25.12.2.ebuild
deleted file mode 100644
index db3397c5eb59..000000000000
--- a/dev-python/txaio/txaio-25.12.2.ebuild
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=hatchling
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1 optfeature pypi
-
-DESCRIPTION="Compatibility API between asyncio/Twisted/Trollius"
-HOMEPAGE="
- https://github.com/crossbario/txaio/
- https://pypi.org/project/txaio/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~sparc ~x86"
-IUSE="test"
-RESTRICT="!test? ( test )"
-
-BDEPEND="
- test? (
- dev-python/test[${PYTHON_USEDEP}]
- )
-"
-
-EPYTEST_PLUGINS=()
-distutils_enable_tests pytest
-
-EPYTEST_DESELECT=(
- # we certainly don't need to test "python setup.py sdist" here
- test/test_packaging.py
-)
-
-pkg_postinst() {
- optfeature "Twisted support" "dev-python/twisted dev-python/zope-interface"
-}
diff --git a/dev-python/txaio/txaio-25.9.2.ebuild b/dev-python/txaio/txaio-25.9.2.ebuild
index 50dce6761459..3ae53d4de2c6 100644
--- a/dev-python/txaio/txaio-25.9.2.ebuild
+++ b/dev-python/txaio/txaio-25.9.2.ebuild
@@ -1,9 +1,10 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DISTUTILS_USE_PEP517=setuptools
+PYPI_VERIFY_REPO=https://github.com/crossbario/txaio
PYTHON_COMPAT=( python3_{13..14} )
inherit distutils-r1 optfeature pypi
diff --git a/dev-python/uv-build/Manifest b/dev-python/uv-build/Manifest
index 74201b4e6b62..76ced95c64ca 100644
--- a/dev-python/uv-build/Manifest
+++ b/dev-python/uv-build/Manifest
@@ -4,3 +4,4 @@ DIST uv_build-0.11.16.tar.gz 390555 BLAKE2B 728d2aa39bd35ace67f95840acc73c7a361f
DIST uv_build-0.11.19.tar.gz 398965 BLAKE2B 01f2ba93ad45b68649599ace9a678478a9a595bcded022a5ff3ec4638f6e4f8d9ad21173c67511bb11f75327f3045e3cb4f9860b57d790502aa71ad8bda59f61 SHA512 9ff1f62933f1f3a81386306ad64c65153848ff9461ee6b690455d1bf6f41ac2287302e42afe11dbc9b1532c08908f96d5158d5b2ff0e829a10330472b7f346cc
DIST uv_build-0.11.20.tar.gz 399107 BLAKE2B 4bbdf8b53c778b78798e6ffdf0a50bf88f45b5573eefc9d185473b2560b9f9e6e3511519f3fe96db67c1dfe47b1e2d3b0f36c0fac8dc55fdb2e00eada9a98f43 SHA512 80502285a157072460e3d5c70be3e6b1befdeaafc87b7d3ac56899eab1a94af358c38ed11accb8040278ec0b1c09a57fe9b7870d2d224b658fdfa2370f476d00
DIST uv_build-0.11.21.tar.gz 400102 BLAKE2B 17766a7ebbfb0ec01b2f0ef76332c30b4bb9010c4ea0cf29a217a4ea45df8a3680c831c00974ad6732c847b5caae7aadf4e3639eff77223ef21a77040993e562 SHA512 7ee8b981791533f35313afde228b38de5dd460713a9453b61f620df63f5a6feb0cb2cd18e2a3fb29199e13a9781f31bf850002f9b4a747c14e3cf0579f8ba970
+DIST uv_build-0.11.22.tar.gz 402145 BLAKE2B ef6714c504b967de27e2b5e20367025ecf54d699b03909476540bcf6984562ab2161003972717db03765075511bf3e21003e4c285ed51d89a1225934415ebd09 SHA512 e425cdc45a4760406c90843556c71dd7a05b26aa34930739cd1865672d40807f906d8078cfe27ab6c45d1f184f90f56d5792067b586de67eb9cb8560cf41a69e
diff --git a/dev-python/uv-build/uv-build-0.11.22.ebuild b/dev-python/uv-build/uv-build-0.11.22.ebuild
new file mode 100644
index 000000000000..d66584ed2ede
--- /dev/null
+++ b/dev-python/uv-build/uv-build-0.11.22.ebuild
@@ -0,0 +1,99 @@
+# Copyright 2025-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# Maturin compiles uv-build executable for every impl, we do not want
+# that, so we use another backend. And since we use another backend,
+# why not dogfood it in the first place?
+DISTUTILS_USE_PEP517=standalone
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="PEP517 uv build backend"
+HOMEPAGE="
+ https://github.com/astral-sh/uv/
+ https://pypi.org/project/uv-build/
+"
+
+LICENSE="|| ( Apache-2.0 MIT )"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-python/uv-${PV}
+"
+BDEPEND="
+ test? (
+ app-arch/unzip
+ dev-python/build[${PYTHON_USEDEP}]
+ )
+"
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # use the executable from dev-python/uv instead of building
+ # a largely overlapping uv-build executable (at least for now)
+ sed -i -e '/USE_UV_EXECUTABLE/s:False:True:' python/uv_build/__init__.py || die
+
+ # replace the build-system section
+ sed -i -e '/\[build-system\]/,$d' pyproject.toml || die
+ cat >> pyproject.toml <<-EOF || die
+ [build-system]
+ requires = ["uv_build<9999"]
+ build-backend = "uv_build"
+ backend-path = ["src"]
+ EOF
+
+ # rename to make uv-build find it
+ mv python src || die
+}
+
+python_test() {
+ "${EPYTHON}" -m build -n || die "Self-build failed with ${EPYTHON}"
+
+ local zip_result=$(
+ unzip -t "dist/uv_build-${PV}-py3-none-any.whl" || die
+ )
+ local zip_expected="\
+Archive: dist/uv_build-${PV}-py3-none-any.whl
+ testing: uv_build/ OK
+ testing: uv_build/__init__.py OK
+ testing: uv_build/__main__.py OK
+ testing: uv_build/py.typed OK
+ testing: uv_build-${PV}.dist-info/ OK
+ testing: uv_build-${PV}.dist-info/WHEEL OK
+ testing: uv_build-${PV}.dist-info/METADATA OK
+ testing: uv_build-${PV}.dist-info/RECORD OK
+No errors detected in compressed data of dist/uv_build-${PV}-py3-none-any.whl.\
+"
+ if [[ ${zip_result} != ${zip_expected} ]]; then
+ eerror ".zip result:\n${zip_result}"
+ eerror ".zip expected:\n${zip_expected}"
+ die ".whl result mismatch"
+ fi
+
+ local tar_result=$(
+ tar -tf "dist/uv_build-${PV}.tar.gz" || die
+ )
+ local tar_expected="\
+uv_build-${PV}/PKG-INFO
+uv_build-${PV}/
+uv_build-${PV}/README.md
+uv_build-${PV}/pyproject.toml
+uv_build-${PV}/src
+uv_build-${PV}/src/uv_build
+uv_build-${PV}/src/uv_build/__init__.py
+uv_build-${PV}/src/uv_build/__main__.py
+uv_build-${PV}/src/uv_build/py.typed\
+"
+ if [[ ${tar_result} != ${tar_expected} ]]; then
+ eerror ".tar.gz result:\n${tar_result}"
+ eerror ".tar.gz expected:\n${tar_expected}"
+ die ".tar.gz result mismatch"
+ fi
+}
diff --git a/dev-python/uv/Manifest b/dev-python/uv/Manifest
index 9929d6ecd95e..04a3d5d58789 100644
--- a/dev-python/uv/Manifest
+++ b/dev-python/uv/Manifest
@@ -10,3 +10,5 @@ DIST uv-0.11.20-crates.tar.xz 43509336 BLAKE2B 2a1fcc003c4c2cb927225a5beec44239d
DIST uv-0.11.20.gh.tar.gz 5398552 BLAKE2B 1063c7552809b21741523429c1966523ec666fee28143a555424b815ed51aadfd9139e5497ab6373b0192e7c1c449d9f021a85e08b6ebe4b1943ad9be848068b SHA512 abf8756e80cf13e7f1a752c6c38e2c340fbecc2a9d12209a5796fe076f3b4706e95757126b1acaa330b86c79711e302a69bdf1fdde9b911a92ecdeb70ed3ee81
DIST uv-0.11.21-crates.tar.xz 43509336 BLAKE2B 2a1fcc003c4c2cb927225a5beec44239d51bfa5b10d67aa6af8410ba992d8d69911942cfa8227fe1e0cf2b9ce713bebd9ca616b173f1c13e15fa8f0e612ef59c SHA512 13abc4edbec4f7f61bb4e942f2ef2b05364462f35b521610deeffb3a3ef64155ab40a3679979556f7e14feb1834ca85e6f1d49d29a7a63a0d4dc64b29d40edf8
DIST uv-0.11.21.gh.tar.gz 5420532 BLAKE2B 87bf0bc0064398dcbd9848589edcef0ec60aba55fe6dc678742caa6722738d08485edf368738ba3f83e12a13fc29a799b08d4ad3ab54de82a1b543f0c83e1b45 SHA512 c1057ff5e2387dc190d12c71fbdfddca3d99e03d2b00065f0077f9c912dbcb19ba8b81cbcd874c31f613a5ab2fafef77f6034589ccab5ee33940a6eb72714598
+DIST uv-0.11.22-crates.tar.xz 43596924 BLAKE2B deeafbb1c13c2ae42f4ba12e7c220f518997ea41b95817778d60608b6b111d108a6660baa10737c4a121570e4794f0f6544feff2b246ad1f8a9b9496d3bdff5f SHA512 b6ded3c40033b2cd610b510aa47ca20b1866d4302ec0de8892f2c1017ae48fa6795277ef5cdcb448f8f4c25cb604eee6e60bcc035650a3537951765715c4c9bd
+DIST uv-0.11.22.gh.tar.gz 5449584 BLAKE2B fcfc2657737556c83a667bb4d5f2ca571a36f826b14febfd38d80565887b88f59e8aef324fa92c8e7013e69be2b984bf25b35c7678acc61d536952e286219ce3 SHA512 5c2ea2478721af3b34152809eff7a37ea19eb8ea88c912a0a75b4a112c3c56b16e798226a5c84d906633d71ee4a38d9f8fa187adc17a09c6430edcae0272c0df
diff --git a/dev-python/uv/uv-0.11.22.ebuild b/dev-python/uv/uv-0.11.22.ebuild
new file mode 100644
index 000000000000..e5931b30ed3e
--- /dev/null
+++ b/dev-python/uv/uv-0.11.22.ebuild
@@ -0,0 +1,163 @@
+# Copyright 2024-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+CRATES="
+"
+RUST_MIN_VER="1.94.0"
+
+inherit cargo check-reqs
+
+CRATE_PV=${PV}
+DESCRIPTION="A Python package installer and resolver, written in Rust"
+HOMEPAGE="
+ https://github.com/astral-sh/uv/
+ https://pypi.org/project/uv/
+"
+# pypi sdist misses scripts/, needed for tests
+SRC_URI="
+ https://github.com/astral-sh/uv/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+ ${CARGO_CRATE_URIS}
+"
+if [[ ${PKGBUMPING} != ${PVR} ]]; then
+ SRC_URI+="
+ https://github.com/gentoo-crate-dist/uv/releases/download/${CRATE_PV}/uv-${CRATE_PV}-crates.tar.xz
+ "
+fi
+
+# most of the code
+LICENSE="|| ( Apache-2.0 MIT )"
+# crates/pep508-rs is || ( Apache-2.0 BSD-2 ) which is covered below
+# Dependent crate licenses
+LICENSE+="
+ 0BSD Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD-2 BSD CC0-1.0
+ CDLA-Permissive-2.0 ISC MIT MIT-0 MPL-2.0 Unicode-3.0
+ Unicode-DFS-2016 ZLIB
+"
+# ring crate
+LICENSE+=" openssl"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~x86"
+IUSE="test"
+RESTRICT="test"
+PROPERTIES="test_network"
+
+DEPEND="
+ app-arch/bzip2:=
+ app-arch/xz-utils:=
+ app-arch/zstd:=
+"
+RDEPEND="
+ ${DEPEND}
+"
+BDEPEND="
+ virtual/pkgconfig
+ test? (
+ dev-lang/python:3.9
+ dev-lang/python:3.10
+ dev-lang/python:3.11
+ dev-lang/python:3.12
+ dev-lang/python:3.13
+ !!~dev-python/uv-0.5.0
+ )
+"
+
+QA_FLAGS_IGNORED="usr/bin/.*"
+
+check_space() {
+ local CHECKREQS_DISK_BUILD=3G
+ use debug && CHECKREQS_DISK_BUILD=9G
+ check-reqs_pkg_setup
+}
+
+pkg_pretend() {
+ check_space
+}
+
+pkg_setup() {
+ check_space
+ rust_pkg_setup
+}
+
+src_prepare() {
+ default
+
+ # force thin lto, makes build much faster and less memory hungry
+ # (i.e. makes it possible to actually build uv on 32-bit PPC)
+ sed -i -e '/lto/s:fat:thin:' Cargo.toml || die
+
+ # enable system libraries where supported
+ export ZSTD_SYS_USE_PKG_CONFIG=1
+ # TODO: unbundle libz-ng-sys, tikv-jemalloc-sys?
+
+ # remove unbundled sources, just in case
+ find "${ECARGO_VENDOR}"/{bzip2,lzma,zstd}-sys-*/ -name '*.c' -delete || die
+
+ # bzip2-sys requires a pkg-config file
+ # https://github.com/alexcrichton/bzip2-rs/issues/104
+ mkdir "${T}/pkg-config" || die
+ export PKG_CONFIG_PATH=${T}/pkg-config${PKG_CONFIG_PATH+:${PKG_CONFIG_PATH}}
+ cat >> "${T}/pkg-config/bzip2.pc" <<-EOF || die
+ Name: bzip2
+ Version: 9999
+ Description:
+ Libs: -lbz2
+ EOF
+
+ # uv is now forcing bundled liblzma, sigh
+ sed -i -e '/xz/s:"static"::' Cargo.toml || die
+}
+
+src_configure() {
+ local myfeatures=(
+ test-git
+ test-pypi
+ test-python
+ )
+
+ cargo_src_configure --no-default-features
+}
+
+src_compile() {
+ cd crates/uv || die
+ cargo_src_compile
+}
+
+src_test() {
+ cd crates/uv || die
+ cargo_src_test --no-fail-fast
+}
+
+src_install() {
+ dobin "$(cargo_target_dir)"/{uv,uvx}
+
+ insinto /etc/xdg/uv
+ newins - uv.toml <<-EOF || die
+ # These defaults match Fedora, see:
+ # https://src.fedoraproject.org/rpms/uv/pull-request/18
+
+ # By default ("automatic"), uv downloads missing Python versions
+ # automatically and keeps them in the user's home directory.
+ # Disable that to make downloading opt-in, and especially
+ # to avoid unnecessarily fetching custom Python when the distro
+ # package would be preferable. Python builds can still be
+ # downloaded manually via "uv python install".
+ #
+ # https://docs.astral.sh/uv/reference/settings/#python-downloads
+ python-downloads = "manual"
+
+ # By default ("managed"), uv always prefers self-installed
+ # Python versions over the system Python, independently
+ # of versions. Since we generally expect users to use that
+ # to install old Python versions not in ::gentoo anymore,
+ # this effectively means that uv would end up preferring very
+ # old Python versions over the newer ones that are provided
+ # by the system. Default to using the system versions to avoid
+ # this counter-intuitive behavior.
+ #
+ # https://docs.astral.sh/uv/reference/settings/#python-preference
+ python-preference = "system"
+ EOF
+}
diff --git a/dev-python/uv/uv-9999.ebuild b/dev-python/uv/uv-9999.ebuild
index b87ccf76f3c6..f828c19efd20 100644
--- a/dev-python/uv/uv-9999.ebuild
+++ b/dev-python/uv/uv-9999.ebuild
@@ -112,8 +112,7 @@ src_test() {
}
src_install() {
- cd crates/uv || die
- cargo_src_install
+ dobin "$(cargo_target_dir)"/{uv,uvx}
insinto /etc/xdg/uv
newins - uv.toml <<-EOF || die
diff --git a/dev-python/watchfiles/watchfiles-1.2.0.ebuild b/dev-python/watchfiles/watchfiles-1.2.0.ebuild
index 0a8338efae77..08775d30e3dd 100644
--- a/dev-python/watchfiles/watchfiles-1.2.0.ebuild
+++ b/dev-python/watchfiles/watchfiles-1.2.0.ebuild
@@ -78,7 +78,7 @@ LICENSE+="
Apache-2.0-with-LLVM-exceptions CC0-1.0 ISC MIT Unicode-DFS-2016
"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="amd64 arm arm64 ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/anyio-4.0.0[${PYTHON_USEDEP}]
diff --git a/dev-python/zeep/Manifest b/dev-python/zeep/Manifest
index 6e2f93b271ba..36d0efef12db 100644
--- a/dev-python/zeep/Manifest
+++ b/dev-python/zeep/Manifest
@@ -1,2 +1,4 @@
DIST zeep-4.3.2.tar.gz 166687 BLAKE2B cc1295ac389bd2195b4989e73c4cec1d159be8d9d63b33ff21a05d2dd52e4f927f08c42443f7608e6533b4df23d74f8f127d8276c07ecb1fbdb26178837cb3cc SHA512 512260a81c22b55b7fec4629b10cda775883f5bdfb40bda8ff8fdd6deff7bfe594cdb0919dac405a4eeff5e19f8a3c5906cb542760773971b2f43e03e3bdb313
DIST zeep-4.3.2.tar.gz.provenance 9756 BLAKE2B 896d100b9e3c839b5de44288a4ff7a3e14126fa2ba157944463604788e0c1f1e6c3c6818f4150488f5a263b93565c4ed74c3c6c5ef82cb816c424b446852435b SHA512 9257ea2dd8f658c7f9e206cf29ad92aefd1e7a9e55c6534d63d9308c36103d06186f8692443eadb7d2526b5fed338587e8449e37743dd8d81d4a64a22395b7be
+DIST zeep-4.3.3.tar.gz 167372 BLAKE2B ec35c59885df84b3aaa90e8e0d683f8711e781bef31e9e4d25a86e95c52e42f30bd4076804ed57c1773348ae480920d9b1790c8407dc523be69f89315d92546e SHA512 19985e823d4467ad728f97e87cb90812faad56e7ad92480574d28642f166769b30ab32217b6607900f6738b10cca65752059e6913898faa9f5e99ed46103d8ec
+DIST zeep-4.3.3.tar.gz.provenance 10061 BLAKE2B 31eb724b4a81a7692a3d9784ce02c3a08a57c016b3af5a82ecc08e9b560562cfb6f0f33795fad8148544fe5ad4af760255018cd81136a2695b7e20a16d742921 SHA512 d199cb03338078e6f1341412a4160d9dafd6848bfce42228993795bdfc9709f4f32c177a1afd9697803a11cf473a424d3cba4996f71b7265371a8ed803af7bc4
diff --git a/dev-python/zeep/zeep-4.3.3.ebuild b/dev-python/zeep/zeep-4.3.3.ebuild
new file mode 100644
index 000000000000..c2852c5cb6c1
--- /dev/null
+++ b/dev-python/zeep/zeep-4.3.3.ebuild
@@ -0,0 +1,49 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_VERIFY_REPO=https://github.com/mvantellingen/python-zeep
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A modern/fast Python SOAP client based on lxml / requests"
+HOMEPAGE="
+ https://docs.python-zeep.org/
+ https://github.com/mvantellingen/python-zeep/
+ https://pypi.org/project/zeep/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
+IUSE="async"
+
+RDEPEND="
+ >=dev-python/attrs-17.2.0[${PYTHON_USEDEP}]
+ >=dev-python/isodate-0.5.4[${PYTHON_USEDEP}]
+ >=dev-python/lxml-4.6.0[${PYTHON_USEDEP}]
+ >=dev-python/platformdirs-1.4.0[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.7.0[${PYTHON_USEDEP}]
+ >=dev-python/requests-file-1.5.1[${PYTHON_USEDEP}]
+ >=dev-python/requests-toolbelt-0.7.1[${PYTHON_USEDEP}]
+ async? (
+ >=dev-python/httpx-0.15.0[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ )
+"
+BDEPEND="
+ test? (
+ dev-python/freezegun[${PYTHON_USEDEP}]
+ >=dev-python/httpx-0.15.0[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ dev-python/pretend[${PYTHON_USEDEP}]
+ dev-python/requests-mock[${PYTHON_USEDEP}]
+ dev-python/xmlsec[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-{asyncio,httpx} )
+distutils_enable_tests pytest
diff --git a/dev-python/zipp/zipp-4.1.0.ebuild b/dev-python/zipp/zipp-4.1.0.ebuild
index ca14759218ee..a2b681845d1e 100644
--- a/dev-python/zipp/zipp-4.1.0.ebuild
+++ b/dev-python/zipp/zipp-4.1.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos ~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="
diff --git a/dev-python/zipstream-ng/zipstream-ng-1.9.2.ebuild b/dev-python/zipstream-ng/zipstream-ng-1.9.2.ebuild
index 414cf8c4a87a..c0a07b0f018d 100644
--- a/dev-python/zipstream-ng/zipstream-ng-1.9.2.ebuild
+++ b/dev-python/zipstream-ng/zipstream-ng-1.9.2.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="LGPL-3"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~x86"
+KEYWORDS="amd64 ~arm64 ~x86"
EPYTEST_PLUGINS=()
distutils_enable_tests pytest