summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
authorLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2025-07-04 19:04:49 +0000
committerLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2025-07-04 19:04:49 +0000
commit215d23f88ab144dbb487e0afe934c598e6ea0548 (patch)
treec4c227e2a8a03977df6398b8cbfaf0d65935bc2f /dev-python
parentec3744025314ad8188dbf2ce0a5de2427426760a (diff)
downloadbaldeagleos-repo-215d23f88ab144dbb487e0afe934c598e6ea0548.tar.gz
baldeagleos-repo-215d23f88ab144dbb487e0afe934c598e6ea0548.tar.xz
baldeagleos-repo-215d23f88ab144dbb487e0afe934c598e6ea0548.zip
Adding metadata
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/absl-py/Manifest1
-rw-r--r--dev-python/absl-py/absl-py-2.3.1.ebuild81
-rw-r--r--dev-python/argon2-cffi/argon2-cffi-25.1.0.ebuild2
-rw-r--r--dev-python/asgiref/Manifest1
-rw-r--r--dev-python/asgiref/asgiref-3.9.0.ebuild29
-rw-r--r--dev-python/awkward-cpp/Manifest1
-rw-r--r--dev-python/awkward-cpp/awkward-cpp-47.ebuild38
-rw-r--r--dev-python/awkward/Manifest2
-rw-r--r--dev-python/awkward/awkward-2.8.5.ebuild (renamed from dev-python/awkward/awkward-2.8.3.ebuild)9
-rw-r--r--dev-python/fonttools/fonttools-4.58.4.ebuild2
-rw-r--r--dev-python/frozenlist/frozenlist-1.7.0.ebuild2
-rw-r--r--dev-python/greenlet/greenlet-3.2.3.ebuild2
-rw-r--r--dev-python/h5py/h5py-3.14.0.ebuild2
-rw-r--r--dev-python/ipython-pygments-lexers/ipython-pygments-lexers-1.1.1.ebuild2
-rw-r--r--dev-python/ipython/ipython-9.3.0.ebuild2
-rw-r--r--dev-python/langdetect/Manifest2
-rw-r--r--dev-python/langdetect/files/langdetect-1.0.9-explicit-config.patch13
-rw-r--r--dev-python/langdetect/langdetect-1.0.9.ebuild6
-rw-r--r--dev-python/langdetect/metadata.xml10
-rw-r--r--dev-python/numexpr/numexpr-2.11.0.ebuild2
-rw-r--r--dev-python/pdm-backend/Manifest1
-rw-r--r--dev-python/pdm-backend/pdm-backend-2.4.5.ebuild75
-rw-r--r--dev-python/pdm/Manifest2
-rw-r--r--dev-python/pdm/pdm-2.25.2.ebuild81
-rw-r--r--dev-python/pdm/pdm-2.25.3.ebuild81
-rw-r--r--dev-python/pdm/pdm-2.25.4-r1.ebuild (renamed from dev-python/pdm/pdm-2.25.4.ebuild)7
-rw-r--r--dev-python/pycares/pycares-4.9.0.ebuild2
-rw-r--r--dev-python/pydantic/pydantic-2.11.6.ebuild2
-rw-r--r--dev-python/pymongo/pymongo-4.13.1.ebuild2
-rw-r--r--dev-python/pynacl/pynacl-1.5.0-r4.ebuild2
-rw-r--r--dev-python/pypy-exe-bin/Manifest8
-rw-r--r--dev-python/pypy-exe-bin/pypy-exe-bin-7.3.20.ebuild82
-rw-r--r--dev-python/pypy-exe/Manifest2
-rw-r--r--dev-python/pypy-exe/pypy-exe-7.3.20.ebuild187
-rw-r--r--dev-python/pyqt6-sip/pyqt6-sip-13.10.2.ebuild2
-rw-r--r--dev-python/pytest-qt/Manifest1
-rw-r--r--dev-python/pytest-qt/pytest-qt-4.5.0.ebuild76
-rw-r--r--dev-python/python-tests/python-tests-3.13.5.ebuild2
-rw-r--r--dev-python/pyzmq/pyzmq-27.0.0.ebuild2
-rw-r--r--dev-python/scikit-build-core/scikit-build-core-0.11.4.ebuild2
-rw-r--r--dev-python/sqlglot/Manifest4
-rw-r--r--dev-python/sqlglot/sqlglot-26.31.0.ebuild178
-rw-r--r--dev-python/sqlglot/sqlglot-26.32.0.ebuild179
-rw-r--r--dev-python/translate-toolkit/Manifest1
-rw-r--r--dev-python/translate-toolkit/translate-toolkit-3.15.6.ebuild126
-rw-r--r--dev-python/twisted/twisted-25.5.0.ebuild2
-rw-r--r--dev-python/uv/uv-0.7.13.ebuild2
-rw-r--r--dev-python/yarl/yarl-1.20.1.ebuild2
48 files changed, 759 insertions, 563 deletions
diff --git a/dev-python/absl-py/Manifest b/dev-python/absl-py/Manifest
index 23081fdfc51d..2fa8102713c7 100644
--- a/dev-python/absl-py/Manifest
+++ b/dev-python/absl-py/Manifest
@@ -1 +1,2 @@
DIST abseil-py-2.3.0.gh.tar.gz 239167 BLAKE2B 13351c9740f33fa026447ba5500fc6f404857c25a2d343277911cbfc5fd57d4e0530546a27cc3882a06dcca4b313810e4d0d39c06af66a1245175b5c01d99270 SHA512 e6e4de6403e1c867129b288c15b5824953c98243d7088a0fee11ef50c71a375b0f1fc319bbb43da3e151b15d3f6299abe8894e5553c5cb199513b1e85fe16845
+DIST abseil-py-2.3.1.gh.tar.gz 239285 BLAKE2B 5b9a0449bf07b3d46a3f8e0c2ce1deefd076bf373d0b2d07c1f35dfae73e2fe34d5436b7c63e4122f09f86df75c4d0cfbfd3339c7dae4798a39dc462b8a48516 SHA512 926b9ddb17342f74e05142fa353331c6cc1699302dadad5b7ec8c68813f2b65becb0743b299f26cc1899fc688e9f70f1d2ed4919a76539c940e963a38feba3ba
diff --git a/dev-python/absl-py/absl-py-2.3.1.ebuild b/dev-python/absl-py/absl-py-2.3.1.ebuild
new file mode 100644
index 000000000000..c45c332efca8
--- /dev/null
+++ b/dev-python/absl-py/absl-py-2.3.1.ebuild
@@ -0,0 +1,81 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{11..14} )
+
+inherit distutils-r1
+
+MY_P=abseil-py-${PV}
+DESCRIPTION="Abseil Python Common Libraries"
+HOMEPAGE="
+ https://github.com/abseil/abseil-py/
+ https://pypi.org/project/absl-py/
+"
+SRC_URI="
+ https://github.com/abseil/abseil-py/archive/v${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
+
+RDEPEND="
+ dev-python/setuptools[${PYTHON_USEDEP}]
+"
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # what a nightmare... well, we could have called bazel but that would
+ # even worse
+ local helpers=(
+ absl/flags/tests/argparse_flags_test_helper.py:absl/flags/tests/argparse_flags_test_helper
+ absl/logging/tests/logging_functional_test_helper.py:absl/logging/tests/logging_functional_test_helper
+ absl/testing/tests/absltest_fail_fast_test_helper.py:absl/testing/tests/absltest_fail_fast_test_helper
+ absl/testing/tests/absltest_filtering_test_helper.py:absl/testing/tests/absltest_filtering_test_helper
+ absl/testing/tests/absltest_randomization_testcase.py:absl/testing/tests/absltest_randomization_testcase
+ absl/testing/tests/absltest_sharding_test_helper.py:absl/testing/tests/absltest_sharding_test_helper
+ absl/testing/tests/absltest_sharding_test_helper_no_tests.py:absl/testing/tests/absltest_sharding_test_helper_no_tests
+ absl/testing/tests/absltest_test_helper.py:absl/testing/tests/absltest_test_helper
+ absl/testing/tests/absltest_test_helper_skipped.py:absl/testing/tests/absltest_test_helper_skipped
+ absl/testing/tests/xml_reporter_helper_test.py:absl/testing/tests/xml_reporter_helper_test
+ absl/tests/app_test_helper.py:absl/tests/app_test_helper_pure_python
+ )
+
+ local x
+ for x in "${helpers[@]}"; do
+ local script=${x%:*}
+ local sym=${x#*:}
+ sed -i -e "1i#!/usr/bin/env python" "${script}" || die
+ chmod +x "${script}" || die
+ ln -s "${script##*/}" "${sym}" || die
+ done
+
+ # i don't wanna know how these pass for upstream with wrong helper names
+ sed -e 's:\(app_test_helper\)\.py:\1_pure_python:' \
+ -i absl/tests/app_test.py || die
+ sed -e 's:\(logging_functional_test_helper\)\.py:\1:' \
+ -i absl/logging/tests/logging_functional_test.py || die
+}
+
+python_test() {
+ local -x PYTHONPATH=.
+ local fails=0
+ while read -r -d '' x; do
+ ebegin "${x}"
+ "${EPYTHON}" "${x}"
+ eend ${?} || : "$(( fails += 1 ))"
+ done < <(find -name '*_test.py' -print0)
+
+ [[ ${fails} -ne 0 ]] && die "${fails} tests failed on ${EPYTHON}"
+
+ # we actually need to clean this up manually before running the test
+ # suite again...
+ chmod -R u+rwX "${T}"/absl_testing || die
+ rm -rf "${T}"/absl_testing || die
+}
diff --git a/dev-python/argon2-cffi/argon2-cffi-25.1.0.ebuild b/dev-python/argon2-cffi/argon2-cffi-25.1.0.ebuild
index 2386a8a3d871..697b5718b2ed 100644
--- a/dev-python/argon2-cffi/argon2-cffi-25.1.0.ebuild
+++ b/dev-python/argon2-cffi/argon2-cffi-25.1.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
+KEYWORDS="~alpha amd64 arm ~arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/argon2-cffi-bindings-21.2.0[${PYTHON_USEDEP}]
diff --git a/dev-python/asgiref/Manifest b/dev-python/asgiref/Manifest
index e1b75b3f0bf8..051f7a495998 100644
--- a/dev-python/asgiref/Manifest
+++ b/dev-python/asgiref/Manifest
@@ -1 +1,2 @@
DIST asgiref-3.8.1.tar.gz 35186 BLAKE2B ce18c03ad3de054375eb5c97792bfdb6b0ae19f8769f2968892d805d3c54c2d4e7dd7b05036bd786a828d0537fcebe983b46d38bdfc17d09be7e924ee3462d5c SHA512 3ef9ac2fcdce069cde96467abaa4a820c4eac19d40ce72e1afd0ca08279c00053a7e107966d766651def33a72a19c11559849b1032e89d62f544156590ef801d
+DIST asgiref-3.9.0.tar.gz 36772 BLAKE2B c6c83f29dba712976b6f2ec6c751885a1af8b9df6e8d6e616e844bacfbb57cd196c177ad27c1b55ca1dd3c66a7abbaa8f3dd3851925839295cd9d2308079a47e SHA512 6f0847cb28f1dc2d721b2540331270c18d4e9b0bf412fe5a0447ddc8abf133a6cd9254c333e56415af3cd3676db58516f695a64f99d70ab052b513ce0d59499e
diff --git a/dev-python/asgiref/asgiref-3.9.0.ebuild b/dev-python/asgiref/asgiref-3.9.0.ebuild
new file mode 100644
index 000000000000..ca66caa5d886
--- /dev/null
+++ b/dev-python/asgiref/asgiref-3.9.0.ebuild
@@ -0,0 +1,29 @@
+# Copyright 2020-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="ASGI utilities (successor to WSGI)"
+HOMEPAGE="
+ https://asgi.readthedocs.io/en/latest/
+ https://github.com/django/asgiref/
+ https://pypi.org/project/asgiref/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+EPYTEST_PLUGINS=( pytest-asyncio )
+distutils_enable_tests pytest
+
+[[ ${PV} != 3.9.0 ]] && die "Remove deselect"
+EPYTEST_DESELECT=(
+ # https://github.com/django/asgiref/pull/521
+ tests/test_garbage_collection.py
+)
diff --git a/dev-python/awkward-cpp/Manifest b/dev-python/awkward-cpp/Manifest
index 8af36a2aed87..d99f62145aa3 100644
--- a/dev-python/awkward-cpp/Manifest
+++ b/dev-python/awkward-cpp/Manifest
@@ -1 +1,2 @@
DIST awkward_cpp-46.tar.gz 1688149 BLAKE2B 0ea7c0c627a7a46b517d418b80b7e8d79f2b169c836a49ee7492be04df09a6ce228a60742af44803fa9f9e73c3e2eff80d0a5be521bf69c98d191d2f4df17f5f SHA512 787b7e85ae9cbf21cc2e5ae8434fffbc0b12a777a9fed6929e283d7e74dfbfedc6ccd2bd3e6b86c9cae3a75847a3f789d67e05ca49ccdf216434bd7f899ae715
+DIST awkward_cpp-47.tar.gz 1485902 BLAKE2B f084779cd3a378b62d9244b453111b609bdeaa94a765a5e895e192e9cf28a85ccbe2ca29dab45bde698be9c35bc8fed800afd910747300c20ff8bd3f8c986f74 SHA512 9aaa9274a8da12310232f6fb9f8cdedd0c92b486970bd530cf11c5ba13d1838ed333f17319a130a3b8c2b729408f5c7278a8ceed2f1a1ccb35b11f4822ff9262
diff --git a/dev-python/awkward-cpp/awkward-cpp-47.ebuild b/dev-python/awkward-cpp/awkward-cpp-47.ebuild
new file mode 100644
index 000000000000..64d2360bfa4b
--- /dev/null
+++ b/dev-python/awkward-cpp/awkward-cpp-47.ebuild
@@ -0,0 +1,38 @@
+# Copyright 2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=scikit-build-core
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="CPU kernels and compiled extensions for Awkward Array"
+HOMEPAGE="
+ https://github.com/scikit-hep/awkward/
+ https://pypi.org/project/awkward-cpp/
+"
+
+# MIT from rapidjson
+LICENSE="BSD MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+
+DEPEND="
+ >=dev-python/numpy-1.18.0[${PYTHON_USEDEP}]
+"
+RDEPEND="${DEPEND}"
+BDEPEND="
+ dev-python/pybind11[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+src_prepare() {
+ default
+ # https://github.com/scikit-build/scikit-build-core/issues/912
+ sed -i -e '/scikit-build-core/s:0\.10:0.8:' pyproject.toml || die
+}
diff --git a/dev-python/awkward/Manifest b/dev-python/awkward/Manifest
index 9c09b9d617b2..4b6616f48ffc 100644
--- a/dev-python/awkward/Manifest
+++ b/dev-python/awkward/Manifest
@@ -1,2 +1,2 @@
-DIST awkward-2.8.3.tar.gz 6221920 BLAKE2B 05e607247911858f24e53f296bb858279fff041334241ea1538d8ae5e8161282fffc43e0a4c1ded863f5a5a89ece88bfaec992aabbf875ae151e74397db721c4 SHA512 9b18f5da2c15c905662cc014f3f52d9c7b2a84f582747859f09aaf9b080d5d0d50b55b3a393fab6d52757b0d976fd74bc2da190c72e00d295c219a1e8356773c
DIST awkward-2.8.4.tar.gz 6222255 BLAKE2B 569f7ff0b1a16d806e82ae0e11fa3a65bcb457787415b5dfb1fcd0caa907cf09851feb32aec4fc15336bbe3411a0c00544693cc28a471c2e8180afd7bcb9919a SHA512 7592a2d147a7c2023d29843d18e3fadd487c0666912af27215610bdbce8c60e32e679a179c5a1dbe9c2ceff54dead035d4c9a4f5a14a0f4c1c1af4f7ff7ac557
+DIST awkward-2.8.5.tar.gz 6223297 BLAKE2B a5733b1d55c427f3a97ec1bf885ce77ed764b6b507cd1cfe057ca030ae433f9a796db4d73ff001c44595dcada6852a75b58ea3ba267dcba1ee8afd9681da3415 SHA512 3303858e0ffcd0d9bb967152a81ddaf64ee23ecb500c270b8280d916fb1b03382b341b776f7c19912c0a262ae418a681781a8ec6dd01b7b90344d8a8e0dcf50f
diff --git a/dev-python/awkward/awkward-2.8.3.ebuild b/dev-python/awkward/awkward-2.8.5.ebuild
index ee8d1c578774..1a391286ce13 100644
--- a/dev-python/awkward/awkward-2.8.3.ebuild
+++ b/dev-python/awkward/awkward-2.8.5.ebuild
@@ -20,7 +20,7 @@ SLOT="0"
KEYWORDS="~amd64"
RDEPEND="
- ~dev-python/awkward-cpp-46[${PYTHON_USEDEP}]
+ ~dev-python/awkward-cpp-47[${PYTHON_USEDEP}]
$(python_gen_cond_dep '
>=dev-python/importlib-metadata-4.13.0[${PYTHON_USEDEP}]
' 3.11)
@@ -46,12 +46,7 @@ EPYTEST_IGNORE=(
tests-cuda-kernels/
# fails if just caffe2 but not pytorch is installed
tests/test_3259_to_torch_from_torch.py
- # no idea why it fails, seems to be a numexpr error
- # see https://github.com/scikit-hep/awkward/issues/3402
- tests/test_0119_numexpr_and_broadcast_arrays.py
- tests/test_1125_to_arrow_from_arrow.py
- tests/test_1294_to_and_from_parquet.py
- tests/test_1440_start_v2_to_parquet.py
)
+EPYTEST_PLUGINS=()
distutils_enable_tests pytest
diff --git a/dev-python/fonttools/fonttools-4.58.4.ebuild b/dev-python/fonttools/fonttools-4.58.4.ebuild
index a37d28ca3cb2..7a69e9a27ccf 100644
--- a/dev-python/fonttools/fonttools-4.58.4.ebuild
+++ b/dev-python/fonttools/fonttools-4.58.4.ebuild
@@ -22,7 +22,7 @@ SRC_URI="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc x86"
IUSE="+native-extensions"
RDEPEND="
diff --git a/dev-python/frozenlist/frozenlist-1.7.0.ebuild b/dev-python/frozenlist/frozenlist-1.7.0.ebuild
index cb527e1eab33..35f51fc4caff 100644
--- a/dev-python/frozenlist/frozenlist-1.7.0.ebuild
+++ b/dev-python/frozenlist/frozenlist-1.7.0.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc x86"
IUSE="+native-extensions"
BDEPEND="
diff --git a/dev-python/greenlet/greenlet-3.2.3.ebuild b/dev-python/greenlet/greenlet-3.2.3.ebuild
index 1d0104166450..f4c1e8105620 100644
--- a/dev-python/greenlet/greenlet-3.2.3.ebuild
+++ b/dev-python/greenlet/greenlet-3.2.3.ebuild
@@ -19,7 +19,7 @@ HOMEPAGE="
LICENSE="MIT PSF-2"
SLOT="0"
-KEYWORDS="~alpha amd64 arm ~arm64 -hppa ~m68k ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 -hppa ~m68k ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/h5py/h5py-3.14.0.ebuild b/dev-python/h5py/h5py-3.14.0.ebuild
index 8c87c2ac4ada..43f27184e684 100644
--- a/dev-python/h5py/h5py-3.14.0.ebuild
+++ b/dev-python/h5py/h5py-3.14.0.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="amd64 ~arm ~arm64 ~riscv x86 ~amd64-linux ~x86-linux ~arm64-macos ~x64-macos"
+KEYWORDS="amd64 ~arm arm64 ~riscv x86 ~amd64-linux ~x86-linux ~arm64-macos ~x64-macos"
IUSE="examples"
DEPEND="
diff --git a/dev-python/ipython-pygments-lexers/ipython-pygments-lexers-1.1.1.ebuild b/dev-python/ipython-pygments-lexers/ipython-pygments-lexers-1.1.1.ebuild
index 3c030c0417f7..425dde03cc8b 100644
--- a/dev-python/ipython-pygments-lexers/ipython-pygments-lexers-1.1.1.ebuild
+++ b/dev-python/ipython-pygments-lexers/ipython-pygments-lexers-1.1.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~loong ~ppc ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~ppc ppc64 ~riscv ~s390 ~sparc ~x86"
RDEPEND="
dev-python/pygments[${PYTHON_USEDEP}]
diff --git a/dev-python/ipython/ipython-9.3.0.ebuild b/dev-python/ipython/ipython-9.3.0.ebuild
index 27a202cb70b0..ff330888120a 100644
--- a/dev-python/ipython/ipython-9.3.0.ebuild
+++ b/dev-python/ipython/ipython-9.3.0.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ~loong ~ppc ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~ppc ppc64 ~riscv ~s390 ~sparc ~x86"
IUSE="examples notebook nbconvert qt5 +smp test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/langdetect/Manifest b/dev-python/langdetect/Manifest
index d12ab8aeaca8..a11d7c268c91 100644
--- a/dev-python/langdetect/Manifest
+++ b/dev-python/langdetect/Manifest
@@ -1,3 +1 @@
DIST langdetect-1.0.9.tar.gz 981474 BLAKE2B ea8a9c3f16a2987c080742473bff4f2c1503f53fb3c2b40b0b1d6212bb6133ea22dce7864ffcfb8968c3a46b157d45cb3e2cf6f84bdbed0266cc716a853b032c SHA512 7558d674c47b080c79e43a00a25d2c7f77188cf60bea2cecb3bebb803d75e1aa42b43c74bd26ea1b541f4cb927421908882cbec01a91f0913984217e71ccc8db
-EBUILD langdetect-1.0.9.ebuild 494 BLAKE2B 9cd8a2a93a8d45bf51fe2324402b175d641762ea591fcb99459427f977a95eccffa6ca4777ca4df39814eea6eac62711567faa654456d32f79023a4685804504 SHA512 d973b85ba1a44389a4275f02a779a93a005f7c2e096467b94b072862e4984d5b42cf33f9821ac68aa5b85b12c98983a90b96049989d8c84497969174b6bb838e
-MISC metadata.xml 457 BLAKE2B 630128a3e982b6d60cc7b9f74c79fcb5ee47a71a02c73a50af9da8cedb6fad8e20a7f74b881e5b25c6483b92c9edbd56552cd38b2d9cbfa8b3eb4530facea969 SHA512 674f4f5cd809c6c77bc14e0f5687fa972bef14bdfa0b3343c5d66b7163eef1906eb87d060c8288732f825de71dce291ad0b841a5f2f0dd230f957b5687e45d45
diff --git a/dev-python/langdetect/files/langdetect-1.0.9-explicit-config.patch b/dev-python/langdetect/files/langdetect-1.0.9-explicit-config.patch
new file mode 100644
index 000000000000..637368d2f237
--- /dev/null
+++ b/dev-python/langdetect/files/langdetect-1.0.9-explicit-config.patch
@@ -0,0 +1,13 @@
+Fix "Package 'langdetect.profiles' is absent from the `packages` configuration."
+
+--- a/setup.py
++++ b/setup.py
+@@ -18,7 +18,7 @@ setup(
+ author_email='michal.danilak@gmail.com',
+ url='https://github.com/Mimino666/langdetect',
+ keywords='language detection library',
+- packages=['langdetect', 'langdetect.utils', 'langdetect.tests'],
++ packages=['langdetect', 'langdetect.utils', 'langdetect.tests', 'langdetect.profiles'],
+ include_package_data=True,
+ install_requires=['six'],
+ license='MIT',
diff --git a/dev-python/langdetect/langdetect-1.0.9.ebuild b/dev-python/langdetect/langdetect-1.0.9.ebuild
index 56733bbffc48..99577c43fc3e 100644
--- a/dev-python/langdetect/langdetect-1.0.9.ebuild
+++ b/dev-python/langdetect/langdetect-1.0.9.ebuild
@@ -1,9 +1,9 @@
-# Copyright 2022 Gentoo Authors
+# Copyright 2022-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
-PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
DISTUTILS_USE_PEP517=setuptools
inherit distutils-r1 pypi
@@ -19,4 +19,6 @@ KEYWORDS="~amd64"
RDEPEND="dev-python/six[${PYTHON_USEDEP}]"
+PATCHES=( "${FILESDIR}/${P}-explicit-config.patch" )
+
distutils_enable_tests unittest
diff --git a/dev-python/langdetect/metadata.xml b/dev-python/langdetect/metadata.xml
index 020e07f2a3dd..c0f74ac187e2 100644
--- a/dev-python/langdetect/metadata.xml
+++ b/dev-python/langdetect/metadata.xml
@@ -2,11 +2,9 @@
<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
- <email>marcin.deranek@slonko.net</email>
- <name>Marcin Deranek</name>
+ <email>pastalian46@gmail.com</email>
+ <name>Takuya Wakazono</name>
</maintainer>
- <upstream>
- <bugs-to>https://github.com/Mimino666/langdetect/issues</bugs-to>
- </upstream>
- <origin>slonko-overlay</origin>
+
+ <origin>gentoo-guru-overlay</origin>
</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/numexpr/numexpr-2.11.0.ebuild b/dev-python/numexpr/numexpr-2.11.0.ebuild
index 73848ec4f5ce..a931f7dda121 100644
--- a/dev-python/numexpr/numexpr-2.11.0.ebuild
+++ b/dev-python/numexpr/numexpr-2.11.0.ebuild
@@ -19,7 +19,7 @@ SRC_URI="https://github.com/pydata/numexpr/archive/v${PV}.tar.gz -> ${P}.gh.tar.
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~x64-macos"
DEPEND="
>=dev-python/numpy-2.0.0_rc:=[${PYTHON_USEDEP}]
diff --git a/dev-python/pdm-backend/Manifest b/dev-python/pdm-backend/Manifest
index fa267cd02e33..041d3b846dae 100644
--- a/dev-python/pdm-backend/Manifest
+++ b/dev-python/pdm-backend/Manifest
@@ -1 +1,2 @@
DIST pdm-backend-2.4.4.gh.tar.gz 157998 BLAKE2B 936289f56709633eb4d78b851b903e0f436f01d9949f96463fbad4448cb1688d8bad61a8a00e63524abf74f696830bb8227b428f78a050a2e3396545611119d3 SHA512 b8d6983d2df1028d30c046c9952e6182aed0b099e6d0d0b4cc784179cb3e4c9f518b58a6fe5c7a2d15b150dc134b7dc8c427ea142620e8bb29dd05be1a7efe1a
+DIST pdm-backend-2.4.5.gh.tar.gz 158378 BLAKE2B 1ff5e5dcee276d7cd68a18f6d5679c1d794479c596b14fbf90d1edd5e28d5478802a4a9961967b0a2e5b0fed8f0851d6915e703a776995982bff3aaba95d236f SHA512 0c106eb9de8ef1bd94cb772d30a420551d0efaa2f96482882e5ab87a1b866988a0e979f93da3295f89de0f6446a506dcdc3781e8bb6e49962127a7d7ec87191c
diff --git a/dev-python/pdm-backend/pdm-backend-2.4.5.ebuild b/dev-python/pdm-backend/pdm-backend-2.4.5.ebuild
new file mode 100644
index 000000000000..1f8480773265
--- /dev/null
+++ b/dev-python/pdm-backend/pdm-backend-2.4.5.ebuild
@@ -0,0 +1,75 @@
+# Copyright 2022-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=standalone
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1
+
+DESCRIPTION="A PEP 517 backend for PDM that supports PEP 621 metadata"
+HOMEPAGE="
+ https://pypi.org/project/pdm-backend/
+ https://github.com/pdm-project/pdm-backend/
+"
+SRC_URI="
+ https://github.com/pdm-project/pdm-backend/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+# see src/pdm/backend/_vendor/vendor.txt
+RDEPEND="
+ >=dev-python/editables-0.5[${PYTHON_USEDEP}]
+ >=dev-python/packaging-24.0[${PYTHON_USEDEP}]
+ >=dev-python/pyproject-metadata-0.9.0_beta7[${PYTHON_USEDEP}]
+ >=dev-python/tomli-w-1.0.0[${PYTHON_USEDEP}]
+
+ $(python_gen_cond_dep '
+ >=dev-python/tomli-2.0.1[${PYTHON_USEDEP}]
+ ' 3.10)
+"
+BDEPEND="
+ ${RDEPEND}
+ test? (
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ dev-vcs/git
+ )
+"
+# setuptools are used to build C extensions
+RDEPEND+="
+ dev-python/setuptools[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+src_prepare() {
+ rm -r src/pdm/backend/_vendor || die
+ find -name '*.py' -exec sed \
+ -e 's:from pdm\.backend\._vendor\.:from :' \
+ -e 's:from pdm\.backend\._vendor ::' \
+ -e 's:import pdm\.backend\._vendor\.:import :' \
+ -i {} + || die
+ distutils-r1_src_prepare
+}
+
+src_compile() {
+ # this must not be set during src_test()
+ local -x PDM_BUILD_SCM_VERSION=${PV}
+ distutils-r1_src_compile
+}
+
+src_test() {
+ git config --global user.email "test@example.com" || die
+ git config --global user.name "Test User" || die
+ distutils-r1_src_test
+}
+
+python_test() {
+ epytest -k "not [hg"
+}
diff --git a/dev-python/pdm/Manifest b/dev-python/pdm/Manifest
index a20d53ce60b4..e6a531de8b53 100644
--- a/dev-python/pdm/Manifest
+++ b/dev-python/pdm/Manifest
@@ -1,3 +1 @@
-DIST pdm-2.25.2.tar.gz 2662555 BLAKE2B 1f0c6653aacc7acc281d0dddfc76a7c47db412bc9b74f69d6ea57a787a2f52f81d6b2d8a8db08c1653135dbb986441a3ffefa9b5fc7f3e33e13c65a5bcd79aee SHA512 e68a60779445fd8007ede2f59ea47318d4eb64a9f5ab3561f4e46ab94c209d87bc564103b4bd0bd4229e5c1a9d55340207d18d13ced94aa78d3d82a4facdaf04
-DIST pdm-2.25.3.tar.gz 2662895 BLAKE2B 4d726c896616521e389134729c8ae54bf335d174446a061fa34b3e4b75b18e6c54f1b5aa78d5bac50d482732ea93ca0db7bca6eee84defc65c13ee2a0297635b SHA512 3eab897f87f9cce688d53d93fd14042919342eabaf311dbf08ec96022e68838c8b6660b1c334c35a7cb7365e6f019a4a9c36092b9d7bb082e72360ba14b2d5f5
DIST pdm-2.25.4.tar.gz 2663701 BLAKE2B 41bf5446b125788c9f136aea47f5911a173197868afc9bbb587820fae5c65c4621ad75369a4b6959c125e1a08428473f242e199c24ec50f8f8246b9312ee3d7a SHA512 afe6c0305ee41871e99ac03099376795072732b99697cb30edd06b1f36ec0bed6ce27396f445865f4395ed11c0e3f6bd4c7afc0bf0631c396636865257a5424a
diff --git a/dev-python/pdm/pdm-2.25.2.ebuild b/dev-python/pdm/pdm-2.25.2.ebuild
deleted file mode 100644
index 8e5f6e7bb25b..000000000000
--- a/dev-python/pdm/pdm-2.25.2.ebuild
+++ /dev/null
@@ -1,81 +0,0 @@
-# Copyright 2023-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=pdm-backend
-PYTHON_COMPAT=( python3_{9,10,11,12,13} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Python package and dependency manager supporting the latest PEP standards"
-HOMEPAGE="
- https://pdm-project.org/
- https://github.com/pdm-project/pdm/
- https://pypi.org/project/pdm/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~amd64 ~arm64"
-
-RDEPEND="
- dev-python/certifi[${PYTHON_USEDEP}]
- >=dev-python/dep-logic-0.5[${PYTHON_USEDEP}]
- <dev-python/findpython-1[${PYTHON_USEDEP}]
- >=dev-python/findpython-0.6.0[${PYTHON_USEDEP}]
- dev-python/blinker[${PYTHON_USEDEP}]
- dev-python/filelock[${PYTHON_USEDEP}]
- >=dev-python/hishel-0.0.32[${PYTHON_USEDEP}]
- >=dev-python/httpcore-1.0.6[${PYTHON_USEDEP}]
- dev-python/httpx[${PYTHON_USEDEP}]
- >=dev-python/id-1.5.0[${PYTHON_USEDEP}]
- dev-python/installer[${PYTHON_USEDEP}]
- dev-python/packaging[${PYTHON_USEDEP}]
- >=dev-python/pbs-installer-2025.06.06[${PYTHON_USEDEP}]
- dev-python/platformdirs[${PYTHON_USEDEP}]
- dev-python/pyproject-hooks[${PYTHON_USEDEP}]
- dev-python/python-dotenv[${PYTHON_USEDEP}]
- >=dev-python/resolvelib-1.1[${PYTHON_USEDEP}]
- dev-python/rich[${PYTHON_USEDEP}]
- dev-python/shellingham[${PYTHON_USEDEP}]
- dev-python/tomlkit[${PYTHON_USEDEP}]
- >=dev-python/truststore-0.9[${PYTHON_USEDEP}]
- >=dev-python/unearth-0.17.5[${PYTHON_USEDEP}]
- dev-python/virtualenv[${PYTHON_USEDEP}]
-"
-BDEPEND="
- ${RDEPEND}
- test? (
- dev-python/msgpack[${PYTHON_USEDEP}]
- dev-python/pytest-mock[${PYTHON_USEDEP}]
- dev-python/pytest-httpserver[${PYTHON_USEDEP}]
- dev-python/pytest-httpx[${PYTHON_USEDEP}]
- dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
- dev-python/uv
- )
-"
-
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-src_prepare() {
- distutils-r1_src_prepare
-
- # unpin deps
- sed -i -e 's:,<[0-9.a]*::' pyproject.toml || die
-}
-
-python_test() {
- local EPYTEST_DESELECT=(
- # Internet
- 'tests/models/test_candidates.py::test_expand_project_root_in_url[demo @ file:///${PROJECT_ROOT}/tests/fixtures/artifacts/demo-0.0.1.tar.gz]'
- # unhappy about extra packages being installed?
- # (also fails randomly in venv)
- tests/cli/test_build.py::test_build_with_no_isolation
- )
-
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
- epytest -m "not network and not integration and not path" \
- -p pytest_mock -p pytest_httpx -p pytest_httpserver
-}
diff --git a/dev-python/pdm/pdm-2.25.3.ebuild b/dev-python/pdm/pdm-2.25.3.ebuild
deleted file mode 100644
index 8e5f6e7bb25b..000000000000
--- a/dev-python/pdm/pdm-2.25.3.ebuild
+++ /dev/null
@@ -1,81 +0,0 @@
-# Copyright 2023-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=pdm-backend
-PYTHON_COMPAT=( python3_{9,10,11,12,13} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Python package and dependency manager supporting the latest PEP standards"
-HOMEPAGE="
- https://pdm-project.org/
- https://github.com/pdm-project/pdm/
- https://pypi.org/project/pdm/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~amd64 ~arm64"
-
-RDEPEND="
- dev-python/certifi[${PYTHON_USEDEP}]
- >=dev-python/dep-logic-0.5[${PYTHON_USEDEP}]
- <dev-python/findpython-1[${PYTHON_USEDEP}]
- >=dev-python/findpython-0.6.0[${PYTHON_USEDEP}]
- dev-python/blinker[${PYTHON_USEDEP}]
- dev-python/filelock[${PYTHON_USEDEP}]
- >=dev-python/hishel-0.0.32[${PYTHON_USEDEP}]
- >=dev-python/httpcore-1.0.6[${PYTHON_USEDEP}]
- dev-python/httpx[${PYTHON_USEDEP}]
- >=dev-python/id-1.5.0[${PYTHON_USEDEP}]
- dev-python/installer[${PYTHON_USEDEP}]
- dev-python/packaging[${PYTHON_USEDEP}]
- >=dev-python/pbs-installer-2025.06.06[${PYTHON_USEDEP}]
- dev-python/platformdirs[${PYTHON_USEDEP}]
- dev-python/pyproject-hooks[${PYTHON_USEDEP}]
- dev-python/python-dotenv[${PYTHON_USEDEP}]
- >=dev-python/resolvelib-1.1[${PYTHON_USEDEP}]
- dev-python/rich[${PYTHON_USEDEP}]
- dev-python/shellingham[${PYTHON_USEDEP}]
- dev-python/tomlkit[${PYTHON_USEDEP}]
- >=dev-python/truststore-0.9[${PYTHON_USEDEP}]
- >=dev-python/unearth-0.17.5[${PYTHON_USEDEP}]
- dev-python/virtualenv[${PYTHON_USEDEP}]
-"
-BDEPEND="
- ${RDEPEND}
- test? (
- dev-python/msgpack[${PYTHON_USEDEP}]
- dev-python/pytest-mock[${PYTHON_USEDEP}]
- dev-python/pytest-httpserver[${PYTHON_USEDEP}]
- dev-python/pytest-httpx[${PYTHON_USEDEP}]
- dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
- dev-python/uv
- )
-"
-
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-src_prepare() {
- distutils-r1_src_prepare
-
- # unpin deps
- sed -i -e 's:,<[0-9.a]*::' pyproject.toml || die
-}
-
-python_test() {
- local EPYTEST_DESELECT=(
- # Internet
- 'tests/models/test_candidates.py::test_expand_project_root_in_url[demo @ file:///${PROJECT_ROOT}/tests/fixtures/artifacts/demo-0.0.1.tar.gz]'
- # unhappy about extra packages being installed?
- # (also fails randomly in venv)
- tests/cli/test_build.py::test_build_with_no_isolation
- )
-
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
- epytest -m "not network and not integration and not path" \
- -p pytest_mock -p pytest_httpx -p pytest_httpserver
-}
diff --git a/dev-python/pdm/pdm-2.25.4.ebuild b/dev-python/pdm/pdm-2.25.4-r1.ebuild
index c0c38c9024f9..80a7cda9f9f4 100644
--- a/dev-python/pdm/pdm-2.25.4.ebuild
+++ b/dev-python/pdm/pdm-2.25.4-r1.ebuild
@@ -61,6 +61,9 @@ src_prepare() {
# unpin deps
sed -i -e 's:,<[0-9.a]*::' pyproject.toml || die
+ # remove pkgutil namespace magic, as it doesn't work and makes
+ # dev-python/pdm-backend tests test the wrong package
+ rm src/pdm/__init__.py || die
}
python_test() {
@@ -70,7 +73,9 @@ python_test() {
# unhappy about extra packages being installed?
# (also fails randomly in venv)
tests/cli/test_build.py::test_build_with_no_isolation
+ # TODO: random regression?
+ tests/cli/test_python.py::test_find_python
)
- epytest -m "not network and not integration and not path"
+ epytest -m "not network and not integration and not path"
}
diff --git a/dev-python/pycares/pycares-4.9.0.ebuild b/dev-python/pycares/pycares-4.9.0.ebuild
index f68608aff9ba..ccd15ce35c15 100644
--- a/dev-python/pycares/pycares-4.9.0.ebuild
+++ b/dev-python/pycares/pycares-4.9.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc x86"
IUSE="test"
# Tests fail with network-sandbox, since they try to resolve google.com
PROPERTIES="test_network"
diff --git a/dev-python/pydantic/pydantic-2.11.6.ebuild b/dev-python/pydantic/pydantic-2.11.6.ebuild
index 7c075ba16d33..d9275149f8bf 100644
--- a/dev-python/pydantic/pydantic-2.11.6.ebuild
+++ b/dev-python/pydantic/pydantic-2.11.6.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc x86"
+KEYWORDS="amd64 arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/annotated-types-0.6.0[${PYTHON_USEDEP}]
diff --git a/dev-python/pymongo/pymongo-4.13.1.ebuild b/dev-python/pymongo/pymongo-4.13.1.ebuild
index 545cb84a4738..b8532edc4434 100644
--- a/dev-python/pymongo/pymongo-4.13.1.ebuild
+++ b/dev-python/pymongo/pymongo-4.13.1.ebuild
@@ -23,7 +23,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc x86"
+KEYWORDS="~alpha amd64 arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc x86"
IUSE="doc kerberos +native-extensions +test-full"
RDEPEND="
diff --git a/dev-python/pynacl/pynacl-1.5.0-r4.ebuild b/dev-python/pynacl/pynacl-1.5.0-r4.ebuild
index f94c68a0cef3..cdc494331489 100644
--- a/dev-python/pynacl/pynacl-1.5.0-r4.ebuild
+++ b/dev-python/pynacl/pynacl-1.5.0-r4.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
DEPEND="
dev-libs/libsodium:=
diff --git a/dev-python/pypy-exe-bin/Manifest b/dev-python/pypy-exe-bin/Manifest
index e27529c7c197..95f746a8b0aa 100644
--- a/dev-python/pypy-exe-bin/Manifest
+++ b/dev-python/pypy-exe-bin/Manifest
@@ -6,3 +6,11 @@ DIST pypy-exe-7.3.19-1.ppc64le-musl.gpkg.tar 6717440 BLAKE2B 9e5258903f236bb504f
DIST pypy-exe-7.3.19-1.ppc64le.gpkg.tar 11161600 BLAKE2B 6000ff3033739645c942866272ed077108754923b9b134d99fbc59bcb8b5b1b3528d94280e6c72f7d587d4513d845bac9093db0d815ec6405aedcaf77a571d28 SHA512 13446e989274d99844ade99b7505e126baeb09b7187fd9fa6c5075cc7c95425867d2b299d42ce6fa5cbfe62b3509bb739688108e1f8fb8998e57660e152b081f
DIST pypy-exe-7.3.19-1.x86-musl.gpkg.tar 9963520 BLAKE2B e0d3d366f5fea84169c6806c11b108d77b823518c439ff9ad055d4f11e22c76800ddf09970ee963db9fb6d62fd1b46e5bedf0ea7785465127f501b1aac67fb44 SHA512 af7de4487566a5b3cb37e895e9c16858cda9e7e81b70f7573ca5ebf213677caf6fe56dbcb5f3445349286c9e10d40243c15800f278ddb8de8c4d9db8a83e9a91
DIST pypy-exe-7.3.19-1.x86.gpkg.tar 9912320 BLAKE2B 5df25fff2d98fa5662378b6e44bf954535771c12dac05ec1671c761b4743791d63c9a25132206f30229f1e2edab3ab4392ede84e6fc4ceecc351cac4f4db8d21 SHA512 d4457136dfe189cbe19a68a5234c4f3eecd9de241eb9eb75cdf333c3767ea1d300e2f4c64326f7185369a8ff49f0356c3bd4c01f02eef58d35f78ece7db94c43
+DIST pypy-exe-7.3.20-1.amd64-musl.gpkg.tar 13076480 BLAKE2B 5baa61d48ea0e6d94567262b67a62eeb20f695cb641ec8e1e19d5009501f51b62c8a9f28729a3093631a3303ff0eb770207f34fe38f5a68ab616630c859edc3e SHA512 03c4009f202f1f5316836f054e41b755dc6959929ad52e1588b6f95af7243e2da95ccb7120a8a373280819ac261bef7aa544fc5a8420b2f7892be32f2585599c
+DIST pypy-exe-7.3.20-1.amd64.gpkg.tar 13045760 BLAKE2B 54fdc97154a4776b498d2ea9589e9676dad7de319767f4c1ec7c0c7f7f5f7864215edb5988b0589205f46a76b62e01a7afc73cb9b8f6bcd8096cf8a88cbe5740 SHA512 70d4793db27c92e5c08b0e41c382569210463183eb7756d3c0c5815ee954699e297d721a5c10e02a8aeddf3b3df5aeb30fb1d4ee30beda1ce6aa7d005759831c
+DIST pypy-exe-7.3.20-1.arm64-musl.gpkg.tar 11069440 BLAKE2B 9a3172c91e2976123e08762ace8d6e3b4de26cfde54a4255c1fe3b3c606a3b9b520092dad72c674001ad48bba79a0c798754fcd82c5cb217b3bf8cb9a5fc663d SHA512 6570d288e701c36765642f1b62815abacc54f8aba1f62a715827785402f40ecbccb77d2936697524eb552aea6804d2bd983b939e1745ab7b8040ac014d6832b3
+DIST pypy-exe-7.3.20-1.arm64.gpkg.tar 11038720 BLAKE2B e3e321d1b881728303943b2f55d6341ebf8dd81011d331857d07152d78d7967b7f117e786964510cbe434952748c91df30883565c0b0830c440d0608624a8c75 SHA512 99420b6ef43b623dc38e64989966c422d10285e9f2d6f527bcce77a0f010e8015705ac4088b79ce543a011c85145348023f2c212b8bb87b17ef220559055a0d2
+DIST pypy-exe-7.3.20-1.ppc64le-musl.gpkg.tar 6656000 BLAKE2B c1cfdd5c344c6c3a5cef6958df09928a50e6d00653fdff1b88be11a1d49140c0f92ff9bd58e6fe02e1945824b6a1627f72f0897215bd9468d367ac766b3a8f38 SHA512 6e99631287b28a84db5ce9cdc20f00f45c45c6856f24f3f88ce3a411c7606ad72d82418ba85b0db4708f412071aa277062a13fe2bb8183be564e1771248028fe
+DIST pypy-exe-7.3.20-1.ppc64le.gpkg.tar 11141120 BLAKE2B a1d49d28fb87b4a18c81a4a7821585e593d36cc665a2f4a144ba143477812aff552f38d72658ffa672fc62adaea4ccf00357cb433da30bc0fb579496d94bbc60 SHA512 cb7e1624620c6fc99d18baee690ceaa3bffd9175f6392b9f5d65de136d1b47b01f09438eceeab7c18c55970f8d90de32c76abe7682ca5dba81d948a39a657936
+DIST pypy-exe-7.3.20-1.x86-musl.gpkg.tar 10014720 BLAKE2B 276a3f2d70a73829cb5acb7c185e9c9c0ded5f9e43fae82cd715297fe8dfd6a1a816e6ca6f7d4046f90d3271ca18042765e2eb4a051a60b6ac65530fed9549fc SHA512 e5ac44f88402466c3fe3fea27958a61e5f274fd5de303a9172bb80b4caa914a727bc0533ddd1007adea1be9937e2100fb86d7b04c22420bdd0fbd423dd4409b0
+DIST pypy-exe-7.3.20-1.x86.gpkg.tar 9973760 BLAKE2B ccac855fc15d5a9b5915eb42b1b201867fd621c1ef351386176b33b2e68c983d7f82695a19248208d431489a194a2c5f07839a881de77ff98da2ab77b15f5299 SHA512 008d27f98b65e41d88c594aeffcef57f1f48eb9590958462adbd98c00ff48acd260c378d9f02122e21b2a77d923a901dd55228faed039fcd612f9011d8779967
diff --git a/dev-python/pypy-exe-bin/pypy-exe-bin-7.3.20.ebuild b/dev-python/pypy-exe-bin/pypy-exe-bin-7.3.20.ebuild
new file mode 100644
index 000000000000..c68b78a12bd4
--- /dev/null
+++ b/dev-python/pypy-exe-bin/pypy-exe-bin-7.3.20.ebuild
@@ -0,0 +1,82 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit pax-utils unpacker
+
+MY_P=pypy-exe-${PV}-1
+DESCRIPTION="PyPy executable (pre-built version)"
+HOMEPAGE="
+ https://pypy.org/
+ https://github.com/pypy/pypy/
+"
+SRC_URI="
+ elibc_glibc? (
+ amd64? (
+ https://dev.gentoo.org/~mgorny/binpkg/amd64/pypy/dev-python/pypy-exe/${MY_P}.gpkg.tar
+ -> ${MY_P}.amd64.gpkg.tar
+ )
+ arm64? (
+ https://dev.gentoo.org/~mgorny/binpkg/arm64/pypy/dev-python/pypy-exe/${MY_P}.gpkg.tar
+ -> ${MY_P}.arm64.gpkg.tar
+ )
+ ppc64? (
+ https://dev.gentoo.org/~mgorny/binpkg/ppc64le/pypy/dev-python/pypy-exe/${MY_P}.gpkg.tar
+ -> ${MY_P}.ppc64le.gpkg.tar
+ )
+ x86? (
+ https://dev.gentoo.org/~mgorny/binpkg/x86/pypy/dev-python/pypy-exe/${MY_P}.gpkg.tar
+ -> ${MY_P}.x86.gpkg.tar
+ )
+ )
+ elibc_musl? (
+ amd64? (
+ https://dev.gentoo.org/~mgorny/binpkg/amd64-musl/pypy/dev-python/pypy-exe/${MY_P}.gpkg.tar
+ -> ${MY_P}.amd64-musl.gpkg.tar
+ )
+ arm64? (
+ https://dev.gentoo.org/~mgorny/binpkg/arm64-musl/pypy/dev-python/pypy-exe/${MY_P}.gpkg.tar
+ -> ${MY_P}.arm64-musl.gpkg.tar
+ )
+ ppc64? (
+ https://dev.gentoo.org/~mgorny/binpkg/ppc64le-musl/pypy/dev-python/pypy-exe/${MY_P}.gpkg.tar
+ -> ${MY_P}.ppc64le-musl.gpkg.tar
+ )
+ x86? (
+ https://dev.gentoo.org/~mgorny/binpkg/x86-musl/pypy/dev-python/pypy-exe/${MY_P}.gpkg.tar
+ -> ${MY_P}.x86-musl.gpkg.tar
+ )
+ )
+"
+S="${WORKDIR}"
+
+LICENSE="MIT"
+SLOT="${PV%_p*}"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86"
+
+# sys-devel/gcc for libgcc_s.so
+RDEPEND="
+ app-arch/bzip2:0/1
+ dev-libs/expat:0/0
+ dev-libs/libffi:0/8
+ sys-libs/ncurses:0/6
+ >=sys-libs/zlib-1.1.3:0/1
+ virtual/libintl:0/0
+ elibc_glibc? (
+ sys-devel/gcc
+ >=sys-libs/glibc-2.35
+ )
+ !dev-python/pypy-exe:${SLOT}
+"
+
+QA_PREBUILT="
+ usr/lib/pypy2.7/pypy-c-${SLOT}
+"
+
+src_install() {
+ insinto /
+ doins -r */image/usr
+ fperms +x "/usr/lib/pypy2.7/pypy-c-${SLOT}"
+ pax-mark m "${ED}/usr/lib/pypy2.7/pypy-c-${SLOT}"
+}
diff --git a/dev-python/pypy-exe/Manifest b/dev-python/pypy-exe/Manifest
index 7c1e6963a481..15d3a0018b89 100644
--- a/dev-python/pypy-exe/Manifest
+++ b/dev-python/pypy-exe/Manifest
@@ -1,2 +1,4 @@
DIST pypy2.7-gentoo-patches-7.3.19.tar.xz 5328 BLAKE2B c997c0e7f39a4a6a9ec34811b38fc8f9b90ccae8c958ca420074013d63a4f1b453b6331be79a2df299efe177cc99d91038ae56156d37b5f9b9f8715ccd2cb75d SHA512 7bac5331fa868c60b376e405df212a29d406f117035fbc1ad8bd6d81212ab2ea4ce5b6b40e8dbbb6303fe941152e37aae17608a2eca9efd16767c8844f6f5fdb
+DIST pypy2.7-gentoo-patches-7.3.20.tar.xz 5324 BLAKE2B d2ac71ae4360292d1f4661e10ec817bebdaceb00c6deb92eb8ffaf023d7f0e511c10f10aac6c60d436f9b0f34185e989a87780c99913d011a679df8cdb6f255d SHA512 69839ed3c5cba8983661da8719b06a3054b94fc1a3eca9ccf3546c523745811cd91963afb39ea9551fe98e8f71fab6c9344ccbb0378c2b51f0dca8aef7f04ac4
DIST pypy2.7-v7.3.19-src.tar.bz2 21011665 BLAKE2B b8e205927c829753dd3e5aba0868923efff73f62e5338d6200aab2470857fff9cf38763ab8b63a74a39299d4956d4794eedf5d474d083875bbb9cee9ea757e64 SHA512 8ab8d9c0fa94ec96ebfae30b7f97eb8dff6ad4ee17fa688df123927c45f3ffea2c7f5dbb98bd2f8a49f7db6baf0ba3e98fd230df0bdc8602e407fb2bc33144e3
+DIST pypy2.7-v7.3.20-src.tar.bz2 21016441 BLAKE2B 382830a4e2511b77861a96a52038f0f6ca69fd3a938cdc0434285dac217bbeacacb71a5566edad0240e7e7723924ee449b2237b3a84008e80922b19df8880638 SHA512 f23a065efc7f4ab4020de554ff1411b21d05364e19dd49f7026a9a1f90761342bdf5606f1522094991c189df449387ebf0f79240902b6836235cb3a4e89d6d3a
diff --git a/dev-python/pypy-exe/pypy-exe-7.3.20.ebuild b/dev-python/pypy-exe/pypy-exe-7.3.20.ebuild
new file mode 100644
index 000000000000..09f9c50bd2e6
--- /dev/null
+++ b/dev-python/pypy-exe/pypy-exe-7.3.20.ebuild
@@ -0,0 +1,187 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit check-reqs pax-utils toolchain-funcs
+
+PYPY_PV=${PV%_p*}
+MY_P=pypy2.7-v${PYPY_PV/_}
+PATCHSET="pypy2.7-gentoo-patches-${PV/_}"
+
+DESCRIPTION="PyPy executable (build from source)"
+HOMEPAGE="
+ https://pypy.org/
+ https://github.com/pypy/pypy/
+"
+SRC_URI="
+ https://downloads.python.org/pypy/${MY_P}-src.tar.bz2
+ https://buildbot.pypy.org/pypy/${MY_P}-src.tar.bz2
+ https://dev.gentoo.org/~mgorny/dist/python/${PATCHSET}.tar.xz
+"
+S="${WORKDIR}/${MY_P}-src"
+
+LICENSE="MIT"
+SLOT="${PYPY_PV}"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86 ~amd64-linux ~x86-linux"
+IUSE="bzip2 +jit low-memory ncurses cpu_flags_x86_sse2"
+
+DEPEND="
+ >=sys-libs/zlib-1.1.3:0=
+ dev-libs/libffi:0=
+ virtual/libintl:0=
+ dev-libs/expat:0=
+ bzip2? ( app-arch/bzip2:0= )
+ ncurses? ( sys-libs/ncurses:0= )
+"
+RDEPEND="
+ ${DEPEND}
+ !dev-python/pypy-exe-bin:${PYPY_PV}
+"
+# don't enforce the dep on dev-python/pypy with USE=low-memory
+# since it's going to cause circular dep with unhelpful error message
+BDEPEND="
+ !low-memory? (
+ || (
+ dev-lang/pypy:2.7
+ dev-python/pypy
+ dev-lang/python:2.7
+ )
+ )
+"
+
+check_env() {
+ if ! has_version -b dev-lang/pypy:2.7 &&
+ ! has_version -b dev-python/pypy
+ then
+ if use low-memory; then
+ eerror "USE=low-memory requires (a prior version of) dev-python/pypy"
+ eerror "installed."
+ else
+ ewarn "CPython 2.7 will be used to perform the translation. Upstream"
+ ewarn "recommends using (a prior version of) dev-python/pypy instead."
+ fi
+ elog "You can install a prebuilt version of PyPy first using e.g.:"
+ elog " $ emerge -1v dev-python/pypy dev-python/pypy-exe-bin"
+
+ if use low-memory; then
+ die "dev-python/pypy needs to be installed for USE=low-memory"
+ fi
+ fi
+
+ if use low-memory; then
+ CHECKREQS_MEMORY="1750M"
+ use amd64 && CHECKREQS_MEMORY="3500M"
+ else
+ CHECKREQS_MEMORY="3G"
+ use amd64 && CHECKREQS_MEMORY="6G"
+ fi
+
+ check-reqs_pkg_pretend
+}
+
+pkg_pretend() {
+ [[ ${MERGE_TYPE} != binary ]] && check_env
+}
+
+pkg_setup() {
+ [[ ${MERGE_TYPE} != binary ]] && check_env
+}
+
+src_prepare() {
+ local PATCHES=(
+ "${WORKDIR}/${PATCHSET}"
+ )
+ default
+}
+
+src_configure() {
+ tc-export CC
+
+ local jit_backend
+ if use jit; then
+ jit_backend='--jit-backend='
+
+ # We only need the explicit sse2 switch for x86.
+ # On other arches we can rely on autodetection which uses
+ # compiler macros. Plus, --jit-backend= doesn't accept all
+ # the modern values...
+
+ if use x86; then
+ if use cpu_flags_x86_sse2; then
+ jit_backend+=x86
+ else
+ jit_backend+=x86-without-sse2
+ fi
+ else
+ jit_backend+=auto
+ fi
+ fi
+
+ local args=(
+ --no-shared
+ $(usex jit -Ojit -O2)
+
+ ${jit_backend}
+
+ pypy/goal/targetpypystandalone
+ )
+
+ # Avoid linking against libraries disabled by use flags
+ local opts=(
+ bzip2:bz2
+ ncurses:_minimal_curses
+ )
+
+ local opt
+ for opt in "${opts[@]}"; do
+ local flag=${opt%:*}
+ local mod=${opt#*:}
+
+ args+=(
+ $(usex ${flag} --withmod --withoutmod)-${mod}
+ )
+ done
+
+ local interp
+ if use low-memory ||
+ has_version -b dev-lang/pypy:2.7 ||
+ has_version -b dev-python/pypy
+ then
+ einfo "Using already-installed PyPy to perform the translation."
+ interp=( pypy )
+ if use low-memory; then
+ local -x PYPY_GC_MAX_DELTA=200MB
+ interp+=( --jit loop_longevity=300 )
+ fi
+ else
+ einfo "Using CPython 2.7 to perform the translation."
+ interp=( python2.7 )
+
+ # reuse bundled pycparser to avoid external dep
+ mkdir -p "${T}"/pymod/cffi || die
+ : > "${T}"/pymod/cffi/__init__.py || die
+ cp -r lib_pypy/cffi/_pycparser "${T}"/pymod/cffi/ || die
+ local -x PYTHONPATH=${T}/pymod:${PYTHONPATH}
+ fi
+
+ # translate into the C sources
+ # we're going to build them ourselves since otherwise pypy does not
+ # free up the unneeded memory before spawning the compiler
+ set -- "${interp[@]}" rpython/bin/rpython --batch --source "${args[@]}"
+ echo -e "\033[1m${@}\033[0m"
+ "${@}" || die "translation failed"
+}
+
+src_compile() {
+ emake -C "${T}"/usession*-0/testing_1
+}
+
+src_install() {
+ local dest=/usr/lib/pypy2.7
+ exeinto "${dest}"
+ newexe "${T}"/usession*-0/testing_1/pypy-c pypy-c-${PYPY_PV}
+ insinto "${dest}"/include/${PYPY_PV}
+ doins include/pypy_*
+ pax-mark m "${ED}${dest}/pypy-c-${PYPY_PV}"
+}
diff --git a/dev-python/pyqt6-sip/pyqt6-sip-13.10.2.ebuild b/dev-python/pyqt6-sip/pyqt6-sip-13.10.2.ebuild
index 17429ac69fee..ec6b5ca54f86 100644
--- a/dev-python/pyqt6-sip/pyqt6-sip-13.10.2.ebuild
+++ b/dev-python/pyqt6-sip/pyqt6-sip-13.10.2.ebuild
@@ -14,4 +14,4 @@ HOMEPAGE="https://pypi.org/project/PyQt6-sip/"
LICENSE="BSD-2"
SLOT="0"
-KEYWORDS="amd64 ~arm arm64 ~loong ~ppc ppc64 ~riscv x86"
+KEYWORDS="amd64 arm arm64 ~loong ~ppc ppc64 ~riscv x86"
diff --git a/dev-python/pytest-qt/Manifest b/dev-python/pytest-qt/Manifest
index 0acc509ef1d1..378f53a7209c 100644
--- a/dev-python/pytest-qt/Manifest
+++ b/dev-python/pytest-qt/Manifest
@@ -1 +1,2 @@
DIST pytest-qt-4.4.0.tar.gz 125443 BLAKE2B db2653ffd220e6507edd9cd2610904e5d9c1f5b39edf7b2d5043ecb7951361a6bf75618c9847b62432e0182433f2df528fce300888cca405bdc03502d6ebe717 SHA512 57c6a1866c7685db5301faa42298f11ef3d3a030cbc72fb109a8d6166621625fac89365671f781e5c3d652a190567bec3bae6f12cdab20812f43c7ef8e4518fa
+DIST pytest_qt-4.5.0.tar.gz 128702 BLAKE2B c39abc147de4b9651308bf51fe6bef7285f27229c62f5b52d10357b05647b05fc7737c0a91c7032e88150af544e98044c2310b32154b93c4b3aaa30da76b7417 SHA512 84b4789e3017dfbbc0c36658bb36d175055cf2354612833aae91441e803457142d412edbe74823f916ac1cccb73efc87ed73b776a8b18cf71d66497514edc5cd
diff --git a/dev-python/pytest-qt/pytest-qt-4.5.0.ebuild b/dev-python/pytest-qt/pytest-qt-4.5.0.ebuild
new file mode 100644
index 000000000000..0d40685515b0
--- /dev/null
+++ b/dev-python/pytest-qt/pytest-qt-4.5.0.ebuild
@@ -0,0 +1,76 @@
+# 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_{9,10,11,12,13} )
+
+inherit distutils-r1 virtualx pypi
+
+DESCRIPTION="Pytest plugin for PyQt6 and PySide6 applications"
+HOMEPAGE="
+ https://pypi.org/project/pytest-qt/
+ https://github.com/pytest-dev/pytest-qt/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
+
+RDEPEND="
+ dev-python/pytest[${PYTHON_USEDEP}]
+ >=dev-python/pluggy-1.1[${PYTHON_USEDEP}]
+ dev-python/qtpy[gui,testlib,widgets(+),${PYTHON_USEDEP}]
+ dev-python/typing-extensions[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ || (
+ dev-python/pyqt6[gui,testlib,widgets,${PYTHON_USEDEP}]
+ dev-python/pyqt5[gui,testlib,widgets,${PYTHON_USEDEP}]
+ dev-python/pyside:6[gui,testlib,widgets,${PYTHON_USEDEP}]
+ )
+ )
+"
+
+distutils_enable_tests pytest
+distutils_enable_sphinx docs dev-python/sphinx-rtd-theme
+
+src_test() {
+ virtx distutils-r1_src_test
+}
+
+python_test() {
+ # warnings from other plugins cause the test output matchers to fail
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ local -x PYTEST_PLUGINS=pytestqt.plugin
+
+ local EPYTEST_DESELECT=(
+ # requires the window to be activated; that doesn't seem
+ # to be possible inside Xvfb
+ "tests/test_basics.py::test_wait_window[waitActive-True]"
+
+ # TODO
+ tests/test_exceptions.py::test_exceptions_dont_leak
+
+ # we are forcing a specific module via envvar, effectively
+ # overriding the config
+ tests/test_basics.py::test_qt_api_ini_config
+ tests/test_basics.py::test_qt_api_ini_config_with_envvar
+ )
+
+ local -x QT_API PYTEST_QT_API
+ for QT_API in PyQt{5,6} "pyside:6"; do
+ if has_version "dev-python/${QT_API}[gui,testlib,widgets,${PYTHON_USEDEP}]"
+ then
+ PYTEST_QT_API=${QT_API//:/}
+ einfo "Testing with ${EPYTHON} and ${PYTEST_QT_API}"
+ # force-disable xfail_strict as upstream as xfail assumptions
+ # don't seem to hold on arm64
+ nonfatal epytest -oxfail_strict=false ||
+ die -n "Tests failed with ${EPYTHON} and ${PYTEST_QT_API}" ||
+ return 1
+ fi
+ done
+}
diff --git a/dev-python/python-tests/python-tests-3.13.5.ebuild b/dev-python/python-tests/python-tests-3.13.5.ebuild
index ed1b0182b93c..99abaad5b3fb 100644
--- a/dev-python/python-tests/python-tests-3.13.5.ebuild
+++ b/dev-python/python-tests/python-tests-3.13.5.ebuild
@@ -28,7 +28,7 @@ S="${WORKDIR}/${MY_P}/Lib"
LICENSE="PSF-2"
SLOT="${PYVER}"
-KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc x86"
# enable by default to help CI handle it (we have no additional deps)
IUSE="+python_targets_${PYTHON_COMPAT[0]}"
REQUIRED_USE="${PYTHON_REQUIRED_USE}"
diff --git a/dev-python/pyzmq/pyzmq-27.0.0.ebuild b/dev-python/pyzmq/pyzmq-27.0.0.ebuild
index 3fc2e1b18f77..8d683dc56fb1 100644
--- a/dev-python/pyzmq/pyzmq-27.0.0.ebuild
+++ b/dev-python/pyzmq/pyzmq-27.0.0.ebuild
@@ -23,7 +23,7 @@ SRC_URI="
LICENSE="LGPL-3"
SLOT="0"
-KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~loong ~m68k ~ppc ~ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~ppc ~ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~x64-macos"
IUSE="drafts"
# There are additional test failures if zeromq has the draft api enabled, but pyzmq has it disabled.
diff --git a/dev-python/scikit-build-core/scikit-build-core-0.11.4.ebuild b/dev-python/scikit-build-core/scikit-build-core-0.11.4.ebuild
index 93c81ff191aa..3edae724d0f0 100644
--- a/dev-python/scikit-build-core/scikit-build-core-0.11.4.ebuild
+++ b/dev-python/scikit-build-core/scikit-build-core-0.11.4.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
# we always want [pyproject] extra
RDEPEND="
diff --git a/dev-python/sqlglot/Manifest b/dev-python/sqlglot/Manifest
index 26e35d1ef494..20b6fe7ed833 100644
--- a/dev-python/sqlglot/Manifest
+++ b/dev-python/sqlglot/Manifest
@@ -1,6 +1,2 @@
-DIST sqlglot-26.31.0-crates.tar.xz 8859792 BLAKE2B abb2051b392c53dc3caa705ddd8df7076819a26dcdaa89fa3760559a79578db01e86943c2d0ffb8006263c2dca3aa50d20023eae9d772f8ebd12a8a2d3266cdd SHA512 7cca439a06433a62bcd4a2af33d240f46e9b5240cc158edbc654efb37a464aa0f1ebbe9749b2fc6352127b4809b63af2341fac6240050c414e578ae99444ba5d
-DIST sqlglot-26.31.0.tar.gz 5341968 BLAKE2B 82db65bdfbb59ed62ed7ba381325121593d70d5a0a4d4c4b3bdc2d161250342794b52c062aafb8c50592665154e1b858df01dc0501e13817eb96c4e908166295 SHA512 d1308a0c14abbea57bbea2f40770efae495b4bd4f74d09b1aaed73638d0213adb8ad87c998f11f7edb25062e617cea9954f312000be38b5ff88f05f7782ae5af
-DIST sqlglot-26.32.0-crates.tar.xz 8859792 BLAKE2B abb2051b392c53dc3caa705ddd8df7076819a26dcdaa89fa3760559a79578db01e86943c2d0ffb8006263c2dca3aa50d20023eae9d772f8ebd12a8a2d3266cdd SHA512 7cca439a06433a62bcd4a2af33d240f46e9b5240cc158edbc654efb37a464aa0f1ebbe9749b2fc6352127b4809b63af2341fac6240050c414e578ae99444ba5d
-DIST sqlglot-26.32.0.tar.gz 5352453 BLAKE2B f17af9424a70b96755ea281fb829b5749f1ebf83d653c122cb5406de5bbcdf5b170bb2a17cd1770db87aa10127759b403f472d7139f19487fde1a22ed07fb87b SHA512 d13f79f324c3d76c97b2f5110dfe2de6c6ecd128eeef89dfc461a75a0bea26f433f6520c4c36c7488743faa2d42758539c0fe7f6daf703ab2da14607e046a01f
DIST sqlglot-26.33.0-crates.tar.xz 8859792 BLAKE2B abb2051b392c53dc3caa705ddd8df7076819a26dcdaa89fa3760559a79578db01e86943c2d0ffb8006263c2dca3aa50d20023eae9d772f8ebd12a8a2d3266cdd SHA512 7cca439a06433a62bcd4a2af33d240f46e9b5240cc158edbc654efb37a464aa0f1ebbe9749b2fc6352127b4809b63af2341fac6240050c414e578ae99444ba5d
DIST sqlglot-26.33.0.tar.gz 5353340 BLAKE2B 18ace866ec89ced24911803497e8cb5c55fc6c157bf62b893e90df914b8be3360403ffff67f196080cdef9b9b9078b86d471494ae9768e7947a8b4d5d39e49af SHA512 df38e899d59bdd07aca0e5370833133308f9c5be4d0c990bf8112a48776fae034b622938aba968769aa5dc5e2957d56da48c89045b91b2d33783e6e25acc4a7b
diff --git a/dev-python/sqlglot/sqlglot-26.31.0.ebuild b/dev-python/sqlglot/sqlglot-26.31.0.ebuild
deleted file mode 100644
index 49887dbb8979..000000000000
--- a/dev-python/sqlglot/sqlglot-26.31.0.ebuild
+++ /dev/null
@@ -1,178 +0,0 @@
-# Copyright 2023-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-CRATES="
- aho-corasick@1.1.3
- anes@0.1.6
- anstyle@1.0.10
- autocfg@1.1.0
- bumpalo@3.16.0
- cast@0.3.0
- cfg-if@1.0.0
- ciborium-io@0.2.2
- ciborium-ll@0.2.2
- ciborium@0.2.2
- clap@4.5.23
- clap_builder@4.5.23
- clap_lex@0.7.4
- criterion-plot@0.5.0
- criterion@0.5.1
- crossbeam-deque@0.8.6
- crossbeam-epoch@0.9.18
- crossbeam-utils@0.8.21
- crunchy@0.2.2
- either@1.13.0
- half@2.4.1
- heck@0.5.0
- hermit-abi@0.4.0
- indoc@2.0.4
- is-terminal@0.4.13
- itertools@0.10.5
- itoa@1.0.14
- js-sys@0.3.76
- libc@0.2.169
- log@0.4.22
- memchr@2.7.4
- memoffset@0.9.0
- num-traits@0.2.19
- once_cell@1.19.0
- oorandom@11.1.4
- plotters-backend@0.3.7
- plotters-svg@0.3.7
- plotters@0.3.7
- portable-atomic@1.9.0
- proc-macro2@1.0.89
- pyo3-build-config@0.25.0
- pyo3-ffi@0.25.0
- pyo3-macros-backend@0.25.0
- pyo3-macros@0.25.0
- pyo3@0.25.0
- quote@1.0.37
- rayon-core@1.12.1
- rayon@1.10.0
- regex-automata@0.4.9
- regex-syntax@0.8.5
- regex@1.11.1
- rustc-hash@2.1.0
- ryu@1.0.18
- same-file@1.0.6
- serde@1.0.216
- serde_derive@1.0.216
- serde_json@1.0.133
- syn@2.0.87
- target-lexicon@0.13.2
- tinytemplate@1.2.1
- unicode-ident@1.0.12
- unindent@0.2.3
- walkdir@2.5.0
- wasm-bindgen-backend@0.2.99
- wasm-bindgen-macro-support@0.2.99
- wasm-bindgen-macro@0.2.99
- wasm-bindgen-shared@0.2.99
- wasm-bindgen@0.2.99
- web-sys@0.3.76
- winapi-util@0.1.9
- windows-sys@0.52.0
- windows-sys@0.59.0
- windows-targets@0.52.6
- windows_aarch64_gnullvm@0.52.6
- windows_aarch64_msvc@0.52.6
- windows_i686_gnu@0.52.6
- windows_i686_gnullvm@0.52.6
- windows_i686_msvc@0.52.6
- windows_x86_64_gnu@0.52.6
- windows_x86_64_gnullvm@0.52.6
- windows_x86_64_msvc@0.52.6
-"
-
-CARGO_OPTIONAL=1
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{11..14} )
-
-inherit cargo distutils-r1 pypi optfeature
-
-DESCRIPTION="An easily customizable SQL parser and transpiler"
-HOMEPAGE="
- https://sqlglot.com/
- https://github.com/tobymao/sqlglot/
- https://pypi.org/project/sqlglot/
-"
-SRC_URI+="
- native-extensions? (
- https://github.com/gentoo-crate-dist/sqlglot/releases/download/v${PV}/${P}-crates.tar.xz
- )
-"
-
-LICENSE="MIT"
-LICENSE+=" native-extensions? ("
-# Dependent crate licenses
-LICENSE+="
- Apache-2.0 Apache-2.0-with-LLVM-exceptions MIT Unicode-DFS-2016
-"
-LICENSE+=" )"
-SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~x86"
-IUSE="+native-extensions"
-
-BDEPEND="
- native-extensions? (
- ${RUST_DEPEND}
- dev-util/maturin[${PYTHON_USEDEP}]
- )
- test? (
- dev-python/pytz[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_tests pytest
-
-QA_FLAGS_IGNORED="usr/lib.*/py.*/site-packages/sqlglotrs/sqlglotrs.*.so"
-
-pkg_setup() {
- use native-extensions && rust_pkg_setup
-}
-
-src_unpack() {
- cargo_src_unpack
-}
-
-python_compile() {
- distutils-r1_python_compile
-
- if use native-extensions; then
- local DISTUTILS_USE_PEP517=maturin
- local DISTUTILS_UPSTREAM_PEP517=maturin
- cd sqlglotrs || die
- distutils-r1_python_compile
- cd - >/dev/null || die
- fi
-}
-
-python_test() {
- local EPYTEST_DESELECT=(
- # timing, sigh
- # https://github.com/tobymao/sqlglot/issues/3961
- tests/test_generator.py::TestGenerator::test_generate_nested_binary
- )
- local EPYTEST_IGNORE=(
- # Tests require pyspark or duckdb which aren't in the tree.
- # Pandas would be a requirement normally, but it gets ignored by proxy.
- "tests/dataframe/integration/test_dataframe.py"
- "tests/dataframe/integration/test_grouped_data.py"
- "tests/dataframe/integration/test_session.py"
- "tests/test_executor.py"
- "tests/test_optimizer.py"
- )
-
- # make sure not to use an earlier installed version
- local -x SQLGLOTRS_TOKENIZER=$(usex native-extensions 1 0)
- rm -rf sqlglotrs || die
- epytest
-}
-
-pkg_postinst() {
- optfeature "simplifying timedelta expressions" dev-python/python-dateutil
-}
diff --git a/dev-python/sqlglot/sqlglot-26.32.0.ebuild b/dev-python/sqlglot/sqlglot-26.32.0.ebuild
deleted file mode 100644
index aa0c5230423e..000000000000
--- a/dev-python/sqlglot/sqlglot-26.32.0.ebuild
+++ /dev/null
@@ -1,179 +0,0 @@
-# Copyright 2023-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-CRATES="
- aho-corasick@1.1.3
- anes@0.1.6
- anstyle@1.0.10
- autocfg@1.1.0
- bumpalo@3.16.0
- cast@0.3.0
- cfg-if@1.0.0
- ciborium-io@0.2.2
- ciborium-ll@0.2.2
- ciborium@0.2.2
- clap@4.5.23
- clap_builder@4.5.23
- clap_lex@0.7.4
- criterion-plot@0.5.0
- criterion@0.5.1
- crossbeam-deque@0.8.6
- crossbeam-epoch@0.9.18
- crossbeam-utils@0.8.21
- crunchy@0.2.2
- either@1.13.0
- half@2.4.1
- heck@0.5.0
- hermit-abi@0.4.0
- indoc@2.0.4
- is-terminal@0.4.13
- itertools@0.10.5
- itoa@1.0.14
- js-sys@0.3.76
- libc@0.2.169
- log@0.4.22
- memchr@2.7.4
- memoffset@0.9.0
- num-traits@0.2.19
- once_cell@1.19.0
- oorandom@11.1.4
- plotters-backend@0.3.7
- plotters-svg@0.3.7
- plotters@0.3.7
- portable-atomic@1.9.0
- proc-macro2@1.0.89
- pyo3-build-config@0.25.0
- pyo3-ffi@0.25.0
- pyo3-macros-backend@0.25.0
- pyo3-macros@0.25.0
- pyo3@0.25.0
- quote@1.0.37
- rayon-core@1.12.1
- rayon@1.10.0
- regex-automata@0.4.9
- regex-syntax@0.8.5
- regex@1.11.1
- rustc-hash@2.1.0
- ryu@1.0.18
- same-file@1.0.6
- serde@1.0.216
- serde_derive@1.0.216
- serde_json@1.0.133
- syn@2.0.87
- target-lexicon@0.13.2
- tinytemplate@1.2.1
- unicode-ident@1.0.12
- unindent@0.2.3
- walkdir@2.5.0
- wasm-bindgen-backend@0.2.99
- wasm-bindgen-macro-support@0.2.99
- wasm-bindgen-macro@0.2.99
- wasm-bindgen-shared@0.2.99
- wasm-bindgen@0.2.99
- web-sys@0.3.76
- winapi-util@0.1.9
- windows-sys@0.52.0
- windows-sys@0.59.0
- windows-targets@0.52.6
- windows_aarch64_gnullvm@0.52.6
- windows_aarch64_msvc@0.52.6
- windows_i686_gnu@0.52.6
- windows_i686_gnullvm@0.52.6
- windows_i686_msvc@0.52.6
- windows_x86_64_gnu@0.52.6
- windows_x86_64_gnullvm@0.52.6
- windows_x86_64_msvc@0.52.6
-"
-
-CARGO_OPTIONAL=1
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{11..14} )
-
-inherit cargo distutils-r1 pypi optfeature
-
-DESCRIPTION="An easily customizable SQL parser and transpiler"
-HOMEPAGE="
- https://sqlglot.com/
- https://github.com/tobymao/sqlglot/
- https://pypi.org/project/sqlglot/
-"
-SRC_URI+="
- native-extensions? (
- https://github.com/gentoo-crate-dist/sqlglot/releases/download/v${PV}/${P}-crates.tar.xz
- )
-"
-
-LICENSE="MIT"
-LICENSE+=" native-extensions? ("
-# Dependent crate licenses
-LICENSE+="
- Apache-2.0 Apache-2.0-with-LLVM-exceptions MIT Unicode-DFS-2016
-"
-LICENSE+=" )"
-SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~x86"
-IUSE="+native-extensions"
-
-BDEPEND="
- native-extensions? (
- ${RUST_DEPEND}
- dev-util/maturin[${PYTHON_USEDEP}]
- )
- test? (
- dev-python/pytz[${PYTHON_USEDEP}]
- )
-"
-
-EPYTEST_PLUGINS=()
-distutils_enable_tests pytest
-
-QA_FLAGS_IGNORED="usr/lib.*/py.*/site-packages/sqlglotrs/sqlglotrs.*.so"
-
-pkg_setup() {
- use native-extensions && rust_pkg_setup
-}
-
-src_unpack() {
- cargo_src_unpack
-}
-
-python_compile() {
- distutils-r1_python_compile
-
- if use native-extensions; then
- local DISTUTILS_USE_PEP517=maturin
- local DISTUTILS_UPSTREAM_PEP517=maturin
- cd sqlglotrs || die
- distutils-r1_python_compile
- cd - >/dev/null || die
- fi
-}
-
-python_test() {
- local EPYTEST_DESELECT=(
- # timing, sigh
- # https://github.com/tobymao/sqlglot/issues/3961
- tests/test_generator.py::TestGenerator::test_generate_nested_binary
- )
- local EPYTEST_IGNORE=(
- # Tests require pyspark or duckdb which aren't in the tree.
- # Pandas would be a requirement normally, but it gets ignored by proxy.
- "tests/dataframe/integration/test_dataframe.py"
- "tests/dataframe/integration/test_grouped_data.py"
- "tests/dataframe/integration/test_session.py"
- "tests/test_executor.py"
- "tests/test_optimizer.py"
- )
-
- # make sure not to use an earlier installed version
- local -x SQLGLOTRS_TOKENIZER=$(usex native-extensions 1 0)
- rm -rf sqlglotrs || die
- epytest
-}
-
-pkg_postinst() {
- optfeature "simplifying timedelta expressions" dev-python/python-dateutil
-}
diff --git a/dev-python/translate-toolkit/Manifest b/dev-python/translate-toolkit/Manifest
index 8fa996b1d335..f042d81e2bec 100644
--- a/dev-python/translate-toolkit/Manifest
+++ b/dev-python/translate-toolkit/Manifest
@@ -1,2 +1,3 @@
DIST translate-3.15.3.gh.tar.gz 1173514 BLAKE2B 5a8ab1408a969c2795b64e6d7dd9f33310600dc0c8013ec0ca71bf19ff21e52c0f66458fd81935f7c8f85c40b519a21957495e17ed38aa7133910d78e36643df SHA512 ded40733479e2cfae040f312e72475e7f7acefa39c113024bbcaee586b67c8dfc2c3ae1ebf8e66110a941850fd9a9664f005cc016492b058f27519c813d87080
DIST translate-3.15.5.gh.tar.gz 1174304 BLAKE2B 682fe498a2f526d762ccc55a400d93fb8786ff1dc5bd5909c8de3a0cb96b656ab5bc1b2565914933e55210bdce6e167d797660de3ce385df4d43b751e0f343fa SHA512 8d76c7f4446e95eab0ce2618824f36ed3c2d172d239f9c4d8aa4236c5afb34beee2bb094eeff02f05721e67ff8c0d6390fed259b702ae79bb98d1c1f79e90150
+DIST translate-3.15.6.gh.tar.gz 1176856 BLAKE2B 4d23c254f89b84098f0e97dd6ba726129cedda3fc7bf7fad6d3171b5e66817bbf07025d8d1c2f8e7a5d643903ddc13668909fd06888fbd6fa152c83734be8791 SHA512 7881c6aba835003efb67ab0cf1f1420d1d4928d62fa04a6f15a49f49a5bb4d42eadbc3ae9b7dbe3ecbd756333a054c41f1f0fd45d9f6aedba609931233b691b1
diff --git a/dev-python/translate-toolkit/translate-toolkit-3.15.6.ebuild b/dev-python/translate-toolkit/translate-toolkit-3.15.6.ebuild
new file mode 100644
index 000000000000..1bdb412b6518
--- /dev/null
+++ b/dev-python/translate-toolkit/translate-toolkit-3.15.6.ebuild
@@ -0,0 +1,126 @@
+# 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_{9,10,11,12,13} )
+PYTHON_REQ_USE="sqlite"
+
+inherit distutils-r1
+
+MY_P=translate-${PV}
+DESCRIPTION="Toolkit to convert between many translation formats"
+HOMEPAGE="
+ https://github.com/translate/translate/
+ https://pypi.org/project/translate-toolkit/
+"
+SRC_URI="
+ https://github.com/translate/translate/archive/${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S="${WORKDIR}"/${MY_P}
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE="+html +ical +ini +subtitles +yaml"
+
+RDEPEND="
+ app-text/iso-codes
+ >=dev-python/chardet-3.0.4[${PYTHON_USEDEP}]
+ dev-python/cheroot[${PYTHON_USEDEP}]
+ >=dev-python/levenshtein-0.12.0[${PYTHON_USEDEP}]
+ >=dev-python/lxml-5.2.0[${PYTHON_USEDEP}]
+ >=dev-python/mistletoe-1.1.0[${PYTHON_USEDEP}]
+ >=dev-python/pyparsing-3[${PYTHON_USEDEP}]
+ dev-python/ruamel-yaml[${PYTHON_USEDEP}]
+ >=dev-python/cwcwidth-0.1.9[${PYTHON_USEDEP}]
+ sys-devel/gettext
+ html? ( dev-python/utidylib[${PYTHON_USEDEP}] )
+ ical? ( dev-python/vobject[${PYTHON_USEDEP}] )
+ ini? ( >=dev-python/iniparse-0.5[${PYTHON_USEDEP}] )
+ subtitles? ( media-video/gaupol[${PYTHON_USEDEP}] )
+ yaml? ( dev-python/pyyaml[${PYTHON_USEDEP}] )
+"
+# Technically, the test suite also has undeclared dependency
+# on dev-python/snapshottest but all the tests using it are broken
+# anyway, so we skip them.
+BDEPEND="
+ test? (
+ dev-python/phply[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # strip unnecessary pins
+ sed -i -e 's:,<[0-9.]*::' pyproject.toml || die
+}
+
+src_test() {
+ # unfortunately, this bad quality package doesn't support XDG_DATA_DIRS
+ # correctly, so we need to reassemble all data files in a single directory
+ local -x XDG_DATA_HOME=${T}/share
+ cp -r translate/share "${T}/" || die
+ cp -r "${ESYSROOT}"/usr/share/gaupol "${XDG_DATA_HOME}"/ || die
+
+ distutils-r1_src_test
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # Fails with network-sandbox (and even with it off but w/ softer fail)
+ 'tests/xliff_conformance/test_xliff_conformance.py::test_open_office_to_xliff'
+ 'tests/xliff_conformance/test_xliff_conformance.py::test_po_to_xliff'
+ # all tests based on snapshottest are broken and I'm too tired
+ # to figure this out
+ tests/translate/tools/test_pocount.py::test_{cases,output}
+ tests/translate/tools/test_junitmsgfmt.py::test_output
+ )
+ local EPYTEST_IGNORE=(
+ # unpackaged fluent.*
+ tests/translate/storage/test_fluent.py
+ # changes directory and does not change it back, sigh
+ tests/odf_xliff/test_odf_xliff.py
+ )
+
+ if ! has_version "dev-python/iniparse[${PYTHON_USEDEP}]"; then
+ EPYTEST_IGNORE+=(
+ translate/convert/test_ini2po.py
+ translate/convert/test_po2ini.py
+ )
+ fi
+
+ if ! has_version "media-video/gaupol[${PYTHON_USEDEP}]"; then
+ EPYTEST_IGNORE+=(
+ translate/storage/test_subtitles.py
+ )
+ fi
+
+ epytest
+}
+
+python_install_all() {
+ distutils-r1_python_install_all
+
+ insinto /usr
+ doins -r translate/share
+
+ if ! use html; then
+ rm "${ED}"/usr/bin/{html2po,po2html} || die
+ fi
+ if ! use ical; then
+ rm "${ED}"/usr/bin/{ical2po,po2ical} || die
+ fi
+ if ! use ini; then
+ rm "${ED}"/usr/bin/{ini2po,po2ini} || die
+ fi
+ if ! use subtitles; then
+ rm "${ED}"/usr/bin/{sub2po,po2sub} || die
+ fi
+}
diff --git a/dev-python/twisted/twisted-25.5.0.ebuild b/dev-python/twisted/twisted-25.5.0.ebuild
index 697d136bfd80..7d290250d81a 100644
--- a/dev-python/twisted/twisted-25.5.0.ebuild
+++ b/dev-python/twisted/twisted-25.5.0.ebuild
@@ -22,7 +22,7 @@ SRC_URI+="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos"
+KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos"
IUSE="conch http2 serial ssl test websockets"
RESTRICT="!test? ( test )"
diff --git a/dev-python/uv/uv-0.7.13.ebuild b/dev-python/uv/uv-0.7.13.ebuild
index e98cf453bea6..3b75663f0e0a 100644
--- a/dev-python/uv/uv-0.7.13.ebuild
+++ b/dev-python/uv/uv-0.7.13.ebuild
@@ -46,7 +46,7 @@ LICENSE+="
# ring crate
LICENSE+=" openssl"
SLOT="0"
-KEYWORDS="amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv x86"
+KEYWORDS="amd64 ~arm arm64 ~loong ~ppc ~ppc64 ~riscv x86"
IUSE="test"
RESTRICT="test"
PROPERTIES="test_network"
diff --git a/dev-python/yarl/yarl-1.20.1.ebuild b/dev-python/yarl/yarl-1.20.1.ebuild
index 1a36eb9bc88b..839ac6a45893 100644
--- a/dev-python/yarl/yarl-1.20.1.ebuild
+++ b/dev-python/yarl/yarl-1.20.1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc x86"
+KEYWORDS="~alpha amd64 arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc x86"
IUSE="+native-extensions"
RDEPEND="