summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/aiosmtpd/aiosmtpd-1.4.6.ebuild13
-rw-r--r--dev-python/atpublic/atpublic-6.0.2.ebuild4
-rw-r--r--dev-python/atpublic/atpublic-7.0.0.ebuild2
-rw-r--r--dev-python/backrefs/Manifest3
-rw-r--r--dev-python/backrefs/backrefs-6.2.ebuild (renamed from dev-python/backrefs/backrefs-6.0.1.ebuild)5
-rw-r--r--dev-python/boto3/Manifest1
-rw-r--r--dev-python/boto3/boto3-1.42.50.ebuild53
-rw-r--r--dev-python/botocore/Manifest1
-rw-r--r--dev-python/botocore/botocore-1.42.50.ebuild67
-rw-r--r--dev-python/dj-database-url/dj-database-url-3.0.1.ebuild4
-rw-r--r--dev-python/django-configurations/django-configurations-2.5.1.ebuild4
-rw-r--r--dev-python/fakeredis/Manifest3
-rw-r--r--dev-python/fakeredis/fakeredis-2.34.0.ebuild (renamed from dev-python/fakeredis/fakeredis-2.32.1.ebuild)8
-rw-r--r--dev-python/filelock/Manifest2
-rw-r--r--dev-python/filelock/filelock-3.24.2.ebuild31
-rw-r--r--dev-python/flatdict/Manifest1
-rw-r--r--dev-python/flatdict/flatdict-4.1.0.ebuild31
-rw-r--r--dev-python/gssapi/gssapi-1.10.1.ebuild4
-rw-r--r--dev-python/hypothesis/Manifest5
-rw-r--r--dev-python/hypothesis/hypothesis-6.148.12.ebuild91
-rw-r--r--dev-python/hypothesis/hypothesis-6.151.0.ebuild100
-rw-r--r--dev-python/hypothesis/hypothesis-6.151.3.ebuild100
-rw-r--r--dev-python/hypothesis/hypothesis-6.151.9.ebuild (renamed from dev-python/hypothesis/hypothesis-6.151.2.ebuild)5
-rw-r--r--dev-python/mpmath/Manifest1
-rw-r--r--dev-python/mpmath/mpmath-1.4.0_beta4.ebuild58
-rw-r--r--dev-python/pyarrow/Manifest1
-rw-r--r--dev-python/pyarrow/pyarrow-23.0.1.ebuild109
-rw-r--r--dev-python/pybind11/Manifest3
-rw-r--r--dev-python/pybind11/files/pybind11-2.13.6-pypy311.patch31
-rw-r--r--dev-python/pybind11/pybind11-2.13.6.ebuild83
-rw-r--r--dev-python/pybind11/pybind11-3.0.2.ebuild (renamed from dev-python/pybind11/pybind11-3.0.0-r1.ebuild)4
-rw-r--r--dev-python/pycountry/Manifest2
-rw-r--r--dev-python/pycountry/pycountry-26.2.16.ebuild27
-rw-r--r--dev-python/pycurl-requests/Manifest2
-rw-r--r--dev-python/pycurl-requests/pycurl-requests-0.5.2.ebuild (renamed from dev-python/pycurl-requests/pycurl-requests-0.5.0-r1.ebuild)3
-rw-r--r--dev-python/pytest-django/pytest-django-4.11.1.ebuild4
-rw-r--r--dev-python/pytest-django/pytest-django-4.12.0.ebuild2
-rw-r--r--dev-python/redis/Manifest1
-rw-r--r--dev-python/redis/redis-7.2.0.ebuild122
-rw-r--r--dev-python/simsimd/Manifest6
-rw-r--r--dev-python/simsimd/simsimd-6.5.13.ebuild (renamed from dev-python/simsimd/simsimd-6.5.8.ebuild)3
-rw-r--r--dev-python/simsimd/simsimd-6.5.3.ebuild63
-rw-r--r--dev-python/sshtunnel/sshtunnel-0.4.0-r2.ebuild4
-rw-r--r--dev-python/sybil/sybil-9.2.0-r1.ebuild4
-rw-r--r--dev-python/sybil/sybil-9.3.0.ebuild4
-rw-r--r--dev-python/testfixtures/testfixtures-10.0.0.ebuild4
-rw-r--r--dev-python/testfixtures/testfixtures-9.1.0.ebuild4
-rw-r--r--dev-python/testfixtures/testfixtures-9.2.0.ebuild4
-rw-r--r--dev-python/tifffile/Manifest1
-rw-r--r--dev-python/tifffile/tifffile-2026.2.16.ebuild56
-rw-r--r--dev-python/tox/Manifest2
-rw-r--r--dev-python/tox/tox-4.36.1.ebuild92
-rw-r--r--dev-python/typer/Manifest1
-rw-r--r--dev-python/typer/typer-0.24.0.ebuild67
-rw-r--r--dev-python/uv-build/Manifest1
-rw-r--r--dev-python/uv-build/uv-build-0.10.3.ebuild99
-rw-r--r--dev-python/uv/Manifest2
-rw-r--r--dev-python/uv/uv-0.10.3.ebuild164
-rw-r--r--dev-python/uvicorn/Manifest4
-rw-r--r--dev-python/uvicorn/uvicorn-0.41.0.ebuild (renamed from dev-python/uvicorn/uvicorn-0.38.0.ebuild)14
-rw-r--r--dev-python/virtualenv/Manifest2
-rw-r--r--dev-python/virtualenv/virtualenv-20.37.0.ebuild133
-rw-r--r--dev-python/xxhash/Manifest2
-rw-r--r--dev-python/xxhash/xxhash-3.5.0.ebuild38
-rw-r--r--dev-python/xxhash/xxhash-3.6.0.ebuild5
65 files changed, 1194 insertions, 576 deletions
diff --git a/dev-python/aiosmtpd/aiosmtpd-1.4.6.ebuild b/dev-python/aiosmtpd/aiosmtpd-1.4.6.ebuild
index 874f89efd84c..13456b3d89d2 100644
--- a/dev-python/aiosmtpd/aiosmtpd-1.4.6.ebuild
+++ b/dev-python/aiosmtpd/aiosmtpd-1.4.6.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2024-2025 Gentoo Authors
+# Copyright 2024-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -17,21 +17,19 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~sparc x86"
RDEPEND="
>=dev-python/atpublic-4.0[${PYTHON_USEDEP}]
>=dev-python/attrs-23.2.0[${PYTHON_USEDEP}]
"
-BDEPEND="
- test? ( >=dev-python/pytest-mock-3.12.0[${PYTHON_USEDEP}] )
-"
EPYTEST_DESELECT=(
# Needs dev-vcs/git
aiosmtpd/qa/test_0packaging.py::TestVersion
)
+EPYTEST_PLUGINS=( pytest-mock )
distutils_enable_tests pytest
python_prepare_all() {
@@ -43,7 +41,7 @@ python_prepare_all() {
python_test() {
local EPYTEST_DESELECT=()
case ${EPYTHON} in
- python3.13)
+ python3.1[34])
EPYTEST_DESELECT+=(
# https://github.com/aio-libs/aiosmtpd/issues/403
aiosmtpd/tests/test_server.py::TestUnthreaded::test_unixsocket
@@ -51,6 +49,5 @@ python_test() {
;;
esac
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
- epytest -p pytest_mock
+ epytest
}
diff --git a/dev-python/atpublic/atpublic-6.0.2.ebuild b/dev-python/atpublic/atpublic-6.0.2.ebuild
index 375375f67f60..5e8b24397d98 100644
--- a/dev-python/atpublic/atpublic-6.0.2.ebuild
+++ b/dev-python/atpublic/atpublic-6.0.2.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
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~sparc x86"
RDEPEND="
$(python_gen_cond_dep '
diff --git a/dev-python/atpublic/atpublic-7.0.0.ebuild b/dev-python/atpublic/atpublic-7.0.0.ebuild
index f5e350e656cb..62592903d5bf 100644
--- a/dev-python/atpublic/atpublic-7.0.0.ebuild
+++ b/dev-python/atpublic/atpublic-7.0.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~sparc x86"
BDEPEND="
test? (
diff --git a/dev-python/backrefs/Manifest b/dev-python/backrefs/Manifest
index 5e9331cbf737..a3c7e6068363 100644
--- a/dev-python/backrefs/Manifest
+++ b/dev-python/backrefs/Manifest
@@ -1,3 +1,4 @@
-DIST backrefs-6.0.1.tar.gz 5767249 BLAKE2B 157f6eb46b13948ce4a1a8c0e3c924498c4a2782d696d79f5909083744535347f94c754b2507555bf3fba841b8181b5e32b867cf741e728c3720decf317c4650 SHA512 341fd6a5e35cb0a9bd70d7572ab5d4f449d12061508cd736793f20ba71d6ed733305d54b85d3b4ed2ba2330d5cc64caac79608d970a80a8e751384783dda55b6
DIST backrefs-6.1.tar.gz 7011962 BLAKE2B 0c1b507a1765dc38d4a9f45e86165ca6fe5994ecb63c8450a2ca9411e1458506b1ac881570f8867f5e778b47ee66d5b08418d6abe3ddd2483ef9a2da9820c9ba SHA512 eab73754e72b61b106691ab36c2c5734973a5407f1d88ca3175c3df3ce291f371241855558e593085ff038c4f42ba259eb6a4337dadca2246264951bc9bb90ee
DIST backrefs-6.1.tar.gz.provenance 9226 BLAKE2B aa05b7f186e6b465b2381a867a3b4a61a05623bc5e68f0949b21aefaf845a531e98d27aeda03510e7d942e70a41fdf3ff0c84f15601984cc600b4d3e5d06e8a5 SHA512 bad5c4b102451b0831582801ce174d2cf01cd9c7dcd3ae689060e907681dc9b50390ee81d5a2f6d524955d72388bbd5d5b560e1dc4c9d0867a99f832fd4c39ec
+DIST backrefs-6.2.tar.gz 7012303 BLAKE2B ce8faf008aac05913ca8cda7f8d659042a03bd6254ec411f6dea60bc76b23bb6771fa4c59a35dd5de2411f133f7a0d7dcf06af626c8fb38407cc0108ec99057d SHA512 66f096e71357bdafbfe65298e06c865d6ec4522d1218b9d9af461c7453a3fae82db366b5ead7318b64a04ee83a76a8d002ce27b57872f573b0c85aac46bbd3e0
+DIST backrefs-6.2.tar.gz.provenance 9459 BLAKE2B f0c14b2ba9e4f466a9c9080cbd0753d77ff27ac54a44c221ba8e403f3f37029b24b1010f1c90ea401c057dd8b0356c07a23e893085633fc279c517b6123d0c58 SHA512 84f3c470bd351975d9111cbb8b8a43ebb10e1bedc11e4d05e5562c46965cc0e7ba4822994029e68de3462ab84a4e70081c7035cb94c389965a6a8f51e2cd31b5
diff --git a/dev-python/backrefs/backrefs-6.0.1.ebuild b/dev-python/backrefs/backrefs-6.2.ebuild
index 0fba324fb0fd..1ec719ee89b1 100644
--- a/dev-python/backrefs/backrefs-6.0.1.ebuild
+++ b/dev-python/backrefs/backrefs-6.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=hatchling
+PYPI_VERIFY_REPO=https://github.com/facelessuser/backrefs
PYTHON_COMPAT=( python3_{10..14} )
inherit distutils-r1 pypi
@@ -16,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 arm64 ~riscv x86"
+KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
BDEPEND="
test? (
diff --git a/dev-python/boto3/Manifest b/dev-python/boto3/Manifest
index 4654651be94d..48b02daa00d2 100644
--- a/dev-python/boto3/Manifest
+++ b/dev-python/boto3/Manifest
@@ -6,3 +6,4 @@ DIST boto3-1.42.34.gh.tar.gz 1075720 BLAKE2B 52881dd1683dc36c7f3360113d5418fd0e1
DIST boto3-1.42.39.gh.tar.gz 1078948 BLAKE2B 15a852156234ae0ac04c7ff2d47bfb0da973835be2fa37f94db9ae3f865e1b53b8a1683ca69c61b8dd0165062b3e1e0e39c796e2b9b3ca1c16d20d2b3bce5ffc SHA512 1a15924d9d5db384bf98e75b104417f56900ca2a053215a2d14c96b5fe03f5cf5a4c1ccbdc36d3c3fdec6a39089b556134234572ba462b01b9c6433309bd9f85
DIST boto3-1.42.44.gh.tar.gz 1082573 BLAKE2B 98ac0981ec6df7594dcfcbc1ccddcbe8e9f4423cd61e034279dd4c9b52a5b251f158b1a3ec026dec02bf3178a3e30dc61086cdf53ff2516b7ee6b22ea32bfb3d SHA512 16b05dee6df917a8be2b4e09bc44f4032a08c059eb6aea5d9bf76ad38951ae589b4fa244f0d8b591123622fc3244d955bc028dd397a79ca0ab3d6dcddb7ae0cd
DIST boto3-1.42.49.gh.tar.gz 1085810 BLAKE2B f9015a7ea5ff20a8c65d2ce25de3df2dab0e41dd28adb40a23c8294e477fb7163e77d2d8ddfab2d6143019d5f71c0b7b34c05e86d7fc35c2808aaf46f51caeb3 SHA512 364c194b48058af0c3d3daf89b0d84c6fb13c1c64df866b61169506adacb7dd36eacaaeca38a3ee0efe0b01c5887da1a1219078318cf8e5238bdd9662e2d1339
+DIST boto3-1.42.50.gh.tar.gz 1086325 BLAKE2B d81f65b37af6cbec127dcc3e188880b31c6516b9870e33888117b70acfb739ac7677010b0496707518fce190e8bf49453de044ca3dd4e3a7a5cf57b75b496676 SHA512 1834d06a828e7ba1b8cbee90040afa1c0b128646d53f5cd4b253ce000c4970375484480c89c4d9ee1b6cc769d466af2a5595dd11205b373b4fe373867ffadae5
diff --git a/dev-python/boto3/boto3-1.42.50.ebuild b/dev-python/boto3/boto3-1.42.50.ebuild
new file mode 100644
index 000000000000..6e5f06a012ad
--- /dev/null
+++ b/dev-python/boto3/boto3-1.42.50.ebuild
@@ -0,0 +1,53 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="The AWS SDK for Python"
+HOMEPAGE="
+ https://github.com/boto/boto3/
+ https://pypi.org/project/boto3/
+"
+SRC_URI="
+ https://github.com/boto/boto3/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/botocore-${PV}[${PYTHON_USEDEP}]
+ >=dev-python/jmespath-0.7.1[${PYTHON_USEDEP}]
+ >=dev-python/s3transfer-0.16.0[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ # don't lock versions to narrow ranges
+ sed -e '/botocore/ d' \
+ -e '/jmespath/ d' \
+ -e '/s3transfer/ d' \
+ -i setup.py || die
+
+ # do not rely on bundled deps in botocore (sic!)
+ find -name '*.py' -exec sed -i \
+ -e 's:from botocore[.]vendored import:import:' \
+ -e 's:from botocore[.]vendored[.]:from :' \
+ {} + || die
+
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ epytest tests/{functional,unit}
+}
diff --git a/dev-python/botocore/Manifest b/dev-python/botocore/Manifest
index e1b3ebb87c6b..bc0c9169f6bf 100644
--- a/dev-python/botocore/Manifest
+++ b/dev-python/botocore/Manifest
@@ -6,3 +6,4 @@ DIST botocore-1.42.34.gh.tar.gz 15781471 BLAKE2B 694d24a74d14db50f6532c92032e3f0
DIST botocore-1.42.39.gh.tar.gz 15795159 BLAKE2B 3485a55d4fabb1b7431035d9d22e5e165c226cd1fb9265dce47dc0123927504e3c4fb1f745d173f9fd7ba1ca3f74a0e31ab96cc0f1de6dbfbfd1c676e1a5ec59 SHA512 5b11b07e149d76c6ae34364f13eef263abcb83008fac1b76dba3ed27ba25b086602bbb4838e0540d4780e84adf7e29ae2fed46493e2e4ce2948bc5b70bdd387f
DIST botocore-1.42.44.gh.tar.gz 15820139 BLAKE2B a7047f799dc39ee8f49c7128e91e0f11f20c38b946ec5555a75e6fd3f8691fe396d312b9ff3023fc031415cc0846fe94f5d9a5357e31f9d0670cf7e534474609 SHA512 519b7e28d5b46e7e6ac3b375f1926670d361695b34f07d8eddcf48fee8af2b3674040fa5a3b1a27961f77c435a3c4c78deb1802933f08d993dfe4cb782ea4b2c
DIST botocore-1.42.49.gh.tar.gz 15843630 BLAKE2B 823ba230ac7ba7fb3ecef8c716ff0fab0669920cbb3633105e1587c788abd5e99cddfd7ad7c896342feafd226c10eea6fcc2a888a12bacf8fd120ffc5ca51e21 SHA512 c8d73ed693936f97d0b61a9c84c00c3671891afe3173cac3a9610831c02c82c2583c285f746efbc884cb910f5f935a1a369991524b20ef79e7dc467d72497575
+DIST botocore-1.42.50.gh.tar.gz 15844813 BLAKE2B 17738a393aee02ecf689acbb95daa9e1a8350913e8d8e24d00e0cd8a25f83bd688363558594f6cc22627a2d79c28b52dd2a99be64d2dc9023721e71c0de1881b SHA512 ebdd01be0d7653c2d31b77007998bfa09f1e67df1054e1bba4b121446fe1aa25a8646de8002621b870cbcd35614c80ce56ad89025f0b017c8d90ff3e66754a16
diff --git a/dev-python/botocore/botocore-1.42.50.ebuild b/dev-python/botocore/botocore-1.42.50.ebuild
new file mode 100644
index 000000000000..f6ce0d9ed8d5
--- /dev/null
+++ b/dev-python/botocore/botocore-1.42.50.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/dj-database-url/dj-database-url-3.0.1.ebuild b/dev-python/dj-database-url/dj-database-url-3.0.1.ebuild
index 222e8750ae31..702887fdaea7 100644
--- a/dev-python/dj-database-url/dj-database-url-3.0.1.ebuild
+++ b/dev-python/dj-database-url/dj-database-url-3.0.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
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~sparc x86"
RDEPEND="
>=dev-python/django-4.2[${PYTHON_USEDEP}]
diff --git a/dev-python/django-configurations/django-configurations-2.5.1.ebuild b/dev-python/django-configurations/django-configurations-2.5.1.ebuild
index 8b8e50856b13..51e08aef614e 100644
--- a/dev-python/django-configurations/django-configurations-2.5.1.ebuild
+++ b/dev-python/django-configurations/django-configurations-2.5.1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2021-2025 Gentoo Authors
+# Copyright 2021-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~sparc x86"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/fakeredis/Manifest b/dev-python/fakeredis/Manifest
index 246b4fd8f7bd..a6bb416aa40b 100644
--- a/dev-python/fakeredis/Manifest
+++ b/dev-python/fakeredis/Manifest
@@ -1,3 +1,4 @@
-DIST fakeredis-2.32.1.tar.gz 171582 BLAKE2B bec107824e359750303aa8ef4530f0aa3dfbbca6f87ce8b574f0a8fe1f748e71f113964b8172bf2d3793377cb264bcf977a917488a7f8e01df3914cee47b871c SHA512 cd04bf7c705b118c35e7b72cf2ed0fb8ed99f520ea6466e9676f07f640f2a6fa178ea9ba2fc401502c08d92c310673b6d5faabc5dcdba41e2c0ee3720d82435b
DIST fakeredis-2.33.0.tar.gz 175187 BLAKE2B 6f8e091275bfa20de5188d7a0cbe56b071546b78e37cd73c0e0ceada9b4f6e4b034a80465b542768b1362cf2cb72a1aef95a636d8265146019252208bdd43d54 SHA512 dcbdfa39b80ce616e95999cb7f1bf84e2b02498813758db9bfdee0168074b0f95478f321a41f35d6f5262e49f02764d9ca192ee0294c0182af070e2ac44a93e1
DIST fakeredis-2.33.0.tar.gz.provenance 9622 BLAKE2B ac7f78bc90fd52370c62fdc2699f36a32eaba625313ce83ac344005ab420763af50db1fa126c46af633b54c13abcc397223b270e3ded9a273a6e10f1b0bf011c SHA512 ef6d9bea6db499d3b1048de6aecef4cc3983e92f0d233a9eb1a06d8fe3adba231a8d404379fa1048b4914b5130dd36235419740cd2adc286b900a5870ece92c3
+DIST fakeredis-2.34.0.tar.gz 177156 BLAKE2B 69fc2d66cd754489f3dbd08cfce60c8258bdd0a3a321dd41d8beac8ec6b2b58c3e026cea60e9ac1884a12833a0b32596da4a0064bb349f3bb46f4d43207e0686 SHA512 288cb69fe9422a8b712ee88325c2d6b51b4f47648afa005088f2fbd697eb2f29dd491944026f638e44b4e870053ca9c6453961d3b34169dfaf03b03fa2061f08
+DIST fakeredis-2.34.0.tar.gz.provenance 9583 BLAKE2B 1cbec38c54698275f25a2a1da50e946c338a35d21459bb1e6bc74094f4a2b858f97f977dd93d9410831efaec2ad2cc9bf30f7e66789eb6cd825239974a23487e SHA512 cc9353033ffcea94bf8a4b10f66573094c57afd261aa9a0a8351a3eb8f6b9066677e14d5961ae919dba7c963002226f3e4cb66c65e251e7129ba07ae89db9561
diff --git a/dev-python/fakeredis/fakeredis-2.32.1.ebuild b/dev-python/fakeredis/fakeredis-2.34.0.ebuild
index e00be10851dd..c5aa2105cdcf 100644
--- a/dev-python/fakeredis/fakeredis-2.32.1.ebuild
+++ b/dev-python/fakeredis/fakeredis-2.34.0.ebuild
@@ -1,9 +1,10 @@
-# Copyright 2020-2025 Gentoo Authors
+# Copyright 2020-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DISTUTILS_USE_PEP517=hatchling
+PYPI_VERIFY_REPO=https://github.com/cunla/fakeredis-py
PYTHON_COMPAT=( python3_{10..14} )
inherit distutils-r1 pypi
@@ -16,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="amd64 ~arm arm64 ~ppc ~ppc64 ~riscv ~sparc ~x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~sparc ~x86"
RDEPEND="
>=dev-python/redis-4.3[${PYTHON_USEDEP}]
@@ -46,6 +47,9 @@ EPYTEST_DESELECT=(
# json ext
test/test_json/test_json.py
test/test_json/test_json_arr_commands.py
+ # unknown command 'evalsha'
+ "test/test_asyncredis.py::test_async_lock[fake_resp2]"
+ "test/test_asyncredis.py::test_async_lock[fake_resp3]"
# incompatible with xdist, not worth extra effort
test/test_tcp_server/test_connectivity.py
# flaky
diff --git a/dev-python/filelock/Manifest b/dev-python/filelock/Manifest
index 2e203ff5ac32..bfebc1c9d399 100644
--- a/dev-python/filelock/Manifest
+++ b/dev-python/filelock/Manifest
@@ -10,3 +10,5 @@ DIST filelock-3.23.0.tar.gz 32798 BLAKE2B 38ec94dc392b98eeb46dce0290789a7a6fac71
DIST filelock-3.23.0.tar.gz.provenance 9425 BLAKE2B 161b65e2d3f2310776fd8acbf9bde15ae57c877bf6cc6d2fbd08a6bdce70f9cf7b01978bd9aa7fee3ac7ad0eda170678df7bdd840622e0ed41474569f2d7eb72 SHA512 f6753df2fd27d601c7c84adb4c52e518ab53a927173e22f1b0856aff50261d09ee29047ee7349c8e7e3bd04886ed715f36a67baa07cc296ca2fe1a23bdcd6610
DIST filelock-3.24.0.tar.gz 37166 BLAKE2B 04cc658e54248e7b5923d0eb5a166a89bb0a815afa9e031b3efd84f54f8a178899236cb4c947795cc5f81240a7b7a0b558c89e591a7272455df9e810ede04113 SHA512 270d48c56f9a0b0d29faf5eeb816698a7d5522e6f9dda63502cda488ae36bf05b54afa00af2b4c2377fb86c1a6a768010f0b97f61cd87e63190b587c7c5a7e1b
DIST filelock-3.24.0.tar.gz.provenance 9476 BLAKE2B ce45a7f698663ba1780180a3d6357fbdea39aabf617cbfa190443f760ca43b5472079fccc9de0260ae7f5b3967c1cb893661543c7a29510e42c6a9a542c5651d SHA512 7f7b731598a29aca0e87714a7cbc94bb66a9c42b1d3711b622889c4672bccfac2e12ad76e4e6f734225d40d2147cdc2d39450486ea872efc1e5c415c234208b7
+DIST filelock-3.24.2.tar.gz 37601 BLAKE2B 3589b2410823121d82fcf4e17b1c126d3fd687ff4fc79557a97df964f157ee1a5abd586b60440c4a81fb7d881a9d948b8653f5e1f770f7c9d20aa74557d77478 SHA512 902e9d6a5a2a1100d7a71aa8d71df87b6d723a61597363cabab60536019121b407b1695a2319c74e98938858e21d01321f577adce3198f7f526c043a07146035
+DIST filelock-3.24.2.tar.gz.provenance 9378 BLAKE2B 6a9016eacc33fe0eb74b8c401cd6b5df6400407c14b377ad15c771f64c86101b7532201d3dad1693a7a88a22d16398692c67027d8a5d312c7e14d15171225b9c SHA512 1f3a7abb1d31db93fc0451539518900f7550e64e8e50c3396e06d1649397b477714b4ddd211ca12ee06c2f3f65c2d4f04b56fd4e2d2401d6f6dcc9e80e380383
diff --git a/dev-python/filelock/filelock-3.24.2.ebuild b/dev-python/filelock/filelock-3.24.2.ebuild
new file mode 100644
index 000000000000..8429f48b6ff5
--- /dev/null
+++ b/dev-python/filelock/filelock-3.24.2.ebuild
@@ -0,0 +1,31 @@
+# Copyright 2018-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYPI_VERIFY_REPO=https://github.com/tox-dev/filelock
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A platform independent file lock for Python"
+HOMEPAGE="
+ https://github.com/tox-dev/filelock/
+ https://pypi.org/project/filelock/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
+
+BDEPEND="
+ dev-python/hatch-vcs[${PYTHON_USEDEP}]
+ test? (
+ dev-python/virtualenv[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-{asyncio,mock,timeout} )
+EPYTEST_RERUNS=5
+distutils_enable_tests pytest
diff --git a/dev-python/flatdict/Manifest b/dev-python/flatdict/Manifest
index 7e4877181a17..1f9de1b44fff 100644
--- a/dev-python/flatdict/Manifest
+++ b/dev-python/flatdict/Manifest
@@ -1 +1,2 @@
DIST flatdict-4.0.1.gh.tar.gz 11923 BLAKE2B 102ebc6220d75219b91ed7494485fa7d1447801d8276fd5e305f838f6b339b72c44151c751a53c32a5ea5b1d4876d9312af229bb8972401a2f86d6488d3f8b4f SHA512 925ad8a53a4848875ff5c0df2c006ea09ff3795861cd0b8d7c26d22511d46d4ad28dee28b3e9e8f896b45c8a1b2c51cc24bce099c38c0b4d2f49174baab4de23
+DIST flatdict-4.1.0.gh.tar.gz 32704 BLAKE2B 81257f1eba486dd7de00f2518fd59dbb0dc8c6f31e2af913fc648b2b6e0d4cca953e74f99ad579579a4f9a55028d63e3f01cac9fcd5cee9d3f640c0a8067ef30 SHA512 467bceaebd3391a8cf9c6dba37165070fb9cbb43f5e19fa6221a7a4f8bcfb4fb8f49758fe9f3fbc724684f067eff16998ca944cd57ecb499dbf46bf2262d94a9
diff --git a/dev-python/flatdict/flatdict-4.1.0.ebuild b/dev-python/flatdict/flatdict-4.1.0.ebuild
new file mode 100644
index 000000000000..2e34d6cb551a
--- /dev/null
+++ b/dev-python/flatdict/flatdict-4.1.0.ebuild
@@ -0,0 +1,31 @@
+# Copyright 2023-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="Python module for interacting with nested dicts"
+HOMEPAGE="
+ https://github.com/gmr/flatdict/
+ https://pypi.org/project/flatdict/
+"
+SRC_URI="
+ https://github.com/gmr/flatdict/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+
+BDEPEND="
+ dev-python/hatch-vcs[${PYTHON_USEDEP}]
+"
+
+distutils_enable_tests unittest
+
+export SETUPTOOLS_SCM_PRETEND_VERSION=${PV}
diff --git a/dev-python/gssapi/gssapi-1.10.1.ebuild b/dev-python/gssapi/gssapi-1.10.1.ebuild
index 3cd315fb3e1b..05523115a411 100644
--- a/dev-python/gssapi/gssapi-1.10.1.ebuild
+++ b/dev-python/gssapi/gssapi-1.10.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
@@ -22,7 +22,7 @@ S="${WORKDIR}"/python-${P}
LICENSE="ISC"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="amd64 arm arm64 ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
dev-python/decorator[${PYTHON_USEDEP}]
diff --git a/dev-python/hypothesis/Manifest b/dev-python/hypothesis/Manifest
index 80e4ad80d5a3..6a179ad0c316 100644
--- a/dev-python/hypothesis/Manifest
+++ b/dev-python/hypothesis/Manifest
@@ -1,11 +1,8 @@
-DIST hypothesis-6.148.12.gh.tar.gz 9929420 BLAKE2B e1dbe07d02920d0c70c757b0c7b24263cb8f27a8cf00b84db2596fcc357e7dc88bdcd501c338b4cc6cf8fa8068ba8b4938103eedaebe1c9026a5e637f3656854 SHA512 21d8ab7e2791aa019a99603090fa7b6f631856747bb899a8c4735b6429f233d8a68d52e674c9942d6df19a423743f4d446df7f47b8322db699a9b95a2b714d58
DIST hypothesis-6.148.7.gh.tar.gz 9927096 BLAKE2B 4e6f782918394edba79a2c183be923076eec1b12b24cc184561e4ee5900e97d2f9c7e110ec98a51911ccdd5b0f2b3172947067038bba03723472be99b7005873 SHA512 f9fbe91650a99f9db3fa1e3a389c2a3cdac85cbb0a7c6cb694b29e486b29670833fd534022c6d26ebeac7b2f3135940dda854f865fde0a6b62c229fdd5f422e6
DIST hypothesis-6.149.1.gh.tar.gz 9932484 BLAKE2B 41bdda077c6cdd1e2b2f7650e8b4f5e125680ec3cea2979ad14dadcb553f36f0fd5970290d23aadd5bad64ba88c9dbb669946ca71021460c509e25bccdf394fa SHA512 78dfbdd8f48ca9c483b74fb13200b340b1791df977f79d8fc687cecc21a6c69dc37a6e0c184643f2eb13d5a49651e13e4ea2ed93976dcc4fa7ee135c2d4ee052
DIST hypothesis-6.150.2.gh.tar.gz 9878291 BLAKE2B b9ae21ff95afe8bd4918d7298b7f1ff10528fc70cc358f9106f79ddb9a84fe6aa0c8f34538b75c5b55afa442b9e70534c07a04102569b62b16d11421ca9f8016 SHA512 648112f870904a922162c099fd982d3a3756209efd272531c3c848383e2a6df02c3ff4c57f4be68408084542075a194ac9fe5fdac158c566c1a3045358e1045a
DIST hypothesis-6.150.3.gh.tar.gz 9878751 BLAKE2B 4b1995a52a8d195e5cc04eba89093458ca0244e1c20c5c8ce4cd13473598eb7d652c04656bd5df264ae766262fba4e084b61269df4bc77a2537a8177964fa4d3 SHA512 317235eacafaa415683cb7b1a50738655ab6704f4ba529657f5496625c5542812eb44a5cde999c4805ad5a74232edde0c8fc2e81aef3be367374a6302d3f3fa2
-DIST hypothesis-6.151.0.gh.tar.gz 9878804 BLAKE2B 42ef6bf0c5bb8346b38a647804aecfcad20991c6ae70a48838050d424377f1e9256fb36df3e440250f3fb8f7fed6fd80cfd1288c38c446ffed62f3166aa571e2 SHA512 418af03dc2eaf456c96c0395c32fdcfc018e8543ed5029f7c6058e9e5d1368afbb04cdfc6a21bd44f87a0c064680927d75284eb5670f6f28b1b3ac2aee90823b
-DIST hypothesis-6.151.2.gh.tar.gz 9878376 BLAKE2B 11f6da8ede480bffb503e67d6ed943eb1497686ef61a401f6fa7d6d819ab293f1595284205f5a7c9b534076d607a5d6c7a9a5eea2a89be2375f658d4b6a93924 SHA512 6f8f73a740e046f4e96e7c1f5d6ececd75a2d9a12e52b94fcf2419cfe2cb02807a16e030a0ce0335793c12beb07f07423cdc13a61d432a3836d9fc767c3e912e
-DIST hypothesis-6.151.3.gh.tar.gz 9879536 BLAKE2B 339bb7cc1f45403c97626b4ca0df33e9378ef301efcc7949aca0750fe08425af3e71703a5c0743feb731d62e6d5cc44c2f41fe84544aa8d9d199b004d567f8ab SHA512 f7b3d4859b2d43c3be8c36c610ca16a3ae8dd36dbb14a5e029b4046467fb061ec70f4e53e88ecdb7c85a1364e556955b83cc8d511d1962dcf34dae047ace6f3d
DIST hypothesis-6.151.4.gh.tar.gz 9879516 BLAKE2B b53dc0691cdbbfad47dd4de9712cecc7fddd9c59b626d22250d367a71dd58c43c22c173380d120f56d7b9f17c03df076ea7963c8c435fb9b187b3baffeb2d44e SHA512 fef3fe9f7b10204c37a4d7767ab0fd9e4a74e3d69de55700cfd34ef86dd2af980131411f3728462d28670836cf9adfc53d87b24bd85a6d19bce562471290dfe3
DIST hypothesis-6.151.5.gh.tar.gz 9879758 BLAKE2B 9065ab0acf74f23f01016608465af54822a6789dbf5f8043e54cd617046ee0c3c1d72897a66a0b48e9e5e146433bfbc753352e20cb941ebfa3008b348746a4c2 SHA512 2adfd5f69c2eca234666b8d91bb136081eaec32b5e0f158c0432148bcceae25d9515fa014648bf416311a82354a7598091ee1edf7370bbb0ede37fe9fa4d9b48
DIST hypothesis-6.151.6.gh.tar.gz 9880002 BLAKE2B e913687bbe41a0a5750b523054da699bdad18840f1ecbec5b3ba4c232dfef0c4ba6e506156d7c9ce9c7b5e47ff0e2614bb206d9958e1ba3fa7dd8ac0c8a8d8f7 SHA512 9e022b284293d9a7a4907a608c54bc4d8f5a6487870b5c5a8cd92ae5be87fbf720767738d1fb686f8b6503bdc5dd2dcb2a0bb339ca4821cce05cc50b17224449
+DIST hypothesis-6.151.9.gh.tar.gz 9864451 BLAKE2B 9d9c2800cf1212e743a599c261c78c0a7d349e58075a443e0d10e6373b1582e059abde416cec4f3a8185ae424725f93da8ab4e43dd70bd0f86071d69aca94def SHA512 3e41bdd077a18fe72360547bc03f2c3d7218e8cd6cb563fffd6024427bfa5ce0764ca9c7ef0dafdded896625128fc14b9d3f8c4564aa8a509545abf0ad24adbf
diff --git a/dev-python/hypothesis/hypothesis-6.148.12.ebuild b/dev-python/hypothesis/hypothesis-6.148.12.ebuild
deleted file mode 100644
index 8a0d46501a31..000000000000
--- a/dev-python/hypothesis/hypothesis-6.148.12.ebuild
+++ /dev/null
@@ -1,91 +0,0 @@
-# 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_{10..14} )
-PYTHON_REQ_USE="threads(+),sqlite"
-
-inherit distutils-r1 optfeature
-
-TAG=hypothesis-python-${PV}
-MY_P=hypothesis-${TAG}
-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/${TAG}.tar.gz
- -> ${P}.gh.tar.gz
-"
-S="${WORKDIR}/${MY_P}/hypothesis-python"
-
-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-python/
-
- 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/hypothesis/hypothesis-6.151.0.ebuild b/dev-python/hypothesis/hypothesis-6.151.0.ebuild
deleted file mode 100644
index 79b828d4dffe..000000000000
--- a/dev-python/hypothesis/hypothesis-6.151.0.ebuild
+++ /dev/null
@@ -1,100 +0,0 @@
-# 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_{10..14} )
-PYTHON_REQ_USE="threads(+),sqlite"
-
-inherit distutils-r1 optfeature
-
-TAG=hypothesis-python-${PV}
-MY_P=hypothesis-${TAG}
-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/${TAG}.tar.gz
- -> ${P}.gh.tar.gz
-"
-S="${WORKDIR}/${MY_P}/hypothesis-python"
-
-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-python/
- local EPYTEST_DESELECT=()
- case ${EPYTHON} in
- python3.14t)
- EPYTEST_DESELECT+=(
- # TODO
- 'hypothesis-python/tests/cover/test_lambda_formatting.py::test_modifying_lambda_source_code_returns_unknown[False]'
- )
- ;;
- 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/hypothesis/hypothesis-6.151.3.ebuild b/dev-python/hypothesis/hypothesis-6.151.3.ebuild
deleted file mode 100644
index 79b828d4dffe..000000000000
--- a/dev-python/hypothesis/hypothesis-6.151.3.ebuild
+++ /dev/null
@@ -1,100 +0,0 @@
-# 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_{10..14} )
-PYTHON_REQ_USE="threads(+),sqlite"
-
-inherit distutils-r1 optfeature
-
-TAG=hypothesis-python-${PV}
-MY_P=hypothesis-${TAG}
-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/${TAG}.tar.gz
- -> ${P}.gh.tar.gz
-"
-S="${WORKDIR}/${MY_P}/hypothesis-python"
-
-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-python/
- local EPYTEST_DESELECT=()
- case ${EPYTHON} in
- python3.14t)
- EPYTEST_DESELECT+=(
- # TODO
- 'hypothesis-python/tests/cover/test_lambda_formatting.py::test_modifying_lambda_source_code_returns_unknown[False]'
- )
- ;;
- 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/hypothesis/hypothesis-6.151.2.ebuild b/dev-python/hypothesis/hypothesis-6.151.9.ebuild
index 79b828d4dffe..6569720d26ff 100644
--- a/dev-python/hypothesis/hypothesis-6.151.2.ebuild
+++ b/dev-python/hypothesis/hypothesis-6.151.9.ebuild
@@ -57,7 +57,10 @@ distutils_enable_tests pytest
python_test() {
# NB: paths need to be relative to pytest.ini,
# i.e. start with hypothesis-python/
- local EPYTEST_DESELECT=()
+ local EPYTEST_DESELECT=(
+ # broken somehow (xdist?)
+ 'hypothesis-python/tests/pytest/test_constant_collection_timing.py::test_constant_collection_timing[True]'
+ )
case ${EPYTHON} in
python3.14t)
EPYTEST_DESELECT+=(
diff --git a/dev-python/mpmath/Manifest b/dev-python/mpmath/Manifest
index 08f61f3114aa..68e48f99c0db 100644
--- a/dev-python/mpmath/Manifest
+++ b/dev-python/mpmath/Manifest
@@ -1,3 +1,4 @@
DIST mpmath-1.4.0a7.tar.gz 2088255 BLAKE2B ae8578add85134d72401a1e47e687e35b2c40755f4121013c509bbb5d988b649c6bc7aaa803fe135fb34841ed2c12fd243900add9ba92909de66c32c3433063b SHA512 18be276fc51ae701853047e916c7710f27211a2b6a76f7fc7684794422fb9549cdd066daa3bb712123378787932756cf66bee4b718fb3bece99e886f215d2c27
DIST mpmath-1.4.0b2.tar.gz 2089406 BLAKE2B 677eb7d18dfe9902d644590dfa4f2b9f422adab9d2ac85cace10924aab16d98e6811db2ae077ea8d9ba09da0068d98b97e23dd216b7ecd37e4a6e146f5b58f6c SHA512 a6dd1598cf8358725e27dc8e80d9d796b993e31e303d91f78c7d20c415703010c72b393e0800ef9602a08cdceb13b44634d5b8b35e57098a881ee61ba12a9775
DIST mpmath-1.4.0b3.tar.gz 2089337 BLAKE2B a769e83c00bad7ef5637b4991443a07891e16fc97b49da5cccc6b064a91b15963382514932268fc0698d5de7ea7b60e0ea7d61c11f19979e5b12a54a942ceaaf SHA512 550df10ee488a5170af3c33ef2522a488da8f3eb19c97748792ed99063fc67f0376ecf083bce6e6ef4d54ef1d3277eb5e493b4287cf58f5d8522c6901cc0c089
+DIST mpmath-1.4.0b4.tar.gz 2089570 BLAKE2B b848713661a67fef69e5ad626033a46802234fc89223386a95b95c08cba1f405273159b066eb1c2b6c8052abedaa55d4c6181d6cd9a88e1be5f2e71ea83fac0c SHA512 51d69ad8955a988d8bdb251a6ab167186b35de4c1c5a32423fa9f587f418944b3f576506f165e2dc15b5c50b18ab6eff8ffa0fa3b61d5114e58ff3932cbc9c3f
diff --git a/dev-python/mpmath/mpmath-1.4.0_beta4.ebuild b/dev-python/mpmath/mpmath-1.4.0_beta4.ebuild
new file mode 100644
index 000000000000..796fa1070447
--- /dev/null
+++ b/dev-python/mpmath/mpmath-1.4.0_beta4.ebuild
@@ -0,0 +1,58 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_FULLY_TESTED=( pypy3_11 python3_{11..13} )
+PYTHON_COMPAT=( "${PYTHON_FULLY_TESTED[@]}" )
+
+inherit distutils-r1 optfeature pypi
+
+DESCRIPTION="Python library for arbitrary-precision floating-point arithmetic"
+HOMEPAGE="
+ https://mpmath.org/
+ https://github.com/mpmath/mpmath/
+ https://pypi.org/project/mpmath/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~x64-macos"
+IUSE="test-full"
+
+BDEPEND="
+ dev-python/setuptools-scm[${PYTHON_USEDEP}]
+ test? (
+ dev-python/numpy[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ dev-python/pexpect[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ >=dev-python/gmpy2-2.3[${PYTHON_USEDEP}]
+ ' 'python3*')
+ test-full? (
+ $(python_gen_cond_dep '
+ dev-python/matplotlib[${PYTHON_USEDEP}]
+ ' "${PYTHON_FULLY_TESTED[@]}")
+ )
+ )
+"
+
+EPYTEST_PLUGINS=( hypothesis pytest-timeout )
+EPYTEST_RERUNS=5
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # Slow and often needs a re-run to pass
+ mpmath/tests/test_cli.py::test_bare_console_bare_division
+ mpmath/tests/test_cli.py::test_bare_console_no_bare_division
+ mpmath/tests/test_cli.py::test_bare_console_pretty
+ mpmath/tests/test_cli.py::test_bare_console_without_ipython
+ mpmath/tests/test_cli.py::test_bare_console_wrap_floats
+)
+
+pkg_postinst() {
+ optfeature "gmp support" dev-python/gmpy2
+ optfeature "matplotlib support" dev-python/matplotlib
+}
diff --git a/dev-python/pyarrow/Manifest b/dev-python/pyarrow/Manifest
index 54b219d734e8..d833717dfcf4 100644
--- a/dev-python/pyarrow/Manifest
+++ b/dev-python/pyarrow/Manifest
@@ -2,6 +2,7 @@ DIST apache-arrow-20.0.0.tar.gz 17862661 BLAKE2B 154d4783746abf21ee7e94748cee1f5
DIST apache-arrow-21.0.0.tar.gz 17320680 BLAKE2B 56c3bd23ceb59346e094ed83601f30187d88b9148118a83ce413ba525fec23da84ded4576eeefcc1786ecc14e46b5fd0b6270e96bad9659d25f154d77731124e SHA512 89da6de7eb2513c797d6671e1addf40b8b156215b481cf2511fa69faa16547c52d8220727626eeda499e4384d276e03880cd920aaab41c3d15106743d51a90a6
DIST apache-arrow-22.0.0.tar.gz 17063271 BLAKE2B 99b53160b209a9427500fb5bda515c46256f7a6498c80627ff930af1690ffe3a01c86c161fd1946f3b249f1ceaefad0da6c05ea88efbb43b5733c9eb98b5cc1f SHA512 8ec9ddaf7917c0e35c8bb32831fe6ea0a7b81de5723828a1289ba1b9e104b42af688d0f427a0ceff6f617d5f7ac67769431184b137e54f6987779e467c59d3ec
DIST apache-arrow-23.0.0.tar.gz 17287604 BLAKE2B 588881dbb434ed7cbdea2fe14f53c7f42ee75d9a4433a4deaad34dff33b989473c1ae7a0a5d6d806ce0e515548cfe515fb69c988536f5419062e344fc6634f6b SHA512 ddaaf31e7f3f8246ce3aa6e77c812c55a7993d037aaebc8ca9d79d54c701717a135eebfede731a3239becfaed2fa2395fcb3d68b14c32b9de72b3f5598d9df4a
+DIST apache-arrow-23.0.1.tar.gz 17296212 BLAKE2B 7023df6e6900dc239edc757fef76a89d2169e4fd3e1eaf3471f805a6e1c39014b9ec1e5a3d7c9e7a590b8d007c4adc1d15b8ed22ecf4724b24a33ffa96557db2 SHA512 c687e50dfcdbf7e0e39710224360d35d9aa734452b3a47adc8c101f3019b6b4116310c05b9f3cd0a5ed4ad9b7bd8fb88edb70e79b3cbd413a57e5e35e4554a6c
DIST arrow-testing-725fd4a4b12d01c53c98e80274c0b23aa8397082.tar.gz 3752144 BLAKE2B bbfde361f8da376f228720de00a3f6c2b42051e53580f650ad5621086cbf4828a289d86815ac1143720d80f230a851c9602bf198a32e457c1a0f7767790968ee SHA512 0789bf65fc2609f84a9c2865bc8e12f8c63fdd138eff02af1b24ba2c0e925d8c0ecfbe57515786e91531d918ef1a0d92fd5becb553682eafdcedd7678ddacb9e
DIST arrow-testing-d2a13712303498963395318a4eb42872e66aead7.tar.gz 3572581 BLAKE2B 58e0e0a887efb9f68b9cccc37b946352eb382fe6f621c0778992ec3e1d10cdd5de89674f8282ceb90d0fcef5825b24ff3d0043806c6e353be9df6d1566699d2d SHA512 e6b76e4ab34744bc804ecfe5baba3e1f483c874f883cc44e8e2504a718b847cb05f0c7559e40a446deab99da20d1f9bbfe03d553ee2bb5543bef889c2b555259
DIST parquet-testing-18d17540097fca7c40be3d42c167e6bfad90763c.tar.gz 1077258 BLAKE2B 457bf3404b9f6ad8da5cbecade4c2365e39e6409c5b551092a7f1f18f81f557e94e60adfb381058c5fd3a4000dae24c1ffebfbfa965d88e81f098f016bfdc816 SHA512 2cadc694e6cd2e52869b4ff0d2659c77c613fc870b54ca7f4cb64068d0e7956723549b6d5513a117a2e147d4161e2fcdbe15992a3d8e56306b25923676f182a0
diff --git a/dev-python/pyarrow/pyarrow-23.0.1.ebuild b/dev-python/pyarrow/pyarrow-23.0.1.ebuild
new file mode 100644
index 000000000000..14ceed036eb3
--- /dev/null
+++ b/dev-python/pyarrow/pyarrow-23.0.1.ebuild
@@ -0,0 +1,109 @@
+# Copyright 2023-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 multiprocessing
+
+# arrow.git: testing
+ARROW_DATA_GIT_HASH=725fd4a4b12d01c53c98e80274c0b23aa8397082
+# arrow.git: cpp/submodules/parquet-testing
+PARQUET_DATA_GIT_HASH=a3d96a65e11e2bbca7d22a894e8313ede90a33a3
+
+DESCRIPTION="Python library for Apache Arrow"
+HOMEPAGE="
+ https://arrow.apache.org/
+ https://github.com/apache/arrow/
+ https://pypi.org/project/pyarrow/
+"
+SRC_URI="
+ mirror://apache/arrow/arrow-${PV}/apache-arrow-${PV}.tar.gz
+ test? (
+ https://github.com/apache/parquet-testing/archive/${PARQUET_DATA_GIT_HASH}.tar.gz
+ -> parquet-testing-${PARQUET_DATA_GIT_HASH}.tar.gz
+ https://github.com/apache/arrow-testing/archive/${ARROW_DATA_GIT_HASH}.tar.gz
+ -> arrow-testing-${ARROW_DATA_GIT_HASH}.tar.gz
+ )
+"
+S="${WORKDIR}/apache-arrow-${PV}/python"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+IUSE="+parquet +snappy ssl"
+
+RDEPEND="
+ ~dev-libs/apache-arrow-${PV}[compute,dataset,json,parquet?,re2,snappy?,ssl?]
+ >=dev-python/numpy-1.16.6:=[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/cffi[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ dev-python/pandas[${PYTHON_USEDEP}]
+ dev-python/pytz[${PYTHON_USEDEP}]
+ dev-libs/apache-arrow[lz4,zlib]
+ )
+"
+
+EPYTEST_PLUGINS=( hypothesis )
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # cython's -Werror
+ sed -i -e '/--warning-errors/d' CMakeLists.txt || die
+}
+
+src_compile() {
+ export PYARROW_PARALLEL="$(makeopts_jobs)"
+ export PYARROW_BUILD_VERBOSE=1
+ export PYARROW_CXXFLAGS="${CXXFLAGS}"
+ export PYARROW_BUNDLE_ARROW_CPP_HEADERS=0
+ export PYARROW_CMAKE_GENERATOR=Ninja
+ export PYARROW_WITH_HDFS=1
+ if use parquet; then
+ export PYARROW_WITH_DATASET=1
+ export PYARROW_WITH_PARQUET=1
+ use ssl && export PYARROW_WITH_PARQUET_ENCRYPTION=1
+ fi
+ if use snappy; then
+ export PYARROW_WITH_SNAPPY=1
+ fi
+
+ distutils-r1_src_compile
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # wtf?
+ tests/test_fs.py::test_localfs_errors
+ # these require apache-arrow with jemalloc that doesn't seem
+ # to be supported by the Gentoo package
+ tests/test_memory.py::test_env_var
+ tests/test_memory.py::test_specific_memory_pools
+ tests/test_memory.py::test_supported_memory_backends
+ # require mimalloc
+ tests/test_memory.py::test_memory_pool_factories
+ # fragile memory tests
+ tests/test_csv.py::TestSerialStreamingCSVRead::test_batch_lifetime
+ tests/test_csv.py::TestThreadedStreamingCSVRead::test_batch_lifetime
+ tests/test_array.py::test_to_pandas_zero_copy
+ # takes forever, and manages to generate timedeltas over 64 bits
+ tests/test_strategies.py
+ "tests/test_array.py::test_pickling[builtin_pickle]"
+ # scipy.sparse does not support dtype float16
+ "tests/test_sparse_tensor.py::test_sparse_coo_tensor_scipy_roundtrip[f2-arrow_type8]"
+ )
+
+ cd "${T}" || die
+ local -x PARQUET_TEST_DATA="${WORKDIR}/parquet-testing-${PARQUET_DATA_GIT_HASH}/data"
+ local -x ARROW_TEST_DATA="${WORKDIR}/arrow-testing-${ARROW_DATA_GIT_HASH}/data"
+ epytest --pyargs pyarrow
+}
diff --git a/dev-python/pybind11/Manifest b/dev-python/pybind11/Manifest
index 557e30befa84..2a044365f396 100644
--- a/dev-python/pybind11/Manifest
+++ b/dev-python/pybind11/Manifest
@@ -1,3 +1,2 @@
-DIST pybind11-2.13.6.gh.tar.gz 800804 BLAKE2B 1f2efa05727ebbcd8e439b83bacfebb21d26a6f8f719e0a627633abdcae59837936e37e6441196e097e0075c9f922048d4e88146bb627d97ada28c48165bddb7 SHA512 497c25b33b09a9c42f67131ab82e35d689e8ce089dd7639be997305ff9a6d502447b79c824508c455d559e61f0186335b54dd2771d903a7c1621833930622d1a
-DIST pybind11-3.0.0.gh.tar.gz 915234 BLAKE2B dfacb629b8d1cf5adeb30b305ca68f5db465fbec7a7da9b42485032279ac49721adbb248ce14c7acfdafecbd192e2542cccb08a61d8b3ee3884bbff9fc977a49 SHA512 a68a5eb3253db771308ed0922852207e6dc9a3089ad055ba3ccd36690f68b93cad98cc1a3ab822eb653153af2eeef10e6f6272b93314b2da1119e17f6c63337b
DIST pybind11-3.0.1.gh.tar.gz 918227 BLAKE2B 90700c919872cd697a59951ef86da0bd0487fe01cd3f3e1b54f2b0b6380a356271635796ea2289340377ecb6ec571ac921ad5dae0e4c82f579f7d8acefba72e5 SHA512 c17e6d6a78c38e760864b390ac2aa7df6a94ca53acb2e8be71f0d63d611b738fa20a16946c98a93fbfcad56cb0346ebf247bbe41c6f5171c6ce68397b1e5c4db
+DIST pybind11-3.0.2.gh.tar.gz 953272 BLAKE2B 62d1e5cc948556d5eb161b0059c1c4cada61178554af36c2c07e613399b92c24cbff19f5128abe4ba922de79c36ab349efd4af3d4d7d354270b811039e2c0576 SHA512 19bee2c76320e25202ee078b5680ff8a7acfb33494dec29dad984ab04de8bcb01340d9fec37c8cc5ac9015dfc367e60312dcd8506e66ce8f0af4c49db562ddef
diff --git a/dev-python/pybind11/files/pybind11-2.13.6-pypy311.patch b/dev-python/pybind11/files/pybind11-2.13.6-pypy311.patch
deleted file mode 100644
index debc7b7c55e2..000000000000
--- a/dev-python/pybind11/files/pybind11-2.13.6-pypy311.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-diff --git a/include/pybind11/attr.h b/include/pybind11/attr.h
-index 1044db94..89d418cc 100644
---- a/include/pybind11/attr.h
-+++ b/include/pybind11/attr.h
-@@ -351,7 +351,8 @@ struct type_record {
-
- bases.append((PyObject *) base_info->type);
-
--#if PY_VERSION_HEX < 0x030B0000
-+// Keep in sync with enable_dynamic_attributes() in detail/class.h
-+#if PY_VERSION_HEX < 0x030B0000 || defined(PYPY_VERSION)
- dynamic_attr |= base_info->type->tp_dictoffset != 0;
- #else
- dynamic_attr |= (base_info->type->tp_flags & Py_TPFLAGS_MANAGED_DICT) != 0;
-diff --git a/include/pybind11/detail/class.h b/include/pybind11/detail/class.h
-index b990507d..e97d48b2 100644
---- a/include/pybind11/detail/class.h
-+++ b/include/pybind11/detail/class.h
-@@ -560,9 +560,9 @@ extern "C" inline int pybind11_clear(PyObject *self) {
- inline void enable_dynamic_attributes(PyHeapTypeObject *heap_type) {
- auto *type = &heap_type->ht_type;
- type->tp_flags |= Py_TPFLAGS_HAVE_GC;
--#if PY_VERSION_HEX < 0x030B0000
-- type->tp_dictoffset = type->tp_basicsize; // place dict at the end
-- type->tp_basicsize += (ssize_t) sizeof(PyObject *); // and allocate enough space for it
-+#if PY_VERSION_HEX < 0x030B0000 || defined(PYPY_VERSION) // For PyPy see PR #5508
-+ type->tp_dictoffset = type->tp_basicsize; // place dict at the end
-+ type->tp_basicsize += (ssize_t) sizeof(PyObject *); // and allocate enough space for it
- #else
- type->tp_flags |= Py_TPFLAGS_MANAGED_DICT;
- #endif
diff --git a/dev-python/pybind11/pybind11-2.13.6.ebuild b/dev-python/pybind11/pybind11-2.13.6.ebuild
deleted file mode 100644
index 56b53ed8b136..000000000000
--- a/dev-python/pybind11/pybind11-2.13.6.ebuild
+++ /dev/null
@@ -1,83 +0,0 @@
-# Copyright 1999-2025 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 cmake distutils-r1
-
-DESCRIPTION="AST-based Python refactoring library"
-HOMEPAGE="
- https://pybind11.readthedocs.io/en/stable/
- https://github.com/pybind/pybind11/
- https://pypi.org/project/pybind11/
-"
-SRC_URI="
- https://github.com/pybind/pybind11/archive/v${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos"
-
-RDEPEND="
- dev-cpp/eigen:3
-"
-BDEPEND="
- test? (
- <dev-cpp/catch-3:0
- >=dev-cpp/catch-2.13.9:0
- dev-libs/boost
- dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
- )
-"
-
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-python_prepare_all() {
- local PATCHES=(
- # https://github.com/pybind/pybind11/pull/5508
- # https://github.com/pybind/pybind11/pull/5537
- "${FILESDIR}/${P}-pypy311.patch"
- )
-
- cmake_src_prepare
-
- PATCHES=()
- distutils-r1_python_prepare_all
-}
-
-python_configure() {
- local mycmakeargs=(
- # disable forced lto
- -DHAS_FLTO=OFF
- # https://github.com/pybind/pybind11/issues/5087
- -DPYBIND11_FINDPYTHON=OFF
- -DPYBIND11_INSTALL=ON
- -DPYBIND11_TEST=$(usex test)
- )
- cmake_src_configure
-}
-
-python_compile() {
- distutils-r1_python_compile
- # Compilation only does anything for tests
- use test && cmake_src_compile
-}
-
-python_test() {
- cmake_build cpptest test_cmake_build
-
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
- cd "${BUILD_DIR}/tests" || die
- epytest -p rerunfailures --reruns=5 "${S}/tests"
-}
-
-python_install() {
- distutils-r1_python_install
- cmake_src_install
-}
diff --git a/dev-python/pybind11/pybind11-3.0.0-r1.ebuild b/dev-python/pybind11/pybind11-3.0.2.ebuild
index efbb4b717d25..edd49be16e6b 100644
--- a/dev-python/pybind11/pybind11-3.0.0-r1.ebuild
+++ b/dev-python/pybind11/pybind11-3.0.2.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
@@ -23,7 +23,7 @@ S=${WORKDIR}/${MY_P}
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"
RDEPEND="
dev-cpp/eigen:3
diff --git a/dev-python/pycountry/Manifest b/dev-python/pycountry/Manifest
index c317205bdfc1..dec258332016 100644
--- a/dev-python/pycountry/Manifest
+++ b/dev-python/pycountry/Manifest
@@ -1 +1,3 @@
DIST pycountry-24.6.1.tar.gz 6043910 BLAKE2B 53e5f3bb89edb95a10cc7bef3d5cef463d957b9bd80da1aea57c274f76f9fc5f4848c9ceabcf97d369343a5bc39f6b8e7fb2e80344ff29ccd5856a4de9770b3b SHA512 36d8f68b830d74259a5f9ac1c9c97c1b228b0072613229e6f579ea5af587ab1cd25f0637a2cdd1dbf2ae8225e2aa2958d25f1e6df42d577da821d85c4c49ae93
+DIST pycountry-26.2.16.tar.gz 7711342 BLAKE2B 9f63235c60f401e20d288be9fa837860f78e14b8ff4f51249612531894db34013dbb4ff9adc9023f8ef8b050584efa1727d0aa449f674ea59599ef1ca1ac5072 SHA512 2d7bbeace6caa2aee9fc2747e9333cf33a4a0161ac6955fce7f07e9ba2eaf8deb79796b59a9a9802c19c7c293b0b0ae1a693d7e824cf90697f14fb2106e38f03
+DIST pycountry-26.2.16.tar.gz.provenance 9315 BLAKE2B 122c4a47fc6bf73bf9485fc258390d590ec15c4abfef0b047332036c0aa52603feff27ccf6bffde6387ca42104331ac9804684273d7103f7de06bf915f83239d SHA512 5292887bdb0c450babf5ceb2bab90f5e4784e6e4677e5590147796da311000624bf8a92d47536298e9726aa2e206867b951066b85650b64d796dbd90b4075e66
diff --git a/dev-python/pycountry/pycountry-26.2.16.ebuild b/dev-python/pycountry/pycountry-26.2.16.ebuild
new file mode 100644
index 000000000000..079f1e7a3ce5
--- /dev/null
+++ b/dev-python/pycountry/pycountry-26.2.16.ebuild
@@ -0,0 +1,27 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=poetry
+PYPI_VERIFY_REPO=https://github.com/pycountry/pycountry
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Database of countries, subdivisions, languages, currencies and script"
+HOMEPAGE="
+ https://github.com/pycountry/pycountry/
+ https://pypi.org/project/pycountry/
+"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+python_test() {
+ epytest -o addopts= -o required_plugins=
+}
diff --git a/dev-python/pycurl-requests/Manifest b/dev-python/pycurl-requests/Manifest
index b49f57b0b0b3..f244efd22363 100644
--- a/dev-python/pycurl-requests/Manifest
+++ b/dev-python/pycurl-requests/Manifest
@@ -1,2 +1,2 @@
-DIST pycurl-requests-0.5.0.gh.tar.gz 25344 BLAKE2B 50c57fabdbdc0471281ce0201de0a473db7f9783f6984da4e8c55552ab542235452a0f3e85855fa9dbb10985d8d6ec9b9499b9778b3f7166e50edb853293d16f SHA512 e6e7a0d552bf2e5167978a0ac57d7a456a8e445853e16e94d261537af19ee73e4681ee336117e076cc3a3b6e416607bc5a5f2fcbc153675ff6129a4455a4f005
DIST pycurl-requests-0.5.1.gh.tar.gz 25613 BLAKE2B 106850b2aeb4b2c026ed322896cb6abd753c0d74aa105198029035b09aa6ff162d52308041ed53a08117dce72e2a67d281576fb2cae024568e74da5c70009b0e SHA512 4f2f179e0fc46044b75fa9ba36c0835f55d47d7e4864946197eb694c9e3748b06d89351c7c3827c0fe511487d892519fe52464a6062af48750141760f2e24f84
+DIST pycurl-requests-0.5.2.gh.tar.gz 25618 BLAKE2B 594add0a452dc3bdd4a2a29e42301b3a4433c27f33a69929949e052f7782f59ca075c413ae1513c74bdd2b2443b1b8ea1333cf29cd446cf32f5ccc79f65329f2 SHA512 794788972b3467c3d7ef11acb731b5ba35c3850c20782665646bce0c1524a81b808569a1ff92fac7ec1f06cfe781a8fe16cd7bcfa5f6b493063842af323daf6a
diff --git a/dev-python/pycurl-requests/pycurl-requests-0.5.0-r1.ebuild b/dev-python/pycurl-requests/pycurl-requests-0.5.2.ebuild
index 76a09caf2c02..253387414515 100644
--- a/dev-python/pycurl-requests/pycurl-requests-0.5.0-r1.ebuild
+++ b/dev-python/pycurl-requests/pycurl-requests-0.5.2.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2021-2025 Gentoo Authors
+# Copyright 2021-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -27,6 +27,7 @@ RDEPEND="
dev-python/pycurl[${PYTHON_USEDEP}]
"
+EPYTEST_PLUGINS=()
distutils_enable_tests pytest
EPYTEST_DESELECT=(
diff --git a/dev-python/pytest-django/pytest-django-4.11.1.ebuild b/dev-python/pytest-django/pytest-django-4.11.1.ebuild
index 9225be9c8bc9..2181c726956d 100644
--- a/dev-python/pytest-django/pytest-django-4.11.1.ebuild
+++ b/dev-python/pytest-django/pytest-django-4.11.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
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~sparc x86"
RDEPEND="
>=dev-python/pytest-7.0.0[${PYTHON_USEDEP}]
diff --git a/dev-python/pytest-django/pytest-django-4.12.0.ebuild b/dev-python/pytest-django/pytest-django-4.12.0.ebuild
index b9f4a4412c27..081f0f0d3da8 100644
--- a/dev-python/pytest-django/pytest-django-4.12.0.ebuild
+++ b/dev-python/pytest-django/pytest-django-4.12.0.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
RDEPEND="
>=dev-python/pytest-7.0.0[${PYTHON_USEDEP}]
diff --git a/dev-python/redis/Manifest b/dev-python/redis/Manifest
index c9cc3979ee33..2fe1a2b0b8d0 100644
--- a/dev-python/redis/Manifest
+++ b/dev-python/redis/Manifest
@@ -1,2 +1,3 @@
DIST redis-py-7.1.0.gh.tar.gz 5038766 BLAKE2B 453c2c35303a72f7919208afd5c5891d0b091a44d5177974246bb0b4293f9a909b576e95fd7072cdbc206c534dc9f8f13f729a558ac1d628e6d2213fecfa7632 SHA512 b2a00b43cb04cabbf9c69b3f70d9250a215d1bb9dde8ba50aef27b28e786b70f7e65f684203258c97d7b7d8c9ce1511d404f507a7273cb528f6e3a983bcdb47a
DIST redis-py-7.1.1.gh.tar.gz 5042907 BLAKE2B 311fb245207cff3fc791820e4d8c434e12fc8eb4997b467d8d7e23bdc10185f6bbfe4e6ff776b9e8908646fbb38032b97f7a45439e3779ab435df9644a4d1d1d SHA512 14aea43cfa497fd2f7ceb6452fa4cc82e5e9844310bbaf39aa1221c3f3d42b12adbd069a4c9afce461fd5c4617f7f358345afed6b97135c444e76f9b91a6848e
+DIST redis-py-7.2.0.gh.tar.gz 5157622 BLAKE2B 4fd560f2a2a1312508980e3772eea64c686c42dbf669f6254e35402a2c98a713d4dbf44c4d77e49011cf1f6a492867bbff76a0ba2a6cd1a9329db69dd118db4f SHA512 6804493a78cf1e079d94e7ea1eba92ddf9fae5c70830414d2a0d07e9c13889a3d862bb59f2e85bc954156cfe01e9da1a9d6f245f08a678293c9af191ce88898f
diff --git a/dev-python/redis/redis-7.2.0.ebuild b/dev-python/redis/redis-7.2.0.ebuild
new file mode 100644
index 000000000000..082b9093ae1f
--- /dev/null
+++ b/dev-python/redis/redis-7.2.0.ebuild
@@ -0,0 +1,122 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1
+
+MY_P=redis-py-${PV/_beta/b}
+DESCRIPTION="Python client for Redis key-value store"
+HOMEPAGE="
+ https://github.com/redis/redis-py/
+ https://pypi.org/project/redis/
+"
+SRC_URI="
+ https://github.com/redis/redis-py/archive/v${PV/_beta/b}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86"
+
+BDEPEND="
+ test? (
+ dev-db/redis
+ dev-python/numpy[${PYTHON_USEDEP}]
+ dev-python/xxhash[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-{asyncio,timeout} )
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # Flaky test
+ tests/test_pubsub.py::TestPubSubDeadlock::test_pubsub_deadlock
+ tests/test_background.py::TestBackgroundScheduler::test_run_recurring
+ # require extra redis modules that apparently aren't packaged
+ # on Gentoo
+ tests/{,test_asyncio/}test_bloom.py
+ tests/{,test_asyncio/}test_graph.py
+ tests/{,test_asyncio/}test_json.py
+ tests/{,test_asyncio/}test_timeseries.py
+ # apparently available only in "Redis Stack 7.2 RC3 or later"
+ tests/test_commands.py::TestRedisCommands::test_tfunction_load_delete
+ tests/test_commands.py::TestRedisCommands::test_tfunction_list
+ tests/test_commands.py::TestRedisCommands::test_tfcall
+ # TODO
+ tests/test_commands.py::TestRedisCommands::test_lolwut
+ tests/test_commands.py::TestRedisCommands::test_module
+ tests/test_commands.py::TestRedisCommands::test_module_loadex
+ tests/test_commands.py::TestRedisCommands::test_zrank_withscore
+ tests/test_commands.py::TestRedisCommands::test_zrevrank_withscore
+ tests/test_commands.py::TestRedisCommands::test_xinfo_consumers
+ tests/test_asyncio/test_commands.py::TestRedisCommands::test_zrank_withscore
+ tests/test_asyncio/test_commands.py::TestRedisCommands::test_zrevrank_withscore
+ tests/test_asyncio/test_commands.py::TestRedisCommands::test_xinfo_consumers
+ tests/test_asyncio/test_pubsub.py::TestPubSubAutoReconnect::test_reconnect_socket_error[pool-hiredis-listen]
+ # requires sentinel?
+ tests/{,test_asyncio/}test_sentinel.py
+ # require REDIS_ENDPOINTS_CONFIG_PATH, except there's zero documentation
+ # or examples of what this is
+ tests/test_scenario/test_hitless_upgrade.py::TestPushNotifications
+ tests/test_scenario/test_maint_notifications.py::TestPushNotifications
+ # requires opentelemetry (with some unpackaged stuff)
+ tests/test_observability/test_provider.py::TestOTelProviderManagerGetMeterProvider
+ tests/test_observability/test_recorder.py::TestInitConnectionCount
+ tests/test_observability/test_recorder.py::TestInitCSCItems
+ tests/test_observability/test_recorder.py::TestObservableGaugeIntegration
+ )
+ local EPYTEST_IGNORE=(
+ # fails over missing certs, we don't do cluster anyway
+ tests/test_asyncio/test_cluster.py
+ # require redis_entraid
+ tests/test_asyncio/test_credentials.py
+ tests/test_credentials.py
+ # pybreaker
+ tests/test_asyncio/test_multidb
+ tests/test_asyncio/test_scenario
+ tests/test_multidb
+ tests/test_scenario
+ # cluster, not marked properly
+ tests/maint_notifications/test_cluster_maint_notifications_handling.py
+ )
+
+ # TODO: try to run more servers?
+ epytest -m "not redismod and not onlycluster and not replica and not ssl"
+}
+
+src_test() {
+ local redis_pid="${T}"/redis.pid
+ local redis_port=6379
+
+ if has_version ">=dev-db/redis-7"; then
+ local extra_conf="
+ enable-debug-command yes
+ enable-module-command yes
+ "
+ fi
+
+ # Spawn Redis itself for testing purposes
+ einfo "Spawning Redis"
+ einfo "NOTE: Port ${redis_port} must be free"
+ "${EPREFIX}"/usr/sbin/redis-server - <<- EOF || die "Unable to start redis server"
+ daemonize yes
+ pidfile ${redis_pid}
+ port ${redis_port}
+ bind 127.0.0.1 ::1
+ ${extra_conf}
+ EOF
+
+ # Run the tests
+ distutils-r1_src_test
+
+ # Clean up afterwards
+ kill "$(<"${redis_pid}")" || die
+}
diff --git a/dev-python/simsimd/Manifest b/dev-python/simsimd/Manifest
index 667673392a17..cd9294dfa1e4 100644
--- a/dev-python/simsimd/Manifest
+++ b/dev-python/simsimd/Manifest
@@ -1,6 +1,4 @@
DIST simsimd-6.5.12.tar.gz 186676 BLAKE2B 3eadeb1612d7147539a259112ac2dc186b95ed55f814ef662b596e654e5782b54f633cd9086b14ff97f2c86b4f6083057615fd2e98b89ac599408461a5abf28d SHA512 50cdc0201c3a4753a504f50474337957b8aa0ac5e889fbc3921abce611d49e95bd48b9e458c05cff526e3fa65b7010445a942ce46ceab47eaa03d31d87036311
DIST simsimd-6.5.12.tar.gz.provenance 9493 BLAKE2B dc070671415ab886ee4642824ab536dad5cc9ceed147a259c8f38b8d1b6690b2c0fb221fdba4e7297e88f4627ebc655e742e7668c92d2752412c4e1e0d68b599 SHA512 8db488effba3057ed611a40ecb9cb3952c67441fbed4fcc504f95ac1792bdb466e451791b0844058d6323e6f4c9aac0d18e6a8ede74944bdc045a83e320b1471
-DIST simsimd-6.5.3.tar.gz 184865 BLAKE2B beb35b81ab1b5d722c4e3c824075e150620943bd66ba488be020c0de3d5fa3ffd24efc7870763fe3d4c9e0d824e2b116af942b2bd3e38463d5948a5832a2fbf8 SHA512 adc914bba666fc05b57b40f0b00b591d15d6e834eed27d232ef498bd93b0ed398a0348478fc4f2517a1f5d973985060d93a2c3346917ce4a47b90a5e359668b8
-DIST simsimd-6.5.3.tar.gz.provenance 9307 BLAKE2B ae0de33d7d106b0ecc3705bcb8d5b5ec6a42fd12657b2b429083991187747e4ea7f1d5b37205b9d1aae5f1db5acfb42fb3417ac89470e34c2d28fda1f4d3f4f0 SHA512 dda353b271dca77f89362ad18d24fea82c07395b2d753a2afaeb133cb50fa2d8fec7b2c2c836ab995f2292cc09b53c67e2aedccfff6111cbeb2445aab112185f
-DIST simsimd-6.5.8.tar.gz 186258 BLAKE2B fa7ef025ee43991faf1fde2e8cdf01f7e2cacd59fb8581fe3eb627957cdabc613190cfddc01021852e8f9e9ff1dd92bf33af757f7d10ef0c23694058de46ec4b SHA512 960769928b5abb9376b9dccbd13b06672861769fadce97a3d90a72407ea663baf3287b8c246415e46ee72ff262ded9838ac748fc76e120566975f09ea439826c
-DIST simsimd-6.5.8.tar.gz.provenance 9301 BLAKE2B 96454794c9e1c60c3c30b5949d103684376beb276284ce30d4e326c667d70c6e5e62c16d85c87d5daba590b5d9a6b54b6d4b2ba2fd4be44a03eb723650b07812 SHA512 964ee818b70278ef217e4a207ad972ddca1b4cec2000918d62b3ad8de6e7e2c30ace2030a697b7c302f064feb80113c21c95377dabc6cb1b4ca1c7d506602998
+DIST simsimd-6.5.13.tar.gz 186854 BLAKE2B d576c26895960a10cbf0cfd135d00aeddc2d3feb9a1391de31184e89a4eb813b19ff9393ed1ad81313a7b6f36c20e14734616b5b70c01bd48208b2a154d31f7f SHA512 ca424fadb4b3d46eb13a2366ada81ca847528f9315a616daa8af4bc3f054eacaeddcc983e97614e0ee073aac05241d7fe9061be61d9a7eec163b76f8d17f88b7
+DIST simsimd-6.5.13.tar.gz.provenance 9532 BLAKE2B f8946ba8766dabc7963ba3538cda52efc6b80d9774f2c8cb6179cee37648f52e96444e071262041b77980fcabe3fe72650f391ce1d1548e2d55e7d7a239b69cf SHA512 841a672c2ac21a195bb44de2d18971cf195bd6452f12fd559407833874bef97ef7d04c05ab2470faf806c9dd72b46a599b59f80408074601a9970d09d4ed6130
diff --git a/dev-python/simsimd/simsimd-6.5.8.ebuild b/dev-python/simsimd/simsimd-6.5.13.ebuild
index d3ca52d45c56..0c45f9d8ca68 100644
--- a/dev-python/simsimd/simsimd-6.5.8.ebuild
+++ b/dev-python/simsimd/simsimd-6.5.13.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2024-2025 Gentoo Authors
+# Copyright 2024-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -6,6 +6,7 @@ EAPI=8
DISTUTILS_EXT=1
DISTUTILS_USE_PEP517=setuptools
PYPI_VERIFY_REPO=https://github.com/ashvardanian/SimSIMD
+# TODO: freethreading
PYTHON_COMPAT=( python3_{10..14} )
inherit distutils-r1 pypi toolchain-funcs
diff --git a/dev-python/simsimd/simsimd-6.5.3.ebuild b/dev-python/simsimd/simsimd-6.5.3.ebuild
deleted file mode 100644
index d3ca52d45c56..000000000000
--- a/dev-python/simsimd/simsimd-6.5.3.ebuild
+++ /dev/null
@@ -1,63 +0,0 @@
-# Copyright 2024-2025 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/ashvardanian/SimSIMD
-PYTHON_COMPAT=( python3_{10..14} )
-
-inherit distutils-r1 pypi toolchain-funcs
-
-DESCRIPTION="Fastest SIMD-Accelerated Vector Similarity Functions for x86 and Arm"
-HOMEPAGE="
- https://github.com/ashvardanian/SimSIMD/
- https://pypi.org/project/simsimd/
-"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~amd64"
-IUSE="openmp"
-
-BDEPEND="
- test? (
- dev-python/tabulate[${PYTHON_USEDEP}]
- )
-"
-
-EPYTEST_PLUGINS=( pytest-repeat )
-distutils_enable_tests pytest
-
-pkg_pretend() {
- if [[ ${MERGE_TYPE} != binary ]] && use openmp; then
- tc-check-openmp
- fi
-}
-
-pkg_setup() {
- if [[ ${MERGE_TYPE} != binary ]] && use openmp; then
- tc-check-openmp
- fi
-}
-
-src_prepare() {
- sed -i -e '/-O3/d' setup.py || die
- if ! use openmp; then
- sed -i -e '/-fopenmp/d' setup.py || die
- fi
-
- distutils-r1_src_prepare
-}
-
-src_compile() {
- einfo "Please disregard initial compiler errors -- the package is checking"
- einfo "for target support."
-
- distutils-r1_src_compile
-}
-
-python_test() {
- epytest scripts/test.py
-}
diff --git a/dev-python/sshtunnel/sshtunnel-0.4.0-r2.ebuild b/dev-python/sshtunnel/sshtunnel-0.4.0-r2.ebuild
index f6bd2eaa7d9a..8f9cd2ac3f1e 100644
--- a/dev-python/sshtunnel/sshtunnel-0.4.0-r2.ebuild
+++ b/dev-python/sshtunnel/sshtunnel-0.4.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
@@ -13,7 +13,7 @@ HOMEPAGE="https://pypi.org/project/sshtunnel/"
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~x86"
+KEYWORDS="amd64 ~arm ~arm64 x86"
RDEPEND="dev-python/paramiko[${PYTHON_USEDEP}]"
BDEPEND="
diff --git a/dev-python/sybil/sybil-9.2.0-r1.ebuild b/dev-python/sybil/sybil-9.2.0-r1.ebuild
index 9fbd6d512dce..8e52c37fd177 100644
--- a/dev-python/sybil/sybil-9.2.0-r1.ebuild
+++ b/dev-python/sybil/sybil-9.2.0-r1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2019-2025 Gentoo Authors
+# Copyright 2019-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~sparc x86"
RDEPEND="
>=dev-python/pytest-8[${PYTHON_USEDEP}]
diff --git a/dev-python/sybil/sybil-9.3.0.ebuild b/dev-python/sybil/sybil-9.3.0.ebuild
index 63d2991d5a62..5997071a77fe 100644
--- a/dev-python/sybil/sybil-9.3.0.ebuild
+++ b/dev-python/sybil/sybil-9.3.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2019-2025 Gentoo Authors
+# Copyright 2019-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
RDEPEND="
>=dev-python/pytest-8[${PYTHON_USEDEP}]
diff --git a/dev-python/testfixtures/testfixtures-10.0.0.ebuild b/dev-python/testfixtures/testfixtures-10.0.0.ebuild
index 9028284bb344..e3029cc4878e 100644
--- a/dev-python/testfixtures/testfixtures-10.0.0.ebuild
+++ b/dev-python/testfixtures/testfixtures-10.0.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
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~sparc x86"
BDEPEND="
test? (
diff --git a/dev-python/testfixtures/testfixtures-9.1.0.ebuild b/dev-python/testfixtures/testfixtures-9.1.0.ebuild
index 9028284bb344..e3029cc4878e 100644
--- a/dev-python/testfixtures/testfixtures-9.1.0.ebuild
+++ b/dev-python/testfixtures/testfixtures-9.1.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
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~sparc x86"
BDEPEND="
test? (
diff --git a/dev-python/testfixtures/testfixtures-9.2.0.ebuild b/dev-python/testfixtures/testfixtures-9.2.0.ebuild
index 9028284bb344..e3029cc4878e 100644
--- a/dev-python/testfixtures/testfixtures-9.2.0.ebuild
+++ b/dev-python/testfixtures/testfixtures-9.2.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
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~sparc x86"
BDEPEND="
test? (
diff --git a/dev-python/tifffile/Manifest b/dev-python/tifffile/Manifest
index baa91f06487a..52b06dd7308a 100644
--- a/dev-python/tifffile/Manifest
+++ b/dev-python/tifffile/Manifest
@@ -1,2 +1,3 @@
DIST tifffile-2026.1.28.gh.tar.gz 365400 BLAKE2B 9538a67252981e99aab5f09320948a8d64d159f70c91204e3954606229a8a2a763dc48f321c9ecc3caf609ae60e5d6ed31241fc662c1e8191461e08be65883c2 SHA512 e75af703440a628c5a3487d165ef0a2e4d068d0eb2f2ce4910446599de682ebd89d1eebe236ddd4fc7214d86849daef5f61b781a76562624a35efd7a82f2679f
DIST tifffile-2026.2.15.gh.tar.gz 366055 BLAKE2B 25a5fae471fb90fb54a69c8acf173ff364ffe3e179b8158796a767a514475069a5c9c99cf80916a4b8742f27108f513e34e6d3ff92b05b2efc33daa429b037f3 SHA512 1d9ea9641c07c0e735a1324f36100b6d884a0fc57015830a9d1be21558314c2ec4b179c332a52323c6cffff1bf78f7aaa90844d81e391d7a14298b4581b704e5
+DIST tifffile-2026.2.16.gh.tar.gz 366381 BLAKE2B 5c6777fbd25e79a76ccb19874f4e5ec48e44bfd74401d19cf96d9a75b3c574035e8ea31b984552c5263b2a15f2b0ad7d176676d3a720b90407ef1464ea988fe6 SHA512 3c17572ae4c03149c873e5e9acfec9e2b4e087a2b4b45c5146d99f1a2f50ba91c191d152eef6d91f7018419a24a8e73687710b629f82daafed11750786430372
diff --git a/dev-python/tifffile/tifffile-2026.2.16.ebuild b/dev-python/tifffile/tifffile-2026.2.16.ebuild
new file mode 100644
index 000000000000..de56c12ef129
--- /dev/null
+++ b/dev-python/tifffile/tifffile-2026.2.16.ebuild
@@ -0,0 +1,56 @@
+# Copyright 2021-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="Read and write TIFF files"
+HOMEPAGE="
+ https://pypi.org/project/tifffile/
+ https://github.com/cgohlke/tifffile/
+ https://www.cgohlke.com/
+"
+SRC_URI="
+ https://github.com/cgohlke/tifffile/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="
+ >=dev-python/numpy-1.19.2[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/defusedxml[${PYTHON_USEDEP}]
+ >=dev-python/fsspec-2021.5.0[${PYTHON_USEDEP}]
+ dev-python/lxml[${PYTHON_USEDEP}]
+ dev-python/xarray[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # not marked properly
+ # https://github.com/cgohlke/tifffile/pull/308
+ tests/test_tifffile.py::test_issue_dcp
+ # meaningless and broken on py<3.13
+ # https://github.com/cgohlke/tifffile/pull/309
+ tests/test_tifffile.py::test_gil_enabled
+ )
+
+ local -x SKIP_LARGE=1
+ local -x SKIP_HTTP=1
+
+ epytest
+}
diff --git a/dev-python/tox/Manifest b/dev-python/tox/Manifest
index c72cc539c924..b08c2e763c08 100644
--- a/dev-python/tox/Manifest
+++ b/dev-python/tox/Manifest
@@ -10,3 +10,5 @@ DIST tox-4.35.0.tar.gz 205701 BLAKE2B 7f6a89a8ec975c31d06c091b59baba81c827a4f91e
DIST tox-4.35.0.tar.gz.provenance 9138 BLAKE2B e21ef76a38268db69cef238659b72c2fe9838d769801e124f29c4d32aba21a69cd17f9cf8cfb87a6d272e7997b7c21dee9a244118139ca4f64a8a539813b6292 SHA512 cafe0f3160eff68a84a177e46c8c2ad8c0b8e5f1cce9271f73d2e814ed5af2c989d184d8e47a6d8495d5238c14ed74cc8cc5dd95ae2159862e058fcc30a510a0
DIST tox-4.36.0.tar.gz 210043 BLAKE2B f9ae83438f050577b7d7a3084d1e0bb7138b6cb3ccc281e27d96571eee07f499ab6cc2b6f16ddecfebab8ab5d77d7f91f61c01bade37f8965159a048633e2474 SHA512 5f37c6e9eff09fb21142fe00b3b493c7dbc8c47d475d6c59c05d0ba061e58cea4ae88596440824416e39e28288760d329b5e79e06e45dc896d52004761c8b8b6
DIST tox-4.36.0.tar.gz.provenance 9099 BLAKE2B 630575fcc9bec7c8ac5951a980e31b2abf5318563b815d0b60e117995ad9be6ebec36b23b984d09f4da66e02de8c0d86822b82eca2b86e0635165825f60cad47 SHA512 2169d6158fa405209c74c96805f04b3e6b1b917dfff6c6fc460707a9f91edf2b51a0b12ebc0fb46586b7532bbafbf0dcd5e16f21bc26bbf4ddebbd22bf195a0c
+DIST tox-4.36.1.tar.gz 212677 BLAKE2B adc9ca41d00d73fb1a45f85934ab6619fff90b33a7b89db742be499b410bd6c78c3231ec8379bb36242f16bbe8ae0994ad16c6bf91f1ceb70aac8efb462731ff SHA512 66f3949b528fa1479db438a2a9c8eb71e088cad35a8c42c9b22d445a07aea3fea98a87179f7fc4b8c5e294d3a7eded4d2c9ea541f2afe7246bbc62af57145e8a
+DIST tox-4.36.1.tar.gz.provenance 9381 BLAKE2B 7d802ac1866abb6383b797fe9845562edaa2a5d806b272d4b53221d819f02661d61697698bc72f355082a28b2ede860004c77bd7a07e8d09163e2e2d5e9da24c SHA512 19810bdeba1feb52d4573c5e3fed6b20e1fbc9c2e05c5a191cb2a192096bd096cbeb133b2e888fa89c1fe7bb156179b13a3a679ea418878315ccf259f8b73db8
diff --git a/dev-python/tox/tox-4.36.1.ebuild b/dev-python/tox/tox-4.36.1.ebuild
new file mode 100644
index 000000000000..42367ebe26f8
--- /dev/null
+++ b/dev-python/tox/tox-4.36.1.ebuild
@@ -0,0 +1,92 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYPI_VERIFY_REPO=https://github.com/tox-dev/tox
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="virtualenv-based automation of test activities"
+HOMEPAGE="
+ https://tox.readthedocs.io/
+ https://github.com/tox-dev/tox/
+ https://pypi.org/project/tox/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ dev-python/cachetools[${PYTHON_USEDEP}]
+ dev-python/chardet[${PYTHON_USEDEP}]
+ dev-python/colorama[${PYTHON_USEDEP}]
+ dev-python/filelock[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ dev-python/platformdirs[${PYTHON_USEDEP}]
+ dev-python/pluggy[${PYTHON_USEDEP}]
+ dev-python/pyproject-api[${PYTHON_USEDEP}]
+ dev-python/virtualenv[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ dev-python/hatch-vcs[${PYTHON_USEDEP}]
+ test? (
+ dev-python/build[${PYTHON_USEDEP}]
+ dev-python/distlib[${PYTHON_USEDEP}]
+ dev-python/psutil[${PYTHON_USEDEP}]
+ dev-python/re-assert[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/time-machine[${PYTHON_USEDEP}]
+ ' 'python*')
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-{mock,rerunfailures,timeout,xdist} )
+# xdist seems to mess up state between successive implementation runs
+distutils_enable_tests pytest
+
+src_prepare() {
+ # upstream lower bounds are meaningless
+ sed -i -e 's:>=[0-9.]*::' pyproject.toml || die
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ # devpi_process is not packaged, and has lots of dependencies
+ cat > "${T}"/devpi_process.py <<-EOF || die
+ def IndexServer(*args, **kwargs): raise NotImplementedError()
+ EOF
+
+ local -x PYTHONPATH=${T}:${PYTHONPATH}
+ local EPYTEST_DESELECT=(
+ # Internet
+ tests/tox_env/python/virtual_env/package/test_package_cmd_builder.py::test_build_wheel_external
+ tests/tox_env/python/virtual_env/package/test_package_cmd_builder.py::test_run_installpkg_targz
+ tests/tox_env/python/virtual_env/package/test_package_pyproject.py::test_pyproject_installpkg_pep517_envs
+ )
+ local EPYTEST_IGNORE=(
+ # requires devpi*
+ tests/test_provision.py
+ )
+
+ case ${EPYTHON} in
+ python*)
+ local EPYTEST_PLUGINS=( "${EPYTEST_PLUGINS[@]}" time-machine )
+ ;;
+ pypy3*)
+ EPYTEST_DESELECT+=(
+ 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[explicit-True-True]'
+ 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[requirements-True-True]'
+ 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[constraints-True-True]'
+ 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[explicit+requirements-True-True]'
+ 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[requirements_indirect-True-True]'
+ 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[requirements_constraints_indirect-True-True]'
+ )
+ ;;
+ esac
+
+ epytest -o addopts=
+}
diff --git a/dev-python/typer/Manifest b/dev-python/typer/Manifest
index 8360f58ecc88..db5b04ed046e 100644
--- a/dev-python/typer/Manifest
+++ b/dev-python/typer/Manifest
@@ -2,3 +2,4 @@ DIST typer-0.21.0.tar.gz 106781 BLAKE2B 12d426b0a4fe7b515adfdb66b9d45b97ea8df540
DIST typer-0.21.0.tar.gz.provenance 9031 BLAKE2B 99ff1f36faba9fdf49bd52ca84e0aab67741e56d8cb4ead915ca436cb36b47a871886af7c414c27b2eb08a1d7ea8dbdb0468f1bd3393d8b653b693b881d7672a SHA512 75088b0d6076cc5eb4c5587074d2f6bc7e93551d634b79a3aa064e375970c4e0c99b2931e9bb8c2a70f7f9299d5dd8d8085cb697baa65ff02c68c2e306832b26
DIST typer-0.23.0.tar.gz 120181 BLAKE2B ed10661ad2cc942c4010bb9cf01b6a37e1426e7f17632c826375f151fb02b5641e32e4bf8ea07c45f86e1a3c91982df30b4a58fc9e0391717c84ad3fffc1db74 SHA512 a21e41a4075610d12cd28cdb6e8d5136437cb942925b19f95c34db3e62574a03773d5a242dcbd67eac5e77907ca091a9c689638a65ffe411a0fcef20b897a7ca
DIST typer-0.23.1.tar.gz 120047 BLAKE2B 51461f8514acccf270dc5c86e24ba842d82f0c1c7b4a121725a8f96cefd5b0d06806e5f3262d6a1f2b5ed25e2ae8e3dfd545e4bcd4a8bda90827609f743f732a SHA512 f6d40ef01a602491895192b2158a22b224468eec13215fe6d547e680b235de199101af08f58ea37ffbd6683a409c84c7c233ec164db7f6031045cbda1685a296
+DIST typer-0.24.0.tar.gz 118380 BLAKE2B ab0f919882f742aa6a917d9219d25400e8a77370af488b5c26c9b2785aa4107746d6685f480ce1b608d391dc24ee5aed36468a1dc87894ce44be53a03cea9a12 SHA512 881922b1c7fe2577e4a240be90afa3b1c4753caf36793a423dfff7b1be4c8be6123d4157799e54705d523d971f34f6de829ad91a7b1ad68f4f341a0709b2e724
diff --git a/dev-python/typer/typer-0.24.0.ebuild b/dev-python/typer/typer-0.24.0.ebuild
new file mode 100644
index 000000000000..8bd2e0a642ef
--- /dev/null
+++ b/dev-python/typer/typer-0.24.0.ebuild
@@ -0,0 +1,67 @@
+# Copyright 2025-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=pdm-backend
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 shell-completion pypi
+
+DESCRIPTION="Build great CLIs. Easy to code. Based on Python type hints"
+HOMEPAGE="
+ https://typer.tiangolo.com/
+ https://github.com/fastapi/typer/
+ https://pypi.org/project/typer/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64"
+IUSE="cli"
+
+RDEPEND="
+ >=dev-python/annotated-doc-0.0.2[${PYTHON_USEDEP}]
+ >=dev-python/click-8.2.1[${PYTHON_USEDEP}]
+ >=dev-python/rich-12.3.0[${PYTHON_USEDEP}]
+ >=dev-python/shellingham-1.3.0[${PYTHON_USEDEP}]
+ cli? ( !dev-lang/erlang )
+"
+BDEPEND="
+ test? (
+ dev-python/coverage[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ if ! use cli; then
+ sed -i -e '/typer\.cli/d' pyproject.toml || die
+ fi
+}
+
+python_test() {
+ # See scripts/tests.sh
+ local -x TERMINAL_WIDTH=3000
+ local -x _TYPER_FORCE_DISABLE_TERMINAL=1
+ local -x _TYPER_RUN_INSTALL_COMPLETION_TESTS=1
+
+ epytest
+}
+
+python_install() {
+ if use cli && [[ ! ${COMPLETIONS_INSTALLED} ]]; then
+ local -x _TYPER_COMPLETE_TEST_DISABLE_SHELL_DETECTION=1
+ newbashcomp - typer < <(typer --show-completion bash || die)
+ newzshcomp - typer < <(typer --show-completion zsh || die)
+ newfishcomp - typer < <(typer --show-completion fish || die)
+ COMPLETIONS_INSTALLED=1
+ fi
+
+ distutils-r1_python_install
+}
diff --git a/dev-python/uv-build/Manifest b/dev-python/uv-build/Manifest
index 072430136e0d..c9a7046cfb81 100644
--- a/dev-python/uv-build/Manifest
+++ b/dev-python/uv-build/Manifest
@@ -1,5 +1,6 @@
DIST uv_build-0.10.0.tar.gz 361570 BLAKE2B e94909f789b4f09b407b2441261c60235d9e4572c3cf71e9947fb285fea1240be90faa9edf0a8a6fc9b0992103a0c99c7edcf32d969267482f63a354a2f00b94 SHA512 c053b31df98966b1e2d327d912d610f7844fe98565ab0f396cf87c3f9cfcafcad142fc6999d23afa7a5819a69995195d9ed65f76d6179a890c842db6e8e2aebb
DIST uv_build-0.10.2.tar.gz 361619 BLAKE2B 846ebd454b8f9ec126bb25671c39e75b6f22b0ec60ccc7cd0775ef84df0ed8ba9cad94d343538def6c5ebfa142df60bc502ee732017f0d5abbd53392747d9c6c SHA512 fee7ddb7eedc2490eed4240120b6541b6d4b247dd428e8e6844895880d4ed8310dc90a5a0805ee77a5ea179b753212719cf9e2be9baad19c5661e7df50d84f34
+DIST uv_build-0.10.3.tar.gz 362506 BLAKE2B 36e938850caef030cc3492c89a30c15ce7a8374b3c02baa1718e24d51441a63e0e30c0af936bb58e0772128e66f7b35d9626b61fa471313913e6920ac006573e SHA512 b49b5089b34d18851264f4f0645021828a7b5a8a46b393d4a67e9f99d508aa12f24d9fcb7c821d585a5dfea8c2a4fb1980853df64cb63fc07cde63eb9a27440f
DIST uv_build-0.9.15.tar.gz 354021 BLAKE2B a47350ead8d9672d09967bbd7f9ac2f8e231e1dd5afb8c20e59926429792d3872feb1f8e4d7a9318ec447a99ce8add0503dfba0be2b970b2f192f954b472f1a7 SHA512 11fa1ebb1cfc184bd5bedf5e11fb28f14abf118183d94cbe0ac9a1b83f150a69836f0547a671e8cf16527d84ec61dd5b2983efafe5aeccd86e94cda79e1de664
DIST uv_build-0.9.21.tar.gz 357539 BLAKE2B 721e12e0260301d3234f3fbc76d5944c9b15e14b345876d3f231314f64f15c5e6c37c8c7155e24605c928dbe52b12b3b02cd2f0a1373b8d93b017f2c122ddf19 SHA512 1e2885f978fa45e1481a72a35d5734ef80d3ab7da0213fc41cad8c4e49756bf0b172cea570d25a6b0461c6dd13fead8a8fae356b11ec758f8bd7b915faa322c4
DIST uv_build-0.9.25.tar.gz 359005 BLAKE2B b0c8307919092aa0abbca7da379efd315f54c4d70c066633a3524fb1a78fcff0831e071086050b240536a123d965706337f09c716814e5655c9051cd4d879a19 SHA512 601eea260c615b6102c0e6a766d7c5fd0585c72005fb813a22cdc3f568c2f57042f72d3d16822f1c1773e1f9e8580d1f77b1e73b940a026c0a8e8783ef817f7b
diff --git a/dev-python/uv-build/uv-build-0.10.3.ebuild b/dev-python/uv-build/uv-build-0.10.3.ebuild
new file mode 100644
index 000000000000..639745396c25
--- /dev/null
+++ b/dev-python/uv-build/uv-build-0.10.3.ebuild
@@ -0,0 +1,99 @@
+# Copyright 2025-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# Maturin compiles uv-build executable for every impl, we do not want
+# that, so we use another backend. And since we use another backend,
+# why not dogfood it in the first place?
+DISTUTILS_USE_PEP517=standalone
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="PEP517 uv build backend"
+HOMEPAGE="
+ https://github.com/astral-sh/uv/
+ https://pypi.org/project/uv-build/
+"
+
+LICENSE="|| ( Apache-2.0 MIT )"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~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 0bce067e2022..95a36339dfe4 100644
--- a/dev-python/uv/Manifest
+++ b/dev-python/uv/Manifest
@@ -2,6 +2,8 @@ DIST uv-0.10.0-crates.tar.xz 40475984 BLAKE2B 8146350fd684ac9aeadda44142b8fb0b0d
DIST uv-0.10.0.gh.tar.gz 4924383 BLAKE2B 957a9ab408ad5f07416a76a97f23d0bb41b22a1d1ebffc6a84e41c382b8cf271094bce08be19d5649fd9866d22c75619c3561b79659c65c99fa45ea318b6bf95 SHA512 84bf1ecfa730cbb4fe4c602dba3ef3d58bf070472cde5f160291fabfdd7630fd8dcbb45b10e7abcb00db6898d5cefa8ac616c68dfa56bb15640ce6211caff51d
DIST uv-0.10.2-crates.tar.xz 40488272 BLAKE2B 7b60ce55ac335b4f22c14e4029451e5931a52d2fbd2342d53d444a84ea50383ba79c5152b0f394d49937dd5e0d7449f92bf69fd6a32e3509f682403533eb9f8b SHA512 7fdac474d6b6cbd4ff22e40396b47edcf050ace6d7d74885c90e6833169ba2051d392b2f70f7a8dc9d12cecb7fc81102a556c5b5510cd678be996a3e90ff2e08
DIST uv-0.10.2.gh.tar.gz 4927786 BLAKE2B bdbc9014a9362121205f12046eea0999838c9a72bf6d3cb347c51c13f92cb7b5b4524b4abcc81caac297645f2863e577981b033a4ee6a29166cd818aec06a6ad SHA512 7592217ce76cd0a418a4979df045890e215c5bcff53d18e34924e0d57ec388fc8ce56b3fdc7ee473f131de5d04a4349b1dbb9d5a585493a0cd9a22dfd51e9cfc
+DIST uv-0.10.3-crates.tar.xz 40664424 BLAKE2B 78f8834b7f78b74448d77dbb9e12f31c472561e8104fee73fdd70b449818b2deaa6e6600ffec1e65b533fa1b39c3703f43a71996e90036b4e045c1ec786184f0 SHA512 e79f416a6afc01cafca081e34759ee3f873239f321a17147b1ee1badbb22289feea29d003da79ca2274ef151f4f42947be4675182be4912a9590ee7f84a9165d
+DIST uv-0.10.3.gh.tar.gz 4944734 BLAKE2B f2b65afbcdb88ec7d77b22ac44123aca4a2e6424d69abbd290d9b51a6470f954938e8cd9f5bb65fba2b3a5ee4383692fab3a15dd020529935021a547e3fed11d SHA512 a8f41a5fc74b30f8e0dd7bd24786148a35230f14237872211e56539f3892b02b59a0e06ad6400fa000b13c659b6286065294337c73749f6c51aca17f22ed5d69
DIST uv-0.9.15-crates.tar.xz 46539408 BLAKE2B 57e582f56e12858292d1dfaec10292eb58fb118051618875eab0d2dcd4f55aa89de6f788b3aa5013ce5e03068bb404ef04faae633d5c208f382366ac5ddf70df SHA512 4db7549d6902682db7af385e5099e74bbd82e54aaf45a44fe64416fda91e065f4bf978b9db55ab72f2872f9e8933b49020102b959c1d2bcef4b9a9877ac1e789
DIST uv-0.9.15.gh.tar.gz 4887603 BLAKE2B 422a3c004abdf052438b145400675010b1adfc8cb8d49979367544e2d381389594188276fe603ffa983f5926be624f5d863053bd79342eeee10caf1260b2a479 SHA512 2605e2e7d5f6fdbb5ec4839363f65c8e71559944ec003cb9c69040be08094eb5c041831151b669e2dbbcf1799e862f484a21a592090524f79686469eac0e3381
DIST uv-0.9.21-crates.tar.xz 48642776 BLAKE2B 4ce225a3639d02ea05014c2132a7fd8baf53f3bd0bf3cafc6ebde144f2cea982426835f91bcb587e8dba122afe381c5a0ffa654667d4677f0b0b18b4b63a2f2e SHA512 db391109602bf1afbe868740ee977e76f92911136f61a9db8918ca89bcabdad02b75f1892cef200a370ea91829e177fd6c775aff9522f72fb90f2fc9d3acb22a
diff --git a/dev-python/uv/uv-0.10.3.ebuild b/dev-python/uv/uv-0.10.3.ebuild
new file mode 100644
index 000000000000..73993f9a17fd
--- /dev/null
+++ b/dev-python/uv/uv-0.10.3.ebuild
@@ -0,0 +1,164 @@
+# Copyright 2024-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+CRATES="
+"
+RUST_MIN_VER="1.91.0"
+
+inherit cargo check-reqs
+
+CRATE_PV=${PV}
+DESCRIPTION="A Python package installer and resolver, written in Rust"
+HOMEPAGE="
+ https://github.com/astral-sh/uv/
+ https://pypi.org/project/uv/
+"
+# pypi sdist misses scripts/, needed for tests
+SRC_URI="
+ https://github.com/astral-sh/uv/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+ ${CARGO_CRATE_URIS}
+"
+if [[ ${PKGBUMPING} != ${PVR} ]]; then
+ SRC_URI+="
+ https://github.com/gentoo-crate-dist/uv/releases/download/${CRATE_PV}/uv-${CRATE_PV}-crates.tar.xz
+ "
+fi
+
+# most of the code
+LICENSE="|| ( Apache-2.0 MIT )"
+# crates/pep508-rs is || ( Apache-2.0 BSD-2 ) which is covered below
+# Dependent crate licenses
+LICENSE+="
+ 0BSD Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD-2 BSD CC0-1.0
+ CDLA-Permissive-2.0 ISC MIT MPL-2.0 Unicode-3.0 Unicode-DFS-2016
+ ZLIB BZIP2
+"
+# ring crate
+LICENSE+=" openssl"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
+IUSE="test"
+RESTRICT="test"
+PROPERTIES="test_network"
+
+DEPEND="
+ app-arch/bzip2:=
+ app-arch/xz-utils:=
+ app-arch/zstd:=
+"
+RDEPEND="
+ ${DEPEND}
+"
+BDEPEND="
+ virtual/pkgconfig
+ test? (
+ dev-lang/python:3.9
+ dev-lang/python:3.10
+ dev-lang/python:3.11
+ dev-lang/python:3.12
+ dev-lang/python:3.13
+ !!~dev-python/uv-0.5.0
+ )
+"
+
+QA_FLAGS_IGNORED="usr/bin/.*"
+
+check_space() {
+ local CHECKREQS_DISK_BUILD=3G
+ use debug && CHECKREQS_DISK_BUILD=9G
+ check-reqs_pkg_setup
+}
+
+pkg_pretend() {
+ check_space
+}
+
+pkg_setup() {
+ check_space
+ rust_pkg_setup
+}
+
+src_prepare() {
+ default
+
+ # force thin lto, makes build much faster and less memory hungry
+ # (i.e. makes it possible to actually build uv on 32-bit PPC)
+ sed -i -e '/lto/s:fat:thin:' Cargo.toml || die
+
+ # enable system libraries where supported
+ export ZSTD_SYS_USE_PKG_CONFIG=1
+ # TODO: unbundle libz-ng-sys, tikv-jemalloc-sys?
+
+ # remove unbundled sources, just in case
+ find "${ECARGO_VENDOR}"/{bzip2,lzma,zstd}-sys-*/ -name '*.c' -delete || die
+
+ # bzip2-sys requires a pkg-config file
+ # https://github.com/alexcrichton/bzip2-rs/issues/104
+ mkdir "${T}/pkg-config" || die
+ export PKG_CONFIG_PATH=${T}/pkg-config${PKG_CONFIG_PATH+:${PKG_CONFIG_PATH}}
+ cat >> "${T}/pkg-config/bzip2.pc" <<-EOF || die
+ Name: bzip2
+ Version: 9999
+ Description:
+ Libs: -lbz2
+ EOF
+
+ # uv is now forcing bundled liblzma, sigh
+ sed -i -e '/xz/s:"static"::' Cargo.toml || die
+}
+
+src_configure() {
+ local myfeatures=(
+ test-git
+ test-pypi
+ test-python
+ )
+
+ cargo_src_configure --no-default-features
+}
+
+src_compile() {
+ cd crates/uv || die
+ cargo_src_compile
+}
+
+src_test() {
+ cd crates/uv || die
+ cargo_src_test --no-fail-fast
+}
+
+src_install() {
+ cd crates/uv || die
+ cargo_src_install
+
+ insinto /etc/xdg/uv
+ newins - uv.toml <<-EOF || die
+ # These defaults match Fedora, see:
+ # https://src.fedoraproject.org/rpms/uv/pull-request/18
+
+ # By default ("automatic"), uv downloads missing Python versions
+ # automatically and keeps them in the user's home directory.
+ # Disable that to make downloading opt-in, and especially
+ # to avoid unnecessarily fetching custom Python when the distro
+ # package would be preferable. Python builds can still be
+ # downloaded manually via "uv python install".
+ #
+ # https://docs.astral.sh/uv/reference/settings/#python-downloads
+ python-downloads = "manual"
+
+ # By default ("managed"), uv always prefers self-installed
+ # Python versions over the system Python, independently
+ # of versions. Since we generally expect users to use that
+ # to install old Python versions not in ::gentoo anymore,
+ # this effectively means that uv would end up preferring very
+ # old Python versions over the newer ones that are provided
+ # by the system. Default to using the system versions to avoid
+ # this counter-intuitive behavior.
+ #
+ # https://docs.astral.sh/uv/reference/settings/#python-preference
+ python-preference = "system"
+ EOF
+}
diff --git a/dev-python/uvicorn/Manifest b/dev-python/uvicorn/Manifest
index fdc494fc0b44..1b471098a788 100644
--- a/dev-python/uvicorn/Manifest
+++ b/dev-python/uvicorn/Manifest
@@ -1,4 +1,4 @@
-DIST uvicorn-0.38.0.tar.gz 80605 BLAKE2B b7dd7f9bcb5b72f1cbf381bb263dbcbe6aa4d3c252540e64f60ee471e248480995525e646bc852487d37bc768be7072e7b7b20f9f7a7efd6022dc3ed88d0d57f SHA512 29b1a838cef63f90839fac7799723ed56711f21d4016437b62363fd9f45f76ea683d2be9ec7491f6c79a05159d0b5814e0e9247c67dc92342577c24ae392fdd7
-DIST uvicorn-0.38.0.tar.gz.provenance 9257 BLAKE2B 94b9804d3740ac2db01c4715fa60b413e4af12f70a4e955ced6326ef06b2d43f1d5dca96f833e951a108521b9d8aeb27d3c6061b586cf180eaf777efc3be38d2 SHA512 a4cdfe7406e4d15398edd958c553eaff1d36692b2cc368be59ace7495ed14d62a172afada542122896eecdd5f81ea185976e4a13a4c6fbf2de5f7171328254a4
DIST uvicorn-0.40.0.tar.gz 81761 BLAKE2B 9b71d6d56a81f265f10293434813f08e34456221627e52ab680e4889b664daaa9be2cf46437d5ca992e933c7e493362f92bf3c8621f6477d8503a2ffdd5ce35c SHA512 b56f625577509e46724a91881d7d1e5242ac50bd686f5cdbeb1973f7be48c85c1cda8d7275eb04bc0241c221f11820e31f7e4d3ad949a9793b81f8492d667cb7
DIST uvicorn-0.40.0.tar.gz.provenance 9247 BLAKE2B 3cd0b5a8913ad854adb4d043928c51dfa04486919c842ff1b63467cf19e66165762837c8038cb5615f0b46836d57e897be80dcefa327996d03da4657fdd3ab47 SHA512 234dcb974a066fa655502ab231ef19cfb8d776e861ba256dc038cafb447d88a7a9469d82fd3a99f11136b2b3a03202b6ba423e1a0981ad3f40a7b1a1136cc787
+DIST uvicorn-0.41.0.tar.gz 82633 BLAKE2B 3235ef1730133d3a3903d341916ae0bd0c74df5fc3c955d26159edc2c4afc2df87487630c051d3d838e10fe1984ca4440a5c1770add3418b31820df036087cf5 SHA512 6b1dabb94483dccbfea6e451c53900cf05453e6e5705c968a3718f145e049be83f4a2e0e460f3a5d3bbe4546f7b339d3e6ce60bc79fbcb4bd326d7d060c7fc77
+DIST uvicorn-0.41.0.tar.gz.provenance 9345 BLAKE2B c94e13e33656be32515595ea8242315bd4a8f0e88870b807fbfc97451a34a556e079aefac97df7524a7bc22bcb2656abad13bc7c5786b4672391dfa6c9502525 SHA512 c582314621fe7689b4c876b5727abab7612148a221de7dab43010c59c3691a18589bfc5392d41897a21566a7e4ea326c0567c119a085e708f94f82ab9ec0f2af
diff --git a/dev-python/uvicorn/uvicorn-0.38.0.ebuild b/dev-python/uvicorn/uvicorn-0.41.0.ebuild
index 0af02f91e8e1..1104c53fab57 100644
--- a/dev-python/uvicorn/uvicorn-0.38.0.ebuild
+++ b/dev-python/uvicorn/uvicorn-0.41.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2021-2025 Gentoo Authors
+# Copyright 2021-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
IUSE="test-rust"
RDEPEND="
@@ -39,7 +39,7 @@ BDEPEND="
test-rust? (
dev-python/cryptography[${PYTHON_USEDEP}]
dev-python/trustme[${PYTHON_USEDEP}]
- dev-python/watchfiles[${PYTHON_USEDEP}]
+ >=dev-python/watchfiles-0.20[${PYTHON_USEDEP}]
)
)
"
@@ -65,14 +65,6 @@ python_test() {
tests/middleware/test_logging.py::test_running_log_using_fd
)
;;
- python3.14*)
- EPYTEST_DESELECT+=(
- # TODO
- tests/test_auto_detection.py::test_loop_auto
- # changed exception type
- tests/test_compat.py::test_asyncio_run__passing_a_non_awaitable_callback_should_throw_error
- )
- ;;
esac
epytest
diff --git a/dev-python/virtualenv/Manifest b/dev-python/virtualenv/Manifest
index 27c3e6596ee8..9adcde679303 100644
--- a/dev-python/virtualenv/Manifest
+++ b/dev-python/virtualenv/Manifest
@@ -6,3 +6,5 @@ DIST virtualenv-20.36.0.tar.gz 6032237 BLAKE2B 864f1542d6e5c7c3b78cfe2695d171d9a
DIST virtualenv-20.36.0.tar.gz.provenance 9242 BLAKE2B 11401266d08513c5d50e2c846301a887919b4b5e9243966637a4fb2fab96b3be8815ccddf02d6c9ad9f46900abdf904c9d0c81d0c6213c6e542f40d764eefaae SHA512 fa46c395648177b48860a82f81044f6268dbf2ba12398547b4ae46e3012ef352603d7b605b1f7ed49b364a15c29e1cd65ffb7c18fd9224ed7d464f76670d06fb
DIST virtualenv-20.36.1.tar.gz 6032239 BLAKE2B 9d4cd6e28275ab1e5737e12e0661c4e772a0095dfa7cbd1bad76a0c90d55821ae819d6b65fd5b314d3076570f661eb2fe05b4be41c406f8e423df8389feaac06 SHA512 08da448fadd89f43526e27c3dd3c9a1c5a4c8532093db8c73f34d1d88e48ddff5b983d28343f4efcdec30428fa2ac10acc27ab57c647bd3fc8e261dbd9a9b639
DIST virtualenv-20.36.1.tar.gz.provenance 9246 BLAKE2B 4ee139a4eef0092c20d791db0e3e9901f65db574367ac234bc84cc02998e386a713314d474b7401d484df35dabe52ad9f9bc14cdf0230566853cb84e58e3d660 SHA512 a8b9ec9269848716e6496578b0de27f416327228d205a8fca8f60373c6e72ff11af3da0f241dbbdef660253cb604b9a35c96575eaad4476892a98cc168198aff
+DIST virtualenv-20.37.0.tar.gz 5864710 BLAKE2B e3a86f35f68df45e10a2a6e2d2fc6cd67233752957efc1410de3142e4a3282a49bc40039c4eb2ea2990a74ae41af93b56082b218591bc350bf90631333bd1f9d SHA512 3425d19797d313039fde54f8a94e7079d2fb2e998b3f7135854597089cbf9d2e1d09299a3eb7f091c25709a5b8a962ad317dec79d0633367abd7d59cdab3aa14
+DIST virtualenv-20.37.0.tar.gz.provenance 9304 BLAKE2B 194fde1f7781211ad66bd66239bfffed818aec5c757e0f236bd7abad86caac6eaf7dcd5382d4b56e3f5ed836abeb096e2c5fee0ba3498ae101f780f36b355d59 SHA512 76ea2857f8131e61742b61f9d1edb8b7d791a2862f47185d960ca03b1ec382ff8b445689c4da9acbc84147b0c664f6a4e89efdc992b19f2afc0f3ef37197ed70
diff --git a/dev-python/virtualenv/virtualenv-20.37.0.ebuild b/dev-python/virtualenv/virtualenv-20.37.0.ebuild
new file mode 100644
index 000000000000..99756ea15499
--- /dev/null
+++ b/dev-python/virtualenv/virtualenv-20.37.0.ebuild
@@ -0,0 +1,133 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYPI_VERIFY_REPO=https://github.com/pypa/virtualenv
+PYTHON_TESTED=( python3_{11..14} pypy3_11 )
+PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Virtual Python Environment builder"
+HOMEPAGE="
+ https://virtualenv.pypa.io/en/stable/
+ https://pypi.org/project/virtualenv/
+ https://github.com/pypa/virtualenv/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-python/distlib-0.3.7[${PYTHON_USEDEP}]
+ >=dev-python/filelock-3.24.2[${PYTHON_USEDEP}]
+ >=dev-python/platformdirs-3.9.1[${PYTHON_USEDEP}]
+
+ dev-python/ensurepip-pip
+ >=dev-python/ensurepip-setuptools-70.1
+ dev-python/ensurepip-wheel
+"
+# coverage is used somehow magically in virtualenv, maybe it actually
+# tests something useful
+BDEPEND="
+ dev-python/hatch-vcs[${PYTHON_USEDEP}]
+ test? (
+ ${RDEPEND}
+ $(python_gen_cond_dep '
+ dev-python/coverage[${PYTHON_USEDEP}]
+ >=dev-python/pip-22.2.1[${PYTHON_USEDEP}]
+ >=dev-python/pytest-mock-3.6.1[${PYTHON_USEDEP}]
+ dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
+ dev-python/pytest-timeout[${PYTHON_USEDEP}]
+ dev-python/pytest-xdist[${PYTHON_USEDEP}]
+ >=dev-python/setuptools-67.8[${PYTHON_USEDEP}]
+ dev-python/wheel[${PYTHON_USEDEP}]
+ >=dev-python/packaging-20.0[${PYTHON_USEDEP}]
+ ' "${PYTHON_TESTED[@]}")
+ $(python_gen_cond_dep '
+ dev-python/time-machine[${PYTHON_USEDEP}]
+ ' python3_{11..14})
+ $(python_gen_cond_dep '
+ >=dev-python/pytest-freezer-0.4.6[${PYTHON_USEDEP}]
+ ' 'pypy3*')
+ )
+"
+
+src_prepare() {
+ local PATCHES=(
+ # use wheels from ensurepip bundle
+ "${FILESDIR}/${PN}-20.31.1-ensurepip.patch"
+ )
+
+ distutils-r1_src_prepare
+
+ # workaround test failures due to warnings from setuptools-scm, sigh
+ echo '[tool.setuptools_scm]' >> pyproject.toml || die
+
+ # remove useless pins
+ sed -i -e 's:,<[=0-9.]*::' pyproject.toml || die
+
+ # remove bundled wheels
+ rm src/virtualenv/seed/wheels/embed/*.whl || die
+}
+
+python_test() {
+ if ! has "${EPYTHON}" "${PYTHON_TESTED[@]/_/.}"; then
+ einfo "Skipping testing on ${EPYTHON}"
+ return
+ fi
+
+ local EPYTEST_DESELECT=(
+ tests/unit/seed/embed/test_bootstrap_link_via_app_data.py::test_seed_link_via_app_data
+ # tests for old wheels with py3.7 support
+ tests/unit/seed/embed/test_pip_invoke.py::test_base_bootstrap_via_pip_invoke
+ tests/unit/seed/wheels/test_wheels_util.py::test_wheel_not_support
+ # broken by different wheel versions in ensurepip
+ tests/unit/seed/wheels/test_acquire_find_wheel.py::test_find_latest_string
+ tests/unit/seed/wheels/test_acquire_find_wheel.py::test_find_exact
+ tests/unit/seed/wheels/test_acquire_find_wheel.py::test_find_latest_none
+ tests/unit/seed/wheels/test_acquire.py::test_download_wheel_bad_output
+ # hangs on a busy system, sigh
+ tests/unit/test_util.py::test_reentrant_file_lock_is_thread_safe
+ # TODO
+ tests/unit/create/via_global_ref/test_build_c_ext.py::test_can_build_c_extensions
+ # random resource leaks or xdist
+ tests/unit/test_file_limit.py::test_too_many_open_files
+ # Internet
+ tests/unit/create/test_creator.py::test_create_distutils_cfg
+ )
+ case ${EPYTHON} in
+ pypy3.11)
+ EPYTEST_DESELECT+=(
+ # these don't like the executable called pypy3.11?
+ tests/unit/activation/test_bash.py::test_bash
+ tests/unit/activation/test_fish.py::test_fish
+ tests/unit/discovery/py_info/test_py_info.py::test_fallback_existent_system_executable
+ )
+ ;;
+ esac
+
+ local -x TZ=UTC
+ local EPYTEST_PLUGINS=( pytest-{mock,rerunfailures} )
+ if [[ ${EPYTHON} == pypy3* ]]; then
+ EPYTEST_PLUGINS+=( pytest-freezer )
+ else
+ EPYTEST_PLUGINS+=( time-machine )
+ fi
+ local EPYTEST_RERUNS=5
+ local EPYTEST_TIMEOUT=180
+ local EPYTEST_XDIST=1
+ epytest -o addopts=
+}
+
+src_install() {
+ distutils-r1_src_install
+
+ # remove bundled wheels, we're using ensurepip bundle instead
+ find "${ED}" -name '*.whl' -delete || die
+}
diff --git a/dev-python/xxhash/Manifest b/dev-python/xxhash/Manifest
index d27845468a25..3269185f9532 100644
--- a/dev-python/xxhash/Manifest
+++ b/dev-python/xxhash/Manifest
@@ -1,2 +1,2 @@
-DIST xxhash-3.5.0.tar.gz 84241 BLAKE2B efe3fcfa02b15afd1539aa8667878868430337a9fe1decca03ae402893c743fd6f2e8dbbfae747e54a9bc6b65ba5cf5f4d2170181b88a820e9d4615b2b902ec7 SHA512 0242589264cba67eb535a0fffbfa8f171fe8c1991b8a90a1484311f283c9f49c81cae8a86552c43232aa9ac7ba66c989fda0a21bb403b3e8219b32db53941b2e
DIST xxhash-3.6.0.tar.gz 85160 BLAKE2B b4a084b3495ec53431150ed5fd3adc6badcaec2553faec0db40cb49c5abe5a5bf0bc9ef3c0f6bbb636bbe97afbb5be75185d2e74305baa3dbc384e3e87fa28df SHA512 c82f7d108708b944e01fe2fad19654b274b6888cdf653420094049b84f0b63f1b249262d2310496d7f647c82c50ef62db583862b83d36a16a4e5ddf7633fee1b
+DIST xxhash-3.6.0.tar.gz.provenance 9441 BLAKE2B 1af393720ad8b6705309ecac014c4c2b65e4c75345122a4d5778e44ed40fc8891dc1faeb2e35d9cdd90eb4d6981482634a5cd4e9d68f71e35cb3c777c2c164de SHA512 124f088b0a82705f5dc73857b9c01d6fd758b95e05400c0ae94537816515a4fe309fa54fe3569d4707c8e6a83703ef00b443048fd1050e7d5c33a18494cf9a9a
diff --git a/dev-python/xxhash/xxhash-3.5.0.ebuild b/dev-python/xxhash/xxhash-3.5.0.ebuild
deleted file mode 100644
index accc390f558f..000000000000
--- a/dev-python/xxhash/xxhash-3.5.0.ebuild
+++ /dev/null
@@ -1,38 +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_{10..14} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Python binding for the xxHash library"
-HOMEPAGE="
- https://github.com/ifduyue/python-xxhash/
- https://pypi.org/project/xxhash/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="amd64 arm64 ~x86"
-
-DEPEND="
- >=dev-libs/xxhash-0.8.0
-"
-RDEPEND="
- ${DEPEND}
-"
-
-distutils_enable_tests unittest
-
-python_configure_all() {
- export XXHASH_LINK_SO=1
-}
-
-python_test() {
- cd tests || die
- eunittest
-}
diff --git a/dev-python/xxhash/xxhash-3.6.0.ebuild b/dev-python/xxhash/xxhash-3.6.0.ebuild
index accc390f558f..6b620b397484 100644
--- a/dev-python/xxhash/xxhash-3.6.0.ebuild
+++ b/dev-python/xxhash/xxhash-3.6.0.ebuild
@@ -1,10 +1,11 @@
-# Copyright 1999-2025 Gentoo Authors
+# 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/ifduyue/python-xxhash
PYTHON_COMPAT=( python3_{10..14} )
inherit distutils-r1 pypi
@@ -17,7 +18,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 arm64 ~x86"
+KEYWORDS="amd64 ~arm arm64 ~x86"
DEPEND="
>=dev-libs/xxhash-0.8.0