summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
authorroot <root@alpha.trunkmasters.com>2026-09-12 20:06:40 -0500
committerroot <root@alpha.trunkmasters.com>2026-09-12 20:06:40 -0500
commit193236e34a32b643d816ed04394476eab7e04db7 (patch)
tree8b608b17886179a6530935fc0531c7a89a51d1a0 /dev-python
parent9f2ba2858a177b1c2335b5b46428ee7cec08c288 (diff)
downloadbaldeagleos-repo-193236e34a32b643d816ed04394476eab7e04db7.tar.gz
baldeagleos-repo-193236e34a32b643d816ed04394476eab7e04db7.tar.xz
baldeagleos-repo-193236e34a32b643d816ed04394476eab7e04db7.zip
Adding metadata
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/aiohttp-socks/aiohttp-socks-0.12.0.ebuild2
-rw-r--r--dev-python/alembic/alembic-1.19.1.ebuild2
-rw-r--r--dev-python/ansible-compat/ansible-compat-26.8.0.ebuild2
-rw-r--r--dev-python/aws-sam-translator/aws-sam-translator-1.112.0.ebuild2
-rw-r--r--dev-python/awscrt/Manifest1
-rw-r--r--dev-python/awscrt/awscrt-0.36.3.ebuild64
-rw-r--r--dev-python/cachelib/cachelib-0.15.4.ebuild2
-rw-r--r--dev-python/cappa/cappa-0.32.2.ebuild2
-rw-r--r--dev-python/cfn-lint/cfn-lint-1.55.1.ebuild2
-rw-r--r--dev-python/docstring-parser/docstring-parser-0.18.0.ebuild2
-rw-r--r--dev-python/elementpath/elementpath-5.1.4.ebuild2
-rw-r--r--dev-python/ensurepip-pip/Manifest1
-rw-r--r--dev-python/ensurepip-pip/ensurepip-pip-26.2.1.ebuild181
-rw-r--r--dev-python/ensurepip-setuptools/Manifest1
-rw-r--r--dev-python/ensurepip-setuptools/ensurepip-setuptools-82.0.1.ebuild137
-rw-r--r--dev-python/ensurepip-setuptools/ensurepip-setuptools-84.0.0.ebuild2
-rw-r--r--dev-python/ensurepip-wheel/ensurepip-wheel-0.48.0.ebuild2
-rw-r--r--dev-python/filelock/filelock-3.32.3.ebuild2
-rw-r--r--dev-python/gitpython/gitpython-3.1.61.ebuild2
-rw-r--r--dev-python/gmpy2/gmpy2-2.3.1.ebuild2
-rw-r--r--dev-python/greenlet/greenlet-3.5.5.ebuild2
-rw-r--r--dev-python/hatchling/hatchling-1.32.0.ebuild2
-rw-r--r--dev-python/httpx-socks/httpx-socks-0.13.1.ebuild2
-rw-r--r--dev-python/httpx2/Manifest2
-rw-r--r--dev-python/httpx2/httpx2-2.10.0.ebuild2
-rw-r--r--dev-python/httpx2/httpx2-2.7.0.ebuild107
-rw-r--r--dev-python/httpx2/httpx2-2.8.0.ebuild107
-rw-r--r--dev-python/inline-snapshot/Manifest2
-rw-r--r--dev-python/inline-snapshot/inline-snapshot-0.35.2.ebuild61
-rw-r--r--dev-python/inline-snapshot/inline-snapshot-0.35.4.ebuild2
-rw-r--r--dev-python/jinja2-time/jinja2-time-0.2.0-r1.ebuild2
-rw-r--r--dev-python/jupyter-builder/jupyter-builder-1.2.3.ebuild2
-rw-r--r--dev-python/jupyterlab/Manifest1
-rw-r--r--dev-python/jupyterlab/jupyterlab-4.5.9.ebuild76
-rw-r--r--dev-python/jupyterlab/jupyterlab-4.6.3.ebuild2
-rw-r--r--dev-python/knowit/knowit-0.6.1.ebuild2
-rw-r--r--dev-python/levenshtein/levenshtein-0.27.4.ebuild2
-rw-r--r--dev-python/logbook/logbook-1.10.0.ebuild2
-rw-r--r--dev-python/matplotlib/matplotlib-3.11.1.ebuild2
-rw-r--r--dev-python/ml-dtypes/ml-dtypes-0.6.0.ebuild2
-rw-r--r--dev-python/msgspec/msgspec-0.21.1.ebuild2
-rw-r--r--dev-python/nbformat/nbformat-5.11.0.ebuild2
-rw-r--r--dev-python/notebook/notebook-7.6.2.ebuild2
-rw-r--r--dev-python/numexpr/numexpr-2.14.2.ebuild2
-rw-r--r--dev-python/numpy/numpy-2.5.1.ebuild2
-rw-r--r--dev-python/orjson/orjson-3.12.0.ebuild2
-rw-r--r--dev-python/pbr/pbr-7.1.0.ebuild2
-rw-r--r--dev-python/pip/Manifest1
-rw-r--r--dev-python/pip/files/pip-26.2.1-unbundle.patch258
-rw-r--r--dev-python/pip/pip-26.2.1.ebuild196
-rw-r--r--dev-python/platformdirs/platformdirs-4.11.3.ebuild2
-rw-r--r--dev-python/progressbar2/progressbar2-4.6.0.ebuild2
-rw-r--r--dev-python/pygit2/pygit2-1.20.0.ebuild2
-rw-r--r--dev-python/pylint/pylint-4.0.7.ebuild2
-rw-r--r--dev-python/pyphen/pyphen-0.18.1.ebuild2
-rw-r--r--dev-python/pytest-django/Manifest1
-rw-r--r--dev-python/pytest-django/pytest-django-4.12.0.ebuild50
-rw-r--r--dev-python/pytest-django/pytest-django-4.14.0.ebuild2
-rw-r--r--dev-python/pytest-forked/pytest-forked-1.7.5.ebuild2
-rw-r--r--dev-python/pytest-lazy-fixtures/pytest-lazy-fixtures-1.4.1.ebuild2
-rw-r--r--dev-python/pytest-localftpserver/pytest-localftpserver-1.6.0.ebuild2
-rw-r--r--dev-python/pytest-rerunfailures/pytest-rerunfailures-16.5.ebuild2
-rw-r--r--dev-python/pytest-salt-factories/Manifest1
-rw-r--r--dev-python/pytest-salt-factories/pytest-salt-factories-1.0.0_rc29.ebuild88
-rw-r--r--dev-python/python-socks/python-socks-3.0.0.ebuild2
-rw-r--r--dev-python/s3transfer/s3transfer-0.19.2.ebuild2
-rw-r--r--dev-python/selenium/selenium-4.47.0.ebuild2
-rw-r--r--dev-python/setuptools/Manifest1
-rw-r--r--dev-python/setuptools/setuptools-82.0.1.ebuild122
-rw-r--r--dev-python/setuptools/setuptools-84.0.0.ebuild2
-rw-r--r--dev-python/sphinx-inline-tabs/sphinx-inline-tabs-2025.12.21.14.ebuild2
-rw-r--r--dev-python/sqlalchemy/sqlalchemy-2.0.52.ebuild2
-rw-r--r--dev-python/sqlparse/sqlparse-0.6.0.ebuild2
-rw-r--r--dev-python/starlette/starlette-1.6.0.ebuild2
-rw-r--r--dev-python/time-machine/time-machine-3.4.0.ebuild2
-rw-r--r--dev-python/tldextract/tldextract-5.3.2.ebuild2
-rw-r--r--dev-python/tree-sitter/Manifest1
-rw-r--r--dev-python/tree-sitter/tree-sitter-0.26.0_p20260816.ebuild60
-rw-r--r--dev-python/trio/trio-0.34.0.ebuild2
-rw-r--r--dev-python/type-lens/type-lens-0.2.6.ebuild2
-rw-r--r--dev-python/types-setuptools/Manifest3
-rw-r--r--dev-python/types-setuptools/types-setuptools-83.0.0.20260706.ebuild20
-rw-r--r--dev-python/types-setuptools/types-setuptools-83.0.0.20260716.ebuild20
-rw-r--r--dev-python/types-setuptools/types-setuptools-83.0.0.20260724.ebuild20
-rw-r--r--dev-python/types-setuptools/types-setuptools-84.0.0.20260812.ebuild2
-rw-r--r--dev-python/typing-inspection/typing-inspection-0.4.4.ebuild2
-rw-r--r--dev-python/unicode-segmentation-rs/Manifest16
-rw-r--r--dev-python/unicode-segmentation-rs/unicode-segmentation-rs-0.2.4.ebuild56
-rw-r--r--dev-python/unicode-segmentation-rs/unicode-segmentation-rs-0.3.3.ebuild2
-rw-r--r--dev-python/urwid/urwid-4.0.9.ebuild2
-rw-r--r--dev-python/uvicorn/Manifest2
-rw-r--r--dev-python/uvicorn/uvicorn-0.51.0.ebuild70
-rw-r--r--dev-python/uvicorn/uvicorn-0.52.3.ebuild2
-rw-r--r--dev-python/virtualenv/virtualenv-21.7.4.ebuild2
-rw-r--r--dev-python/wcmatch/wcmatch-11.0.1.ebuild2
-rw-r--r--dev-python/wheel/wheel-0.48.0.ebuild2
-rw-r--r--dev-python/yaxmldiff/yaxmldiff-0.3.0.ebuild2
-rw-r--r--dev-python/ytmusicapi/ytmusicapi-1.12.2.ebuild2
98 files changed, 829 insertions, 1030 deletions
diff --git a/dev-python/aiohttp-socks/aiohttp-socks-0.12.0.ebuild b/dev-python/aiohttp-socks/aiohttp-socks-0.12.0.ebuild
index 7b1e9990ba0e..1d5c2bdfe9fb 100644
--- a/dev-python/aiohttp-socks/aiohttp-socks-0.12.0.ebuild
+++ b/dev-python/aiohttp-socks/aiohttp-socks-0.12.0.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~x86"
+KEYWORDS="amd64 ~arm arm64 x86"
RDEPEND="
>=dev-python/aiohttp-3.10.0[${PYTHON_USEDEP}]
diff --git a/dev-python/alembic/alembic-1.19.1.ebuild b/dev-python/alembic/alembic-1.19.1.ebuild
index 891ac6691bb2..4500ba72f4a7 100644
--- a/dev-python/alembic/alembic-1.19.1.ebuild
+++ b/dev-python/alembic/alembic-1.19.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+KEYWORDS="amd64 arm64 ~riscv x86"
IUSE="doc"
RDEPEND="
diff --git a/dev-python/ansible-compat/ansible-compat-26.8.0.ebuild b/dev-python/ansible-compat/ansible-compat-26.8.0.ebuild
index c66406c5f349..f0ce39ae6c3f 100644
--- a/dev-python/ansible-compat/ansible-compat-26.8.0.ebuild
+++ b/dev-python/ansible-compat/ansible-compat-26.8.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~riscv"
+KEYWORDS="amd64 ~arm64 ~riscv"
RDEPEND="
>=app-admin/ansible-core-2.18.6[${PYTHON_USEDEP}]
diff --git a/dev-python/aws-sam-translator/aws-sam-translator-1.112.0.ebuild b/dev-python/aws-sam-translator/aws-sam-translator-1.112.0.ebuild
index 57853452c1f4..c769f18bd74e 100644
--- a/dev-python/aws-sam-translator/aws-sam-translator-1.112.0.ebuild
+++ b/dev-python/aws-sam-translator/aws-sam-translator-1.112.0.ebuild
@@ -22,7 +22,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
+KEYWORDS="amd64 ~arm arm64 ~ppc64 ~riscv x86"
RDEPEND="
<dev-python/boto3-2[${PYTHON_USEDEP}]
diff --git a/dev-python/awscrt/Manifest b/dev-python/awscrt/Manifest
index 0838de46a99d..10b7a0fa6dab 100644
--- a/dev-python/awscrt/Manifest
+++ b/dev-python/awscrt/Manifest
@@ -1 +1,2 @@
DIST awscrt-0.36.2.tar.gz 37121147 BLAKE2B d75e83e023c7be0ed351df02056337bb6541dbbd8364e8e1037adf9644dbb0418f06a78789ed7d3823d9a30348dea77bd870b0af9bf3735f41f8f43b50a37d76 SHA512 e58de9bc41cdf7b70e15517da3025f1494e27a3eddf207fe571975e02a63b7a447900fc81b5fcf5c9876bd9ce514da02c7c7d8a39e90948d5cd03b96d644726a
+DIST awscrt-0.36.3.tar.gz 37812193 BLAKE2B 350a906fee04981975f5b983f0497fc028b13c4092563205e3364322502c6274ef0d7c10e283fbbc33357624973f501963391656765e7a96da8fa54fc3920b3b SHA512 94b4b4a5823bd373c7d72e52d6b8e734ba0080e5b8f1d045c60ce4ebffb9e9d7598f4246b849bff06cf8915018c87fc4af2be3f85cacc898bff55ea1abe633fe
diff --git a/dev-python/awscrt/awscrt-0.36.3.ebuild b/dev-python/awscrt/awscrt-0.36.3.ebuild
new file mode 100644
index 000000000000..3374314287ab
--- /dev/null
+++ b/dev-python/awscrt/awscrt-0.36.3.ebuild
@@ -0,0 +1,64 @@
+# Copyright 2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A common runtime for AWS Python projects"
+HOMEPAGE="
+ https://github.com/awslabs/aws-crt-python/
+ https://pypi.org/project/awscrt/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~riscv"
+
+DEPEND="
+ >=dev-libs/aws-c-common-1.0.0:=
+ >=dev-libs/aws-c-auth-1.0.0:=
+ >=dev-libs/aws-c-sdkutils-1.0.0:=
+ >=dev-libs/aws-c-cal-1.0.0:=
+ >=dev-libs/aws-c-io-1.0.0:=
+ >=dev-libs/aws-c-compression-1.0.0:=
+ >=dev-libs/aws-c-event-stream-1.0.0:=
+ >=dev-libs/aws-c-http-1.0.0:=
+ >=dev-libs/aws-c-auth-1.0.0:=
+ >=dev-libs/aws-c-mqtt-1.0.0:=
+ >=dev-libs/aws-c-s3-1.0.0:=
+ >=dev-libs/aws-checksums-1.0.0:=
+ dev-libs/openssl:=
+ dev-libs/s2n-tls:=
+"
+RDEPEND="
+ ${DEPEND}
+"
+BDEPEND="
+ test? (
+ dev-python/h2[${PYTHON_USEDEP}]
+ dev-python/websockets[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests unittest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # remove bundled libs
+ rm -r crt || die
+ export AWS_CRT_BUILD_USE_SYSTEM_LIBS=1
+
+ # Internet/DNS
+ sed -e 's:test_h2_remote_end_stream_ordering:_&:' \
+ -e 's:test_cross_thread_http2_client:_&:' \
+ -e 's:test_h2_client:_&:' \
+ -e 's:test_h2_manual_write_exception:_&:' \
+ -e 's:test_h2_remote_end_stream_ordering:_&:' \
+ -i test/test_{aio,}http_client.py || die
+}
diff --git a/dev-python/cachelib/cachelib-0.15.4.ebuild b/dev-python/cachelib/cachelib-0.15.4.ebuild
index eccab5eee32c..16201e107fe6 100644
--- a/dev-python/cachelib/cachelib-0.15.4.ebuild
+++ b/dev-python/cachelib/cachelib-0.15.4.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x86"
+KEYWORDS="amd64 ~arm arm64 ~ppc64 x86"
BDEPEND="
test? (
diff --git a/dev-python/cappa/cappa-0.32.2.ebuild b/dev-python/cappa/cappa-0.32.2.ebuild
index 16af47f62c6f..5876ae4045ae 100644
--- a/dev-python/cappa/cappa-0.32.2.ebuild
+++ b/dev-python/cappa/cappa-0.32.2.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64"
+KEYWORDS="amd64"
RDEPEND="
>=dev-python/rich-12.1.0[${PYTHON_USEDEP}]
diff --git a/dev-python/cfn-lint/cfn-lint-1.55.1.ebuild b/dev-python/cfn-lint/cfn-lint-1.55.1.ebuild
index 6e019a58d5c0..5005e0bd6fcc 100644
--- a/dev-python/cfn-lint/cfn-lint-1.55.1.ebuild
+++ b/dev-python/cfn-lint/cfn-lint-1.55.1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+KEYWORDS="amd64 arm64 ~riscv x86"
RDEPEND="
dev-python/jsonpatch[${PYTHON_USEDEP}]
diff --git a/dev-python/docstring-parser/docstring-parser-0.18.0.ebuild b/dev-python/docstring-parser/docstring-parser-0.18.0.ebuild
index 2b734bd41c85..58183d6b62bd 100644
--- a/dev-python/docstring-parser/docstring-parser-0.18.0.ebuild
+++ b/dev-python/docstring-parser/docstring-parser-0.18.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~x86"
+KEYWORDS="amd64 ~arm64 ~x86"
EPYTEST_PLUGINS=()
distutils_enable_tests pytest
diff --git a/dev-python/elementpath/elementpath-5.1.4.ebuild b/dev-python/elementpath/elementpath-5.1.4.ebuild
index 32c0ff12b73b..399cd0988a80 100644
--- a/dev-python/elementpath/elementpath-5.1.4.ebuild
+++ b/dev-python/elementpath/elementpath-5.1.4.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 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
BDEPEND="
test? (
diff --git a/dev-python/ensurepip-pip/Manifest b/dev-python/ensurepip-pip/Manifest
index cc088c7b0cc9..6a96866423bb 100644
--- a/dev-python/ensurepip-pip/Manifest
+++ b/dev-python/ensurepip-pip/Manifest
@@ -1,2 +1,3 @@
DIST flit_core-3.12.0-py3-none-any.whl 45594 BLAKE2B 7c6cb6eb03d45bbba27f27b3728881b57fe82dd38e03f884d3b7c46116eb2b9dd76f92bdaf7f594ef8ccbe12ec8f9a56424ff9e9fc7a839c4818a113fdf0c3d3 SHA512 790c12b1f43201e365fb3f8f2f0a54e1a578876799dfdf8bfeea679a25ea096bf62946d006618c1458ae6e37ce6d00998f37e9aba426d5ab80d32ef2d75da4e0
DIST pip-26.1.2.gh.tar.gz 9268753 BLAKE2B 8cbf0ecf25a2bdd148506ca0e2e778b9053759cf5fed3914b915454bd8810b1d7a27e3b2efb5fd29c4e6b189c7e8050f0da15ae6c259712446b5a35f44018ee0 SHA512 e29c98a7da5e329183b7eef86a66f9d6c3473051f64aa6e762714306148547eb0de4220824484071822a9a62bd01a62a09ab16bba4c26e4b847bfc2609728608
+DIST pip-26.2.1.gh.tar.gz 9301563 BLAKE2B eb7b929de0e99c84c9b1257f1bf737f524eb6de01075d40b36519b082d8a49e107dbd0eded9a8bf737ce8f7d452c5e5cffb853b000d6ac2936b5b84dd607c770 SHA512 03a00bdc4387a4e7e4e54672e9198893500d279912ece4cd144f015c568c974ecc2c3c7bd6abf108df852302ddd49468ef0bc514ca4323ee037d754e2fbfaee0
diff --git a/dev-python/ensurepip-pip/ensurepip-pip-26.2.1.ebuild b/dev-python/ensurepip-pip/ensurepip-pip-26.2.1.ebuild
new file mode 100644
index 000000000000..5987ad429465
--- /dev/null
+++ b/dev-python/ensurepip-pip/ensurepip-pip-26.2.1.ebuild
@@ -0,0 +1,181 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=flit-core
+# PYTHON_COMPAT is used only for testing
+PYTHON_COMPAT=( python3_{13..14} )
+PYTHON_REQ_USE="ssl(+),threads(+)"
+
+inherit distutils-r1 pypi
+
+FLIT_CORE_PV=3.12.0
+
+MY_P=${P#ensurepip-}
+DESCRIPTION="Shared pip wheel for ensurepip Python module"
+HOMEPAGE="
+ https://pip.pypa.io/en/stable/
+ https://pypi.org/project/pip/
+ https://github.com/pypa/pip/
+"
+SRC_URI="
+ https://github.com/pypa/pip/archive/${PV}.tar.gz -> ${MY_P}.gh.tar.gz
+ test? (
+ $(pypi_wheel_url flit-core "${FLIT_CORE_PV}")
+ )
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos ~x64-solaris"
+IUSE="test test-rust"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+ ${RDEPEND}
+ test? (
+ <dev-python/ensurepip-setuptools-80
+ dev-python/ensurepip-wheel
+ dev-python/freezegun[${PYTHON_USEDEP}]
+ dev-python/pretend[${PYTHON_USEDEP}]
+ dev-python/scripttest[${PYTHON_USEDEP}]
+ dev-python/virtualenv[${PYTHON_USEDEP}]
+ dev-python/werkzeug[${PYTHON_USEDEP}]
+ dev-python/wheel[${PYTHON_USEDEP}]
+ test-rust? (
+ dev-python/cryptography[${PYTHON_USEDEP}]
+ )
+ dev-vcs/git
+ )
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_RERUNS=5
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+declare -A VENDOR_LICENSES=(
+ [cachecontrol]=Apache-2.0
+ [certifi]=MPL-2.0
+ [distlib]=PSF-2
+ [distro]=Apache-2.0
+ [idna]=BSD
+ [msgpack]=Apache-2.0
+ [packaging]="|| ( Apache-2.0 MIT )"
+ [pkg_resources]=MIT
+ [platformdirs]=MIT
+ [pygments]=BSD-2
+ [pyproject_hooks]=MIT
+ [requests]=Apache-2.0
+ [resolvelib]=ISC
+ [rich]=MIT
+ [tomli]=MIT
+ [tomli_w]=MIT
+ [truststore]=MIT
+ [urllib3]=MIT
+)
+LICENSE+=" ${VENDOR_LICENSES[*]}"
+
+python_prepare_all() {
+ local PATCHES=(
+ # remove coverage & pytest-subket wheel expectation from test suite
+ # (from dev-python/pip)
+ "${FILESDIR}/pip-26.0-test-wheels.patch"
+ )
+
+ distutils-r1_python_prepare_all
+
+ if use test; then
+ local wheels=(
+ "${BROOT}"/usr/lib/python/ensurepip/{setuptools,wheel}-*.whl
+ "${DISTDIR}/$(pypi_wheel_name flit-core "${FLIT_CORE_PV}")"
+ )
+ mkdir tests/data/common_wheels/ || die
+ cp "${wheels[@]}" tests/data/common_wheels/ || die
+ fi
+
+ # Verify that we've covered licenses for all vendored packages
+ cd src/pip/_vendor || die
+ local packages=( */ )
+ local pkg missing=()
+ for pkg in "${packages[@]%/}"; do
+ if [[ ! -v "VENDOR_LICENSES[${pkg}]" ]]; then
+ missing+=( "${pkg}" )
+ else
+ unset "VENDOR_LICENSES[${pkg}]"
+ fi
+ done
+
+ if [[ ${missing[@]} || ${VENDOR_LICENSES[@]} ]]; then
+ [[ ${missing[@]} ]] &&
+ eerror "License missing for packages: ${missing[*]}"
+ [[ ${VENDOR_LICENSES[@]} ]] &&
+ eerror "Vendored packages removed: ${!VENDOR_LICENSES[*]}"
+ die "VENDOR_LICENSES outdated"
+ fi
+
+ local upstream_count=$(wc -l < vendor.txt || die)
+ if [[ ${#packages[@]} -ne ${upstream_count} ]]; then
+ eerror "VENDOR_LICENSES: ${#packages[@]}"
+ eerror "vendor.txt: ${upstream_count}"
+ die "Not all vendored packages matched"
+ fi
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ tests/functional/test_inspect.py::test_inspect_basic
+ # Internet
+ tests/functional/test_config_settings.py::test_backend_sees_config_via_sdist
+ tests/functional/test_install.py::test_double_install_fail
+ tests/functional/test_install.py::test_install_sdist_links
+ tests/functional/test_install_config.py::test_prompt_for_keyring_if_needed
+ tests/functional/test_lock.py::test_lock_archive
+ tests/functional/test_lock.py::test_lock_vcs
+ # broken by system site-packages use
+ tests/functional/test_freeze.py::test_freeze_with_setuptools
+ tests/functional/test_pip_runner_script.py::test_runner_work_in_environments_with_no_pip
+ tests/functional/test_uninstall.py::test_basic_uninstall_distutils
+ tests/unit/test_base_command.py::test_base_command_global_tempdir_cleanup
+ tests/unit/test_base_command.py::test_base_command_local_tempdir_cleanup
+ tests/unit/test_base_command.py::test_base_command_provides_tempdir_helpers
+ # require cmake wheel
+ tests/functional/test_build_env.py::test_build_env_can_still_access_python_tools_on_system_path
+ tests/functional/test_build_env.py::test_build_env_isolation[venv-inprocess]
+ tests/functional/test_build_env.py::test_build_env_isolation[venv-subprocess]
+ tests/functional/test_install_config.py::test_build_dependency_install_uses_same_keyring_as_root[legacy-isolation]
+ )
+ local EPYTEST_IGNORE=(
+ # from upstream options
+ src/pip/_vendor
+ tests/tests_cache
+ # requires proxy.py
+ tests/functional/test_proxy.py
+ )
+
+ if ! has_version "dev-python/cryptography[${PYTHON_USEDEP}]"; then
+ EPYTEST_DESELECT+=(
+ tests/functional/test_install.py::test_install_sends_client_cert
+ tests/functional/test_install_config.py::test_do_not_prompt_for_authentication
+ tests/functional/test_install_config.py::test_prompt_for_authentication
+ tests/functional/test_install_config.py::test_prompt_for_keyring_if_needed
+ )
+ fi
+
+ local -x PIP_DISABLE_PIP_VERSION_CHECK=1
+ # rerunfailures because test suite breaks if packages are installed
+ # in parallel
+ epytest -m "not network" -o addopts= -o tmp_path_retention_policy=all \
+ --use-venv
+}
+
+src_install() {
+ if [[ ${DISTUTILS_WHEEL_PATH} != *py3-none-any.whl ]]; then
+ die "Non-pure wheel produced?! ${DISTUTILS_WHEEL_PATH}"
+ fi
+ # TODO: compress it?
+ insinto /usr/lib/python/ensurepip
+ doins "${DISTUTILS_WHEEL_PATH}"
+}
diff --git a/dev-python/ensurepip-setuptools/Manifest b/dev-python/ensurepip-setuptools/Manifest
index 09d6960dbc0e..a46142278ef6 100644
--- a/dev-python/ensurepip-setuptools/Manifest
+++ b/dev-python/ensurepip-setuptools/Manifest
@@ -1,4 +1,3 @@
DIST setuptools-79.0.1-py3-none-any.whl 1256281 BLAKE2B 8ae51bdd1c0ccada116757c2bd765225fcf4bedc7ada18567ae12f09b6978cdbcddd4f635a39a5568b6d3ed4388e4f73af5c33a7060f2ac0d0907fc82d8fd74f SHA512 fef6cfc6f95a5bb7320f1680e1c665cb8d9a4e4227cde4d8aab8a50bed4bcf04320085b9d7d5343359f887008db5c5a861e57f3d08b7b0b2311a28adaeee6b4a
-DIST setuptools-82.0.1.tar.gz 1152316 BLAKE2B d7f6eaf62ec66355b65642bc20a7a549e167dd6d1c0cdb15926b6644a23cab7737d713cd9418e0cc09161eb0bff53ffd0b8781c96d9203717077121c1e3cc0d5 SHA512 5d70e9efd818245fb8119a4eed64d776078469ed884facc188f141ea491efd9fde5c10c928d3236ea5e2e431b16616f18ed14870b867f95e6320251707332395
DIST setuptools-83.0.0.tar.gz 1154254 BLAKE2B b82142ad699703352b4ec7843545f3f078e853d39fa93e2d0ee42b9914ebc9d04bc7de4954bce0a1e49f3befea39d14176ed4e7462d202d74ed503664765fba9 SHA512 d426f235471d30b41391bda63e8f3d461f54a6a4127594a2e2d0cab0c7576d511db5e5f211ed6cdac2afc620d3695e991a1dd08106f1201ec64697b14b3e0390
DIST setuptools-84.0.0.tar.gz 1168449 BLAKE2B b4dc28c42ea271dc2cac7f7218bec0819d043d52100df8c1ac7672092c2f45b62e731d18d76bc00a6392b60f8afb8c1f7e961050ee23b0e1c77bbd94e42481db SHA512 67721834362dd88c256cbd523413dbdcb99ca871bcc873ffa29c7667687973e1d5e15b0ea8ef4529711418b14d3d660771846877543001d4ab0fe8b4585ac9ad
diff --git a/dev-python/ensurepip-setuptools/ensurepip-setuptools-82.0.1.ebuild b/dev-python/ensurepip-setuptools/ensurepip-setuptools-82.0.1.ebuild
deleted file mode 100644
index 224badad4d90..000000000000
--- a/dev-python/ensurepip-setuptools/ensurepip-setuptools-82.0.1.ebuild
+++ /dev/null
@@ -1,137 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=standalone
-PYPI_PN=${PN#ensurepip-}
-# PYTHON_COMPAT used only for testing
-PYTHON_COMPAT=( python3_{13..14} )
-PYTHON_REQ_USE="xml(+)"
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Shared setuptools wheel for ensurepip Python module"
-HOMEPAGE="
- https://github.com/pypa/setuptools/
- https://pypi.org/project/setuptools/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos ~x64-solaris"
-IUSE="test"
-RESTRICT="!test? ( test )"
-
-BDEPEND="
- ${RDEPEND}
- test? (
- >=dev-python/build-1.0.3[${PYTHON_USEDEP}]
- >=dev-python/ini2toml-0.14[${PYTHON_USEDEP}]
- >=dev-python/filelock-3.4.0[${PYTHON_USEDEP}]
- >=dev-python/jaraco-envs-2.2[${PYTHON_USEDEP}]
- >=dev-python/jaraco-path-3.7.2[${PYTHON_USEDEP}]
- >=dev-python/jaraco-test-5.5[${PYTHON_USEDEP}]
- dev-python/pip[${PYTHON_USEDEP}]
- dev-python/pyproject-hooks[${PYTHON_USEDEP}]
- >=dev-python/tomli-w-1.0.0[${PYTHON_USEDEP}]
- >=dev-python/virtualenv-20[${PYTHON_USEDEP}]
- )
-"
-
-EPYTEST_PLUGINS=( pytest-{home,subprocess,timeout} )
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-declare -A VENDOR_LICENSES=(
- [autocommand]=LGPL-3
- [backports.tarfile]=MIT
- [importlib_metadata]=Apache-2.0
- [jaraco_context]=MIT
- [jaraco_functools]=MIT
- [jaraco.text]=MIT
- [more_itertools]=MIT
- [packaging]="|| ( Apache-2.0 MIT )"
- [platformdirs]=MIT
- [tomli]=MIT
- [wheel]=MIT
- [zipp]=MIT
-)
-LICENSE+=" ${VENDOR_LICENSES[*]}"
-
-src_prepare() {
- distutils-r1_src_prepare
-
- # Verify that we've covered licenses for all vendored packages
- cd setuptools/_vendor || die
- local packages=( *.dist-info )
- local pkg missing=()
- for pkg in "${packages[@]%%-*}"; do
- if [[ ! -v "VENDOR_LICENSES[${pkg}]" ]]; then
- missing+=( "${pkg}" )
- else
- unset "VENDOR_LICENSES[${pkg}]"
- fi
- done
-
- if [[ ${missing[@]} || ${VENDOR_LICENSES[@]} ]]; then
- [[ ${missing[@]} ]] &&
- eerror "License missing for packages: ${missing[*]}"
- [[ ${VENDOR_LICENSES[@]} ]] &&
- eerror "Vendored packages removed: ${!VENDOR_LICENSES[*]}"
- die "VENDOR_LICENSES outdated"
- fi
-}
-
-python_compile() {
- # If we're testing, install for all implementations.
- # If we're not, just get one wheel built.
- if use test || [[ -z ${DISTUTILS_WHEEL_PATH} ]]; then
- distutils-r1_python_compile
- fi
-}
-
-python_test() {
- local EPYTEST_DESELECT=(
- # TODO
- setuptools/tests/config/test_setupcfg.py::TestConfigurationReader::test_basic
- setuptools/tests/config/test_setupcfg.py::TestConfigurationReader::test_ignore_errors
- # TODO, probably some random package
- setuptools/tests/config/test_setupcfg.py::TestOptions::test_cmdclass
- # relies on -Werror
- setuptools/_static.py::setuptools._static.Dict
- setuptools/_static.py::setuptools._static.List
- # Internet
- setuptools/tests/test_namespaces.py::TestNamespaces::test_mixed_site_and_non_site
- setuptools/tests/test_namespaces.py::TestNamespaces::test_namespace_package_installed_and_cwd
- setuptools/tests/test_namespaces.py::TestNamespaces::test_packages_in_the_same_namespace_installed_and_cwd
- setuptools/tests/test_namespaces.py::TestNamespaces::test_pkg_resources_import
- # broken by warnings from setuptools-scm
- setuptools/tests/config/test_apply_pyprojecttoml.py::TestPresetField::test_scripts_dont_require_dynamic_entry_points
- # TODO
- setuptools/tests/test_config_discovery.py::TestDiscoverPackagesAndPyModules::test_py_modules_when_wheel_dir_is_cwd
- 'setuptools/tests/test_egg_info.py::TestEggInfo::test_requires[setup_requires_with_markers]'
- )
-
- case ${EPYTHON} in
- pypy3.11)
- EPYTEST_DESELECT+=(
- # fails and breaks other tests
- setuptools/tests/test_editable_install.py
- )
- ;;
- esac
-
- local -x PRE_BUILT_SETUPTOOLS_WHEEL=${DISTUTILS_WHEEL_PATH}
- epytest -o tmp_path_retention_policy=all \
- -m "not uses_network" setuptools
-}
-
-src_install() {
- if [[ ${DISTUTILS_WHEEL_PATH} != *py3-none-any.whl ]]; then
- die "Non-pure wheel produced?! ${DISTUTILS_WHEEL_PATH}"
- fi
- # TODO: compress it?
- insinto /usr/lib/python/ensurepip
- doins "${DISTUTILS_WHEEL_PATH}"
-}
diff --git a/dev-python/ensurepip-setuptools/ensurepip-setuptools-84.0.0.ebuild b/dev-python/ensurepip-setuptools/ensurepip-setuptools-84.0.0.ebuild
index ce9b184f5ef2..3479f704b64a 100644
--- a/dev-python/ensurepip-setuptools/ensurepip-setuptools-84.0.0.ebuild
+++ b/dev-python/ensurepip-setuptools/ensurepip-setuptools-84.0.0.ebuild
@@ -19,7 +19,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos ~x64-solaris"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/ensurepip-wheel/ensurepip-wheel-0.48.0.ebuild b/dev-python/ensurepip-wheel/ensurepip-wheel-0.48.0.ebuild
index e4f4d533089c..6b5207e34991 100644
--- a/dev-python/ensurepip-wheel/ensurepip-wheel-0.48.0.ebuild
+++ b/dev-python/ensurepip-wheel/ensurepip-wheel-0.48.0.ebuild
@@ -19,7 +19,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
BDEPEND="
test? (
diff --git a/dev-python/filelock/filelock-3.32.3.ebuild b/dev-python/filelock/filelock-3.32.3.ebuild
index 1f38026c0588..0c8f0c0c6c99 100644
--- a/dev-python/filelock/filelock-3.32.3.ebuild
+++ b/dev-python/filelock/filelock-3.32.3.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
BDEPEND="
dev-python/hatch-vcs[${PYTHON_USEDEP}]
diff --git a/dev-python/gitpython/gitpython-3.1.61.ebuild b/dev-python/gitpython/gitpython-3.1.61.ebuild
index ebe35bd5a941..3bce7e846e7a 100644
--- a/dev-python/gitpython/gitpython-3.1.61.ebuild
+++ b/dev-python/gitpython/gitpython-3.1.61.ebuild
@@ -27,7 +27,7 @@ SRC_URI+="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
dev-vcs/git
diff --git a/dev-python/gmpy2/gmpy2-2.3.1.ebuild b/dev-python/gmpy2/gmpy2-2.3.1.ebuild
index 3761b034c707..623fa100bd1b 100644
--- a/dev-python/gmpy2/gmpy2-2.3.1.ebuild
+++ b/dev-python/gmpy2/gmpy2-2.3.1.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="LGPL-3+"
SLOT="2"
-KEYWORDS="amd64 arm arm64 ~hppa ~loong ~mips ppc ~ppc64 ~riscv ~sparc x86 ~x64-macos"
+KEYWORDS="amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~sparc x86 ~x64-macos"
DEPEND="
>=dev-libs/mpc-1.0.2:=
diff --git a/dev-python/greenlet/greenlet-3.5.5.ebuild b/dev-python/greenlet/greenlet-3.5.5.ebuild
index 33588218e841..c69f59979da2 100644
--- a/dev-python/greenlet/greenlet-3.5.5.ebuild
+++ b/dev-python/greenlet/greenlet-3.5.5.ebuild
@@ -19,7 +19,7 @@ HOMEPAGE="
LICENSE="MIT PSF-2"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 -hppa ~m68k ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 -hppa ~m68k ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/hatchling/hatchling-1.32.0.ebuild b/dev-python/hatchling/hatchling-1.32.0.ebuild
index 1c1aa7618121..d777c10beead 100644
--- a/dev-python/hatchling/hatchling-1.32.0.ebuild
+++ b/dev-python/hatchling/hatchling-1.32.0.ebuild
@@ -24,7 +24,7 @@ S=${WORKDIR}/${MY_P}/backend
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos ~x64-solaris"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/httpx-socks/httpx-socks-0.13.1.ebuild b/dev-python/httpx-socks/httpx-socks-0.13.1.ebuild
index 20c1e958e905..adc26f14388a 100644
--- a/dev-python/httpx-socks/httpx-socks-0.13.1.ebuild
+++ b/dev-python/httpx-socks/httpx-socks-0.13.1.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/httpx-0.28.0[${PYTHON_USEDEP}]
diff --git a/dev-python/httpx2/Manifest b/dev-python/httpx2/Manifest
index 619e802beca6..e50180c9679c 100644
--- a/dev-python/httpx2/Manifest
+++ b/dev-python/httpx2/Manifest
@@ -1,5 +1,3 @@
DIST httpx2-2.10.0.gh.tar.gz 2140799 BLAKE2B b6d809bf1053f17abbadf6543b57133d112a07c112da54dee19f7c5bb08f5ce0606c1a822e4ba75b70ed155543faaeabfd84ca174a6d0b8bfa97515906bee2fe SHA512 18bfeac68d50a0851a8dcc996f0a6dbea99ab1d546bb2463e7abe466f2c0d71e44b8712af1e02cdf53be4a220003dad17ade625f7df431a05cf38eee02a953d0
DIST httpx2-2.12.0.gh.tar.gz 2144469 BLAKE2B be96a3cea133a993248d7743524c3208581f881c275486a3b4f8241c5410f4d9d3a0ceca15bd4cbb598a84e91a46f0ec7b54a9b091fed550b19a6512d6d172d7 SHA512 33bc7d37f6f9b20f275f36fd49b94734714f9f47dc4d4b2029d27a7cf7d2d4f5ee1da8060c4cea65750b9362c65964b4d2f90dc2cff1dbe42051fd2bca03542d
-DIST httpx2-2.7.0.gh.tar.gz 2084293 BLAKE2B 82a2ba5d9ea378ecd345e2f44e83a231e52c6a4551c854d2719387abc5a6b03da16fa8c99b731773ee73bbd7212eaa0843bab586edf0938751f0e545b7d170c5 SHA512 4badec86b0e5a4bf0c0974168e65ab24033598f414ea57af24d63c33d5c4700637de3a443cb552cf87f33c6aad3ed17fe498a7ed061d96bde0fe8c22073f3fb2
-DIST httpx2-2.8.0.gh.tar.gz 2086475 BLAKE2B 1fcf8504f7b7cafa4b1972c1696c1c93ce1d3989e7faa261278205155faa24e972072cf664f4b6e7f28d0d047cafd975bfc83881b4097379edc805bd40150b9d SHA512 140df21e9c18219c0f7a6892c4c2a1dcabd72ae15fe32c4a0bd0dc0670a0c2e3ec5de34befb4d1c4a44208c5e7a72664e58fa2b9b5dc0431ef0d95c461d70ed4
DIST httpx2-2.9.1.gh.tar.gz 2093326 BLAKE2B 2124f7276c6f6bac2304fd0bd4bdd388592f85f419c89c2e3ad0cb7f6ab9eb04fff6cdc1544a5e4a898e0034873784ac1d17d90f49ba4bd901c3d17de7003804 SHA512 8b0045ad01e1020414b5ea17a694e332d531007f59b7157765fa3e15dbe95c9e54717930fa1f860fba55edfde9fa3136f9f5107d4e5bfc96f4fc7e45ca1543fd
diff --git a/dev-python/httpx2/httpx2-2.10.0.ebuild b/dev-python/httpx2/httpx2-2.10.0.ebuild
index b479fe030b50..1ec1849dbe00 100644
--- a/dev-python/httpx2/httpx2-2.10.0.ebuild
+++ b/dev-python/httpx2/httpx2-2.10.0.ebuild
@@ -22,7 +22,7 @@ SRC_URI="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
IUSE="cli"
RDEPEND="
diff --git a/dev-python/httpx2/httpx2-2.7.0.ebuild b/dev-python/httpx2/httpx2-2.7.0.ebuild
deleted file mode 100644
index 94f06356db37..000000000000
--- a/dev-python/httpx2/httpx2-2.7.0.ebuild
+++ /dev/null
@@ -1,107 +0,0 @@
-# Copyright 2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=hatchling
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1
-
-# This package combines httpx2 and httpcore2 (because of exact version pin).
-DESCRIPTION="The next generation HTTP client (Pydantic fork)"
-HOMEPAGE="
- https://pypi.org/project/httpx2/
- https://pypi.org/project/httpcore2/
- https://github.com/pydantic/httpx2/
-"
-SRC_URI="
- https://github.com/pydantic/httpx2/archive/v${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
-IUSE="cli"
-
-RDEPEND="
- >=dev-python/anyio-4.10[${PYTHON_USEDEP}]
- >=dev-python/idna-3.18[${PYTHON_USEDEP}]
- >=dev-python/h11-0.16[${PYTHON_USEDEP}]
- >=dev-python/truststore-0.10[${PYTHON_USEDEP}]
- $(python_gen_cond_dep '
- >=dev-python/typing-extensions-4.5.0[${PYTHON_USEDEP}]
- ' 3.12)
- cli? (
- >=dev-python/click-8.4[${PYTHON_USEDEP}]
- =dev-python/pygments-2*[${PYTHON_USEDEP}]
- >=dev-python/rich-10[${PYTHON_USEDEP}]
- )
-"
-BDEPEND="
- dev-python/hatch-fancy-pypi-readme[${PYTHON_USEDEP}]
- dev-python/uv-dynamic-versioning[${PYTHON_USEDEP}]
- test? (
- dev-python/brotlicffi[${PYTHON_USEDEP}]
- dev-python/chardet[${PYTHON_USEDEP}]
- dev-python/cryptography[${PYTHON_USEDEP}]
- dev-python/h2[${PYTHON_USEDEP}]
- dev-python/starlette[${PYTHON_USEDEP}]
- dev-python/socksio[${PYTHON_USEDEP}]
- dev-python/trio[${PYTHON_USEDEP}]
- dev-python/trustme[${PYTHON_USEDEP}]
- dev-python/typing-extensions[${PYTHON_USEDEP}]
- dev-python/uvicorn[${PYTHON_USEDEP}]
- dev-python/websockets[${PYTHON_USEDEP}]
- >=dev-python/wsproto-1.2[${PYTHON_USEDEP}]
- $(python_gen_cond_dep '
- >=dev-python/zstandard-0.18.0[${PYTHON_USEDEP}]
- ' 3.12 3.13)
- )
-"
-
-EPYTEST_PLUGINS=( anyio flaky pytest-{httpbin,trio} )
-EPYTEST_RERUNS=5
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-python_compile() {
- local -x UV_DYNAMIC_VERSIONING_BYPASS=${PV}
-
- cd src/httpcore2 || die
- distutils-r1_python_compile
- cd ../httpx2 || die
- distutils-r1_python_compile
- cd ../.. || die
-}
-
-python_test() {
- local EPYTEST_DESELECT=(
- # random HTTP header case mismatch
- tests/httpx2/test_main.py::test_auth
- tests/httpx2/test_main.py::test_binary
- tests/httpx2/test_main.py::test_follow_redirects
- tests/httpx2/test_main.py::test_get
- tests/httpx2/test_main.py::test_json
- tests/httpx2/test_main.py::test_post
- tests/httpx2/test_main.py::test_redirects
- tests/httpx2/test_main.py::test_verbose
- # Internet
- tests/httpcore2/test_cancellations.py::test_h2_timeout_during_request
- tests/httpx2/client/test_proxies.py::test_async_proxy_close
- tests/httpx2/client/test_proxies.py::test_sync_proxy_close
- # unexpected logs from uvicorn
- tests/httpx2/test_utils.py::test_logging_request
- tests/httpx2/test_utils.py::test_logging_redirect_chain
- )
-
- local EPYTEST_IGNORE=()
- if ! use cli; then
- EPYTEST_IGNORE+=(
- tests/httpx2/test_main.py
- )
- fi
-
- epytest tests/{httpcore2,httpx2}
-}
diff --git a/dev-python/httpx2/httpx2-2.8.0.ebuild b/dev-python/httpx2/httpx2-2.8.0.ebuild
deleted file mode 100644
index 91015cb37a30..000000000000
--- a/dev-python/httpx2/httpx2-2.8.0.ebuild
+++ /dev/null
@@ -1,107 +0,0 @@
-# Copyright 2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=hatchling
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1
-
-# This package combines httpx2 and httpcore2 (because of exact version pin).
-DESCRIPTION="The next generation HTTP client (Pydantic fork)"
-HOMEPAGE="
- https://pypi.org/project/httpx2/
- https://pypi.org/project/httpcore2/
- https://github.com/pydantic/httpx2/
-"
-SRC_URI="
- https://github.com/pydantic/httpx2/archive/v${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
-IUSE="cli"
-
-RDEPEND="
- >=dev-python/anyio-4.10[${PYTHON_USEDEP}]
- >=dev-python/idna-3.18[${PYTHON_USEDEP}]
- >=dev-python/h11-0.16[${PYTHON_USEDEP}]
- >=dev-python/truststore-0.10[${PYTHON_USEDEP}]
- $(python_gen_cond_dep '
- >=dev-python/typing-extensions-4.5.0[${PYTHON_USEDEP}]
- ' 3.12)
- cli? (
- >=dev-python/click-8.4[${PYTHON_USEDEP}]
- =dev-python/pygments-2*[${PYTHON_USEDEP}]
- >=dev-python/rich-10[${PYTHON_USEDEP}]
- )
-"
-BDEPEND="
- dev-python/hatch-fancy-pypi-readme[${PYTHON_USEDEP}]
- dev-python/uv-dynamic-versioning[${PYTHON_USEDEP}]
- test? (
- dev-python/brotlicffi[${PYTHON_USEDEP}]
- dev-python/chardet[${PYTHON_USEDEP}]
- dev-python/cryptography[${PYTHON_USEDEP}]
- dev-python/h2[${PYTHON_USEDEP}]
- dev-python/starlette[${PYTHON_USEDEP}]
- dev-python/socksio[${PYTHON_USEDEP}]
- dev-python/trio[${PYTHON_USEDEP}]
- dev-python/trustme[${PYTHON_USEDEP}]
- dev-python/typing-extensions[${PYTHON_USEDEP}]
- dev-python/uvicorn[${PYTHON_USEDEP}]
- dev-python/websockets[${PYTHON_USEDEP}]
- >=dev-python/wsproto-1.2[${PYTHON_USEDEP}]
- $(python_gen_cond_dep '
- >=dev-python/zstandard-0.18.0[${PYTHON_USEDEP}]
- ' 3.12 3.13)
- )
-"
-
-EPYTEST_PLUGINS=( anyio flaky pytest-{httpbin,trio} )
-EPYTEST_RERUNS=5
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-python_compile() {
- local -x UV_DYNAMIC_VERSIONING_BYPASS=${PV}
-
- cd src/httpcore2 || die
- distutils-r1_python_compile
- cd ../httpx2 || die
- distutils-r1_python_compile
- cd ../.. || die
-}
-
-python_test() {
- local EPYTEST_DESELECT=(
- # random HTTP header case mismatch
- tests/httpx2/test_main.py::test_auth
- tests/httpx2/test_main.py::test_binary
- tests/httpx2/test_main.py::test_follow_redirects
- tests/httpx2/test_main.py::test_get
- tests/httpx2/test_main.py::test_json
- tests/httpx2/test_main.py::test_post
- tests/httpx2/test_main.py::test_redirects
- tests/httpx2/test_main.py::test_verbose
- # Internet
- tests/httpcore2/test_cancellations.py::test_h2_timeout_during_request
- tests/httpx2/client/test_proxies.py::test_async_proxy_close
- tests/httpx2/client/test_proxies.py::test_sync_proxy_close
- # unexpected logs from uvicorn
- tests/httpx2/test_utils.py::test_logging_request
- tests/httpx2/test_utils.py::test_logging_redirect_chain
- )
-
- local EPYTEST_IGNORE=()
- if ! use cli; then
- EPYTEST_IGNORE+=(
- tests/httpx2/test_main.py
- )
- fi
-
- epytest tests/{httpcore2,httpx2}
-}
diff --git a/dev-python/inline-snapshot/Manifest b/dev-python/inline-snapshot/Manifest
index a9f8665751ad..7523c34fcaf5 100644
--- a/dev-python/inline-snapshot/Manifest
+++ b/dev-python/inline-snapshot/Manifest
@@ -1,5 +1,3 @@
-DIST inline_snapshot-0.35.2.tar.gz 2534713 BLAKE2B 963bb24d4b89ad7a440a68b986abe3d7d341937615a190b963e6503fb72c281eb1602d88eb7f0a8c3b324fc47fbc358f21550ce9feeacfa2cfa7f4e39d7a9f67 SHA512 c87808c222cc658f4d1691859920bb8bd5e203ad1d04d3070bae78850831f08782ee08833e7151c52a5a3433c7ee615b5c9b683e3c4e3ad0cf4e621d219cd5c6
-DIST inline_snapshot-0.35.2.tar.gz.provenance 9909 BLAKE2B 81cb349fb13487809d034d1bfab50ff986ceb930a63479e6ef45a69c1b5c1a3bbd732504a1da6a52a4f0e2d8f007b8bf92988936e8d22f19798875751584938c SHA512 857ba6693cbb0a34fa7f3821c41a5dbce18852b07f1d395bf8d4484fbd77efd04042e96e0e04c2597291e50b29a10d6f87bb28b885648b1afb64324dabe34f19
DIST inline_snapshot-0.35.3.tar.gz 2535863 BLAKE2B 9155bf319416aa71ee9dadd469ca89765066a1cc34e777668f3dd1c15f84dd9c89b41308f2cd837f4745f5ae9964859520da0486ed5d1752796800f5063f2e5f SHA512 16b07648cc723e169443b727f3166edba7d1099e7e6b7ecff477b88773a6ac9db442d9abe0a30e6f2ba78bd36558dd003a481e00b32fac65435223f3fc405eab
DIST inline_snapshot-0.35.3.tar.gz.provenance 9909 BLAKE2B ae258fa2cba3129329f88694759627f47297d313899d75f4ed250a80f252bc4d7b9d87b4cfdda6ee8042a5e2a5f75fbe8513b12492abde90cb2a0e738d364985 SHA512 32103d78f06a9530727dccafed2951b32666e608886c0f7f96dd2afa58e17951f4f0d8b3683b8e2e4c91adc1c72b1a6beb79d46b53a373a2f36b4ae31bd4cdd5
DIST inline_snapshot-0.35.4.tar.gz 2537089 BLAKE2B c2651439a3dad5680c4deff9d9c1140f3dd3f596a4787857b06a85e662a8a1c5bc3012babdabc4df1618a3ceb7a8ce8dd4f2bd0c6e54f36d9d616880b579e92d SHA512 8e3e7537b21c012607337eb3792f79e2c96fb4befb034b8079453c1bdbfd58f8ceb494b9008be9eabce449e76e9eb6e6bb492e2cbacb14508abbe8226297d178
diff --git a/dev-python/inline-snapshot/inline-snapshot-0.35.2.ebuild b/dev-python/inline-snapshot/inline-snapshot-0.35.2.ebuild
deleted file mode 100644
index 7850b768c243..000000000000
--- a/dev-python/inline-snapshot/inline-snapshot-0.35.2.ebuild
+++ /dev/null
@@ -1,61 +0,0 @@
-# Copyright 2024-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/15r10nk/inline-snapshot
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Create and update inline snapshots in your Python tests"
-HOMEPAGE="
- https://15r10nk.github.io/inline-snapshot/
- https://github.com/15r10nk/inline-snapshot/
- https://pypi.org/project/inline-snapshot/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
-
-RDEPEND="
- >=dev-python/asttokens-2.0.5[${PYTHON_USEDEP}]
- >=dev-python/executing-2.2.0[${PYTHON_USEDEP}]
- >=dev-python/pytest-8.3.4[${PYTHON_USEDEP}]
- >=dev-python/rich-13.7.1[${PYTHON_USEDEP}]
- dev-python/typing-extensions[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- dev-python/attrs[${PYTHON_USEDEP}]
- >=dev-python/black-23.3.0[${PYTHON_USEDEP}]
- >=dev-python/dirty-equals-0.7.0[${PYTHON_USEDEP}]
- >=dev-python/hypothesis-6.75.5[${PYTHON_USEDEP}]
- dev-python/isort[${PYTHON_USEDEP}]
- dev-python/mypy[${PYTHON_USEDEP}]
- >=dev-python/pydantic-2[${PYTHON_USEDEP}]
- )
-"
-
-EPYTEST_PLUGIN_LOAD_VIA_ENV=1
-EPYTEST_PLUGINS=( "${PN}" pytest-{freezer,mock,xdist} )
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-python_test() {
- local EPYTEST_DESELECT=(
- # requires pyright
- 'tests/test_typing.py::test_typing_args[pyright]'
- 'tests/test_typing.py::test_typing_call[pyright]'
- # TODO
- 'tests/test_docs.py::test_docs[categories.md]'
- 'tests/test_docs.py::test_docs[code_generation.md]'
- 'tests/test_docs.py::test_docs[README.md]'
- )
-
- local -x PYTHONPATH=${S}/src
- local -x PYTHONWARNINGS=ignore
- epytest
-}
diff --git a/dev-python/inline-snapshot/inline-snapshot-0.35.4.ebuild b/dev-python/inline-snapshot/inline-snapshot-0.35.4.ebuild
index 88d1a6b4a0bc..7850b768c243 100644
--- a/dev-python/inline-snapshot/inline-snapshot-0.35.4.ebuild
+++ b/dev-python/inline-snapshot/inline-snapshot-0.35.4.ebuild
@@ -18,7 +18,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/asttokens-2.0.5[${PYTHON_USEDEP}]
diff --git a/dev-python/jinja2-time/jinja2-time-0.2.0-r1.ebuild b/dev-python/jinja2-time/jinja2-time-0.2.0-r1.ebuild
index d3f5d1852458..773ae19b3da4 100644
--- a/dev-python/jinja2-time/jinja2-time-0.2.0-r1.ebuild
+++ b/dev-python/jinja2-time/jinja2-time-0.2.0-r1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 ~arm arm64 ~ppc64 ~riscv x86"
+KEYWORDS="amd64 arm arm64 ~ppc64 ~riscv x86"
RDEPEND="
dev-python/arrow[${PYTHON_USEDEP}]
diff --git a/dev-python/jupyter-builder/jupyter-builder-1.2.3.ebuild b/dev-python/jupyter-builder/jupyter-builder-1.2.3.ebuild
index 4ed7b8e0bb84..c2d13985a4d1 100644
--- a/dev-python/jupyter-builder/jupyter-builder-1.2.3.ebuild
+++ b/dev-python/jupyter-builder/jupyter-builder-1.2.3.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="Apache-2.0 BSD MIT ISC"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
+KEYWORDS="amd64 arm arm64 ~ppc64 ~riscv ~x86"
RDEPEND="
!<dev-python/jupyterlab-4.6.0
diff --git a/dev-python/jupyterlab/Manifest b/dev-python/jupyterlab/Manifest
index f63fd1151af0..15f7ec15b80a 100644
--- a/dev-python/jupyterlab/Manifest
+++ b/dev-python/jupyterlab/Manifest
@@ -1,3 +1,2 @@
DIST jupyterlab-4.5.10.tar.gz 23998879 BLAKE2B afce3426f0f8ba029e8667e6a487a5fd60c18341f60eb865569fd33845ea8ae76db92bc127c45f203cd3ebc9d819a80dbcd7c03002aa01f462b7af1b8d99bc83 SHA512 9dc87a87e9699e19c71df66a8e6cb699c194467fa8ee6450bab96199fb3188c82f0a18fad860d44433a05426219761db7c546b20ee1dcb9148a095a3ddc68e04
-DIST jupyterlab-4.5.9.tar.gz 23994445 BLAKE2B 242a2d519bcf89b232b895c40fa45d752677d1f4321026037ebad418ffd0fb2dc07da07cb3d2d65a0b14142ae4fe65ef7e842891350d1e2102166001d534648e SHA512 b78ecb0f0ea1cc709fc4398d5d9a180ef4d235d5e6d45739deee88c6e7c06c28e3d15295b7abda144c5f8a5a847cbef70e2f02078bac0e2432b7bda0e387ce5e
DIST jupyterlab-4.6.3.tar.gz 28319771 BLAKE2B e4d4605dec5fef89599b1683700e8204817563ec11cd00592ab82be8e081c5eb8ce0ba654fe1d916e41f25507ab506ce77dd41f8a577f93ab3a5ab141b6ef1ee SHA512 d1105891542042df8448db15de70fdb26637672322760d8912191dd232912277f8345c5b8772070ce9c18d7d27b0ae72e331ed1b8d7b8ebb0ea46ee5222b77e7
diff --git a/dev-python/jupyterlab/jupyterlab-4.5.9.ebuild b/dev-python/jupyterlab/jupyterlab-4.5.9.ebuild
deleted file mode 100644
index 3d39a09bc232..000000000000
--- a/dev-python/jupyterlab/jupyterlab-4.5.9.ebuild
+++ /dev/null
@@ -1,76 +0,0 @@
-# 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_{13..14} )
-
-inherit distutils-r1 pypi xdg
-
-DESCRIPTION="JupyterLab computational environment"
-HOMEPAGE="
- https://jupyter.org/
- https://github.com/jupyterlab/jupyterlab/
- https://pypi.org/project/jupyterlab/
-"
-
-LICENSE="BSD MIT GPL-3 Apache-2.0"
-SLOT="0"
-KEYWORDS="amd64 arm arm64 ppc64 ~riscv x86"
-
-RDEPEND="
- >=dev-python/async-lru-1.0.0[${PYTHON_USEDEP}]
- >=dev-python/httpx-0.28.0[${PYTHON_USEDEP}]
- >=dev-python/ipykernel-6.5.0[${PYTHON_USEDEP}]
- >=dev-python/jinja2-3.0.3[${PYTHON_USEDEP}]
- dev-python/jupyter-core[${PYTHON_USEDEP}]
- >=dev-python/jupyter-lsp-2.0.0[${PYTHON_USEDEP}]
- >=dev-python/jupyter-server-2.4.0[${PYTHON_USEDEP}]
- <dev-python/jupyter-server-3[${PYTHON_USEDEP}]
- >=dev-python/jupyterlab-server-2.28.0[${PYTHON_USEDEP}]
- <dev-python/jupyterlab-server-3[${PYTHON_USEDEP}]
- >=dev-python/notebook-shim-0.2[${PYTHON_USEDEP}]
- >=dev-python/packaging-23.2[${PYTHON_USEDEP}]
- >=dev-python/setuptools-41.1.0[${PYTHON_USEDEP}]
- >=dev-python/tornado-6.2.0[${PYTHON_USEDEP}]
- dev-python/traitlets[${PYTHON_USEDEP}]
- net-libs/nodejs[npm]
-"
-
-BDEPEND="
- dev-python/hatch-jupyter-builder[${PYTHON_USEDEP}]
- test? (
- dev-python/requests[${PYTHON_USEDEP}]
- dev-python/requests-cache[${PYTHON_USEDEP}]
- dev-python/virtualenv[${PYTHON_USEDEP}]
- )
-"
-
-EPYTEST_DESELECT=(
- # These tests call npm and want internet
- jupyterlab/tests/test_jupyterlab.py::TestExtension::test_uninstall_core_extension
- jupyterlab/tests/test_jupyterlab.py::TestExtension::test_install_and_uninstall_pinned_folder
- jupyterlab/tests/test_jupyterlab.py::TestExtension::test_install_and_uninstall_pinned
- jupyterlab/tests/test_jupyterlab.py::TestExtension::test_build_custom_minimal_core_config
- jupyterlab/tests/test_jupyterlab.py::TestExtension::test_build_custom
- jupyterlab/tests/test_jupyterlab.py::TestExtension::test_build_check
- jupyterlab/tests/test_jupyterlab.py::TestExtension::test_build
- jupyterlab/tests/test_build_api.py::TestBuildAPI::test_clear
- jupyterlab/tests/test_build_api.py::TestBuildAPI::test_build
-)
-
-EPYTEST_IGNORE=(
- jupyterlab/tests/test_announcements.py
-)
-
-EPYTEST_PLUGINS=( pytest-{console-scripts,jupyter,tornasync,timeout} )
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-# TODO: package sphinx_copybutton
-#distutils_enable_sphinx docs/source dev-python/sphinx-rtd-theme dev-python/myst-parser
-
-python_install_all() {
- distutils-r1_python_install_all
- mv "${ED}/usr/etc" "${ED}/etc" || die
-}
diff --git a/dev-python/jupyterlab/jupyterlab-4.6.3.ebuild b/dev-python/jupyterlab/jupyterlab-4.6.3.ebuild
index f9239300293d..6033bba42386 100644
--- a/dev-python/jupyterlab/jupyterlab-4.6.3.ebuild
+++ b/dev-python/jupyterlab/jupyterlab-4.6.3.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD MIT GPL-3 Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64"
+KEYWORDS="amd64 arm arm64"
RDEPEND="
>=dev-python/async-lru-1.0.0[${PYTHON_USEDEP}]
diff --git a/dev-python/knowit/knowit-0.6.1.ebuild b/dev-python/knowit/knowit-0.6.1.ebuild
index 42d5bf2034ac..6f5e44a4811d 100644
--- a/dev-python/knowit/knowit-0.6.1.ebuild
+++ b/dev-python/knowit/knowit-0.6.1.ebuild
@@ -21,7 +21,7 @@ SRC_URI+="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~x86"
+KEYWORDS="amd64 ~arm ~arm64 ~x86"
# https://github.com/ratoaq2/knowit/blob/d7135a4797440838bca94e76326fc9d4019d8f9a/README.md?plain=1#L224
RDEPEND="
diff --git a/dev-python/levenshtein/levenshtein-0.27.4.ebuild b/dev-python/levenshtein/levenshtein-0.27.4.ebuild
index b6eab3b74a7f..5f619371c82b 100644
--- a/dev-python/levenshtein/levenshtein-0.27.4.ebuild
+++ b/dev-python/levenshtein/levenshtein-0.27.4.ebuild
@@ -23,7 +23,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="GPL-2+"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~loong ~ppc ppc64 ~riscv ~s390 ~sparc x86"
DEPEND="
<dev-cpp/rapidfuzz-cpp-4
diff --git a/dev-python/logbook/logbook-1.10.0.ebuild b/dev-python/logbook/logbook-1.10.0.ebuild
index 74e483a259b2..1c6252ec2206 100644
--- a/dev-python/logbook/logbook-1.10.0.ebuild
+++ b/dev-python/logbook/logbook-1.10.0.ebuild
@@ -51,7 +51,7 @@ LICENSE+="
|| ( Apache-2.0 MIT )
"
SLOT="0"
-KEYWORDS="~amd64 ~riscv ~x86"
+KEYWORDS="amd64 ~riscv x86"
IUSE="+native-extensions"
RDEPEND="
diff --git a/dev-python/matplotlib/matplotlib-3.11.1.ebuild b/dev-python/matplotlib/matplotlib-3.11.1.ebuild
index 57100e039aea..12b95560925c 100644
--- a/dev-python/matplotlib/matplotlib-3.11.1.ebuild
+++ b/dev-python/matplotlib/matplotlib-3.11.1.ebuild
@@ -25,7 +25,7 @@ HOMEPAGE="
LICENSE="BitstreamVera BSD matplotlib MIT OFL-1.1"
SLOT="0"
if [[ ${PV} != *_rc* ]]; then
- KEYWORDS="~alpha ~amd64 ~arm64 ~ppc ~ppc64 ~riscv ~x86"
+ KEYWORDS="~alpha ~amd64 arm64 ~ppc ~ppc64 ~riscv x86"
fi
IUSE="cairo excel gtk3 latex qt6 tk webagg wxwidgets"
diff --git a/dev-python/ml-dtypes/ml-dtypes-0.6.0.ebuild b/dev-python/ml-dtypes/ml-dtypes-0.6.0.ebuild
index afd8ffc21a9d..d8593ca8d374 100644
--- a/dev-python/ml-dtypes/ml-dtypes-0.6.0.ebuild
+++ b/dev-python/ml-dtypes/ml-dtypes-0.6.0.ebuild
@@ -26,7 +26,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~x86"
+KEYWORDS="amd64 ~arm arm64 x86"
DEPEND="
>=dev-python/numpy-1.21:=[${PYTHON_USEDEP}]
diff --git a/dev-python/msgspec/msgspec-0.21.1.ebuild b/dev-python/msgspec/msgspec-0.21.1.ebuild
index 10c4753dfa6f..8151d20780cc 100644
--- a/dev-python/msgspec/msgspec-0.21.1.ebuild
+++ b/dev-python/msgspec/msgspec-0.21.1.ebuild
@@ -22,7 +22,7 @@ SRC_URI="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha ~amd64"
+KEYWORDS="~alpha amd64"
BDEPEND="
dev-python/cython[${PYTHON_USEDEP}]
diff --git a/dev-python/nbformat/nbformat-5.11.0.ebuild b/dev-python/nbformat/nbformat-5.11.0.ebuild
index b668d5cb9960..b2dc98948cc0 100644
--- a/dev-python/nbformat/nbformat-5.11.0.ebuild
+++ b/dev-python/nbformat/nbformat-5.11.0.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/fastjsonschema-2.15[${PYTHON_USEDEP}]
diff --git a/dev-python/notebook/notebook-7.6.2.ebuild b/dev-python/notebook/notebook-7.6.2.ebuild
index ce68793f8dcc..d41f28147992 100644
--- a/dev-python/notebook/notebook-7.6.2.ebuild
+++ b/dev-python/notebook/notebook-7.6.2.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64"
+KEYWORDS="amd64 arm arm64"
COMMON_DEPEND="
>=dev-python/jupyter-builder-1.0.2[${PYTHON_USEDEP}]
diff --git a/dev-python/numexpr/numexpr-2.14.2.ebuild b/dev-python/numexpr/numexpr-2.14.2.ebuild
index 3aebfb27ff7d..399435a5c0d7 100644
--- a/dev-python/numexpr/numexpr-2.14.2.ebuild
+++ b/dev-python/numexpr/numexpr-2.14.2.ebuild
@@ -22,7 +22,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ~ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos"
DEPEND="
>=dev-python/numpy-2.0.0:=[${PYTHON_USEDEP}]
diff --git a/dev-python/numpy/numpy-2.5.1.ebuild b/dev-python/numpy/numpy-2.5.1.ebuild
index 584ab1c94f79..113e45b74372 100644
--- a/dev-python/numpy/numpy-2.5.1.ebuild
+++ b/dev-python/numpy/numpy-2.5.1.ebuild
@@ -22,7 +22,7 @@ HOMEPAGE="
LICENSE="BSD 0BSD MIT ZLIB CC0-1.0"
SLOT="0/2"
if [[ ${PV} != *_rc* ]]; then
- 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"
fi
# +lapack because the internal fallbacks are pretty slow. Building without blas
# is barely supported anyway, see bug #914358.
diff --git a/dev-python/orjson/orjson-3.12.0.ebuild b/dev-python/orjson/orjson-3.12.0.ebuild
index 2e5c879842c5..de2176cb2c7a 100644
--- a/dev-python/orjson/orjson-3.12.0.ebuild
+++ b/dev-python/orjson/orjson-3.12.0.ebuild
@@ -27,7 +27,7 @@ LICENSE+="
Apache-2.0-with-LLVM-exceptions BSD Boost-1.0 MIT Unicode-3.0
"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="amd64 arm arm64 ~loong ~mips ~ppc ppc64 ~riscv ~s390 ~sparc x86"
BDEPEND="
>=dev-util/maturin-1.7.8[${PYTHON_USEDEP}]
diff --git a/dev-python/pbr/pbr-7.1.0.ebuild b/dev-python/pbr/pbr-7.1.0.ebuild
index c922e17c93e5..355fe1236522 100644
--- a/dev-python/pbr/pbr-7.1.0.ebuild
+++ b/dev-python/pbr/pbr-7.1.0.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/packaging-20.0[${PYTHON_USEDEP}]
diff --git a/dev-python/pip/Manifest b/dev-python/pip/Manifest
index cc088c7b0cc9..6a96866423bb 100644
--- a/dev-python/pip/Manifest
+++ b/dev-python/pip/Manifest
@@ -1,2 +1,3 @@
DIST flit_core-3.12.0-py3-none-any.whl 45594 BLAKE2B 7c6cb6eb03d45bbba27f27b3728881b57fe82dd38e03f884d3b7c46116eb2b9dd76f92bdaf7f594ef8ccbe12ec8f9a56424ff9e9fc7a839c4818a113fdf0c3d3 SHA512 790c12b1f43201e365fb3f8f2f0a54e1a578876799dfdf8bfeea679a25ea096bf62946d006618c1458ae6e37ce6d00998f37e9aba426d5ab80d32ef2d75da4e0
DIST pip-26.1.2.gh.tar.gz 9268753 BLAKE2B 8cbf0ecf25a2bdd148506ca0e2e778b9053759cf5fed3914b915454bd8810b1d7a27e3b2efb5fd29c4e6b189c7e8050f0da15ae6c259712446b5a35f44018ee0 SHA512 e29c98a7da5e329183b7eef86a66f9d6c3473051f64aa6e762714306148547eb0de4220824484071822a9a62bd01a62a09ab16bba4c26e4b847bfc2609728608
+DIST pip-26.2.1.gh.tar.gz 9301563 BLAKE2B eb7b929de0e99c84c9b1257f1bf737f524eb6de01075d40b36519b082d8a49e107dbd0eded9a8bf737ce8f7d452c5e5cffb853b000d6ac2936b5b84dd607c770 SHA512 03a00bdc4387a4e7e4e54672e9198893500d279912ece4cd144f015c568c974ecc2c3c7bd6abf108df852302ddd49468ef0bc514ca4323ee037d754e2fbfaee0
diff --git a/dev-python/pip/files/pip-26.2.1-unbundle.patch b/dev-python/pip/files/pip-26.2.1-unbundle.patch
new file mode 100644
index 000000000000..daf4b91332e9
--- /dev/null
+++ b/dev-python/pip/files/pip-26.2.1-unbundle.patch
@@ -0,0 +1,258 @@
+diff --git a/src/pip/_internal/cli/main_parser.py b/src/pip/_internal/cli/main_parser.py
+index 903c89112..558a0d5a0 100644
+--- a/src/pip/_internal/cli/main_parser.py
++++ b/src/pip/_internal/cli/main_parser.py
+@@ -81,6 +81,11 @@ def parse_command(args: list[str]) -> tuple[str, list[str]]:
+
+ # --python
+ if general_options.python and "_PIP_RUNNING_IN_SUBPROCESS" not in os.environ:
++ raise CommandError(
++ "--python option is not supported on Gentoo, as it requires bundled "
++ "dependencies that have been removed to improve security"
++ )
++
+ # Re-invoke pip using the specified Python interpreter
+ interpreter = identify_python_interpreter(general_options.python)
+ if interpreter is None:
+diff --git a/src/pip/_internal/commands/debug.py b/src/pip/_internal/commands/debug.py
+index 4e8178d0a..b42a12064 100644
+--- a/src/pip/_internal/commands/debug.py
++++ b/src/pip/_internal/commands/debug.py
+@@ -7,7 +7,6 @@ from optparse import Values
+ from types import ModuleType
+ from typing import Any
+
+-import pip._vendor
+ from pip._vendor.certifi import where
+ from pip._vendor.packaging.version import parse as parse_version
+
+@@ -186,9 +185,7 @@ class DebugCommand(Command):
+ show_value("REQUESTS_CA_BUNDLE", os.environ.get("REQUESTS_CA_BUNDLE"))
+ show_value("CURL_CA_BUNDLE", os.environ.get("CURL_CA_BUNDLE"))
+ show_value("pip._vendor.certifi.where()", where())
+- show_value("pip._vendor.DEBUNDLED", pip._vendor.DEBUNDLED)
+-
+- show_vendor_versions()
++ show_value("pip._vendor.DEBUNDLED", True)
+
+ show_tags(options)
+
+diff --git a/src/pip/_internal/commands/install.py b/src/pip/_internal/commands/install.py
+index e1482b9cd..cc5758c1f 100644
+--- a/src/pip/_internal/commands/install.py
++++ b/src/pip/_internal/commands/install.py
+@@ -546,13 +546,6 @@ class InstallCommand(RequirementCommand):
+ if options.target_dir or options.prefix_path:
+ warn_script_location = False
+
+- # Warn on late imports so we don't silently pick up a module
+- # from a distribution pip is about to install.
+- try:
+- _eagerly_import_modules()
+- finally:
+- _prevent_further_imports()
+-
+ installed = install_given_reqs(
+ to_install,
+ root=options.root_path,
+diff --git a/tests/conftest.py b/tests/conftest.py
+index c1a3d60ce..0b2b5fd98 100644
+--- a/tests/conftest.py
++++ b/tests/conftest.py
+@@ -532,9 +532,6 @@ def virtualenv_template(
+ tmpdir_factory: pytest.TempPathFactory,
+ pip_src: Path,
+ pip_editable_parts: tuple[Path, ...],
+- setuptools_install: Path,
+- coverage_install: Path,
+- socket_install: Path,
+ ) -> VirtualEnvironment:
+ venv_type: VirtualEnvironmentType
+ if request.config.getoption("--use-venv"):
+@@ -546,13 +543,6 @@ def virtualenv_template(
+ tmpdir = tmpdir_factory.mktemp("virtualenv")
+ venv = VirtualEnvironment(tmpdir.joinpath("venv_orig"), venv_type=venv_type)
+
+- # Install setuptools, pytest-subket, and pip.
+- install_pth_link(venv, "setuptools", setuptools_install)
+- install_pth_link(venv, "pytest_subket", socket_install)
+- # Also copy pytest-subket's .pth file so it can intercept socket calls.
+- with open(venv.site / "pytest_socket.pth", "w") as f:
+- f.write(socket_install.joinpath("pytest_socket.pth").read_text())
+-
+ pth, dist_info = pip_editable_parts
+
+ shutil.copy(pth, venv.site)
+@@ -564,14 +554,6 @@ def virtualenv_template(
+ # detects changed files.
+ venv.site.joinpath("easy-install.pth").touch()
+
+- if request.config.getoption("--cov"):
+- # Install coverage and pth file for executing it in any spawned processes
+- # in this virtual environment.
+- install_pth_link(venv, "coverage", coverage_install)
+- # zz prefix ensures the file is after easy-install.pth.
+- with open(venv.site / "zz-coverage-helper.pth", "a") as f:
+- f.write("import coverage; coverage.process_startup()")
+-
+ # Drop (non-relocatable) launchers.
+ for exe in os.listdir(venv.bin):
+ if not exe.startswith(("python", "libpy")): # Don't remove libpypy-c.so...
+diff --git a/tests/functional/test_check.py b/tests/functional/test_check.py
+index acf99bc13..5425002e7 100644
+--- a/tests/functional/test_check.py
++++ b/tests/functional/test_check.py
+@@ -10,10 +10,8 @@ from tests.lib import (
+ def matches_expected_lines(string: str, expected_lines: Collection[str]) -> bool:
+ # Ignore empty lines
+ output_lines = list(filter(None, string.splitlines()))
+- # We'll match the last n lines, given n lines to match.
+- last_few_output_lines = output_lines[-len(expected_lines) :]
+ # And order does not matter
+- return set(last_few_output_lines) == set(expected_lines)
++ return set(expected_lines).issubset(set(output_lines))
+
+
+ def test_basic_check_clean(script: PipTestEnvironment) -> None:
+diff --git a/tests/functional/test_freeze.py b/tests/functional/test_freeze.py
+index 92e55aca6..e6d5f6d51 100644
+--- a/tests/functional/test_freeze.py
++++ b/tests/functional/test_freeze.py
+@@ -75,8 +75,8 @@ def test_basic_freeze(script: PipTestEnvironment) -> None:
+ )
+ result = script.pip("freeze", expect_stderr=True)
+ expected = textwrap.dedent("""\
+- ...simple==2.0
+- simple2==3.0...
++ ...simple==2.0...
++ ...simple2==3.0...
+ <BLANKLINE>""")
+ _check_output(result.stdout, expected)
+
+@@ -881,7 +881,7 @@ def test_freeze_skip_work_dir_pkg(script: PipTestEnvironment) -> None:
+
+ # Freeze should not include package simple when run from package directory
+ result = script.pip("freeze", cwd=pkg_path)
+- assert "simple" not in result.stdout
++ assert "\nsimple==" not in result.stdout
+
+
+ def test_freeze_include_work_dir_pkg(script: PipTestEnvironment) -> None:
+diff --git a/tests/functional/test_install_check.py b/tests/functional/test_install_check.py
+index cb8312b53..174bb8f66 100644
+--- a/tests/functional/test_install_check.py
++++ b/tests/functional/test_install_check.py
+@@ -61,6 +61,7 @@ def test_check_install_canonicalization(script: PipTestEnvironment) -> None:
+ )
+ assert "requires" not in result.stderr
+ assert result.returncode == 0
++ return
+
+ # Double check that all errors are resolved in the end
+ result = script.pip("check")
+diff --git a/tests/functional/test_list.py b/tests/functional/test_list.py
+index 1acc28254..c10dd70ed 100644
+--- a/tests/functional/test_list.py
++++ b/tests/functional/test_list.py
+@@ -1,5 +1,6 @@
+ import json
+ import os
++import re
+ from pathlib import Path
+
+ import pytest
+@@ -43,8 +44,8 @@ def test_basic_list(simple_script: PipTestEnvironment) -> None:
+
+ """
+ result = simple_script.pip("list")
+- assert "simple 1.0" in result.stdout, str(result)
+- assert "simple2 3.0" in result.stdout, str(result)
++ assert re.search(r"simple\s+1\.0", result.stdout), str(result)
++ assert re.search(r"simple2\s+3\.0", result.stdout), str(result)
+
+
+ def test_verbose_flag(simple_script: PipTestEnvironment) -> None:
+@@ -56,8 +57,8 @@ def test_verbose_flag(simple_script: PipTestEnvironment) -> None:
+ assert "Version" in result.stdout, str(result)
+ assert "Location" in result.stdout, str(result)
+ assert "Installer" in result.stdout, str(result)
+- assert "simple 1.0" in result.stdout, str(result)
+- assert "simple2 3.0" in result.stdout, str(result)
++ assert re.search(r"simple\s+1\.0", result.stdout), str(result)
++ assert re.search(r"simple2\s+3\.0", result.stdout), str(result)
+
+
+ def test_columns_flag(simple_script: PipTestEnvironment) -> None:
+@@ -68,8 +69,8 @@ def test_columns_flag(simple_script: PipTestEnvironment) -> None:
+ assert "Package" in result.stdout, str(result)
+ assert "Version" in result.stdout, str(result)
+ assert "simple (1.0)" not in result.stdout, str(result)
+- assert "simple 1.0" in result.stdout, str(result)
+- assert "simple2 3.0" in result.stdout, str(result)
++ assert re.search(r"simple\s+1\.0", result.stdout), str(result)
++ assert re.search(r"simple2\s+3\.0", result.stdout), str(result)
+
+
+ def test_format_priority(simple_script: PipTestEnvironment) -> None:
+@@ -81,16 +82,16 @@ def test_format_priority(simple_script: PipTestEnvironment) -> None:
+ )
+ assert "simple==1.0" in result.stdout, str(result)
+ assert "simple2==3.0" in result.stdout, str(result)
+- assert "simple 1.0" not in result.stdout, str(result)
+- assert "simple2 3.0" not in result.stdout, str(result)
++ assert not re.search(r"simple\s+1\.0", result.stdout), str(result)
++ assert not re.search(r"simple2\s+3\.0", result.stdout), str(result)
+
+ result = simple_script.pip("list", "--format=freeze", "--format=columns")
+ assert "Package" in result.stdout, str(result)
+ assert "Version" in result.stdout, str(result)
+ assert "simple==1.0" not in result.stdout, str(result)
+ assert "simple2==3.0" not in result.stdout, str(result)
+- assert "simple 1.0" in result.stdout, str(result)
+- assert "simple2 3.0" in result.stdout, str(result)
++ assert re.search(r"simple\s+1\.0", result.stdout), str(result)
++ assert re.search(r"simple2\s+3\.0", result.stdout), str(result)
+
+
+ def test_local_flag(simple_script: PipTestEnvironment) -> None:
+@@ -126,8 +127,8 @@ def test_multiple_exclude_and_normalization(
+ assert "Normalizable_Name" in result.stdout
+ assert "pip" in result.stdout
+ result = script.pip("list", "--exclude", "normalizablE-namE", "--exclude", "pIp")
+- assert "Normalizable_Name" not in result.stdout
+- assert "pip" not in result.stdout
++ assert "Normalizable_Name " not in result.stdout
++ assert "pip " not in result.stdout
+
+
+ @pytest.mark.usefixtures("enable_user_site")
+diff --git a/tests/lib/venv.py b/tests/lib/venv.py
+index a5d8704b2..81438f12e 100644
+--- a/tests/lib/venv.py
++++ b/tests/lib/venv.py
+@@ -9,6 +9,7 @@ import venv as _venv
+ from pathlib import Path
+ from typing import Literal
+
++import pytest
+ import virtualenv as _virtualenv
+
+ VirtualEnvironmentType = Literal["virtualenv", "venv"]
+@@ -35,7 +36,7 @@ class VirtualEnvironment:
+ self._venv_type = venv_type
+ else:
+ self._venv_type = "virtualenv"
+- self._user_site_packages = False
++ self._user_site_packages = True
+ self._template = template
+ self._sitecustomize: str | None = None
+ self._update_paths()
+@@ -155,6 +156,8 @@ class VirtualEnvironment:
+
+ @user_site_packages.setter
+ def user_site_packages(self, value: bool) -> None:
++ if not value:
++ pytest.skip("Gentoo: skipping due to lack of system site-packages")
+ self._user_site_packages = value
+ self._rewrite_pyvenv_cfg(
+ {"include-system-site-packages": str(bool(value)).lower()}
diff --git a/dev-python/pip/pip-26.2.1.ebuild b/dev-python/pip/pip-26.2.1.ebuild
new file mode 100644
index 000000000000..534c3cd3e7a2
--- /dev/null
+++ b/dev-python/pip/pip-26.2.1.ebuild
@@ -0,0 +1,196 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# please bump dev-python/ensurepip-pip along with this package!
+
+DISTUTILS_USE_PEP517=flit-core
+PYTHON_TESTED=( python3_{13..14} )
+PYTHON_COMPAT=( python3_{13..14} )
+PYTHON_REQ_USE="ssl(+),threads(+)"
+
+inherit distutils-r1 pypi shell-completion
+FLIT_CORE_PV=3.12.0
+
+DESCRIPTION="The PyPA recommended tool for installing Python packages"
+HOMEPAGE="
+ https://pip.pypa.io/en/stable/
+ https://pypi.org/project/pip/
+ https://github.com/pypa/pip/
+"
+SRC_URI="
+ https://github.com/pypa/pip/archive/${PV}.tar.gz -> ${P}.gh.tar.gz
+ test? (
+ $(pypi_wheel_url flit-core "${FLIT_CORE_PV}")
+ )
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="test test-rust"
+RESTRICT="!test? ( test )"
+
+# see src/pip/_vendor/vendor.txt
+RDEPEND="
+ >=dev-python/cachecontrol-0.14.3[${PYTHON_USEDEP}]
+ >=dev-python/dependency-groups-1.3.0[${PYTHON_USEDEP}]
+ >=dev-python/distlib-0.4.0[${PYTHON_USEDEP}]
+ >=dev-python/distro-1.9.0[${PYTHON_USEDEP}]
+ >=dev-python/msgpack-1.1.1[${PYTHON_USEDEP}]
+ >=dev-python/packaging-26.2[${PYTHON_USEDEP}]
+ >=dev-python/platformdirs-4.3.8[${PYTHON_USEDEP}]
+ >=dev-python/pyproject-hooks-1.2.0[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.33.1[${PYTHON_USEDEP}]
+ >=dev-python/rich-14.1.0[${PYTHON_USEDEP}]
+ >=dev-python/resolvelib-1.2.0[${PYTHON_USEDEP}]
+ >=dev-python/setuptools-70.3.0[${PYTHON_USEDEP}]
+ >=dev-python/tomli-w-1.2.0[${PYTHON_USEDEP}]
+ >=dev-python/truststore-0.10.1[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.13.2[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ ${RDEPEND}
+ test? (
+ $(python_gen_cond_dep '
+ dev-python/ensurepip-setuptools
+ dev-python/freezegun[${PYTHON_USEDEP}]
+ dev-python/pretend[${PYTHON_USEDEP}]
+ dev-python/pytest[${PYTHON_USEDEP}]
+ dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
+ dev-python/pytest-xdist[${PYTHON_USEDEP}]
+ dev-python/scripttest[${PYTHON_USEDEP}]
+ <dev-python/setuptools-80[${PYTHON_USEDEP}]
+ dev-python/virtualenv[${PYTHON_USEDEP}]
+ dev-python/werkzeug[${PYTHON_USEDEP}]
+ test-rust? (
+ dev-python/cryptography[${PYTHON_USEDEP}]
+ )
+ dev-vcs/git
+ ' "${PYTHON_TESTED[@]}")
+ )
+"
+
+python_prepare_all() {
+ local PATCHES=(
+ # prepare to unbundle dependencies and remove redundant test wheels
+ "${FILESDIR}/pip-26.2.1-unbundle.patch"
+ )
+
+ distutils-r1_python_prepare_all
+
+ # unbundle dependencies
+ rm -r src/pip/_vendor || die
+ find -name '*.py' -exec sed -i \
+ -e 's:from pip\._vendor import:import:g' \
+ -e 's:from pip\._vendor\.:from :g' \
+ {} + || die
+ sed -i -e '/_vendor.*\(COPYING\|LICENSE\)/d' pyproject.toml || die
+
+ if use test; then
+ local wheels=(
+ "${BROOT}"/usr/lib/python/ensurepip/setuptools-*.whl
+ "${DISTDIR}/$(pypi_wheel_name flit-core "${FLIT_CORE_PV}")"
+ )
+ mkdir tests/data/common_wheels/ || die
+ cp "${wheels[@]}" tests/data/common_wheels/ || die
+ fi
+}
+
+python_configure() {
+ if use test && has_version "dev-python/pip[${PYTHON_USEDEP}]"; then
+ "${EPYTHON}" -m pip check ||
+ die "${EPYTHON} -m pip check failed, tests will fail"
+ fi
+}
+
+python_compile_all() {
+ # 'pip completion' command embeds full $0 into completion script, which confuses
+ # 'complete' and causes QA warning when running as "${PYTHON} -m pip".
+ # This trick sets correct $0 while still calling just installed pip.
+ local pipcmd='if True:
+ import sys
+ sys.argv[0] = "pip"
+ __file__ = ""
+ from pip._internal.cli.main import main
+ sys.exit(main())
+ '
+ "${EPYTHON}" -c "${pipcmd}" completion --bash > completion.bash || die
+ "${EPYTHON}" -c "${pipcmd}" completion --zsh > completion.zsh || die
+}
+
+python_test() {
+ if ! has "${EPYTHON}" "${PYTHON_TESTED[@]/_/.}"; then
+ einfo "Skipping tests on ${EPYTHON}"
+ return 0
+ fi
+
+ local EPYTEST_DESELECT=(
+ tests/functional/test_inspect.py::test_inspect_basic
+ # Internet
+ tests/functional/test_config_settings.py::test_backend_sees_config_via_sdist
+ tests/functional/test_install.py::test_double_install_fail
+ tests/functional/test_install.py::test_install_sdist_links
+ tests/functional/test_install_config.py::test_prompt_for_keyring_if_needed
+ tests/functional/test_lock.py::test_lock_archive
+ tests/functional/test_lock.py::test_lock_vcs
+ # broken by system site-packages use
+ tests/functional/test_freeze.py::test_freeze_with_setuptools
+ tests/functional/test_install.py::test_install_subprocess_output_handling
+ tests/functional/test_pip_runner_script.py::test_runner_work_in_environments_with_no_pip
+ tests/functional/test_uninstall.py::test_basic_uninstall_distutils
+ tests/unit/test_base_command.py::test_base_command_global_tempdir_cleanup
+ tests/unit/test_base_command.py::test_base_command_local_tempdir_cleanup
+ tests/unit/test_base_command.py::test_base_command_provides_tempdir_helpers
+ # broken by unbundling
+ "tests/functional/test_debug.py::test_debug[vendored library versions:]"
+ tests/functional/test_debug.py::test_debug__library_versions
+ tests/functional/test_freeze.py::test_freeze_multiple_exclude_with_all
+ tests/functional/test_install.py::test_install_package_with_same_name_in_curdir
+ tests/functional/test_pep517.py::test_nested_builds
+ tests/functional/test_python_option.py::test_python_interpreter
+ tests/functional/test_uninstall.py::test_basic_uninstall
+ tests/functional/test_uninstall.py::test_uninstall_non_local_distutils
+ tests/functional/test_install.py::test_install_warns_on_unexpected_post_install_import
+ # TODO
+ tests/functional/test_build_env.py::test_build_env_can_still_access_python_tools_on_system_path
+ tests/functional/test_build_env.py::test_build_env_console_scripts_use_venv_python[subprocess]
+ tests/functional/test_build_env.py::test_build_env_isolation[venv-inprocess]
+ tests/functional/test_build_env.py::test_build_env_isolation[venv-subprocess]
+ tests/functional/test_build_env.py::test_build_env_requirements_check[venv]
+ tests/functional/test_self_update.py::test_self_update_editable
+ )
+ local EPYTEST_IGNORE=(
+ # from upstream options
+ tests/tests_cache
+ # requires proxy.py
+ tests/functional/test_proxy.py
+ )
+
+ if ! has_version "dev-python/cryptography[${PYTHON_USEDEP}]"; then
+ EPYTEST_DESELECT+=(
+ tests/functional/test_install.py::test_install_sends_client_cert
+ tests/functional/test_install_config.py::test_do_not_prompt_for_authentication
+ tests/functional/test_install_config.py::test_prompt_for_authentication
+ tests/functional/test_install_config.py::test_prompt_for_keyring_if_needed
+ )
+ fi
+
+ local -x PIP_DISABLE_PIP_VERSION_CHECK=1
+ local EPYTEST_PLUGINS=()
+ # rerunfailures because test suite breaks if packages are installed
+ # to system site-packages while it's running
+ local EPYTEST_RERUNS=5
+ local EPYTEST_XDIST=1
+ epytest -m "not network" -o addopts= -o tmp_path_retention_policy=all \
+ --use-venv
+}
+
+python_install_all() {
+ local DOCS=( AUTHORS.txt docs/html/**/*.rst )
+ distutils-r1_python_install_all
+
+ newbashcomp completion.bash pip
+ newzshcomp completion.zsh _pip
+}
diff --git a/dev-python/platformdirs/platformdirs-4.11.3.ebuild b/dev-python/platformdirs/platformdirs-4.11.3.ebuild
index 97987e113428..efc02002085f 100644
--- a/dev-python/platformdirs/platformdirs-4.11.3.ebuild
+++ b/dev-python/platformdirs/platformdirs-4.11.3.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos ~x64-solaris"
BDEPEND="
test? (
diff --git a/dev-python/progressbar2/progressbar2-4.6.0.ebuild b/dev-python/progressbar2/progressbar2-4.6.0.ebuild
index 7d437a5d7f3a..8fc80737de3d 100644
--- a/dev-python/progressbar2/progressbar2-4.6.0.ebuild
+++ b/dev-python/progressbar2/progressbar2-4.6.0.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~x86"
+KEYWORDS="amd64 arm64 ~x86"
RDEPEND="
>=dev-python/python-utils-3.8.1[${PYTHON_USEDEP}]
diff --git a/dev-python/pygit2/pygit2-1.20.0.ebuild b/dev-python/pygit2/pygit2-1.20.0.ebuild
index fe0d4c3ae938..007b9fe02a3b 100644
--- a/dev-python/pygit2/pygit2-1.20.0.ebuild
+++ b/dev-python/pygit2/pygit2-1.20.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="GPL-2-with-linking-exception"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~loong ~riscv ~x86"
+KEYWORDS="amd64 ~arm64 ~loong ~riscv x86"
DEPEND="
<dev-libs/libgit2-1.10:=
diff --git a/dev-python/pylint/pylint-4.0.7.ebuild b/dev-python/pylint/pylint-4.0.7.ebuild
index 15ca18638155..702b432624f2 100644
--- a/dev-python/pylint/pylint-4.0.7.ebuild
+++ b/dev-python/pylint/pylint-4.0.7.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="GPL-2"
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="examples"
RDEPEND="
diff --git a/dev-python/pyphen/pyphen-0.18.1.ebuild b/dev-python/pyphen/pyphen-0.18.1.ebuild
index 9ec0de45a588..fd884324eded 100644
--- a/dev-python/pyphen/pyphen-0.18.1.ebuild
+++ b/dev-python/pyphen/pyphen-0.18.1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="GPL-2+ LGPL-2+ MPL-1.1"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+KEYWORDS="amd64 arm64 ~riscv x86"
EPYTEST_PLUGINS=()
distutils_enable_tests pytest
diff --git a/dev-python/pytest-django/Manifest b/dev-python/pytest-django/Manifest
index ce77dce689d1..2092555f09ad 100644
--- a/dev-python/pytest-django/Manifest
+++ b/dev-python/pytest-django/Manifest
@@ -1,4 +1,3 @@
-DIST pytest-django-4.12.0.gh.tar.gz 85134 BLAKE2B 36c697fbc97469015170d34fa6e4e3fd9330d78753b6e29caee8ff40dbeddaf29e3dfa12c9bb2332ac3667ca1360254ee4db103ae69e8c6b6c7c6b7bc82ff353 SHA512 054a37b652831838b13ea0480855b2d3c5008ec9d75dae88e9bf8b8f2eac0bc7b69eb9dae46c45ba0e39019f265b5a8cfff7a8d144eae8e8dc4dfb4ea222a266
DIST pytest-django-4.13.0.gh.tar.gz 87619 BLAKE2B 978411585e6eccba3ee3cfc882e2f6ede8b81473b08e16bfd77a3b165e3c8ecbb130a5e33207c1afe2772c2ebf75686eae65cb3d9835b2262f2799c18ae91226 SHA512 a84b42ea29343f3777c2d586a7d877e1a9dfff9fbbf4f3c93cfc55c375f9b99563285cba7e4550bc86b5d6551186d284aa25fa367abcf891fba70a673e6df6ae
DIST pytest_django-4.14.0.tar.gz 94700 BLAKE2B 40153edb912d1e57ecc2c0d9987ce2d7398a052f2e621d59f5dc4437813e4797d6676950617691e701aaddf57240c70876cb5bfcd97dcaf555af3fb39b164434 SHA512 5be98f075dcff64f2896b9d1d116794c9d27346daa1d92124ac97d27bc9558c4576089cb86749ba46cc87307e7acb029c510a4efbb72e0a2211e0e235237133e
DIST pytest_django-4.14.0.tar.gz.provenance 9719 BLAKE2B 87c0b0b8f7afc0cd8c7c537a37caa14578a39462a441c6f56d5e861119bec16156a30d516719ef3f1e04853ccf9e105ddc2da87e9322728e028b0ab28e3a360c SHA512 d3c649b44911efd8e9b2cfeb6e2ac7ed612a98e1f2ac87ebccc93c4d3a2e58bbf7d38a676114a72431d7ed1819552c1d0dbfe5dffc0fb1b8c3ab1973312ba158
diff --git a/dev-python/pytest-django/pytest-django-4.12.0.ebuild b/dev-python/pytest-django/pytest-django-4.12.0.ebuild
deleted file mode 100644
index 911c1a661f83..000000000000
--- a/dev-python/pytest-django/pytest-django-4.12.0.ebuild
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1
-
-DESCRIPTION="A Django plugin for pytest"
-HOMEPAGE="
- https://pypi.org/project/pytest-django/
- https://pytest-django.readthedocs.io/
- https://github.com/pytest-dev/pytest-django/
-"
-SRC_URI="
- https://github.com/pytest-dev/pytest-django/archive/v${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~sparc x86"
-
-RDEPEND="
- >=dev-python/pytest-7.0.0[${PYTHON_USEDEP}]
-"
-BDEPEND="
- >=dev-python/setuptools-scm-1.11.1[${PYTHON_USEDEP}]
- test? (
- dev-python/django[${PYTHON_USEDEP}]
- >=dev-python/django-configurations-2.0[${PYTHON_USEDEP}]
- )
-"
-
-export SETUPTOOLS_SCM_PRETEND_VERSION=${PV}
-
-EPYTEST_PLUGIN_LOAD_VIA_ENV=1
-EPYTEST_PLUGINS=( "${PN}" pytest-xdist )
-distutils_enable_tests pytest
-
-python_test() {
- local -x DJANGO_SETTINGS_MODULE
- local -x PYTHONPATH=${PWD}
- for DJANGO_SETTINGS_MODULE in pytest_django_test.settings_sqlite{,_file}; do
- einfo "Testing ${DJANGO_SETTINGS_MODULE}"
- epytest tests
- done
-}
diff --git a/dev-python/pytest-django/pytest-django-4.14.0.ebuild b/dev-python/pytest-django/pytest-django-4.14.0.ebuild
index b10deff882ec..36bd4f98196f 100644
--- a/dev-python/pytest-django/pytest-django-4.14.0.ebuild
+++ b/dev-python/pytest-django/pytest-django-4.14.0.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~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-forked/pytest-forked-1.7.5.ebuild b/dev-python/pytest-forked/pytest-forked-1.7.5.ebuild
index 4f3fd2ed41c0..9f0e20db142e 100644
--- a/dev-python/pytest-forked/pytest-forked-1.7.5.ebuild
+++ b/dev-python/pytest-forked/pytest-forked-1.7.5.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/pytest-7.0.0[${PYTHON_USEDEP}]
diff --git a/dev-python/pytest-lazy-fixtures/pytest-lazy-fixtures-1.4.1.ebuild b/dev-python/pytest-lazy-fixtures/pytest-lazy-fixtures-1.4.1.ebuild
index a85448684b9c..bc0fbfffdd50 100644
--- a/dev-python/pytest-lazy-fixtures/pytest-lazy-fixtures-1.4.1.ebuild
+++ b/dev-python/pytest-lazy-fixtures/pytest-lazy-fixtures-1.4.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~mips ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~mips ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/pytest-7[${PYTHON_USEDEP}]
diff --git a/dev-python/pytest-localftpserver/pytest-localftpserver-1.6.0.ebuild b/dev-python/pytest-localftpserver/pytest-localftpserver-1.6.0.ebuild
index 0da56852deae..fe890232a6e4 100644
--- a/dev-python/pytest-localftpserver/pytest-localftpserver-1.6.0.ebuild
+++ b/dev-python/pytest-localftpserver/pytest-localftpserver-1.6.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="amd64 arm arm64 ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
dev-python/pyftpdlib[${PYTHON_USEDEP}]
diff --git a/dev-python/pytest-rerunfailures/pytest-rerunfailures-16.5.ebuild b/dev-python/pytest-rerunfailures/pytest-rerunfailures-16.5.ebuild
index 58e4cd8777e3..8f5f46149181 100644
--- a/dev-python/pytest-rerunfailures/pytest-rerunfailures-16.5.ebuild
+++ b/dev-python/pytest-rerunfailures/pytest-rerunfailures-16.5.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MPL-2.0"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/packaging-17.1[${PYTHON_USEDEP}]
diff --git a/dev-python/pytest-salt-factories/Manifest b/dev-python/pytest-salt-factories/Manifest
index 8663b1a7fc41..4bc08c962502 100644
--- a/dev-python/pytest-salt-factories/Manifest
+++ b/dev-python/pytest-salt-factories/Manifest
@@ -1,3 +1,2 @@
-DIST pytest-salt-factories-1.0.0_rc29.gh.tar.gz 168690 BLAKE2B d365cdef727e6ed0c0d2d06ce3c8731ddf67181d4d8386d106b7569c709fc5336529c72e907d44496463b47b18659376a64c79b08d45aaa5aa7d8d927a646db3 SHA512 7dd0e9d5bb6e4b292ef145f6fec770435f1cd23a07be67c98e155b1aa3a34bec1c542d97a6cae0302ad46e5c2f4e35eadb45bd7ea8979c05c6ddf1aacde9f755
DIST pytest-salt-factories-1.0.1.gh.tar.gz 169610 BLAKE2B 7f24d25ac9713204b3ba922aefbbb7e41de400128670eeba05679f85e6ee838ca8d595908ed442c8760e08be7c0041f936ee0ccfec651de767a4b660e47c136f SHA512 598486f15f00654509a68b0a216d84e1f790b4b9a28c2fd85b809d357d030299db6137e1b15883dc682b3eaa4f29f47b76bd06c1d1a9994028dc0332af972991
DIST pytest-salt-factories-1.0.5.gh.tar.gz 169829 BLAKE2B 715818a9b79be5313aceb596b3046bea4cf3e44ad3c3682d24e558cba6664f03657d35856cb09dcc7f78dcd8043ab53e42ab1a2bb0a488b304c947f71a008a26 SHA512 33e9d58f57b64f3d9edce401cecd526ede0365c1991c0ea2e5263a131601425eca5cd4e71a7b82415f4ce6b078fd0f913c2e14fdf63e0b1edbab364c69d574d4
diff --git a/dev-python/pytest-salt-factories/pytest-salt-factories-1.0.0_rc29.ebuild b/dev-python/pytest-salt-factories/pytest-salt-factories-1.0.0_rc29.ebuild
deleted file mode 100644
index acf29b86bcc1..000000000000
--- a/dev-python/pytest-salt-factories/pytest-salt-factories-1.0.0_rc29.ebuild
+++ /dev/null
@@ -1,88 +0,0 @@
-# Copyright 2020-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{13..14} )
-DISTUTILS_USE_PEP517=setuptools
-
-inherit distutils-r1
-
-DESCRIPTION="The new generation of the pytest-salt Plugin"
-HOMEPAGE="
- https://github.com/saltstack/pytest-salt-factories/
- https://pypi.org/project/pytest-salt-factories/
-"
-SRC_URI="
- https://github.com/saltstack/pytest-salt-factories/archive/${PV//_/}.tar.gz
- -> ${P}.gh.tar.gz
-"
-S=${WORKDIR}/${P//_/}
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~amd64 ~riscv ~x86"
-
-RDEPEND="
- dev-python/attrs[${PYTHON_USEDEP}]
- dev-python/docker[${PYTHON_USEDEP}]
- dev-python/psutil[${PYTHON_USEDEP}]
- >=dev-python/pytest-7.0.0[${PYTHON_USEDEP}]
- dev-python/pytest-helpers-namespace[${PYTHON_USEDEP}]
- dev-python/pytest-skip-markers[${PYTHON_USEDEP}]
- dev-python/pytest-system-statistics[${PYTHON_USEDEP}]
- >=dev-python/pytest-shell-utilities-1.4.0[${PYTHON_USEDEP}]
- dev-python/pyzmq[${PYTHON_USEDEP}]
- dev-python/msgpack[${PYTHON_USEDEP}]
- dev-python/virtualenv[${PYTHON_USEDEP}]
- >=app-admin/salt-3005.1[${PYTHON_USEDEP}]
-"
-BDEPEND="
- dev-python/setuptools-scm[${PYTHON_USEDEP}]
- test? (
- dev-python/importlib-metadata[${PYTHON_USEDEP}]
- dev-python/pyfakefs[${PYTHON_USEDEP}]
- dev-python/pytest-subtests[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_tests pytest
-
-export SETUPTOOLS_SCM_PRETEND_VERSION=${PV}
-
-src_prepare() {
- sed -i -e 's:helpers_namespace:pytest_&.plugin:' tests/conftest.py || die
- distutils-r1_src_prepare
-}
-
-python_test() {
- local EPYTEST_DESELECT=(
- "tests/functional/test_manager.py::test_system_service_cli[system-service(True)]"
- "tests/functional/test_manager.py::test_system_service_config_fixture[system-service(True)]"
- tests/integration/factories/daemons/ssh/test_salt_ssh.py::test_salt_ssh
- tests/integration/factories/daemons/sshd/test_sshd.py::test_connect
- tests/scenarios/examples/test_echoext.py::test_echoext
- )
-
- local ret tempdir x
- # ${T} is too long a path for the tests to work
- tempdir="$(mktemp -du --tmpdir=/tmp salt-XXX)" || die
- addwrite "${tempdir}"
-
- local -x SHELL="/bin/bash" TMPDIR="${tempdir}"
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
- local -x PYTEST_PLUGINS=saltfactories.plugins
- PYTEST_PLUGINS+=,pytest_helpers_namespace.plugin
- PYTEST_PLUGINS+=,pytestsysstats.plugin
- PYTEST_PLUGINS+=,pytest_subtests
- for x in factories markers sysinfo event_listener log_server loader
- do
- PYTEST_PLUGINS+=,saltfactories.plugins.${x}
- done
-
- nonfatal epytest --no-sys-stats
- ret=${?}
-
- rm -rf "${tempdir}" || die
- [[ ${ret} -ne 0 ]] && die "Tests failed with ${EPYTHON}"
-}
diff --git a/dev-python/python-socks/python-socks-3.0.0.ebuild b/dev-python/python-socks/python-socks-3.0.0.ebuild
index 364e8b802100..193a71c32cb6 100644
--- a/dev-python/python-socks/python-socks-3.0.0.ebuild
+++ b/dev-python/python-socks/python-socks-3.0.0.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
# curio is not packaged
# asyncio is the only backend we have, so dep on its deps unconditionally
diff --git a/dev-python/s3transfer/s3transfer-0.19.2.ebuild b/dev-python/s3transfer/s3transfer-0.19.2.ebuild
index 9742b462e53c..d84042f3fda2 100644
--- a/dev-python/s3transfer/s3transfer-0.19.2.ebuild
+++ b/dev-python/s3transfer/s3transfer-0.19.2.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~sparc x86"
RDEPEND="
<dev-python/botocore-2[${PYTHON_USEDEP}]
diff --git a/dev-python/selenium/selenium-4.47.0.ebuild b/dev-python/selenium/selenium-4.47.0.ebuild
index 27ddd7464f40..0b7fcd66feec 100644
--- a/dev-python/selenium/selenium-4.47.0.ebuild
+++ b/dev-python/selenium/selenium-4.47.0.ebuild
@@ -30,7 +30,7 @@ SRC_URI+="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~x86"
+KEYWORDS="amd64 ~arm arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~x86"
IUSE="test test-rust"
RESTRICT="!test? ( test )"
diff --git a/dev-python/setuptools/Manifest b/dev-python/setuptools/Manifest
index 48f7bc5e6910..ad37c0333763 100644
--- a/dev-python/setuptools/Manifest
+++ b/dev-python/setuptools/Manifest
@@ -1,4 +1,3 @@
DIST setuptools-79.0.1.tar.gz 1367909 BLAKE2B d495a22753400b3b0ef71423e2c9b5adaad1a065d1f9638b5da8161b29c453495701c3efaa3abd2482777e186ba992bd7b57090dfc711d9cdfdaa8254616a8ff SHA512 5b68d7cc775f4318e178f7d7f69c60a01b1abc607411e88c88e3507a08bd85eed241b915d4be5f3ada90df4b68718056c2ba032943c1f53fe68d171c7d728179
-DIST setuptools-82.0.1.tar.gz 1152316 BLAKE2B d7f6eaf62ec66355b65642bc20a7a549e167dd6d1c0cdb15926b6644a23cab7737d713cd9418e0cc09161eb0bff53ffd0b8781c96d9203717077121c1e3cc0d5 SHA512 5d70e9efd818245fb8119a4eed64d776078469ed884facc188f141ea491efd9fde5c10c928d3236ea5e2e431b16616f18ed14870b867f95e6320251707332395
DIST setuptools-83.0.0.tar.gz 1154254 BLAKE2B b82142ad699703352b4ec7843545f3f078e853d39fa93e2d0ee42b9914ebc9d04bc7de4954bce0a1e49f3befea39d14176ed4e7462d202d74ed503664765fba9 SHA512 d426f235471d30b41391bda63e8f3d461f54a6a4127594a2e2d0cab0c7576d511db5e5f211ed6cdac2afc620d3695e991a1dd08106f1201ec64697b14b3e0390
DIST setuptools-84.0.0.tar.gz 1168449 BLAKE2B b4dc28c42ea271dc2cac7f7218bec0819d043d52100df8c1ac7672092c2f45b62e731d18d76bc00a6392b60f8afb8c1f7e961050ee23b0e1c77bbd94e42481db SHA512 67721834362dd88c256cbd523413dbdcb99ca871bcc873ffa29c7667687973e1d5e15b0ea8ef4529711418b14d3d660771846877543001d4ab0fe8b4585ac9ad
diff --git a/dev-python/setuptools/setuptools-82.0.1.ebuild b/dev-python/setuptools/setuptools-82.0.1.ebuild
deleted file mode 100644
index 5c68f76456db..000000000000
--- a/dev-python/setuptools/setuptools-82.0.1.ebuild
+++ /dev/null
@@ -1,122 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-# please keep this ebuild at EAPI 8 -- sys-apps/portage dep
-EAPI=8
-
-# please bump dev-python/ensurepip-setuptools along with this package!
-
-DISTUTILS_USE_PEP517=standalone
-PYTHON_TESTED=( python3_{13..14} )
-PYTHON_COMPAT=( python3_{13..14} )
-PYTHON_REQ_USE="xml(+)"
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Collection of extensions to Distutils"
-HOMEPAGE="
- https://github.com/pypa/setuptools/
- https://pypi.org/project/setuptools/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos ~x64-solaris"
-IUSE="test"
-RESTRICT="!test? ( test )"
-
-RDEPEND="
- >=dev-python/jaraco-functools-4.4.0[${PYTHON_USEDEP}]
- >=dev-python/jaraco-text-4.0.0[${PYTHON_USEDEP}]
- >=dev-python/more-itertools-10.8.0[${PYTHON_USEDEP}]
- >=dev-python/packaging-25.0[${PYTHON_USEDEP}]
- >=dev-python/platformdirs-4.4.0[${PYTHON_USEDEP}]
- >=dev-python/wheel-0.45.1[${PYTHON_USEDEP}]
-"
-BDEPEND="
- ${RDEPEND}
- test? (
- $(python_gen_cond_dep '
- >=dev-python/build-1.0.3[${PYTHON_USEDEP}]
- >=dev-python/ini2toml-0.14[${PYTHON_USEDEP}]
- >=dev-python/filelock-3.4.0[${PYTHON_USEDEP}]
- >=dev-python/jaraco-envs-2.2[${PYTHON_USEDEP}]
- >=dev-python/jaraco-path-3.7.2[${PYTHON_USEDEP}]
- >=dev-python/jaraco-test-5.5[${PYTHON_USEDEP}]
- dev-python/pip[${PYTHON_USEDEP}]
- dev-python/pyproject-hooks[${PYTHON_USEDEP}]
- dev-python/pytest[${PYTHON_USEDEP}]
- >=dev-python/pytest-home-0.5[${PYTHON_USEDEP}]
- dev-python/pytest-subprocess[${PYTHON_USEDEP}]
- dev-python/pytest-timeout[${PYTHON_USEDEP}]
- dev-python/pytest-xdist[${PYTHON_USEDEP}]
- >=dev-python/tomli-w-1.0.0[${PYTHON_USEDEP}]
- >=dev-python/virtualenv-20[${PYTHON_USEDEP}]
- ' "${PYTHON_TESTED[@]}")
- )
-"
-# setuptools-scm is here because installing plugins apparently breaks stuff at
-# runtime, so let's pull it early. See bug #663324.
-#
-# trove-classifiers are optionally used in validation, if they are
-# installed. Since we really oughtn't block them, let's always enforce
-# the newest version for the time being to avoid errors.
-# https://github.com/pypa/setuptools/issues/4459
-PDEPEND="
- dev-python/setuptools-scm[${PYTHON_USEDEP}]
- >=dev-python/trove-classifiers-2024.10.16[${PYTHON_USEDEP}]
-"
-
-src_prepare() {
- local PATCHES=(
- # https://github.com/abravalheri/validate-pyproject/pull/221
- "${FILESDIR}/setuptools-75.6.0-disable-trove-classifiers.patch"
- )
-
- distutils-r1_src_prepare
-
- # remove bundled dependencies
- rm -r */_vendor || die
-}
-
-python_test() {
- if ! has "${EPYTHON}" "${PYTHON_TESTED[@]/_/.}"; then
- return
- fi
-
- local EPYTEST_DESELECT=(
- # broken by unbundling (e.g. installs self-wheel into venv)
- setuptools/tests/config/test_apply_pyprojecttoml.py::TestMeta
- setuptools/tests/test_distutils_adoption.py
- setuptools/tests/test_editable_install.py
- setuptools/tests/test_sdist.py::test_sanity_check_setuptools_own_sdist
- setuptools/tests/test_setuptools.py::test_wheel_includes_vendored_metadata
- setuptools/tests/test_virtualenv.py::test_no_missing_dependencies
- setuptools/tests/config/test_setupcfg.py::TestOptions::test_entry_points
- # TODO
- setuptools/tests/config/test_setupcfg.py::TestConfigurationReader::test_basic
- setuptools/tests/config/test_setupcfg.py::TestConfigurationReader::test_ignore_errors
- # TODO, probably some random package
- setuptools/tests/config/test_setupcfg.py::TestOptions::test_cmdclass
- # relies on -Werror
- setuptools/_static.py::setuptools._static.Dict
- setuptools/_static.py::setuptools._static.List
- # Internet
- setuptools/tests/test_build_py.py::TestTypeInfoFiles::test_type_files_included_by_default
- setuptools/tests/test_dist.py::test_dist_fetch_build_egg
- setuptools/tests/test_namespaces.py::TestNamespaces::test_mixed_site_and_non_site
- setuptools/tests/test_namespaces.py::TestNamespaces::test_namespace_package_installed_and_cwd
- setuptools/tests/test_namespaces.py::TestNamespaces::test_packages_in_the_same_namespace_installed_and_cwd
- setuptools/tests/test_namespaces.py::TestNamespaces::test_pkg_resources_import
- # broken by warnings from setuptools-scm
- setuptools/tests/config/test_apply_pyprojecttoml.py::TestPresetField::test_scripts_dont_require_dynamic_entry_points
- # TODO
- 'setuptools/tests/test_egg_info.py::TestEggInfo::test_requires[setup_requires_with_markers]'
- )
-
- local EPYTEST_XDIST=1
- local -x PRE_BUILT_SETUPTOOLS_WHEEL=${DISTUTILS_WHEEL_PATH}
- local EPYTEST_PLUGINS=( pytest-{home,subprocess,timeout} )
- epytest -o filterwarnings= -o tmp_path_retention_policy=all \
- -m "not uses_network" setuptools
-}
diff --git a/dev-python/setuptools/setuptools-84.0.0.ebuild b/dev-python/setuptools/setuptools-84.0.0.ebuild
index 2ce6d3abb2e6..83f4e6c3e772 100644
--- a/dev-python/setuptools/setuptools-84.0.0.ebuild
+++ b/dev-python/setuptools/setuptools-84.0.0.ebuild
@@ -21,7 +21,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos ~x64-solaris"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/sphinx-inline-tabs/sphinx-inline-tabs-2025.12.21.14.ebuild b/dev-python/sphinx-inline-tabs/sphinx-inline-tabs-2025.12.21.14.ebuild
index 20b23c70205a..ef7abcba01b0 100644
--- a/dev-python/sphinx-inline-tabs/sphinx-inline-tabs-2025.12.21.14.ebuild
+++ b/dev-python/sphinx-inline-tabs/sphinx-inline-tabs-2025.12.21.14.ebuild
@@ -12,7 +12,7 @@ HOMEPAGE="https://pypi.org/project/sphinx-inline-tabs/"
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+KEYWORDS="amd64 arm64 ~riscv ~x86"
RDEPEND="
>=dev-python/sphinx-6.0[${PYTHON_USEDEP}]
diff --git a/dev-python/sqlalchemy/sqlalchemy-2.0.52.ebuild b/dev-python/sqlalchemy/sqlalchemy-2.0.52.ebuild
index b46152f6c679..3ae931f70027 100644
--- a/dev-python/sqlalchemy/sqlalchemy-2.0.52.ebuild
+++ b/dev-python/sqlalchemy/sqlalchemy-2.0.52.ebuild
@@ -20,7 +20,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ~ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos ~x64-solaris"
IUSE="examples +sqlite test"
RDEPEND="
diff --git a/dev-python/sqlparse/sqlparse-0.6.0.ebuild b/dev-python/sqlparse/sqlparse-0.6.0.ebuild
index fc9b9fdc3ba2..80b6b589e85e 100644
--- a/dev-python/sqlparse/sqlparse-0.6.0.ebuild
+++ b/dev-python/sqlparse/sqlparse-0.6.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD-2"
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"
distutils_enable_sphinx docs/source \
dev-python/furo
diff --git a/dev-python/starlette/starlette-1.6.0.ebuild b/dev-python/starlette/starlette-1.6.0.ebuild
index 7a493f86d475..01f8fd87478a 100644
--- a/dev-python/starlette/starlette-1.6.0.ebuild
+++ b/dev-python/starlette/starlette-1.6.0.ebuild
@@ -24,7 +24,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~mips ~ppc ~ppc64 ~riscv ~x86"
+KEYWORDS="amd64 arm arm64 ~mips ppc ppc64 ~riscv x86"
# TODO: default to httpx2? add some flags?
RDEPEND="
diff --git a/dev-python/time-machine/time-machine-3.4.0.ebuild b/dev-python/time-machine/time-machine-3.4.0.ebuild
index 11af38908765..907484072dbc 100644
--- a/dev-python/time-machine/time-machine-3.4.0.ebuild
+++ b/dev-python/time-machine/time-machine-3.4.0.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
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"
BDEPEND="
test? (
diff --git a/dev-python/tldextract/tldextract-5.3.2.ebuild b/dev-python/tldextract/tldextract-5.3.2.ebuild
index 9e3c9b3045b1..96b05ce41109 100644
--- a/dev-python/tldextract/tldextract-5.3.2.ebuild
+++ b/dev-python/tldextract/tldextract-5.3.2.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+KEYWORDS="amd64 arm arm64 ~loong ~ppc64 ~riscv x86"
RDEPEND="
>=dev-python/filelock-3.0.8[${PYTHON_USEDEP}]
diff --git a/dev-python/tree-sitter/Manifest b/dev-python/tree-sitter/Manifest
index 089dafe1be90..518c5a6cd63e 100644
--- a/dev-python/tree-sitter/Manifest
+++ b/dev-python/tree-sitter/Manifest
@@ -1,2 +1,3 @@
DIST tree-sitter-0.25.2.gh.tar.gz 174357 BLAKE2B c136098245beff521e7bf26b58b0cb4adfcfbec05ad59f62949c422c414cd879a973390875c285b014593790a5fb243863cc2b82dbecbf3297f24b394b06350a SHA512 ee0ee294cd3380442bb6f4f62413590818bfa4afbde1601bb89c777e97dcee885a22a06e529913c2fb08d082f5de775ced9403ffd5d2ca35dcfd0b19072ee452
DIST tree-sitter-0.26.0.gh.tar.gz 174361 BLAKE2B 450b47a6b74abb445fdf88c75407d3a9b7273e644b9914179ec06bb4736c9c35a22efcbe50bfbae7a80d53160ee86d96ff9a4ed2b4250183969ab1236ebbe7f8 SHA512 595936f82d561bcd6aea83164b68d47336da06bd902f4c2756439df9f3282bbd4bca858849fda946b3ad3ea7b8d710f004096d1e989f331b3b7f13239b645de7
+DIST tree-sitter-0.26.0_p20260816.gh.tar.gz 174490 BLAKE2B e5dc3e908d5191db3d4376bbbbbbc8c23e7364d79e565fa53864e29dd9e9fa7d6ae2f6d951e8accf930b1bf11096bcdafc33b36f4178adfc245ff92c03f21711 SHA512 390932534f993264ac79d4bc44555f52d7180978294e46323f79498581b4a78569b34014ab45bad508c2a2d08dcade0c944861dc5b1363d9a764f5dbf2fc41f0
diff --git a/dev-python/tree-sitter/tree-sitter-0.26.0_p20260816.ebuild b/dev-python/tree-sitter/tree-sitter-0.26.0_p20260816.ebuild
new file mode 100644
index 000000000000..272df44146e2
--- /dev/null
+++ b/dev-python/tree-sitter/tree-sitter-0.26.0_p20260816.ebuild
@@ -0,0 +1,60 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+COMMIT=2e556e540dd4ccce0e24c92d4413ef9ac85284a5
+
+inherit distutils-r1
+
+DESCRIPTION="Python bindings to the Tree-sitter parsing library"
+HOMEPAGE="
+ https://github.com/tree-sitter/py-tree-sitter/
+ https://pypi.org/project/tree-sitter/
+"
+SRC_URI="
+ https://github.com/tree-sitter/py-tree-sitter/archive/${COMMIT}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+S=${WORKDIR}/py-${PN}-${COMMIT}
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+# setuptools is needed for distutils import
+DEPEND="=dev-libs/tree-sitter-0.26*:="
+RDEPEND="
+ ${DEPEND}
+ dev-python/setuptools[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ >=dev-libs/tree-sitter-html-0.23.2[python,${PYTHON_USEDEP}]
+ >=dev-libs/tree-sitter-javascript-0.23.1[python,${PYTHON_USEDEP}]
+ >=dev-libs/tree-sitter-json-0.24.8[python,${PYTHON_USEDEP}]
+ >=dev-libs/tree-sitter-python-0.23.6[python,${PYTHON_USEDEP}]
+ >=dev-libs/tree-sitter-rust-0.23.2[python,${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-0.22.2-unbundle.patch
+)
+
+src_unpack() {
+ default
+ rmdir "${S}/tree_sitter/core" || die
+}
+
+src_test() {
+ rm -r tree_sitter || die
+ distutils-r1_src_test
+}
diff --git a/dev-python/trio/trio-0.34.0.ebuild b/dev-python/trio/trio-0.34.0.ebuild
index 109def512b6b..77009d878fb4 100644
--- a/dev-python/trio/trio-0.34.0.ebuild
+++ b/dev-python/trio/trio-0.34.0.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="|| ( Apache-2.0 MIT )"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/attrs-23.2.0[${PYTHON_USEDEP}]
diff --git a/dev-python/type-lens/type-lens-0.2.6.ebuild b/dev-python/type-lens/type-lens-0.2.6.ebuild
index 4e04052b4847..019de1d6de63 100644
--- a/dev-python/type-lens/type-lens-0.2.6.ebuild
+++ b/dev-python/type-lens/type-lens-0.2.6.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64"
+KEYWORDS="amd64"
EPYTEST_PLUGINS=()
distutils_enable_tests pytest
diff --git a/dev-python/types-setuptools/Manifest b/dev-python/types-setuptools/Manifest
index 32c6dd07f7dc..2ada00f983ed 100644
--- a/dev-python/types-setuptools/Manifest
+++ b/dev-python/types-setuptools/Manifest
@@ -1,5 +1,2 @@
-DIST types_setuptools-83.0.0.20260706.tar.gz 45290 BLAKE2B 38ec6630ebaf68b4e5d4b26701dd073050bbecd253a1efe98aabf523b8caeac71a669b212642cddd8a2faf49f52fab474259c6a30f987618bbd51345fe560015 SHA512 addf447bfe1c6a899a2966c6a8fe6b1f620f073e948740ba89a6fa02849d8df5717f918f5bd1cb10cfc4f374fb856361f5d37a7c832b26f603a01df0faa5be90
-DIST types_setuptools-83.0.0.20260716.tar.gz 45672 BLAKE2B 17878df1773a017dc139cb3249a7d7b74ae9fd6a07fccfe5c659ba68d02ed96c01bc3ce8f41d9606017cd12cfc5cb47a4e5d7611df1f7d0b68bc9b3856cbc1cd SHA512 abc800628671c783998f0bed60004fdd548a9a6ce57dc0671534d5d5b10f0311d703566dfdf0db0488e6edb00510e27f4e076ef0d98b88b32f7d45f614a48c2a
-DIST types_setuptools-83.0.0.20260724.tar.gz 45746 BLAKE2B 97c0c009f1ac0f3be22960cf3787463d03ac34583275906d244cf2ef179feef779fe3233257b64913c96c0c60ac29d1ae570ecc9b1659dd18b803b96660ad6d0 SHA512 a897f54366d61bab5f505a1862baa5c7694571a0ad4d8049bce6d9c43a1e08f81096649c9156eef9865ff1070d0e55103b3a7c2c1d768e340aaaece6b61b0ffa
DIST types_setuptools-83.0.0.20260807.tar.gz 45884 BLAKE2B 72532ee3ed244015973c2c5a995e7947149da62be2f79dff089043286cc06cc5fb7adedc58bcb11f0d4a8a28102ae22e1cab0b6d82475a1402d200319d8fa6ee SHA512 642119f08435fc27d830195a5f7c9aca947b874479a46ad86810a0a341d5eececa392d8ef630cc8a18726c93869b3a07b6bb8500c1e119859abef5183f6ab6a6
DIST types_setuptools-84.0.0.20260812.tar.gz 46545 BLAKE2B acc033743b3291684ef241709fcb0dc715a70b76b525e684fd5fcb9a126c7f41b0d00b11911457a13ace85448244929a47ecc5fa7ec3888d1858b44b37519150 SHA512 4d85891c5b6539061a02ef58684075a701a5adba25560268ace96abf4aeb35bbc0990d027a47c445188592929f2feb1f4b87f22d73e3cc058ba7b96096de555e
diff --git a/dev-python/types-setuptools/types-setuptools-83.0.0.20260706.ebuild b/dev-python/types-setuptools/types-setuptools-83.0.0.20260706.ebuild
deleted file mode 100644
index 00271830f010..000000000000
--- a/dev-python/types-setuptools/types-setuptools-83.0.0.20260706.ebuild
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright 2023-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Typing stubs for setuptools"
-HOMEPAGE="https://pypi.org/project/types-setuptools/"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
-
-BDEPEND="
- >=dev-python/setuptools-82.0.1[${PYTHON_USEDEP}]
-"
diff --git a/dev-python/types-setuptools/types-setuptools-83.0.0.20260716.ebuild b/dev-python/types-setuptools/types-setuptools-83.0.0.20260716.ebuild
deleted file mode 100644
index 9c559442de25..000000000000
--- a/dev-python/types-setuptools/types-setuptools-83.0.0.20260716.ebuild
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright 2023-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Typing stubs for setuptools"
-HOMEPAGE="https://pypi.org/project/types-setuptools/"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
-
-BDEPEND="
- >=dev-python/setuptools-82.0.1[${PYTHON_USEDEP}]
-"
diff --git a/dev-python/types-setuptools/types-setuptools-83.0.0.20260724.ebuild b/dev-python/types-setuptools/types-setuptools-83.0.0.20260724.ebuild
deleted file mode 100644
index 9c559442de25..000000000000
--- a/dev-python/types-setuptools/types-setuptools-83.0.0.20260724.ebuild
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright 2023-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Typing stubs for setuptools"
-HOMEPAGE="https://pypi.org/project/types-setuptools/"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
-
-BDEPEND="
- >=dev-python/setuptools-82.0.1[${PYTHON_USEDEP}]
-"
diff --git a/dev-python/types-setuptools/types-setuptools-84.0.0.20260812.ebuild b/dev-python/types-setuptools/types-setuptools-84.0.0.20260812.ebuild
index 9c559442de25..00271830f010 100644
--- a/dev-python/types-setuptools/types-setuptools-84.0.0.20260812.ebuild
+++ b/dev-python/types-setuptools/types-setuptools-84.0.0.20260812.ebuild
@@ -13,7 +13,7 @@ HOMEPAGE="https://pypi.org/project/types-setuptools/"
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
BDEPEND="
>=dev-python/setuptools-82.0.1[${PYTHON_USEDEP}]
diff --git a/dev-python/typing-inspection/typing-inspection-0.4.4.ebuild b/dev-python/typing-inspection/typing-inspection-0.4.4.ebuild
index 1bef67e323c7..cda207866169 100644
--- a/dev-python/typing-inspection/typing-inspection-0.4.4.ebuild
+++ b/dev-python/typing-inspection/typing-inspection-0.4.4.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/typing-extensions-4.15.0[${PYTHON_USEDEP}]
diff --git a/dev-python/unicode-segmentation-rs/Manifest b/dev-python/unicode-segmentation-rs/Manifest
index a62273dc375d..1265d06bbe1f 100644
--- a/dev-python/unicode-segmentation-rs/Manifest
+++ b/dev-python/unicode-segmentation-rs/Manifest
@@ -1,40 +1,24 @@
-DIST cc-1.2.60.crate 97051 BLAKE2B 292350c3fe7dc3e023fe4f7cd07b3a5a7233996963b42391243948f834a17cf69781bab32cf46d62722c45437f50123450811dce8aa0e96ee63f35480cc15d90 SHA512 d67fd7400bd1d20f26f7a6743ac02ad09dba0b8002172b87907f4a7ae2487ee41feb2f24fe375ca91a3ac4fde1dc8b48b6703b74297c9eb42bd1e91ac8fe4e80
-DIST find-msvc-tools-0.1.9.crate 31493 BLAKE2B 4137592addf8b58f4e4c02be537a72b132b38cecc1c263c2569fe40e2cfe4377e7141679f32661f44ed467cf9723343ab13732b3d6f4a2a84c610d0958e7e30b SHA512 729b3c1c1d520dffe5d88fc8b58e47fb7e86dc26e568fc317eea5ca8de0ee953fbafaa20ab34a6bfb43173bab39a90ff6954c11dab8d545e902305dafc8cd3de
DIST heck-0.5.0.crate 11517 BLAKE2B 5365ec43b2239a76b33a174f1a4292ece4147f9d382a68c6c60db78fdc8bad0afb1d51a65bcb25e96675372faa4ea37c318265030b0546ba51942f7c929e1835 SHA512 f044fc9c3d22466629fd8f772ec0555350fd611c0cfadca51d99a3d2f10e155f77c1091916c8a95a6b9b499f366c2e99a5fbf45b010f988bfb9b2501bf9f6a76
-DIST libc-0.2.184.crate 820172 BLAKE2B 61c2c133b14e79a6871eed0fef248a063f19d41def5bdf72bc7f96c3b60eac24b52d13e16f28d68d750a16fe546c26f245cc088782fd26f8fac78da91b1d5c0f SHA512 46e22ca28ee3562bfa2475a944390cf2d864e11d533889c753c4888a56c02b981bf9507b7866bec65c1b1aa32801cc1c57b660bd93149111547ece7ddc55f31e
DIST libc-0.2.189.crate 851502 BLAKE2B 05155a249c6880ca96a19bbb7569d4ca7530f544504e4ccb48db1ebca0b70d84e99c6b9532adb9dfbb3d4d1187eca22698a6b2ba6ae40bebf5d6eafdae86c71d SHA512 0cf621171ed4e6bbfeb71fb582ebf037d62ab481bc406ca2fb766bd4a8416f220a189325a0d3cb3e3cb39d80e09312516ca6335fad71b329c5fccddabedf4110
DIST once_cell-1.21.4.crate 35010 BLAKE2B 9117ed1d478e626b7b7be2e3ff8b68a382b051112c7ca4425367bdae86977671f8b5c576131c82fb437740b6d98b72501f718f4172d39781decac2385e8fbd4d SHA512 af67669b0107f44268ba74c355200cb2ed1aab235a6989a8bc54323eb2c9a45677010f8672e7790edadd4c981e939436e0c3a099d33c06dce9c14fd5ede86155
-DIST portable-atomic-1.13.1.crate 197001 BLAKE2B 6d0898c2a537a9bf204b7749cca5f5fddf280772b56eb7ce8fdd9cf7d71561137b26ef89f415c40277a1c89981333eef78e5bb4624515a294ba28fdaeb4c70ea SHA512 2a1b31ac9814af884640b3398ab824a9795c72d260527a0966b193113808cfbb3345d50cd1beaebb45863437c3d06c8706d34b26efecceefc649319a4bc274a3
DIST portable-atomic-1.14.0.crate 200703 BLAKE2B 2aafdf454dd417cf7a3ff7ff72cca1bb1274918b8b15a0b1ebd4feadc4bafd87544938c26e001e1bb417aafa641521dba40a36ec50db59d03bbdc04d855635f0 SHA512 4c306fb2767b1689be65e57552260c2367f37808d0a32affafa21fddacd330c7735b0c3c8fe456fac10c4088ca5e8ede980b6d6da2171fadb682b925ff9a2c63
-DIST proc-macro2-1.0.106.crate 59765 BLAKE2B 87f95795621c4c992c370dc3a1240a2d5580e3362356525efe640f8f26ad0492b3c88755d575c080ff7db11376b0d82f31141bf6f86c895249b85e46c081220f SHA512 b726e2c92af434bfa88cd4f53c3fe6db647503567675fb439890dee3d15f5111137e3242b28d164114ce081c10acf3fd11950753ddb349190c87ee04e7d97744
DIST proc-macro2-1.0.107.crate 59588 BLAKE2B 91df0c573e3e1f09c1aeedcad0381cf18186d72c3d50b077b1d232fbb67d1c87ed09f3c6dc515140041c2dab5ce7706042c8235b93099df7d1c962d4a3a99160 SHA512 c109d5509624a57156e0eae22a3aec89a1a163623e8b4e376a13d872a46e4bf6855ee3cd4428c07cdf5c22f2284b6ce755f9cc7e075480e4587ce4f2d40fa903
-DIST pyo3-0.28.3.crate 1204476 BLAKE2B 8540a1c51bac4fbe04ea34d5ce38471c13d5a3f0759e60cf21d67e846b00feb8316e70f32cb8dc6b74d09f0901ffc83d5f41b1a06da6d34790ef13e4cefcad45 SHA512 f955957eec4b95cc9337d331bba3bba52b4754b301cf86cd974601e64eb20c2424023b19be89a224661fe2e185de646cd3d0d00705b6b5cbd139856c9443a247
DIST pyo3-0.29.1.crate 1254237 BLAKE2B 6750e917cb1c0caa196784890644f020ac68ae644adc487bfd908e54844b28032d3cd66a8312cfce860418ebc31ec2515fcd332d79cf23487013fbd72e47b98d SHA512 d3b8c94a0e73fe74f64bae89bc9ab139d48b37a128f3f3d843b4414441a79716117dd47ebcc3f6990c50283071a72a372a4f6c731c846cf107c714442a164b67
DIST pyo3-0.29.2.crate 1255741 BLAKE2B 5187b7dc0f0b2b1441b451850f442a9cf7b8e65baab3c94996be80e39543350ce8739baccb2df0caae1049a4cf744274e4ca9a9d752887d09df5c03e380d42b0 SHA512 85326462a932fd49441f320a879192306a7a6f3a66468ca468fefdb3dff9a530b7895010f156c8c3b125279b94dd304b72825fd4bbdcaeba8e3a58bd8cdcc929
-DIST pyo3-build-config-0.28.3.crate 35961 BLAKE2B 61a0101913c6d563721049ca99256c2aefd89b017a7e18c82f4a6aceca0aefeaa71fd559cd43adfb5034ce076c904e5188f8f73961ea217287fbfd12caab9401 SHA512 78f85696901b16540d42187d10e888bd929b9f23415faeb73f9798abda1af3506a308145dd4113b070521271c72624d7930fb4b19bad25aa1afd3082030c9126
DIST pyo3-build-config-0.29.1.crate 41344 BLAKE2B db2accea141aeccf208dbcb8569de45c35d8c1f91c33fdd221a54675f3911b922d29e46aeefade60a06ebe9aaa0f30817628847f903cf7aa1088b932b2ce0e87 SHA512 cda7b88d6089530b85cf22eeb073471e988a3ede5963dbd51be6878baa5d29b64edf1733ab5d6057d2da470b6279569dafc800e0195f574499ab0c5022d6bca2
DIST pyo3-build-config-0.29.2.crate 41104 BLAKE2B b4a78b704ae7c6cd8393abd436fc5d4e9f984ad6f4c95f1fd069888865a516f1a65eaebeecc7bb61e6a0d62d637ff4312a8d6a31f2dabb262d0f3c5177abdf39 SHA512 ecae961c373a87eb13ed3881ac4954112bbf54b3e02eb287d818e44e5ab46cd4700220da5072dd1fb22d68435d012a413a3680b54505c700ee059f1472833b6a
-DIST pyo3-ffi-0.28.3.crate 80881 BLAKE2B 4ac7066c911e2aec18aa9245efed00585d063f81d69910e6a146f8efbf2939ab5de519bbf2a3dde78b40c264e97c62490db80e9b2e84aaf080d63659a6676459 SHA512 ec49b5cc67d19f46c9daea76b37b4988af0f63b9ed67c71190f015a0aa9691d4a8ffd4128413de430928428e1e8e26d44c3103f561e6b71b7e8c4597ab602d9f
DIST pyo3-ffi-0.29.1.crate 89131 BLAKE2B 466eb3253c2dd04b784c0c221fce0e1a380f1b6bc4369185c9bd09359c8f6030c18fcba8c9a4ca461acedf666a2a226c1249c79bd04ee4791e0f2a21fb9436a8 SHA512 1f13dfc3a39a2a731baa7ffcac1d6bc107cb622f0bfaf37ca5a20f65948da11acd073cb9d293503ff73bacd91f2e0537a665aae0a14bbf2785b516c7c85bd6f7
DIST pyo3-ffi-0.29.2.crate 90029 BLAKE2B f20803f6866a99767ce814984cc624783c2207ab54909deaba0a674c3c8f3e98c56bac80e1ea0e13b295634b0c6a713bd961b6c58aacbbc3be5fa9e224ff86e3 SHA512 a5b1db7e856af10f32ba3ce6a4dddc48a11f48431b82cbc1e40be88370836902afc9ab2918eb953d7fbed1ad7daaebefdf70489c7c798e591782e7dd6e2d0ddd
-DIST pyo3-macros-0.28.3.crate 8963 BLAKE2B ca9967cfba565b873ed77565ff6eb8408473c227d191797e9db8c6b5cbc89abc17ffd57ae71e28877088fe19373da2f503cdefeae6b0a47796f6abcf62044f08 SHA512 57d178bd9b53dd98916e60c89bc26c34f9949829dc17bf7d6cc15b704bba7c874d85d6bd3c827d401268660a79230a6e32711048da939ec4e22342f3e08046d1
DIST pyo3-macros-0.29.1.crate 8916 BLAKE2B 0d8bcd79a9547f0a42f87399c3e0eb21444065fea750416050ae336db242de80e41a9bda157feafa3f40317e4b163cfd5193250a5dbc2dd8a1ab18b0f3d3d67c SHA512 09e7dca8ef73ab572bb71e78f6edcd786b769813e7b8758df17669292e8218ed5c4f4536f6809ba0c58fd49837f22af5181d034de556b0c98f21b9a69484a716
DIST pyo3-macros-0.29.2.crate 9044 BLAKE2B f7caebd70dc9f54914d1d87e4c800f7bddc5d1e09835b0afd96e1f98320127660aa38f58b634ca196d823c926e279bf87c17506161a61bbae0908c51fc3b7eef SHA512 32281797e849ccb23c0ba03f8bea13ffcd86acfc3d5df65543c13befc03c142e88bfaf45f0cf5489cfe9e6acf9170ca6c24ced5d3f3f72be37bc7d2ce2bdb935
-DIST pyo3-macros-backend-0.28.3.crate 88063 BLAKE2B a484b12bbab3031838f61149ab9f08b9e460a2bd02089e08e58dac2cb747afbc0cdfe64018ed4c8cb0bbbd1d22e3eb05a6a72b020da6b71a584ec51ca8d24292 SHA512 45ce31ed64ee4fd0249736d480c9840a756bc45934d6803ae11e0680057ecf4cc74c71b47ccf9241fc3ab5c1e0b9c758426f08bd523d1ace92fc308302ea3c84
DIST pyo3-macros-backend-0.29.1.crate 93202 BLAKE2B 2a76e0a701830866f6f3031844c1c81066e1b17b20a4d4f688173cbc789c26cd5da54a11af6dbc6153f73e5c72d7e808625ea46dd446be43e633afaf439f844e SHA512 1b3d8e81506c78a0b91d2fbdffc2aeef1752cb6b8d9c8b70e957e898dbb09c395d2e1176f8d9da89b3305391315f9945ae2252ce485f649c57df215a740cde72
DIST pyo3-macros-backend-0.29.2.crate 93749 BLAKE2B dce6aeef93fc8483dfffd5b514d21530ff499f241ac157e2ea304c8cd050e9fc1343d356a5a85dacb8a73d4d4405b89b4eab128f85fac54aa00f53298ab409a5 SHA512 944b8482e2a6fd0dce82eabe50f915d82b066cf11944e413ab81c01fc917dfe1877748cb8eb92f23d8acee43a9d1fb35f8690203ec440e7db7c66b03c7f27358
-DIST python3-dll-a-0.2.15.crate 104255 BLAKE2B d08eb9cdbc9011e8965b24aa9c9538f0a2e372c0e76fd96d9241b587d83d16cb5cb1f5fcf7f62123dee69970be900e9cf46ad959f130f5095eaacf44470b66ce SHA512 1f5bad896ef5f630e43fd76cd9ea73ce859ac98c9c569435045f21633ddff085416ba7ae387e823339696edb729a94700dba44e7351c79b1408f05ebdda0a7ba
-DIST quote-1.0.45.crate 31564 BLAKE2B 1b2c2c3e6ebabfe10affa4c43ca0bfd1f52d8fd49e1df463e13e63a82de41272089c8e09e4c02e8a33cfee768ace26d4d42a50752de8fb5a776c59806139ad5d SHA512 df96ede01ebd0ed642b758bf1d0862d0e116fc2b3343e14edb657ce5438ccabe743dec4a0a40de4dee98c134d169af9aba459faadf9c7a832b26377e755d49b0
DIST quote-1.0.47.crate 31622 BLAKE2B d912f17bdb5f2db29f5349e976e12da52db9d2197dd9900cb00e907d1e9b06ab177e9b020c1d53f6a6cd087e3a973aed5af63eac282da77792b2a6d6e1b35b07 SHA512 544f4324d425ae011905e0d1b52e367d4660bc34457b2f802af94e1def1e6c4e39ffba3beeb40d75753967d15b6dccce18fea273e7f3d46b63d5c89898d19441
-DIST shlex-1.3.0.crate 18713 BLAKE2B 18800c364d3a628f1a3125097ea82fe6286550c2997235df0bf8483a3906aacabc81308cb239887d46ba2f457cc6f8acd5aca78316707eea5098cd5666aea67d SHA512 5c8cedbe666a14b8a0874defb9208146ce64579cde52ed483e4a794cac5dde6a24bf8d684404edff582f842e1fd4fa3fbeddbe074f191e4ec4aa517aa456fe8a
-DIST syn-2.0.117.crate 306011 BLAKE2B bbaec02c4322f522bdfc87caa4ce6fd1e09bbf8f4a102d9ed8728efacdd843a2750f616dce5b2d3a3e46bbb7d57439fbd10e328bc1d4a01e980986cd815798af SHA512 035c2e63542592b6a4058a2a82d4c2c1f5793f84fb1b04cbd393337a26fcf661a1f3bea439ce98a1fe943b1c4d36d2bda16df3bbc3fa6ca35e1548d530dc8416
DIST syn-2.0.119.crate 307407 BLAKE2B 0be3bce1250db4818af7246a03352ab50faeca02b81126fd623bd473d7223693f43914e88e07baa0d7fa5473192e390406165f83e00dbff048c1ea373085eced SHA512 4f2493e334b71c2b0c467e19915d385942c10dc4c0142dd989dcfab9809dea552c45ac3da0b0039956a961f7aca2973c0845c6978e9dfe25c03fdc52dfb1dec0
DIST target-lexicon-0.13.5.crate 26928 BLAKE2B f8c62cb91f68a635e6ce3fc254df9ce378b5e8f62c1147404c967484b9ed97fb33d7993b4671611db76566063e999d658d201f856f70196ec678d72cc758cf6d SHA512 956df27c01e1186c5356117ffd07810fc0b62fb919d5bfd215955ba85be00ef675212a3c0dc36679986be7b825442fec5c93c7643b7e1e19c04572e6463546fc
DIST unicode-ident-1.0.24.crate 49298 BLAKE2B 34ba2906a3ebc06f52a4ba77dff96a8f3fb977718d260886fa9e051c5830765641b65a63977110f3a79f31fa177b385f81b01d56c80f6a0324d36eae72e2ebf0 SHA512 7be712d8d0075ac9341790180e312f66264d3e0255c91b38df0951baa5e446dec24551bb2125a66a1cb9b6ca2f1ea37c0cc15fa3dd74f398ecf4d5302c7dc259
DIST unicode-linebreak-0.1.5.crate 15324 BLAKE2B dc560d5b36ed01357c22750feb7f09fd0f57fb0ea543180f6e31c0b71b51df4faaa70ac8482f9cd60e5d1faa5bfd4bebfbfd628dd5913c2c4a858ec04beeca3f SHA512 f37be2f7b04b886e95bb7d0f33bd392b78bb940ef9a01cec487062cf31ec0367306650fad7004df556887a324c714eeb28f697044aad9a429ce07b7b7344af60
-DIST unicode-segmentation-1.13.2.crate 111829 BLAKE2B dcca4af1f3d432c7f40366f7a29267a698cd0ee9a8d3fdb55c577c3456c75f1d664f8bd1f9a59f9b19b93f073a1af7f89bc7d70f87f7c8ade148187c9b8b4990 SHA512 79652f9c22e755530e3910e8a4e176cc882c4b9895755e1539e20820b6dd74cbd52dcc9185eb11f3f150214fb6a822a4aadb6fe967e9a590602008587c67cf77
DIST unicode-segmentation-1.13.3.crate 112325 BLAKE2B 4767480bbb171eb9f9cb026c4101c7db58f37ef3d0ba12233c612392b48e1c63efa61e66c321a4bf772dca214794906cfc82bafb87e59a755bb164b0b2304c45 SHA512 927f3d2662c40213c6d824c410e3559f180fba5736abdea566ad9f3ed357c5a82f84f63e7fb89c6b18dfba2903d2dc43663b79d0b9f7672a42926e0ba49c85d1
DIST unicode-width-0.2.2.crate 282768 BLAKE2B c03a04bb159969f32447c7823f50b2686c515dff4f7778d2cac07a87cb9488d44844b0bb0b51c6996d8fa1fcb65cf4e6a8a9e697d95c1be8373535bc8d7c4215 SHA512 a0ff6ccc1d154e5a100808d3109fe30afa048c3ff402f0a0de34dbff2d58a7403903002185b33bee7b04dcb578c9dea66225a8697f3cd997205680ae3abce965
-DIST unicode_segmentation_rs-0.2.4.tar.gz 27177 BLAKE2B d184f8cb3686d532f2fb8c78f3bb510bab63a99e288b631751992a6da84fc2b8b1efdefa512ec2dfbb07091f9a0d8b45aa280c0764e3ccfc8c97ee5ab044a028 SHA512 b60c04acd703bc0402213fad0b3498b09209a8498d11c9b3985b458c315f0ecd3dfc558ed118c6f8b73236e6a373c9143c67e6ae430f86308e7b73c4e9bfac12
DIST unicode_segmentation_rs-0.3.2.tar.gz 33325 BLAKE2B 2d1d256f601c0259367977cad16ed6e5fa21f4552db162277e6787d9955fdcccefea85cfda24dfecc44a192ee71e6adce4138724d96fd96e33203a7adef0a365 SHA512 1f798391037d4a263e9754d4a4aa3da23147a53fa2dd1cee67f2b335737225d19870457917fb9df18f6dfc60797fa567c3fda495ef771e340ce1c7c44c162f74
DIST unicode_segmentation_rs-0.3.3.tar.gz 34805 BLAKE2B a7b33a913aa1f02fa3fdcbe5154ebe9cdeb9d6e025ef92aca683088092dd32a73d3b8f0a5f4f62b0bd7e260955485a461420f6df87e81574eae97678ce9335d2 SHA512 3686035a5d4810d55eeb13912a0ef6cc7a1ac78e93a243bc13873a89fdbce3f0187e77a0f166ec1a73576b7da59fc5fff377bda176a043e767ad2140a5282f16
diff --git a/dev-python/unicode-segmentation-rs/unicode-segmentation-rs-0.2.4.ebuild b/dev-python/unicode-segmentation-rs/unicode-segmentation-rs-0.2.4.ebuild
deleted file mode 100644
index 3ad17d0e958a..000000000000
--- a/dev-python/unicode-segmentation-rs/unicode-segmentation-rs-0.2.4.ebuild
+++ /dev/null
@@ -1,56 +0,0 @@
-# Copyright 2025-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=maturin
-PYTHON_COMPAT=( python3_{13..14} )
-
-RUST_MIN_VER="1.85.0"
-CRATES="
- cc@1.2.60
- find-msvc-tools@0.1.9
- heck@0.5.0
- libc@0.2.184
- once_cell@1.21.4
- portable-atomic@1.13.1
- proc-macro2@1.0.106
- pyo3-build-config@0.28.3
- pyo3-ffi@0.28.3
- pyo3-macros-backend@0.28.3
- pyo3-macros@0.28.3
- pyo3@0.28.3
- python3-dll-a@0.2.15
- quote@1.0.45
- shlex@1.3.0
- syn@2.0.117
- target-lexicon@0.13.5
- unicode-ident@1.0.24
- unicode-segmentation@1.13.2
- unicode-width@0.2.2
-"
-
-inherit cargo distutils-r1 pypi
-
-DESCRIPTION="Unicode segmentation and width for Python using Rust"
-HOMEPAGE="
- https://github.com/WeblateOrg/unicode-segmentation-rs/
- https://pypi.org/project/unicode-segmentation-rs/
-"
-SRC_URI+="
- ${CARGO_CRATE_URIS}
-"
-
-LICENSE="MIT"
-# Dependent crate licenses
-LICENSE+=" Apache-2.0-with-LLVM-exceptions MIT Unicode-3.0"
-SLOT="0"
-KEYWORDS="amd64 arm64 ~x86"
-
-QA_FLAGS_IGNORED="
- usr/lib/py.*/site-packages/unicode_segmentation_rs/unicode_segmentation_rs.*
-"
-
-EPYTEST_PLUGINS=()
-distutils_enable_tests pytest
diff --git a/dev-python/unicode-segmentation-rs/unicode-segmentation-rs-0.3.3.ebuild b/dev-python/unicode-segmentation-rs/unicode-segmentation-rs-0.3.3.ebuild
index fe577afad01b..372799f8fd0e 100644
--- a/dev-python/unicode-segmentation-rs/unicode-segmentation-rs-0.3.3.ebuild
+++ b/dev-python/unicode-segmentation-rs/unicode-segmentation-rs-0.3.3.ebuild
@@ -43,7 +43,7 @@ LICENSE="MIT"
# Dependent crate licenses
LICENSE+=" Apache-2.0 Apache-2.0-with-LLVM-exceptions Unicode-3.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~x86"
+KEYWORDS="amd64 arm64 ~x86"
QA_FLAGS_IGNORED="
usr/lib/py.*/site-packages/unicode_segmentation_rs/unicode_segmentation_rs.*
diff --git a/dev-python/urwid/urwid-4.0.9.ebuild b/dev-python/urwid/urwid-4.0.9.ebuild
index f840d3f28004..1fdcf2e3eada 100644
--- a/dev-python/urwid/urwid-4.0.9.ebuild
+++ b/dev-python/urwid/urwid-4.0.9.ebuild
@@ -19,7 +19,7 @@ HOMEPAGE="
LICENSE="LGPL-2.1"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~sparc x86"
IUSE="examples"
RDEPEND="
diff --git a/dev-python/uvicorn/Manifest b/dev-python/uvicorn/Manifest
index bf503c7cba7e..04b670afebe0 100644
--- a/dev-python/uvicorn/Manifest
+++ b/dev-python/uvicorn/Manifest
@@ -1,5 +1,3 @@
-DIST uvicorn-0.51.0.tar.gz 94412 BLAKE2B 80334c8fbde6624072a2b13391d80493affe6aebcb95e79652f8bb32804924046c452355e3ba889e7e852ecdcc86fee1877346303cb75ce54f9905ee0cce4955 SHA512 f88e95fbe3ca145b5ae2cb841d7aeb3d42ee8dbdfdade3f84db88416a5eb78444c22f04c8f95d26afb72b1a71968b2ffe8b0dd0a461765008ee5507d4ab4e242
-DIST uvicorn-0.51.0.tar.gz.provenance 9737 BLAKE2B 2ec83d01d615cecd97da8478ac37bae91759e01f9b37c73be204a4c0f08d00710e7eda005f6161191dd6466845a058bf5030fb999f9ea3a3d4a2aba3ce86a9ef SHA512 2acd44c85fde7059e1f857544cd611c12d2b243e870a2875767ddd07f794b42243c93fdbeadf1f5d2a867558ea397dcd8ef7e98a942c4f11ea802a9d1ef2b58b
DIST uvicorn-0.52.1.tar.gz 100571 BLAKE2B 3db0bcc0dab7cfec06b96d714fd561b22aa400fd3df53d8f4e2c8eca47e907aa6cf41445668e1cdb4d29f09f5e8e20393c45eeeec0d0f4cca4772d09e2c17eee SHA512 a6ee1766ab44971c0aa51b9a31654bcea2d885e6cea3ffd4bc67607aed2a18fbe2475cc7e7a05796a51a40904122b5f8eca1cefc70eaabc61ac308161be8b2c6
DIST uvicorn-0.52.1.tar.gz.provenance 9377 BLAKE2B 334badcd244016c352712863d8afdd8aec93b6d909d18a1dcde5e0919b77cfd6d290a5afc38e1dcd10c2ecc69a07f7dbb34e3f41aced067025a7467b14029e62 SHA512 1d27ae7d57c993bb93908632253533cda966789f67943098237e56b37cf0b4e4b4634f760bec417eda824288c8be67608ed1cc138019af1d3b903420d7ad51fe
DIST uvicorn-0.52.3.tar.gz 100621 BLAKE2B dc1041554e622bbd43fc9c34b6b9022a859f07ba17f4f432ace2553777fe89f4d3218d7d87b9f30942b6c5f7e0d6e7a5c248217ebb55b884ae6c1eebc4bad9fe SHA512 c4733d59e597134a1221a923802dddf7220a18715b08a56fccec1bc2ed5cd2858c6a05549bb24b94f67b48342ecfe2e9f0093361176f80814145eaa847597e19
diff --git a/dev-python/uvicorn/uvicorn-0.51.0.ebuild b/dev-python/uvicorn/uvicorn-0.51.0.ebuild
deleted file mode 100644
index 525fcf20b707..000000000000
--- a/dev-python/uvicorn/uvicorn-0.51.0.ebuild
+++ /dev/null
@@ -1,70 +0,0 @@
-# Copyright 2021-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=hatchling
-PYPI_VERIFY_REPO=https://github.com/Kludex/uvicorn
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1 optfeature pypi
-
-DESCRIPTION="Lightning-fast ASGI server implementation"
-HOMEPAGE="
- https://uvicorn.dev/
- https://github.com/Kludex/uvicorn/
- https://pypi.org/project/uvicorn/
-"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
-IUSE="test-rust"
-
-RDEPEND="
- >=dev-python/asgiref-3.4.0[${PYTHON_USEDEP}]
- >=dev-python/click-7.0[${PYTHON_USEDEP}]
- >=dev-python/h11-0.8[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- dev-python/a2wsgi[${PYTHON_USEDEP}]
- >=dev-python/httptools-0.8.0[${PYTHON_USEDEP}]
- >=dev-python/httpx-0.28[${PYTHON_USEDEP}]
- dev-python/python-dotenv[${PYTHON_USEDEP}]
- dev-python/pyyaml[${PYTHON_USEDEP}]
- dev-python/typing-extensions[${PYTHON_USEDEP}]
- >=dev-python/websockets-13.0[${PYTHON_USEDEP}]
- dev-python/wsproto[${PYTHON_USEDEP}]
- test-rust? (
- dev-python/cryptography[${PYTHON_USEDEP}]
- dev-python/trustme[${PYTHON_USEDEP}]
- >=dev-python/watchfiles-0.20[${PYTHON_USEDEP}]
- )
- )
-"
-
-EPYTEST_PLUGINS=( anyio pytest-mock )
-EPYTEST_RERUNS=5
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-EPYTEST_DESELECT=(
- # too long path for unix socket
- tests/test_config.py::test_bind_unix_socket_works_with_reload_or_workers
- # TODO
- 'tests/protocols/test_http.py::test_close_connection_with_multiple_requests[httptools]'
- 'tests/protocols/test_websocket.py::test_send_binary_data_to_server_bigger_than_default_on_websockets[httptools-max=defaults sent=defaults+1]'
- 'tests/protocols/test_websocket.py::test_send_binary_data_to_server_bigger_than_default_on_websockets[h11-max=defaults sent=defaults+1]'
- # tests broken with non-ancient dev-python/websockets
- tests/protocols/test_websocket.py::test_fragmented_message_exceeding_max_size
- tests/protocols/test_websocket.py::test_fragmented_message_reassembly
-)
-
-EPYTEST_IGNORE=(
- tests/benchmarks
-)
-
-pkg_postinst() {
- optfeature "auto reload on file changes" dev-python/watchfiles
-}
diff --git a/dev-python/uvicorn/uvicorn-0.52.3.ebuild b/dev-python/uvicorn/uvicorn-0.52.3.ebuild
index 177e8e69f7c1..525fcf20b707 100644
--- a/dev-python/uvicorn/uvicorn-0.52.3.ebuild
+++ b/dev-python/uvicorn/uvicorn-0.52.3.ebuild
@@ -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="
diff --git a/dev-python/virtualenv/virtualenv-21.7.4.ebuild b/dev-python/virtualenv/virtualenv-21.7.4.ebuild
index 0abb2e161fb7..5e79811206d5 100644
--- a/dev-python/virtualenv/virtualenv-21.7.4.ebuild
+++ b/dev-python/virtualenv/virtualenv-21.7.4.ebuild
@@ -19,7 +19,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/wcmatch/wcmatch-11.0.1.ebuild b/dev-python/wcmatch/wcmatch-11.0.1.ebuild
index 920e5350faaf..832acb55f3f0 100644
--- a/dev-python/wcmatch/wcmatch-11.0.1.ebuild
+++ b/dev-python/wcmatch/wcmatch-11.0.1.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86"
+KEYWORDS="amd64 ~arm arm64 ~ppc ~ppc64 ~riscv x86"
RDEPEND="
>=dev-python/bracex-3.0[${PYTHON_USEDEP}]
diff --git a/dev-python/wheel/wheel-0.48.0.ebuild b/dev-python/wheel/wheel-0.48.0.ebuild
index c2eac8bc89d8..801408fe1e0c 100644
--- a/dev-python/wheel/wheel-0.48.0.ebuild
+++ b/dev-python/wheel/wheel-0.48.0.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos ~x64-solaris"
RDEPEND="
>=dev-python/packaging-26.0[${PYTHON_USEDEP}]
diff --git a/dev-python/yaxmldiff/yaxmldiff-0.3.0.ebuild b/dev-python/yaxmldiff/yaxmldiff-0.3.0.ebuild
index 0884d5ef41ea..718ad9f742a7 100644
--- a/dev-python/yaxmldiff/yaxmldiff-0.3.0.ebuild
+++ b/dev-python/yaxmldiff/yaxmldiff-0.3.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64"
+KEYWORDS="amd64"
RDEPEND="
>=dev-python/cappa-0.32.2[${PYTHON_USEDEP}]
diff --git a/dev-python/ytmusicapi/ytmusicapi-1.12.2.ebuild b/dev-python/ytmusicapi/ytmusicapi-1.12.2.ebuild
index 7cd2ca8683c1..12ae3148f0c0 100644
--- a/dev-python/ytmusicapi/ytmusicapi-1.12.2.ebuild
+++ b/dev-python/ytmusicapi/ytmusicapi-1.12.2.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="https://ytmusicapi.readthedocs.io/
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~x86"
+KEYWORDS="amd64 ~x86"
RESTRICT="test"
RDEPEND="