summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/aiorpcx/aiorpcx-0.25.0.ebuild4
-rw-r--r--dev-python/aiorpcx/files/aiorpcx-0.25.0-py314.patch22
-rw-r--r--dev-python/argh/argh-0.31.3.ebuild8
-rw-r--r--dev-python/argh/files/argh-0.31.3-py314.patch54
-rw-r--r--dev-python/editables/Manifest1
-rw-r--r--dev-python/editables/editables-0.6.ebuild26
-rw-r--r--dev-python/filelock/Manifest2
-rw-r--r--dev-python/filelock/filelock-3.28.0.ebuild31
-rw-r--r--dev-python/fonttools/fonttools-4.61.1.ebuild3
-rw-r--r--dev-python/fonttools/fonttools-4.62.0.ebuild3
-rw-r--r--dev-python/fonttools/fonttools-4.62.1.ebuild3
-rw-r--r--dev-python/hypothesis/Manifest1
-rw-r--r--dev-python/hypothesis/hypothesis-6.152.1.ebuild112
-rw-r--r--dev-python/liblarch/liblarch-3.2.0.ebuild3
-rw-r--r--dev-python/librt/librt-0.9.0.ebuild2
-rw-r--r--dev-python/loguru/files/loguru-0.7.3-py314.patch58
-rw-r--r--dev-python/loguru/loguru-0.7.3.ebuild8
-rw-r--r--dev-python/mako/Manifest1
-rw-r--r--dev-python/mako/mako-1.3.11.ebuild41
-rw-r--r--dev-python/mediafile/Manifest1
-rw-r--r--dev-python/mediafile/mediafile-0.16.1.ebuild31
-rw-r--r--dev-python/mypy/mypy-1.20.1.ebuild2
-rw-r--r--dev-python/osc-lib/Manifest1
-rw-r--r--dev-python/osc-lib/osc-lib-4.5.0.ebuild49
-rw-r--r--dev-python/packaging/Manifest2
-rw-r--r--dev-python/packaging/packaging-26.1.ebuild40
-rw-r--r--dev-python/passlib/Manifest1
-rw-r--r--dev-python/passlib/passlib-1.9.3.ebuild63
-rw-r--r--dev-python/progressbar2/progressbar2-4.5.0.ebuild4
-rw-r--r--dev-python/pybtex-docutils/pybtex-docutils-1.0.3.ebuild8
-rw-r--r--dev-python/pygithub/Manifest1
-rw-r--r--dev-python/pygithub/pygithub-2.9.1.ebuild39
-rw-r--r--dev-python/pypdf/Manifest2
-rw-r--r--dev-python/pypdf/pypdf-6.10.1.ebuild52
-rw-r--r--dev-python/pyspelling/pyspelling-2.12.1.ebuild2
-rw-r--r--dev-python/pytesseract/pytesseract-0.3.13.ebuild3
-rw-r--r--dev-python/pytest-mpl/Manifest1
-rw-r--r--dev-python/pytest-mpl/pytest-mpl-0.17.0.ebuild2
-rw-r--r--dev-python/pytest-mpl/pytest-mpl-0.19.0.ebuild42
-rw-r--r--dev-python/python-discovery/python-discovery-1.2.2.ebuild2
-rw-r--r--dev-python/qscintilla/qscintilla-2.14.1-r3.ebuild2
-rw-r--r--dev-python/setuptools-scm/setuptools-scm-10.0.5.ebuild2
-rw-r--r--dev-python/signxml/signxml-4.4.0.ebuild2
-rw-r--r--dev-python/tox/Manifest2
-rw-r--r--dev-python/tox/tox-4.53.0.ebuild95
-rw-r--r--dev-python/translate-toolkit/Manifest1
-rw-r--r--dev-python/translate-toolkit/translate-toolkit-3.19.5.ebuild130
-rw-r--r--dev-python/unicode-segmentation-rs/unicode-segmentation-rs-0.2.4.ebuild2
-rw-r--r--dev-python/vcs-versioning/vcs-versioning-1.1.1.ebuild2
-rw-r--r--dev-python/virtualenv/Manifest2
-rw-r--r--dev-python/virtualenv/files/virtualenv-21.2.4-ensurepip.patch29
-rw-r--r--dev-python/virtualenv/virtualenv-21.2.4.ebuild136
-rw-r--r--dev-python/wrapt/Manifest3
-rw-r--r--dev-python/wrapt/wrapt-2.2.0_rc4.ebuild39
-rw-r--r--dev-python/wrapt/wrapt-2.2.0_rc6.ebuild (renamed from dev-python/wrapt/wrapt-2.2.0_rc2.ebuild)0
55 files changed, 1110 insertions, 68 deletions
diff --git a/dev-python/aiorpcx/aiorpcx-0.25.0.ebuild b/dev-python/aiorpcx/aiorpcx-0.25.0.ebuild
index 9b125b2ced06..57a1c5401c70 100644
--- a/dev-python/aiorpcx/aiorpcx-0.25.0.ebuild
+++ b/dev-python/aiorpcx/aiorpcx-0.25.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -42,4 +42,6 @@ EPYTEST_DESELECT=(
PATCHES=(
# https://github.com/kyuupichan/aiorpcX/commit/b8ce32889c45c98b44c4e247ec0b0ae206e9ee91
"${FILESDIR}/${P}-pytest-asyncio-1.patch"
+ # https://github.com/kyuupichan/aiorpcX/commit/25043621700672ee375d20b78804118acac43b1b
+ "${FILESDIR}/${P}-py314.patch"
)
diff --git a/dev-python/aiorpcx/files/aiorpcx-0.25.0-py314.patch b/dev-python/aiorpcx/files/aiorpcx-0.25.0-py314.patch
new file mode 100644
index 000000000000..b000d6eb18ed
--- /dev/null
+++ b/dev-python/aiorpcx/files/aiorpcx-0.25.0-py314.patch
@@ -0,0 +1,22 @@
+From 25043621700672ee375d20b78804118acac43b1b Mon Sep 17 00:00:00 2001
+From: Neil Booth <kyuupichan@pm.me>
+Date: Thu, 19 Feb 2026 13:29:30 +0000
+Subject: [PATCH] Make test_misc() async (danigm)
+
+---
+ tests/test_jsonrpc.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tests/test_jsonrpc.py b/tests/test_jsonrpc.py
+index 81414a7..8cda788 100755
+--- a/tests/test_jsonrpc.py
++++ b/tests/test_jsonrpc.py
+@@ -1064,7 +1064,7 @@ async def send_batch(batch):
+ await group.spawn(send_batch(batch))
+
+
+-def test_misc(protocol):
++async def test_misc(protocol):
+ '''Misc tests to get full coverage.'''
+ connection = JSONRPCConnection(protocol)
+
diff --git a/dev-python/argh/argh-0.31.3.ebuild b/dev-python/argh/argh-0.31.3.ebuild
index 89743babaa59..eb7d15eff04d 100644
--- a/dev-python/argh/argh-0.31.3.ebuild
+++ b/dev-python/argh/argh-0.31.3.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -25,4 +25,10 @@ BDEPEND="
)
"
+EPYTEST_PLUGINS=()
distutils_enable_tests pytest
+
+PATCHES=(
+ # https://github.com/neithere/argh/commit/699568ad674c5ea26d361202c386a8a8a82ec8ad
+ "${FILESDIR}/${P}-py314.patch"
+)
diff --git a/dev-python/argh/files/argh-0.31.3-py314.patch b/dev-python/argh/files/argh-0.31.3-py314.patch
new file mode 100644
index 000000000000..ef1ac87ebbc7
--- /dev/null
+++ b/dev-python/argh/files/argh-0.31.3-py314.patch
@@ -0,0 +1,54 @@
+From 699568ad674c5ea26d361202c386a8a8a82ec8ad Mon Sep 17 00:00:00 2001
+From: Andy Mikhaylenko <neithere@gmail.com>
+Date: Sun, 1 Jun 2025 21:28:53 +0200
+Subject: [PATCH] fix(test): tests were broken under Python 3.14.0b2 (fixes
+ #239)
+
+(stripped down to bare essentials)
+
+--- a/tests/test_integration.py
++++ b/tests/test_integration.py
+@@ -796,11 +796,17 @@ def func():
+ parser = DebugArghParser()
+ parser.set_default_command(func)
+
+- assert unindent(func.__doc__) in parser.format_help()
++ docstring = func.__doc__
++ assert docstring
++ assert unindent(docstring) in parser.format_help()
+
+
+ def test_prog(capsys: pytest.CaptureFixture[str]):
+- "Program name propagates from sys.argv[0]"
++ """
++ Program name propagates to the usage string.
++ It's not just sys.argv[0], the logic is a bit more complicated in argparse,
++ so we just reuse whatever it has produced.
++ """
+
+ def cmd(*, foo=1):
+ return foo
+@@ -808,10 +814,12 @@ def cmd(*, foo=1):
+ parser = DebugArghParser()
+ parser.add_commands([cmd])
+
+- usage = get_usage_string()
++ usage = f"usage: {parser.prog} [-h]"
+
+- assert run(parser, "-h", exit=True) == 0
++ exit_code = run(parser, "-h", exit=True)
+ captured = capsys.readouterr()
++
++ assert exit_code == 0
+ assert captured.out.startswith(usage)
+
+
+@@ -822,8 +830,6 @@ def cmd(*, foo=1):
+ parser = DebugArghParser()
+ parser.set_default_command(cmd)
+
+- get_usage_string("[-f FOO]")
+-
+ assert run(parser, "--foo 1") == R(out="1\n", err="")
+ assert run(parser, "--bar 1", exit=True) == "unrecognized arguments: --bar 1"
+ assert run(parser, "--bar 1", exit=False, kwargs={"skip_unknown_args": True}) == R(
diff --git a/dev-python/editables/Manifest b/dev-python/editables/Manifest
index 65adaad28cf7..dda0ae854a24 100644
--- a/dev-python/editables/Manifest
+++ b/dev-python/editables/Manifest
@@ -1 +1,2 @@
DIST editables-0.5.gh.tar.gz 15469 BLAKE2B 9bbbc61a4e0a57edc6b7ba463da0d6c2f40090e347e67f203f16163bec70b63a2289332e9d69a46919f8aa009be1ec96e1b1cd2708ce5eb6ab33af6eb36360e0 SHA512 ac39d2e6a51625697c517b85fec11b525b1a41f82cf4f55c7595fed19da867065a62eee5e3656706f7402d0499754f4a142da77d699c59dffc8b769fa1c3dbe2
+DIST editables-0.6.gh.tar.gz 18722 BLAKE2B 8970dd52a93b99f2af62e9fe9c0c2b6f9a97cff9f1d4574e8960336ba73cf570dbba9467847fadf127b593384b1de29a81028432b3f923accefe41ca63e4f38d SHA512 123a5aec65cfa259dddfd6a8c0e4a51f5ad722e36cd360fd4d5094b853805b0332ec1b143a19e5fae79e5f841124bbd6162bb6fe64d8d92d7edcf5b640afcdc4
diff --git a/dev-python/editables/editables-0.6.ebuild b/dev-python/editables/editables-0.6.ebuild
new file mode 100644
index 000000000000..2be2fd71ac2b
--- /dev/null
+++ b/dev-python/editables/editables-0.6.ebuild
@@ -0,0 +1,26 @@
+# Copyright 2022-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=flit
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="A Python library for creating 'editable wheels'"
+HOMEPAGE="
+ https://pypi.org/project/editables/
+ https://github.com/pfmoore/editables/
+"
+SRC_URI="
+ https://github.com/pfmoore/editables/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+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"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
diff --git a/dev-python/filelock/Manifest b/dev-python/filelock/Manifest
index 3f8840db9f88..eb2e28b2fc05 100644
--- a/dev-python/filelock/Manifest
+++ b/dev-python/filelock/Manifest
@@ -1,2 +1,4 @@
DIST filelock-3.25.2.tar.gz 40480 BLAKE2B ba4435e9f121e2c6e1a584ab915b3b2402cb061c9e173d4c1f5c4225c1f345f6e5fa1f4d46ff3b11f46f433f1bfc801fcd1f6cb456883688798126320ee08e2c SHA512 cc2fa97b1720a9b76c2b66da0268ead7c29d188511737672240002215e90362e5e214befc617dd15aed645dee9077d29b31b24bcccfa1fdd3ab0e8f8982601e1
DIST filelock-3.25.2.tar.gz.provenance 9520 BLAKE2B e536981b5f552135a6066eaf75ac045590f8fe71da4d1a794fc897a8734d72ab749da7135fb5c7c7cf49ffb0e89890ed1e029091ce8ae05ecc6845fc0898833b SHA512 9a3ba6774aef62a400a73ad561415e184bc1ed717e0b2f4f8d2d42ca74c319f06ff40e88f38093eff3f3e3e2fc08cf296ccbdb1b7d5162b02efd505c9c417a62
+DIST filelock-3.28.0.tar.gz 56474 BLAKE2B 174c287a64470c85f203bbb435696275d7bc82ab4a76157a8c7278ef4d5554094ff28ab971f3145022a4031c4d123c8b09b103c4a12699eefa1152ab3ef7a36f SHA512 5729570f86816cb95e0cdca1c0ae830d6fa21b966429348493df7173e091fdb19144336fed762bfb5b950f4b9a056ad1b4891864ab55efd9f2d6475be2216c6f
+DIST filelock-3.28.0.tar.gz.provenance 9570 BLAKE2B ffefd7f319adeb400f09576fd7f5454a8d4064c98e94148669a32bc21a37c013218f8dbdbaac7ef93c6490a3ad68e7cb42b39699b49d56bd045fbac963afa043 SHA512 6b3874946d34d64a433efcf56c8bf7c362ea6692965e3277d1e7e542b8f6c3853708ea3f2d33d20f274c395498a76642cab7a887c0750aff9f7a284c49cd3a10
diff --git a/dev-python/filelock/filelock-3.28.0.ebuild b/dev-python/filelock/filelock-3.28.0.ebuild
new file mode 100644
index 000000000000..8429f48b6ff5
--- /dev/null
+++ b/dev-python/filelock/filelock-3.28.0.ebuild
@@ -0,0 +1,31 @@
+# Copyright 2018-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYPI_VERIFY_REPO=https://github.com/tox-dev/filelock
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A platform independent file lock for Python"
+HOMEPAGE="
+ https://github.com/tox-dev/filelock/
+ https://pypi.org/project/filelock/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
+
+BDEPEND="
+ dev-python/hatch-vcs[${PYTHON_USEDEP}]
+ test? (
+ dev-python/virtualenv[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-{asyncio,mock,timeout} )
+EPYTEST_RERUNS=5
+distutils_enable_tests pytest
diff --git a/dev-python/fonttools/fonttools-4.61.1.ebuild b/dev-python/fonttools/fonttools-4.61.1.ebuild
index 813b9d70b122..9415d936cbc1 100644
--- a/dev-python/fonttools/fonttools-4.61.1.ebuild
+++ b/dev-python/fonttools/fonttools-4.61.1.ebuild
@@ -33,9 +33,6 @@ BDEPEND="
)
test? (
dev-python/brotlicffi[${PYTHON_USEDEP}]
- $(python_gen_cond_dep '
- >=dev-python/fs-2.4.9[${PYTHON_USEDEP}]
- ' 3.{11..13})
dev-python/munkres[${PYTHON_USEDEP}]
app-arch/zopfli
)
diff --git a/dev-python/fonttools/fonttools-4.62.0.ebuild b/dev-python/fonttools/fonttools-4.62.0.ebuild
index 91f734915b44..5c037582159f 100644
--- a/dev-python/fonttools/fonttools-4.62.0.ebuild
+++ b/dev-python/fonttools/fonttools-4.62.0.ebuild
@@ -33,9 +33,6 @@ BDEPEND="
)
test? (
dev-python/brotlicffi[${PYTHON_USEDEP}]
- $(python_gen_cond_dep '
- >=dev-python/fs-2.4.9[${PYTHON_USEDEP}]
- ' 3.{11..13})
dev-python/munkres[${PYTHON_USEDEP}]
app-arch/zopfli
)
diff --git a/dev-python/fonttools/fonttools-4.62.1.ebuild b/dev-python/fonttools/fonttools-4.62.1.ebuild
index 57e0b7f2ad7e..4ca323d0b781 100644
--- a/dev-python/fonttools/fonttools-4.62.1.ebuild
+++ b/dev-python/fonttools/fonttools-4.62.1.ebuild
@@ -33,9 +33,6 @@ BDEPEND="
)
test? (
dev-python/brotlicffi[${PYTHON_USEDEP}]
- $(python_gen_cond_dep '
- >=dev-python/fs-2.4.9[${PYTHON_USEDEP}]
- ' 3.{11..13})
dev-python/munkres[${PYTHON_USEDEP}]
app-arch/zopfli
)
diff --git a/dev-python/hypothesis/Manifest b/dev-python/hypothesis/Manifest
index 55a79d69c202..8d4ce35cd7a4 100644
--- a/dev-python/hypothesis/Manifest
+++ b/dev-python/hypothesis/Manifest
@@ -3,3 +3,4 @@ DIST hypothesis-6.151.11.gh.tar.gz 9866574 BLAKE2B a721b9d47552dba2828b233e04a0a
DIST hypothesis-6.151.12.gh.tar.gz 9870628 BLAKE2B 4f0ffbdc31e11c6ab8541cd12df34c241c192d6bfe43aedcc530110ca5cd502d988f8c35aa0b138b8a5606a4ac013f883018a1bb6e998a8ccd4c7b7ca4eceb9f SHA512 5bfae6c4b0248d2e86b44b91ac633a0131577a64b36360661a5ae205b3f008c2797bf04b34aedf2e0c453cf266e14ca75e4624dc77a08f4078504629d78f677c
DIST hypothesis-6.151.14.gh.tar.gz 9871044 BLAKE2B bed431dcd481f5af11043fd0beca9caf207c918052dd054ef0e758d07646b1870417d868179bb251c6f6463fe73d10a8adabce5f0b0cfa9858be77e876575a46 SHA512 c1e3e3b03d3ed3ac50c7e83b236b8eda65ab6694adde07c88e5096df7361242d194b7624743656e8f30d885e554428d1af3cb9cbfd20514dca1e50bf3d29b4e5
DIST hypothesis-6.151.9.gh.tar.gz 9864451 BLAKE2B 9d9c2800cf1212e743a599c261c78c0a7d349e58075a443e0d10e6373b1582e059abde416cec4f3a8185ae424725f93da8ab4e43dd70bd0f86071d69aca94def SHA512 3e41bdd077a18fe72360547bc03f2c3d7218e8cd6cb563fffd6024427bfa5ce0764ca9c7ef0dafdded896625128fc14b9d3f8c4564aa8a509545abf0ad24adbf
+DIST hypothesis-6.152.1.gh.tar.gz 9871990 BLAKE2B cd86297e7247e3a515cbebf862a2397c4dfa50edda336e6be46b7b9b52d724857ab41ffb2b09846c7dfb6d0c6730082aa92735c7b4bd3b643781c87fd7de0706 SHA512 8d8c865bf38759e58020d4e4a1632dd0c3179c50deb14995bbe61cdf714b6230e9a3df0e2302c4842513d37d5c5cfeab49f05314b672afcf66e7081eafe88071
diff --git a/dev-python/hypothesis/hypothesis-6.152.1.ebuild b/dev-python/hypothesis/hypothesis-6.152.1.ebuild
new file mode 100644
index 000000000000..e2dc047d3cc6
--- /dev/null
+++ b/dev-python/hypothesis/hypothesis-6.152.1.ebuild
@@ -0,0 +1,112 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+CLI_COMPAT=( python3_{11..13} )
+PYTHON_COMPAT=( python3_{10..14} )
+PYTHON_REQ_USE="threads(+),sqlite"
+
+inherit distutils-r1 optfeature
+
+TAG=hypothesis-python-${PV}
+MY_P=hypothesis-${TAG}
+DESCRIPTION="A library for property based testing"
+HOMEPAGE="
+ https://github.com/HypothesisWorks/hypothesis/
+ https://pypi.org/project/hypothesis/
+"
+SRC_URI="
+ https://github.com/HypothesisWorks/hypothesis/archive/${TAG}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+S="${WORKDIR}/${MY_P}/hypothesis-python"
+
+LICENSE="MPL-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="cli"
+
+RDEPEND="
+ >=dev-python/sortedcontainers-2.1.0[${PYTHON_USEDEP}]
+ cli? (
+ $(python_gen_cond_dep '
+ dev-python/black[${PYTHON_USEDEP}]
+ dev-python/click[${PYTHON_USEDEP}]
+ ' "${CLI_COMPAT[@]}")
+ )
+"
+BDEPEND="
+ test? (
+ >=dev-python/attrs-22.2.0[${PYTHON_USEDEP}]
+ dev-python/pexpect[${PYTHON_USEDEP}]
+ >=dev-python/pytest-8[${PYTHON_USEDEP}]
+ )
+"
+PDEPEND="
+ dev-python/hypothesis-gentoo[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGIN_LOAD_VIA_ENV=1
+EPYTEST_PLUGINS=( "${PN}" pytest-xdist )
+EPYTEST_RERUNS=5
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_test() {
+ # NB: paths need to be relative to pytest.ini,
+ # i.e. start with hypothesis-python/
+ local EPYTEST_DESELECT=(
+ # broken somehow (xdist?)
+ 'hypothesis-python/tests/pytest/test_constant_collection_timing.py::test_constant_collection_timing[True]'
+ )
+ local EPYTEST_IGNORE=(
+ # require syrupy
+ tests/cover/test_custom_reprs.py
+ )
+ case ${EPYTHON} in
+ pypy3.11)
+ EPYTEST_DESELECT+=(
+ 'hypothesis-python/tests/cover/test_lambda_formatting.py::test_modifying_lambda_source_code_returns_unknown[False]'
+ )
+ ;;
+ python3.14t)
+ EPYTEST_DESELECT+=(
+ # TODO
+ 'hypothesis-python/tests/cover/test_lambda_formatting.py::test_modifying_lambda_source_code_returns_unknown[False]'
+ )
+ ;;
+ esac
+
+ local -x HYPOTHESIS_NO_PLUGINS=1
+ epytest -o filterwarnings= tests/{cover,pytest,quality}
+}
+
+src_install() {
+ local HAD_CLI=
+
+ distutils-r1_src_install
+
+ if [[ ! ${HAD_CLI} ]]; then
+ rm -r "${ED}/usr/bin" || die
+ fi
+}
+
+python_install() {
+ distutils-r1_python_install
+ if use cli && has "${EPYTHON}" "${CLI_COMPAT[@]/_/.}"; then
+ HAD_CLI=1
+ else
+ rm -r "${D}$(python_get_scriptdir)" || die
+ fi
+}
+
+pkg_postinst() {
+ optfeature "datetime support" dev-python/pytz
+ optfeature "dateutil support" dev-python/python-dateutil
+ optfeature "numpy support" dev-python/numpy
+ optfeature "django support" dev-python/django dev-python/pytz
+ optfeature "pandas support" dev-python/pandas
+ optfeature "pytest support" dev-python/pytest
+}
diff --git a/dev-python/liblarch/liblarch-3.2.0.ebuild b/dev-python/liblarch/liblarch-3.2.0.ebuild
index 3f5f29937df0..e159a50a2d70 100644
--- a/dev-python/liblarch/liblarch-3.2.0.ebuild
+++ b/dev-python/liblarch/liblarch-3.2.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -30,6 +30,7 @@ RDEPEND="
${DEPEND}
"
+EPYTEST_PLUGINS=()
distutils_enable_tests pytest
src_test() {
diff --git a/dev-python/librt/librt-0.9.0.ebuild b/dev-python/librt/librt-0.9.0.ebuild
index 3141e6033308..961df9196779 100644
--- a/dev-python/librt/librt-0.9.0.ebuild
+++ b/dev-python/librt/librt-0.9.0.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="MIT PSF-2.4"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~loong ~m68k ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~m68k ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
BDEPEND="
test? (
diff --git a/dev-python/loguru/files/loguru-0.7.3-py314.patch b/dev-python/loguru/files/loguru-0.7.3-py314.patch
new file mode 100644
index 000000000000..c47d81608288
--- /dev/null
+++ b/dev-python/loguru/files/loguru-0.7.3-py314.patch
@@ -0,0 +1,58 @@
+From 84023e2bd8339de95250470f422f096edcb8f7b7 Mon Sep 17 00:00:00 2001
+From: Delgan <delgan.py@gmail.com>
+Date: Sat, 5 Jul 2025 22:43:12 +0200
+Subject: [PATCH] Fix failing "exception_modern" unit test with Python 3.14
+ (#1331)
+
+The test relies on the "repr()" output of a few classes which are
+not meant to be considered as a stabilized API. In this
+specific case, "Union" representation was changed upstream from
+"typing.Union" to "<class 'typing.Union'>" (kind of leak
+implementation details).
+
+I simply replaced the dummy "Union" with "Tuple" in the unit test,
+since its representation appears stable acrcoss versions.
+---
+ tests/exceptions/output/modern/type_hints.txt | 4 ++--
+ tests/exceptions/source/modern/type_hints.py | 4 ++--
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/tests/exceptions/output/modern/type_hints.txt b/tests/exceptions/output/modern/type_hints.txt
+index 64484d3f..917180a3 100644
+--- a/tests/exceptions/output/modern/type_hints.txt
++++ b/tests/exceptions/output/modern/type_hints.txt
+@@ -10,11 +10,11 @@
+  └ <function foo at 0xDEADBEEF>
+
+ File "tests/exceptions/source/modern/type_hints.py", line 15, in foo
+- def foo(a: int, b: Union[Name, float], c: "Name") -> T: 1 / 0
++ def foo(a: int, b: Tuple[Name, float], c: "Name") -> T: 1 / 0
+  │ │ │ │ │ │ └ ~T
+  │ │ │ │ │ └ 3
+  │ │ │ │ └ <class 'str'>
+-  │ │ │ └ typing.Union
++  │ │ │ └ typing.Tuple
+  │ │ └ 2
+  │ └ 1
+  └ <function foo at 0xDEADBEEF>
+diff --git a/tests/exceptions/source/modern/type_hints.py b/tests/exceptions/source/modern/type_hints.py
+index 84b36e51..cda95a68 100644
+--- a/tests/exceptions/source/modern/type_hints.py
++++ b/tests/exceptions/source/modern/type_hints.py
+@@ -1,6 +1,6 @@
+ # fmt: off
+ import sys
+-from typing import TypeVar, Union
++from typing import TypeVar, Tuple
+
+ from loguru import logger
+
+@@ -12,7 +12,7 @@
+ Name = str
+
+
+-def foo(a: int, b: Union[Name, float], c: "Name") -> T: 1 / 0
++def foo(a: int, b: Tuple[Name, float], c: "Name") -> T: 1 / 0
+
+
+ def main():
diff --git a/dev-python/loguru/loguru-0.7.3.ebuild b/dev-python/loguru/loguru-0.7.3.ebuild
index cbc0bada5720..7124a750a0d0 100644
--- a/dev-python/loguru/loguru-0.7.3.ebuild
+++ b/dev-python/loguru/loguru-0.7.3.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2019-2024 Gentoo Authors
+# Copyright 2019-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -31,6 +31,7 @@ BDEPEND="
# filesystem buffering tests may fail
# on tmpfs with 64k PAGESZ, but pass fine on ext4
+EPYTEST_PLUGINS=()
distutils_enable_tests pytest
EPYTEST_IGNORE=(
@@ -39,6 +40,11 @@ EPYTEST_IGNORE=(
)
src_prepare() {
+ local PATCHES=(
+ # https://github.com/Delgan/loguru/commit/84023e2bd8339de95250470f422f096edcb8f7b7
+ "${FILESDIR}/${P}-py314.patch"
+ )
+
distutils-r1_src_prepare
# neuter mypy integration
diff --git a/dev-python/mako/Manifest b/dev-python/mako/Manifest
index dd6b71b95a30..65b637a9a406 100644
--- a/dev-python/mako/Manifest
+++ b/dev-python/mako/Manifest
@@ -1 +1,2 @@
DIST mako-1.3.10.tar.gz 392474 BLAKE2B 21ed9256cd72bb9003f5e581cf5d7a748552dfa2318863ac61150f94ecab58b9471221d4e6e50aed13a1d176864ab9bd0a6953b3d2e14b722980dfa3d7686858 SHA512 33fcf08b35b00ae33dcfb4b9dac4adcc7e0a9d8bdfdf0bc92f6aa13fbc12031e9fc46c910d92803ffa7b31e4ee58209f11cc186e04f9b08bad7ec4bcd309d554
+DIST mako-1.3.11.tar.gz 399811 BLAKE2B bef7c89542d71e1347deab1e17f449583b70e155b571f9e5468fad60f0ede543e66ade900ecb6fb23afe55f57720036cf35d8dd91b8ec3767461856b957d3786 SHA512 b3f0980393af9d9ceaf7421118fa13680ba3f47e1ff6e86a62bb8f8e944364ac8150a20b47d02bc391f7b9c9b6d400d153c3d70730cc36d1a87f628f0cff250c
diff --git a/dev-python/mako/mako-1.3.11.ebuild b/dev-python/mako/mako-1.3.11.ebuild
new file mode 100644
index 000000000000..0c7104a24280
--- /dev/null
+++ b/dev-python/mako/mako-1.3.11.ebuild
@@ -0,0 +1,41 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_PN=${PN^}
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A Python templating language"
+HOMEPAGE="
+ https://www.makotemplates.org/
+ https://github.com/sqlalchemy/mako/
+ https://pypi.org/project/Mako/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
+IUSE="doc"
+
+RDEPEND="
+ >=dev-python/markupsafe-0.9.2[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/babel[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+python_install_all() {
+ rm -r doc/build || die
+
+ use doc && local HTML_DOCS=( doc/. )
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/mediafile/Manifest b/dev-python/mediafile/Manifest
index 7a748e665146..e7ac2868a63b 100644
--- a/dev-python/mediafile/Manifest
+++ b/dev-python/mediafile/Manifest
@@ -1,3 +1,4 @@
DIST mediafile-0.14.0.gh.tar.gz 622631 BLAKE2B da29261941eca30b067eb08021d6adc9363920c6bc7b656db101e56d53fb7ff6bb3c8df42f61b97a9daa82fb901a025832160e81ef458b6be04abe27bb3b3d8c SHA512 4da707072d5f9262e04691f924ef8ab6da212918e61e3ea693017b66721563de5fb3ee3ed8f4db8035ad94526b7e7fd26107d4825ee76e0f41349bec7ad75a62
DIST mediafile-0.15.0.gh.tar.gz 622616 BLAKE2B f8b36e6bd1400f55033fe7a85c76ba666890c42d75ea97dea241f7aea1bd8bb52113f4356b893cbb57f81fa3a66d8a19d3afad58d7c1cde6038acf418fea7f29 SHA512 4b2459a7274846f1db570bb18c93d6609945420107c1a91d62c75236f246042d961199e27d4a8fa19652fc9b1b82b31d7a4022a175e6b8ce89a40b387817b222
DIST mediafile-0.16.0.gh.tar.gz 627848 BLAKE2B 46e82b6855cd11b63ba3f83fe369b760ae486829c4eb726b33ed282af1c50d8a7653c0be60797532dbab37f5fdc13830a7a17c1af93406e6d1bdd69aad08c9aa SHA512 7459f098f4db44cedef19d005ee3526c1a220756128a3fb790e9e8bf7e082dafe31045c18cc44f9764d84fa1ebbc5bd9830f9832335e1c0481310ad588bb7b67
+DIST mediafile-0.16.1.gh.tar.gz 666169 BLAKE2B dbc4ea1673071df08b47850296cbf5781fdc6b576af0146c8f11b81e42acbc2e80dca60395ca85d3f4549d5b2914321d62c3cd1fc486784ee0491b5ce649190c SHA512 4100f8fe66383fdf6b238bad18573af9b9a57ae68606be0a7494950387d04f4478f1d58b2d12869dc8cebc904dc0db357656f6144041902c0787d2ea70121841
diff --git a/dev-python/mediafile/mediafile-0.16.1.ebuild b/dev-python/mediafile/mediafile-0.16.1.ebuild
new file mode 100644
index 000000000000..f9d3d5b77088
--- /dev/null
+++ b/dev-python/mediafile/mediafile-0.16.1.ebuild
@@ -0,0 +1,31 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=poetry
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="Read and write audio files' tags in Python"
+HOMEPAGE="
+ https://github.com/beetbox/mediafile/
+ https://pypi.org/project/mediafile/
+"
+SRC_URI="
+ https://github.com/beetbox/mediafile/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="
+ >=dev-python/filetype-1.2.0[${PYTHON_USEDEP}]
+ >=media-libs/mutagen-1.46.0[${PYTHON_USEDEP}]
+"
+
+distutils_enable_sphinx docs
+distutils_enable_tests unittest
diff --git a/dev-python/mypy/mypy-1.20.1.ebuild b/dev-python/mypy/mypy-1.20.1.ebuild
index 4544a2307417..59722dfddb51 100644
--- a/dev-python/mypy/mypy-1.20.1.ebuild
+++ b/dev-python/mypy/mypy-1.20.1.ebuild
@@ -23,7 +23,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~loong ~m68k ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~m68k ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
IUSE="native-extensions"
# stubgen collides with this package: https://bugs.gentoo.org/585594
diff --git a/dev-python/osc-lib/Manifest b/dev-python/osc-lib/Manifest
index be4c564afe6e..5f44d2c899c1 100644
--- a/dev-python/osc-lib/Manifest
+++ b/dev-python/osc-lib/Manifest
@@ -1 +1,2 @@
DIST osc_lib-4.4.0.tar.gz 105435 BLAKE2B f4a9f359d8376aeaa94f70594993d66a5cbd396c7d827155f2d72df847d823f394410732a194a1ec7a112ebc494902fbeef84ebedb5e209f284d6ac324655024 SHA512 0d949c2f172324f12ae130a3487d6a017968bf2737685e274d5778705a9413a1f401edfa08d64573450715b347d583c2819583c5781ddddeb5f8eff632d69775
+DIST osc_lib-4.5.0.tar.gz 105164 BLAKE2B 555e929bc3701328d0d4989f1e9457d89aa200c832fcb793916ff1811943ab5b34a6dffc4dd4ec06b23182b8c97a0497984bf68bbb2d229e5a61436da0bc8322 SHA512 777a1548a6fe9b6bed890faf088447378bfda11f47b8d8d64c1d3a398c78b7bf73c1ac820cdab796e9a2e5caa8ccd47a8aaac04061cf54c23987a1060c03847a
diff --git a/dev-python/osc-lib/osc-lib-4.5.0.ebuild b/dev-python/osc-lib/osc-lib-4.5.0.ebuild
new file mode 100644
index 000000000000..882b127f5c05
--- /dev/null
+++ b/dev-python/osc-lib/osc-lib-4.5.0.ebuild
@@ -0,0 +1,49 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=pbr
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A package of common support modules for writing OSC plugins"
+HOMEPAGE="
+ https://opendev.org/openstack/osc-lib/
+ https://github.com/openstack/osc-lib/
+ https://pypi.org/project/osc-lib/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86"
+
+RDEPEND="
+ >=dev-python/cliff-4.9.0[${PYTHON_USEDEP}]
+ >=dev-python/keystoneauth1-5.10.0[${PYTHON_USEDEP}]
+ >=dev-python/openstacksdk-0.15.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-i18n-3.15.3[${PYTHON_USEDEP}]
+ >=dev-python/oslo-utils-3.33.0[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.14.2[${PYTHON_USEDEP}]
+ >=dev-python/stevedore-1.20.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ >=dev-python/fixtures-3.0.0[${PYTHON_USEDEP}]
+ >=dev-python/oslotest-3.2.0[${PYTHON_USEDEP}]
+ >=dev-python/requests-mock-1.2.0[${PYTHON_USEDEP}]
+ >=dev-python/statsd-3.3.0[${PYTHON_USEDEP}]
+ >=dev-python/testscenarios-0.4[${PYTHON_USEDEP}]
+ >=dev-python/testtools-2.2.0[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests unittest
+
+src_prepare() {
+ # need to skip all tests under TestTagHelps class
+ # checks exact help message, based on another unittest runner
+ sed -e '179,$s/test_add_tag_/_&/' -i osc_lib/tests/utils/test_tags.py || die
+ distutils-r1_src_prepare
+}
diff --git a/dev-python/packaging/Manifest b/dev-python/packaging/Manifest
index 785d9b33b23d..d1684489de7e 100644
--- a/dev-python/packaging/Manifest
+++ b/dev-python/packaging/Manifest
@@ -1,2 +1,4 @@
DIST packaging-26.0.tar.gz 143416 BLAKE2B 0f64797c7dc0c1d452bef437f3c61959efe17db4d0281ca475a45a433b349693a6e2a5183c17921cc233086da765d5af6cd902e4c3cba8975d42908de553a389 SHA512 27a066a7d65ba76189212973b6a0d162f3d361848b1b0c34a82865cf180b3284a837cc34206c297f002a73feae414e25a26c5960bb884a74ea337f582585f1d2
DIST packaging-26.0.tar.gz.provenance 9319 BLAKE2B 95a46bf39757ebc5daa5a847413936dbf9067c50129009cca898b3010d2cc7d7175b1091ba4b8b3f5c13106a9f9da0b6dc858ab65fd0dbe7164e2c99752c539b SHA512 b1280f2554b17244745ac2c566922c1bb2b68e45a18020633d52c12a0e6be784506f10c0dfcf9a528ff6dedb7a4bfac0f240367fe26707435ee7cc15fb4c45a8
+DIST packaging-26.1.tar.gz 215519 BLAKE2B de311aea3af5d7fe1414c6c3aa667b7835d47949c26d5298e1172c1bbb6c9f75646f99f4b7a633f7d2b1b13677a19d6f497912a35531baf6b7d0edb0db1e4075 SHA512 37dfdc50da2701016ff8caf7053c7d06ed3c8762ed22e43f8001c12b99b00251f960d50e8bfa0294e37069091135ef6006c7b3b92d05fde2b934cf336f0fbe1d
+DIST packaging-26.1.tar.gz.provenance 9178 BLAKE2B acb6131b39570cc582506163fd2b84802c36fd29c3b3c2b61470bf12fb352f77498429d54efc32e469a5189f94ba28df9334ba5febbbc0fde46e201d9962cc36 SHA512 46873132db3e0cec2c383965e68d495645a44e16059758fb88287c2e4b8e6d06f309f03a9658b21381a89b2dbb0265123a99e42059816dbc7f33b2c6d5766828
diff --git a/dev-python/packaging/packaging-26.1.ebuild b/dev-python/packaging/packaging-26.1.ebuild
new file mode 100644
index 000000000000..c3ece7e7f6cf
--- /dev/null
+++ b/dev-python/packaging/packaging-26.1.ebuild
@@ -0,0 +1,40 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# please keep this ebuild at EAPI 8 -- sys-apps/portage dep
+EAPI=8
+
+DISTUTILS_USE_PEP517=flit
+PYPI_VERIFY_REPO=https://github.com/pypa/packaging
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Core utilities for Python packages"
+HOMEPAGE="
+ https://github.com/pypa/packaging/
+ https://pypi.org/project/packaging/
+"
+
+LICENSE="|| ( Apache-2.0 BSD-2 )"
+SLOT="0"
+if [[ ${PV} != *_rc* ]]; then
+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos ~x64-solaris"
+fi
+
+RDEPEND="
+ !<dev-python/setuptools-67
+"
+DEPEND="
+ test? (
+ dev-python/pretend[${PYTHON_USEDEP}]
+ dev-python/tomli-w[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+python_test() {
+ epytest --capture=no
+}
diff --git a/dev-python/passlib/Manifest b/dev-python/passlib/Manifest
index 36ccb583c9ff..67c0ac3ae6e4 100644
--- a/dev-python/passlib/Manifest
+++ b/dev-python/passlib/Manifest
@@ -1 +1,2 @@
+DIST libpass-1.9.3.tar.gz 692901 BLAKE2B b7b19ae4a9e7e2d65062d8d51e11fb8caec1da7bedacf88b9b2114013d2a578e64a5ca195d168982a52f7ca143eea5adbc5b33c955e175b7f2dda07bd93e24a2 SHA512 2581412ed18d3b2953f2679a05ce7158095850fb37e16a744a1c80bd1afbcf2d0852619ff9b06322b38004ff01e0d335cefaecb49cf9552a6a478566067aa0bc
DIST passlib-1.7.4.tar.gz 689844 BLAKE2B 38f616105ba70cf93cf36383c73f2a4da7bf66ced2844effffe74d9f7c29ee0aece5652974dd1414f16e32fbe6957e2e921cf01bc59daa70195a6d50a4a3bf2f SHA512 350bd6da5ac57e6c266ffe8bf9684c8c2cce3fc6b513eb6c7bc1b302d2d8a1b701e9c01c953782520a2ac37b7ec1f6d7bd5855f99f6ee0e2dbbf33f2d49a9530
diff --git a/dev-python/passlib/passlib-1.9.3.ebuild b/dev-python/passlib/passlib-1.9.3.ebuild
new file mode 100644
index 000000000000..cff0a3387861
--- /dev/null
+++ b/dev-python/passlib/passlib-1.9.3.ebuild
@@ -0,0 +1,63 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYPI_PN=libpass
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 optfeature pypi
+
+DESCRIPTION="Fork of passlib, a password hashing framework"
+HOMEPAGE="
+ https://github.com/notypecheck/passlib/
+ https://pypi.org/project/libpass/
+"
+
+LICENSE="BSD-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
+IUSE="doc test-rust"
+
+BDEPEND="
+ test? (
+ dev-python/scrypt[${PYTHON_USEDEP}]
+ test-rust? (
+ >=dev-python/bcrypt-3.1.0[${PYTHON_USEDEP}]
+ >=dev-python/cryptography-43.0.1[${PYTHON_USEDEP}]
+ )
+ )
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # bcrypt now disallows implicit password truncation
+ # https://github.com/notypecheck/passlib/pull/25
+ tests/test_handlers_bcrypt.py::bcrypt_bcrypt_test::test_70_hashes
+ tests/test_handlers_bcrypt.py::bcrypt_bcrypt_test::test_secret_w_truncate_size
+ tests/test_handlers_django.py::django_bcrypt_test::test_secret_w_truncate_size
+
+ # assumes scrypt dep is not installed
+ tests/test_crypto_scrypt.py::BuiltinScryptTest::test_missing_backend
+ )
+
+ # skip fuzzing tests, they are very slow
+ epytest -k "not fuzz_input"
+}
+
+python_install_all() {
+ distutils-r1_python_install_all
+ use doc && dodoc docs/{*.rst,requirements.txt,lib/*.rst}
+}
+
+pkg_postinst() {
+ optfeature "Argon2 support" dev-python/argon2-cffi
+ optfeature "bcrypt support" dev-python/bcrypt
+ optfeature "scrypt support" dev-python/scrypt
+ optfeature "Time-based One-Time Password (TOTP) support" dev-python/cryptography
+}
diff --git a/dev-python/progressbar2/progressbar2-4.5.0.ebuild b/dev-python/progressbar2/progressbar2-4.5.0.ebuild
index 7a312de2e6e9..940400fd89eb 100644
--- a/dev-python/progressbar2/progressbar2-4.5.0.ebuild
+++ b/dev-python/progressbar2/progressbar2-4.5.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -29,6 +29,7 @@ BDEPEND="
)
"
+EPYTEST_PLUGINS=()
distutils_enable_tests pytest
src_prepare() {
@@ -38,6 +39,5 @@ src_prepare() {
python_test() {
local -x PYTHONDONTWRITEBYTECODE=1
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
epytest tests
}
diff --git a/dev-python/pybtex-docutils/pybtex-docutils-1.0.3.ebuild b/dev-python/pybtex-docutils/pybtex-docutils-1.0.3.ebuild
index 2541845dfdee..484c7b21c275 100644
--- a/dev-python/pybtex-docutils/pybtex-docutils-1.0.3.ebuild
+++ b/dev-python/pybtex-docutils/pybtex-docutils-1.0.3.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -25,5 +25,11 @@ RDEPEND="
"
+EPYTEST_PLUGINS=()
distutils_enable_tests pytest
distutils_enable_sphinx doc
+
+EPYTEST_DESELECT=(
+ # just an entry point check, requires pkg-resources
+ test/test_find_plugin.py::test_pkg_resources_entry_point
+)
diff --git a/dev-python/pygithub/Manifest b/dev-python/pygithub/Manifest
index 295f6e0b34f5..c5015cab00ab 100644
--- a/dev-python/pygithub/Manifest
+++ b/dev-python/pygithub/Manifest
@@ -1,2 +1,3 @@
DIST pygithub-2.8.1.tar.gz 2246994 BLAKE2B 6d54d87abdf20d4068efaff9117e005d970f2d60d52bc3d9d985ef4616004e09c72f27c870b89f506246af7cb9a73c5b9f1b2853e5f980f8f59e6e1f99e2594c SHA512 87724ebb922fe35867a23a56c59cc6fc56fd2a4c24129ebfdd06683797aa8398e68379b42a6fb73ebb0dae5e2e403cf9fb518c5738f156e40a76bea6661c2192
DIST pygithub-2.9.0.tar.gz 2592289 BLAKE2B b769f59b538a385e79ed8dd6e84e9d888d784733547c19984b341331e963cecfccb12a0b9bde6485b292f202b9024870ba8d844d64c7ec5c34b9deb945f55ed9 SHA512 f0b3e3cb8f5b9ce5a722a1ea306721f658f7d229c0a0357d003f8207753a7959c93bf23d05f80174f1fe78eaec2e5b16b5f55b6c8aeba26fd74e434395be338b
+DIST pygithub-2.9.1.tar.gz 2594989 BLAKE2B 0f06f02bf0a644a571a96c54add12b72ce467e16034d7c932c86da899130b1b743cdb141076a317643e59f7e6922f730c92b701ace0e4183ddca47a35b9a8f62 SHA512 af77ed820d0b783f0dff5d5756a470b7bc8d56cb47d9fa3cbc5d99d5d7b5d3bf15be233780914ad91487e446aff9d9d582d8421f6190f7b8176a216ddcae333a
diff --git a/dev-python/pygithub/pygithub-2.9.1.ebuild b/dev-python/pygithub/pygithub-2.9.1.ebuild
new file mode 100644
index 000000000000..425e63103753
--- /dev/null
+++ b/dev-python/pygithub/pygithub-2.9.1.ebuild
@@ -0,0 +1,39 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_PN=PyGithub
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Python library to access the Github API v3"
+HOMEPAGE="
+ https://github.com/PyGithub/PyGithub/
+ https://pypi.org/project/PyGithub/
+"
+
+LICENSE="LGPL-3+"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+# cryptography via pyjwt[crypto]
+RDEPEND="
+ dev-python/cryptography[${PYTHON_USEDEP}]
+ >=dev-python/pyjwt-2.4.0[${PYTHON_USEDEP}]
+ >=dev-python/pynacl-1.4.0[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.14.0[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.5.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ dev-python/setuptools-scm[${PYTHON_USEDEP}]
+ test? (
+ dev-python/responses[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-subtests )
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
diff --git a/dev-python/pypdf/Manifest b/dev-python/pypdf/Manifest
index 0c0918f424bd..d73b45f5cb48 100644
--- a/dev-python/pypdf/Manifest
+++ b/dev-python/pypdf/Manifest
@@ -1,5 +1,7 @@
+DIST pypdf-6.10.1.gh.tar.gz 8404717 BLAKE2B 14f552547f08d30147d4b4504dd356f1119c2acc6146086995b6dbe4a81a961335dd7e97f225506b5358c5a6790a5aa0a6f4ba43f63416ba6c14983aee7b2dff SHA512 065ff9a934c7213045f0fb4c1700de9d200dfeed9427a24e3e3b38ef4fbb50373afed2c1829a3241e7d40203a4331e99f56850638e1a9d069e0c51ec1fe3557f
DIST pypdf-6.7.5.gh.tar.gz 8386598 BLAKE2B e3b49c4a5f00769f89b4973677c798b6e00a6e3d2f47ccd4d2e89f21496fc24bac9a73a5c469f4ce9b50ab4ff3738f08710bef3f8ece44dbf75e23229618098f SHA512 1d33acc25027fae56e5a94ea496771cc033b5a42598b05f5d1bc28171974834f5ab2fe247c4da7d8917ade9b3640c2d615e5e3230b1cac64ba542683c743d9b9
DIST pypdf-6.9.0.gh.tar.gz 8394613 BLAKE2B 9e127c143aa4f5e92dd0fbe930651d05ee3cf0c39f8d06344db054681443f03a38a00e73200b44e0af5a419d4379e90e9a3e70bf1be32ee8fbc337ea7e7e4bd1 SHA512 eb223c3d1b0446505a75e37fcb1f6d6f976e88e0d3d5f34033a112c0ff1bebc2628d314877a186a3de9506f891b8b8901fc386e89ca77cdd507a61f6cec4e174
DIST pypdf-6.9.1.gh.tar.gz 8395503 BLAKE2B 5b3e515383fd3e17846caa4ecffd1b975832fce3e2d80402d1048c7f082ad273e62193f313f477ceec6a06bd3a4d42ff305e8c8e293a82e52b46bec9841a5689 SHA512 2e15c9de64e934c07c0ac5c0afd2362f5d65e6b5477acc07f01ffd5875b4d78595c483d7d268c833d531ccde2511327de49b52e2e8e2cd0a9b0a095bec2d1ce8
DIST pypdf-6.9.2.gh.tar.gz 8397701 BLAKE2B b2864dd22ab6585a5d850f996ac09dddc5bebff79fcc1956b7ce495ef4292444b2babf136bf2fa0d7045b27fc1cfed1bec69056240710532a300140b7ac831b3 SHA512 1c060d9f86e1b0bd0e1552f32c950cd29f1e8858e28ce7457beb88761cefa149f2b16c87a0cf5780575c205321f2b042af6bfc362ae9cadbbd55862f8464b7ee
+DIST pypdf-sample-files-65e82ed36c1efd9bd7172a35c8dcfd6e18aabfb2.gh.tar.gz 11748256 BLAKE2B f1820f38ebda08bbf2019e81e2cc605fef3dc366904ed552c3f95673d93c1bd440fdee4b8c199b6cbfd90a7ebfd5aab55b22edc6a3ad8418f9efdafd4e4c741d SHA512 5795189231e9e5f176b530c602ca778b1b8864c88b69c16c37f430ef6a2f3d4b08c3a8757f6522a1472b1b09583bd8df50f2628319bb076af45326b36f6b876a
DIST pypdf-sample-files-8c405ece5eff12396a34a1fae3276132002e1753.gh.tar.gz 11748093 BLAKE2B c5989200893b28a3c2062bb024a5cfc6f3389dc259ec129857979fa43469e1274559612b4d555499e2c7e16cf34be07825229932bf4d147fa6d7324d043e97d5 SHA512 c9771129b7668a2fd1fa79bb859ae9213f3d60341cf1b9937ff0eaab0de9bf4c35adcb7b896e93329038dc0f3809a0c697c523f8fe41b43030b0b029a88058e3
diff --git a/dev-python/pypdf/pypdf-6.10.1.ebuild b/dev-python/pypdf/pypdf-6.10.1.ebuild
new file mode 100644
index 000000000000..1af29f6831a9
--- /dev/null
+++ b/dev-python/pypdf/pypdf-6.10.1.ebuild
@@ -0,0 +1,52 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=flit
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1
+
+SAMPLE_COMMIT=65e82ed36c1efd9bd7172a35c8dcfd6e18aabfb2
+DESCRIPTION="Python library to work with PDF files"
+HOMEPAGE="
+ https://pypi.org/project/pypdf/
+ https://github.com/py-pdf/pypdf/
+"
+SRC_URI="
+ https://github.com/py-pdf/pypdf/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+ test? (
+ https://github.com/py-pdf/sample-files/archive/${SAMPLE_COMMIT}.tar.gz
+ -> ${PN}-sample-files-${SAMPLE_COMMIT}.gh.tar.gz
+ )
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+
+BDEPEND="
+ test? (
+ dev-python/cryptography[${PYTHON_USEDEP}]
+ >=dev-python/pillow-8.0.0[jpeg,jpeg2k,tiff,zlib,${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ media-libs/jbig2dec[png]
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-timeout )
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_unpack() {
+ default
+ if use test; then
+ mv "sample-files-${SAMPLE_COMMIT}"/* "${S}"/sample-files/ || die
+ fi
+}
+
+python_test() {
+ epytest -o addopts= -m "not enable_socket"
+}
diff --git a/dev-python/pyspelling/pyspelling-2.12.1.ebuild b/dev-python/pyspelling/pyspelling-2.12.1.ebuild
index 15c9c96993c4..7c5e6cfc0985 100644
--- a/dev-python/pyspelling/pyspelling-2.12.1.ebuild
+++ b/dev-python/pyspelling/pyspelling-2.12.1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
diff --git a/dev-python/pytesseract/pytesseract-0.3.13.ebuild b/dev-python/pytesseract/pytesseract-0.3.13.ebuild
index 192ee8f57754..46c0b1f59a7b 100644
--- a/dev-python/pytesseract/pytesseract-0.3.13.ebuild
+++ b/dev-python/pytesseract/pytesseract-0.3.13.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2022-2024 Gentoo Authors
+# Copyright 2022-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -35,4 +35,5 @@ BDEPEND="
)
"
+EPYTEST_PLUGINS=()
distutils_enable_tests pytest
diff --git a/dev-python/pytest-mpl/Manifest b/dev-python/pytest-mpl/Manifest
index 9856673307e7..b157c15e79ef 100644
--- a/dev-python/pytest-mpl/Manifest
+++ b/dev-python/pytest-mpl/Manifest
@@ -1 +1,2 @@
DIST pytest-mpl-0.17.0.tar.gz 885613 BLAKE2B d1a6d4551052eeeb7ecbf9722c782796aa74215a3241d1c037fca98972777dd35d7616ec8ef2bd4f00b6428f5dea516243244b61f56ec38d72a4805a75c91a50 SHA512 968397b1d75482729ad73f4844970c3c335c009e689f4163bd5a028c84627455a7d20563e62c6940b27c62229e5744496bec36c2440d402c0aee0a7853550f9b
+DIST pytest_mpl-0.19.0.tar.gz 881884 BLAKE2B 4d57155ec3af24572ce7f881ace78e88289fafcfc4edf2e433561d4a20970434cfbb4798aa3ec0c882c939ef32f20a5a5976c62d7e9ddc8c15b608923750fa55 SHA512 fcfd1ba11ff3a6bfec6100893421cba245a259835c823f2c2d2bb472f5a5031e699a1f0ffc5608b245691f95827f411ffc60c8b5c5d4ff33a9642ccd1bfbda80
diff --git a/dev-python/pytest-mpl/pytest-mpl-0.17.0.ebuild b/dev-python/pytest-mpl/pytest-mpl-0.17.0.ebuild
index 84540e8d9830..a696539cd1c4 100644
--- a/dev-python/pytest-mpl/pytest-mpl-0.17.0.ebuild
+++ b/dev-python/pytest-mpl/pytest-mpl-0.17.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
diff --git a/dev-python/pytest-mpl/pytest-mpl-0.19.0.ebuild b/dev-python/pytest-mpl/pytest-mpl-0.19.0.ebuild
new file mode 100644
index 000000000000..cceaf5ece491
--- /dev/null
+++ b/dev-python/pytest-mpl/pytest-mpl-0.19.0.ebuild
@@ -0,0 +1,42 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Facilitate image comparison for Matplotlib figures"
+HOMEPAGE="
+ https://pypi.org/project/pytest-mpl/
+ https://github.com/matplotlib/pytest-mpl
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="
+ dev-python/jinja2[${PYTHON_USEDEP}]
+ dev-python/matplotlib[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ dev-python/pillow[${PYTHON_USEDEP}]
+ dev-python/pytest[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=( "${PN}" )
+EPYTEST_PLUGIN_LOAD_VIA_ENV=1
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # these tests are pinned to specific output image hashes
+ # and none match nowadays
+ tests/subtests/test_subtest.py
+ tests/test_baseline_path.py::test_config
+ tests/test_pytest_mpl.py::test_formats
+ tests/test_results_always.py::test_config
+ tests/test_use_full_test_name.py::test_config
+)
diff --git a/dev-python/python-discovery/python-discovery-1.2.2.ebuild b/dev-python/python-discovery/python-discovery-1.2.2.ebuild
index 24318511709a..7e7156a12269 100644
--- a/dev-python/python-discovery/python-discovery-1.2.2.ebuild
+++ b/dev-python/python-discovery/python-discovery-1.2.2.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~riscv ~s390 ~x86"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~riscv ~s390 ~x86"
RDEPEND="
>=dev-python/filelock-3.15.4[${PYTHON_USEDEP}]
diff --git a/dev-python/qscintilla/qscintilla-2.14.1-r3.ebuild b/dev-python/qscintilla/qscintilla-2.14.1-r3.ebuild
index 511dd6f1b214..bd56fd9b1a3b 100644
--- a/dev-python/qscintilla/qscintilla-2.14.1-r3.ebuild
+++ b/dev-python/qscintilla/qscintilla-2.14.1-r3.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
diff --git a/dev-python/setuptools-scm/setuptools-scm-10.0.5.ebuild b/dev-python/setuptools-scm/setuptools-scm-10.0.5.ebuild
index 42035f487f77..3fdde26839a3 100644
--- a/dev-python/setuptools-scm/setuptools-scm-10.0.5.ebuild
+++ b/dev-python/setuptools-scm/setuptools-scm-10.0.5.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~riscv ~s390 ~sparc"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~riscv ~s390 ~sparc ~x86"
# there's an optional dep on rich for cute logs
RDEPEND="
diff --git a/dev-python/signxml/signxml-4.4.0.ebuild b/dev-python/signxml/signxml-4.4.0.ebuild
index 5fd3e141e50e..adf964d452a4 100644
--- a/dev-python/signxml/signxml-4.4.0.ebuild
+++ b/dev-python/signxml/signxml-4.4.0.ebuild
@@ -20,7 +20,7 @@ if [[ ${PV} == "9999" ]]; then
EGIT_REPO_URI="https://github.com/XML-Security/signxml.git"
else
inherit pypi
- KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv"
+ KEYWORDS="amd64 ~arm64 ~ppc64 ~riscv"
fi
LICENSE="Apache-2.0"
diff --git a/dev-python/tox/Manifest b/dev-python/tox/Manifest
index de78315057e0..dc855f82abd4 100644
--- a/dev-python/tox/Manifest
+++ b/dev-python/tox/Manifest
@@ -6,3 +6,5 @@ DIST tox-4.51.0.tar.gz 268657 BLAKE2B 52d453f2de4f4b24e81cd6850870f1086df762bc7e
DIST tox-4.51.0.tar.gz.provenance 9283 BLAKE2B 44c387a35815b55da8830bf0c57e115c35ac2c7e7f77c90d61a40d0c682a4cc5d941c35471d6f7b8b28f324e813726bf0f100a66a2f9e562fcad1eba299360b4 SHA512 28e558b4d40672dca95bd035c87e1ae031800401889d4118526a1e460cd1510a4703e024d5f79344b47beb0603b6d38e499b6790535c633e0eafb12dcbe29559
DIST tox-4.52.1.tar.gz 273730 BLAKE2B f4c03bc4336d844063e86cbabaef67afdfee88e44cd4f2e5a703feb6b598a51fdeb15b0954790d1b4a3632b1c84ccf649f6874772566eb387c240df3fb6a5d62 SHA512 2afbd49fbf298388f54329ab23b63af81c67692e52f95c483ef81fcf206e2a345f219389a3aa635d1b9c4ddb56a163a17a76550ccc1716f1ab42e922f51a68dd
DIST tox-4.52.1.tar.gz.provenance 9142 BLAKE2B 14b0420896e2dba90aec162fe0ac917c4b9df9626f4b52c4d3e832e389ef789f52be6ed63d7c7a191453e977f691e95904004006a5d81cd666d8ecc99379c2fd SHA512 35fdcca7fe9277d1c3d7a8867c5309c8e08a32cf5bca47d43dedfef12e9fe75edd818c8eec17872e521d923d9c6daeb931014a6f733041db9c1f464b1018e5a3
+DIST tox-4.53.0.tar.gz 274048 BLAKE2B 471335ce4a9451c57d9ab8cf20bf2becd195bdacaa92e9489b3a49b7952f960e707368988fb2f1a008338a040302dc1410b390c147c43c53e899835e2b23c666 SHA512 f43388935335f94be0ad0ee6376ef272e12dbbd0b4df386cb6a6733f0aebf7ad9620d706b90a913a44d00b0a1b7ac1df69b27f519d804191efcf4f9d99d10ffd
+DIST tox-4.53.0.tar.gz.provenance 9518 BLAKE2B bb5adebc42fd365720a802da1fc8007f6b705bfcf828e236aa736a6781be59219ae8033f6f0a1c895d2719f2b7c8f5faa1ab8640696a2b7c21c4de0df0f1965c SHA512 b656c6db244153f76dd5055ee05edc1715e31e991f4f72a18c52a440e4178f45e7c647ee2c5fc5e706b41ec6775db927864a6ca196c1895af210ae01d9722069
diff --git a/dev-python/tox/tox-4.53.0.ebuild b/dev-python/tox/tox-4.53.0.ebuild
new file mode 100644
index 000000000000..9b8acbc341d0
--- /dev/null
+++ b/dev-python/tox/tox-4.53.0.ebuild
@@ -0,0 +1,95 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYPI_VERIFY_REPO=https://github.com/tox-dev/tox
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="virtualenv-based automation of test activities"
+HOMEPAGE="
+ https://tox.readthedocs.io/
+ https://github.com/tox-dev/tox/
+ https://pypi.org/project/tox/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~riscv ~s390 ~x86"
+
+RDEPEND="
+ dev-python/cachetools[${PYTHON_USEDEP}]
+ dev-python/colorama[${PYTHON_USEDEP}]
+ dev-python/filelock[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ dev-python/platformdirs[${PYTHON_USEDEP}]
+ dev-python/pluggy[${PYTHON_USEDEP}]
+ dev-python/pyproject-api[${PYTHON_USEDEP}]
+ dev-python/python-discovery[${PYTHON_USEDEP}]
+ dev-python/tomli-w[${PYTHON_USEDEP}]
+ dev-python/virtualenv[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ dev-python/docutils[${PYTHON_USEDEP}]
+ dev-python/hatch-vcs[${PYTHON_USEDEP}]
+ test? (
+ dev-python/argcomplete[${PYTHON_USEDEP}]
+ dev-python/build[${PYTHON_USEDEP}]
+ dev-python/distlib[${PYTHON_USEDEP}]
+ dev-python/psutil[${PYTHON_USEDEP}]
+ dev-python/re-assert[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/time-machine[${PYTHON_USEDEP}]
+ ' 'python*')
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-{mock,rerunfailures,timeout,xdist} )
+# xdist seems to mess up state between successive implementation runs
+distutils_enable_tests pytest
+
+src_prepare() {
+ # upstream lower bounds are meaningless
+ sed -i -e 's:>=[0-9.]*::' pyproject.toml || die
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ # devpi_process is not packaged, and has lots of dependencies
+ cat > "${T}"/devpi_process.py <<-EOF || die
+ def IndexServer(*args, **kwargs): raise NotImplementedError()
+ EOF
+
+ local -x PYTHONPATH=${T}:${PYTHONPATH}
+ local EPYTEST_DESELECT=(
+ # Internet
+ tests/tox_env/python/virtual_env/package/test_package_cmd_builder.py::test_build_wheel_external
+ tests/tox_env/python/virtual_env/package/test_package_cmd_builder.py::test_run_installpkg_targz
+ tests/tox_env/python/virtual_env/package/test_package_pyproject.py::test_pyproject_installpkg_pep517_envs
+ )
+ local EPYTEST_IGNORE=(
+ # requires devpi*
+ tests/test_provision.py
+ )
+
+ case ${EPYTHON} in
+ python*)
+ local EPYTEST_PLUGINS=( "${EPYTEST_PLUGINS[@]}" time-machine )
+ ;;
+ pypy3*)
+ EPYTEST_DESELECT+=(
+ 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[explicit-True-True]'
+ 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[requirements-True-True]'
+ 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[constraints-True-True]'
+ 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[explicit+requirements-True-True]'
+ 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[requirements_indirect-True-True]'
+ 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[requirements_constraints_indirect-True-True]'
+ )
+ ;;
+ esac
+
+ epytest -o addopts=
+}
diff --git a/dev-python/translate-toolkit/Manifest b/dev-python/translate-toolkit/Manifest
index b273a3b141ae..980ae0de6259 100644
--- a/dev-python/translate-toolkit/Manifest
+++ b/dev-python/translate-toolkit/Manifest
@@ -1,2 +1,3 @@
DIST translate-3.19.3.gh.tar.gz 1297097 BLAKE2B 4dad6f730ad441cb709990a12eebfc38d98b805c469f07b5eafb46f85aee7c58572d449e1325a7f0f7b438288ad290136ee07b1b8acac5680a7f8a5707a7ad0e SHA512 36c2308bbe8c512bf72bf4a8d29129cf096f514c5c78f9c464183130ec287b70dc0cc79d95e73082e1c978af2e335ac48159cb0fca861a0555a320e82128275d
DIST translate-3.19.4.gh.tar.gz 1312664 BLAKE2B 90da92402354a10bb68701781bd2572aa8461aa858840badbbdc866da8ddc600006b9d22e177f5f3ce68a5eaec14f38373f6c13c758d84f208da71a97885161d SHA512 e4fbf1276205452782f798b1f57fb2acb57fc1d92246a032e2912def53db1764121a6a0ddff9a9237a21f9bb1fad274129133517ec28e8d26add592ac7b4ebcc
+DIST translate-3.19.5.gh.tar.gz 1320567 BLAKE2B ea27702656b25423fa71f0624d68a82d75ba8a4bb334846f3dfa2f4448ead68987ad6ff15a7cd1c74f6199ecf14c80e9d3d7b50b914f74756848ed37a6974ed3 SHA512 92a5d65217ff15cee3753071cd78b218c6492049752b395fc841799c71eea056027515455b65565b2d22f1eba7305bc0d5ee453cd7995d52fa7f88f0d3fe7876
diff --git a/dev-python/translate-toolkit/translate-toolkit-3.19.5.ebuild b/dev-python/translate-toolkit/translate-toolkit-3.19.5.ebuild
new file mode 100644
index 000000000000..2745b3ccd23f
--- /dev/null
+++ b/dev-python/translate-toolkit/translate-toolkit-3.19.5.ebuild
@@ -0,0 +1,130 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..14} )
+PYTHON_REQ_USE="sqlite"
+
+inherit distutils-r1
+
+MY_P=translate-${PV}
+DESCRIPTION="Toolkit to convert between many translation formats"
+HOMEPAGE="
+ https://github.com/translate/translate/
+ https://pypi.org/project/translate-toolkit/
+"
+SRC_URI="
+ https://github.com/translate/translate/archive/${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S="${WORKDIR}"/${MY_P}
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE="+html +ical +ini +subtitles +yaml"
+
+RDEPEND="
+ app-text/iso-codes
+ >=dev-python/chardet-3.0.4[${PYTHON_USEDEP}]
+ dev-python/cheroot[${PYTHON_USEDEP}]
+ >=dev-python/levenshtein-0.12.0[${PYTHON_USEDEP}]
+ >=dev-python/lxml-5.2.0[${PYTHON_USEDEP}]
+ >=dev-python/mistletoe-1.1.0[${PYTHON_USEDEP}]
+ >=dev-python/pyparsing-3[${PYTHON_USEDEP}]
+ dev-python/ruamel-yaml[${PYTHON_USEDEP}]
+ dev-python/tomlkit[${PYTHON_USEDEP}]
+ >=dev-python/unicode-segmentation-rs-0.2.0[${PYTHON_USEDEP}]
+ >=dev-python/wcwidth-0.2.14[${PYTHON_USEDEP}]
+ sys-devel/gettext
+ html? ( dev-python/utidylib[${PYTHON_USEDEP}] )
+ ical? ( dev-python/vobject[${PYTHON_USEDEP}] )
+ ini? ( >=dev-python/iniparse-0.5[${PYTHON_USEDEP}] )
+ subtitles? ( media-video/gaupol[${PYTHON_USEDEP}] )
+ yaml? ( dev-python/pyyaml[${PYTHON_USEDEP}] )
+"
+# Technically, the test suite also has undeclared dependency
+# on dev-python/snapshottest but all the tests using it are broken
+# anyway, so we skip them.
+BDEPEND="
+ test? (
+ dev-python/phply[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # strip unnecessary pins
+ sed -i -e 's:,<[0-9.]*::' pyproject.toml || die
+}
+
+src_test() {
+ # unfortunately, this bad quality package doesn't support XDG_DATA_DIRS
+ # correctly, so we need to reassemble all data files in a single directory
+ local -x XDG_DATA_HOME=${T}/share
+ cp -r translate/share "${T}/" || die
+ cp -r "${ESYSROOT}"/usr/share/gaupol "${XDG_DATA_HOME}"/ || die
+
+ distutils-r1_src_test
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # Fails with network-sandbox (and even with it off but w/ softer fail)
+ 'tests/xliff_conformance/test_xliff_conformance.py::test_open_office_to_xliff'
+ 'tests/xliff_conformance/test_xliff_conformance.py::test_po_to_xliff'
+ # all tests based on snapshottest are broken and I'm too tired
+ # to figure this out
+ tests/translate/tools/test_pocount.py::test_{cases,output}
+ tests/translate/tools/test_junitmsgfmt.py::test_output
+ )
+ local EPYTEST_IGNORE=(
+ # unpackaged fluent.*
+ tests/translate/storage/test_fluent.py
+ tests/translate/convert/test_fluent2po.py
+ # changes directory and does not change it back, sigh
+ tests/odf_xliff/test_odf_xliff.py
+ )
+
+ if ! has_version "dev-python/iniparse[${PYTHON_USEDEP}]"; then
+ EPYTEST_IGNORE+=(
+ translate/convert/test_ini2po.py
+ translate/convert/test_po2ini.py
+ )
+ fi
+
+ if ! has_version "media-video/gaupol[${PYTHON_USEDEP}]"; then
+ EPYTEST_IGNORE+=(
+ translate/storage/test_subtitles.py
+ )
+ fi
+
+ epytest
+}
+
+python_install_all() {
+ distutils-r1_python_install_all
+
+ insinto /usr
+ doins -r translate/share
+
+ if ! use html; then
+ rm "${ED}"/usr/bin/{html2po,po2html} || die
+ fi
+ if ! use ical; then
+ rm "${ED}"/usr/bin/{ical2po,po2ical} || die
+ fi
+ if ! use ini; then
+ rm "${ED}"/usr/bin/{ini2po,po2ini} || die
+ fi
+ if ! use subtitles; then
+ rm "${ED}"/usr/bin/{sub2po,po2sub} || die
+ fi
+}
diff --git a/dev-python/unicode-segmentation-rs/unicode-segmentation-rs-0.2.4.ebuild b/dev-python/unicode-segmentation-rs/unicode-segmentation-rs-0.2.4.ebuild
index 957bbcd54481..6d4b12c3f661 100644
--- 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
@@ -46,7 +46,7 @@ LICENSE="MIT"
# Dependent crate licenses
LICENSE+=" Apache-2.0-with-LLVM-exceptions MIT Unicode-3.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm64"
+KEYWORDS="~amd64 ~arm64 ~x86"
QA_FLAGS_IGNORED="
usr/lib/py.*/site-packages/unicode_segmentation_rs/unicode_segmentation_rs.*
diff --git a/dev-python/vcs-versioning/vcs-versioning-1.1.1.ebuild b/dev-python/vcs-versioning/vcs-versioning-1.1.1.ebuild
index e7ac80059882..4a020d4cda39 100644
--- a/dev-python/vcs-versioning/vcs-versioning-1.1.1.ebuild
+++ b/dev-python/vcs-versioning/vcs-versioning-1.1.1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~riscv ~s390 ~sparc"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~riscv ~s390 ~sparc ~x86"
RDEPEND="
>=dev-python/packaging-20[${PYTHON_USEDEP}]
diff --git a/dev-python/virtualenv/Manifest b/dev-python/virtualenv/Manifest
index 380a91753707..daf32be26b69 100644
--- a/dev-python/virtualenv/Manifest
+++ b/dev-python/virtualenv/Manifest
@@ -6,3 +6,5 @@ DIST virtualenv-21.2.1.tar.gz 5844770 BLAKE2B e14ffb6c788e953df7eacc158743b63f72
DIST virtualenv-21.2.1.tar.gz.provenance 9437 BLAKE2B e87594c8c4aeda80f392b9b53cf9a93c677695eb15e2dc277a680c7f3dcc34559c3ed0116df154d4a19c6cdd17e03d2003959e07adf9997699de037c87742358 SHA512 ab36e476fa751846c2e05800709b1eccd57695f3ab38d6dcc1b063af499c34ac157121a9d517664922231b0d89c9efd39bf2b0f8404790eb3b01be9d7cb2bee2
DIST virtualenv-21.2.3.tar.gz 5844776 BLAKE2B 8c12e28a929b8694bbde3357dd6fb6fad1e052f5ff8d1b6bbb21e9effebf0b96cfc9cfe82b28fc21b3c04fb58b141c7bc03c4175d4567d70a27029b66f1e2902 SHA512 82a99787aabd0d9aab0793347f9fdc25ad171debedfc876bd1212850ba6ebe92a9c87920fadb88a966128b43883c0dcec25f04ea17466a5872535854cfb57b4f
DIST virtualenv-21.2.3.tar.gz.provenance 9480 BLAKE2B cc5c9dc8549d6eaf41a2723f7b692cd4305d2663d235128db867b656e8c95dea898a967d814df12639892c75b9ee84b37146cda1f32dd4b9edb9dce7d463f4c6 SHA512 e7524e1d9edc505fe11f437e1a71e6d52e7540e5dd7188d642493aaa9d26256b28c3e565a9dd39b5e0f5bdf0b7bbffa90029d587b29f6a4e5bc40ccb4c2a12fd
+DIST virtualenv-21.2.4.tar.gz 5850742 BLAKE2B 1aa6aee759d79e1d108d8564f1a797daf67d078a8ceb6ce3fa706788a3c1eaa8a8ee590320dc3de404061024e80ccc1925df94ed18b7998133c37237096725af SHA512 59cd373c7b149ab83609f2a331fb6ffa95792647d939d129b661cb12aa02686e1b789ccdf2ecf9ab959e3645c42df303ddb5a277e0600b156f6567f797fc49ff
+DIST virtualenv-21.2.4.tar.gz.provenance 9343 BLAKE2B 5458056abadcd9cf65f307c82460dab3501e38a9f4d688a0dd3c718e9b3aa401357fd45a1b679cacca9675fd501ba115d2fda76929bfe753ba644f4d1eb24571 SHA512 dc4ad98f34b6e4f15943ec3a8bc07d0335d60943cacb7f1ed08f6a5c0ee34c115c304ffb34a2fd89c19f3d1c59db9f3ee24e3c6a39d7c90f8e251f60d4d7bcb8
diff --git a/dev-python/virtualenv/files/virtualenv-21.2.4-ensurepip.patch b/dev-python/virtualenv/files/virtualenv-21.2.4-ensurepip.patch
new file mode 100644
index 000000000000..1447766cc15b
--- /dev/null
+++ b/dev-python/virtualenv/files/virtualenv-21.2.4-ensurepip.patch
@@ -0,0 +1,29 @@
+From 4c59dc5ea8a90d93cd0fb68cebd742dd40d16710 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
+Date: Sat, 22 Jun 2024 14:28:23 +0200
+Subject: [PATCH] [Gentoo] Use ensurepip wheels instead of local bundle
+
+---
+ src/virtualenv/seed/wheels/embed/__init__.py | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/src/virtualenv/seed/wheels/embed/__init__.py b/src/virtualenv/seed/wheels/embed/__init__.py
+index df58d6d0..e1b40d1e 100644
+--- a/src/virtualenv/seed/wheels/embed/__init__.py
++++ b/src/virtualenv/seed/wheels/embed/__init__.py
+@@ -70,6 +70,15 @@ def get_embed_wheel(distribution: str, for_py_version: str) -> Wheel | None:
+ :raises RuntimeError: if the bundled wheel on disk fails SHA-256 verification.
+
+ """
++
++ # Gentoo hack: get wheel from ensurepip directory
++ import sysconfig
++ bundle_dir = Path(sysconfig.get_config_var("WHEEL_PKG_DIR"))
++ try:
++ return Wheel.from_path(next(bundle_dir.glob(f"{distribution}-*.whl")))
++ except StopIteration:
++ return None
++
+ mapping = BUNDLE_SUPPORT.get(for_py_version, {}) or BUNDLE_SUPPORT[MAX]
+ wheel_file = mapping.get(distribution)
+ if wheel_file is None:
diff --git a/dev-python/virtualenv/virtualenv-21.2.4.ebuild b/dev-python/virtualenv/virtualenv-21.2.4.ebuild
new file mode 100644
index 000000000000..585a76648569
--- /dev/null
+++ b/dev-python/virtualenv/virtualenv-21.2.4.ebuild
@@ -0,0 +1,136 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYPI_VERIFY_REPO=https://github.com/pypa/virtualenv
+PYTHON_TESTED=( python3_{11..14} pypy3_11 )
+PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Virtual Python Environment builder"
+HOMEPAGE="
+ https://virtualenv.pypa.io/en/stable/
+ https://pypi.org/project/virtualenv/
+ https://github.com/pypa/virtualenv/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~riscv ~s390 ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-python/distlib-0.3.7[${PYTHON_USEDEP}]
+ >=dev-python/filelock-3.24.2[${PYTHON_USEDEP}]
+ >=dev-python/platformdirs-3.9.1[${PYTHON_USEDEP}]
+ >=dev-python/python-discovery-1.2.2[${PYTHON_USEDEP}]
+
+ dev-python/ensurepip-pip
+ >=dev-python/ensurepip-setuptools-70.1
+ dev-python/ensurepip-wheel
+"
+# coverage is used somehow magically in virtualenv, maybe it actually
+# tests something useful
+BDEPEND="
+ dev-python/hatch-vcs[${PYTHON_USEDEP}]
+ test? (
+ ${RDEPEND}
+ $(python_gen_cond_dep '
+ dev-python/coverage[${PYTHON_USEDEP}]
+ >=dev-python/pip-22.2.1[${PYTHON_USEDEP}]
+ >=dev-python/pytest-mock-3.6.1[${PYTHON_USEDEP}]
+ dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
+ dev-python/pytest-timeout[${PYTHON_USEDEP}]
+ dev-python/pytest-xdist[${PYTHON_USEDEP}]
+ >=dev-python/setuptools-67.8[${PYTHON_USEDEP}]
+ dev-python/wheel[${PYTHON_USEDEP}]
+ >=dev-python/packaging-20.0[${PYTHON_USEDEP}]
+ ' "${PYTHON_TESTED[@]}")
+ $(python_gen_cond_dep '
+ dev-python/time-machine[${PYTHON_USEDEP}]
+ ' python3_{11..14})
+ $(python_gen_cond_dep '
+ >=dev-python/pytest-freezer-0.4.6[${PYTHON_USEDEP}]
+ ' 'pypy3*')
+ )
+"
+
+src_prepare() {
+ local PATCHES=(
+ # use wheels from ensurepip bundle
+ "${FILESDIR}/${PN}-21.2.4-ensurepip.patch"
+ )
+
+ distutils-r1_src_prepare
+
+ # workaround test failures due to warnings from setuptools-scm, sigh
+ echo '[tool.setuptools_scm]' >> pyproject.toml || die
+
+ # remove useless pins
+ sed -i -e 's:,<[=0-9.]*::' pyproject.toml || die
+
+ # remove bundled wheels
+ rm src/virtualenv/seed/wheels/embed/*.whl || die
+}
+
+python_test() {
+ if ! has "${EPYTHON}" "${PYTHON_TESTED[@]/_/.}"; then
+ einfo "Skipping testing on ${EPYTHON}"
+ return
+ fi
+
+ local EPYTEST_DESELECT=(
+ tests/unit/seed/embed/test_bootstrap_link_via_app_data.py::test_seed_link_via_app_data
+ # tests for old wheels with py3.7 support
+ tests/unit/seed/embed/test_pip_invoke.py::test_base_bootstrap_via_pip_invoke
+ tests/unit/seed/wheels/test_wheels_util.py::test_wheel_not_support
+ # broken by different wheel versions in ensurepip
+ tests/unit/seed/wheels/test_acquire_find_wheel.py::test_find_latest_string
+ tests/unit/seed/wheels/test_acquire_find_wheel.py::test_find_exact
+ tests/unit/seed/wheels/test_acquire_find_wheel.py::test_find_latest_none
+ tests/unit/seed/wheels/test_acquire.py::test_download_wheel_bad_output
+ # hangs on a busy system, sigh
+ tests/unit/test_util.py::test_reentrant_file_lock_is_thread_safe
+ # TODO
+ tests/unit/create/via_global_ref/test_build_c_ext.py::test_can_build_c_extensions
+ # random resource leaks or xdist
+ tests/unit/test_file_limit.py::test_too_many_open_files
+ # Internet
+ tests/unit/create/test_creator.py::test_create_distutils_cfg
+ # we do not use bundled wheels
+ tests/unit/seed/wheels/test_bundle.py::test_every_wheel_on_disk_has_sha256
+ )
+ case ${EPYTHON} in
+ pypy3.11)
+ EPYTEST_DESELECT+=(
+ # these don't like the executable called pypy3.11?
+ tests/unit/activation/test_bash.py::test_bash
+ tests/unit/activation/test_fish.py::test_fish
+ tests/unit/discovery/py_info/test_py_info.py::test_fallback_existent_system_executable
+ )
+ ;;
+ esac
+
+ local -x TZ=UTC
+ local EPYTEST_PLUGINS=( pytest-{mock,rerunfailures} )
+ if [[ ${EPYTHON} == pypy3* ]]; then
+ EPYTEST_PLUGINS+=( pytest-freezer )
+ else
+ EPYTEST_PLUGINS+=( time-machine )
+ fi
+ local EPYTEST_RERUNS=5
+ local EPYTEST_TIMEOUT=180
+ local EPYTEST_XDIST=1
+ epytest -o addopts=
+}
+
+src_install() {
+ distutils-r1_src_install
+
+ # remove bundled wheels, we're using ensurepip bundle instead
+ find "${ED}" -name '*.whl' -delete || die
+}
diff --git a/dev-python/wrapt/Manifest b/dev-python/wrapt/Manifest
index 10626d44ca8e..519cb5239c34 100644
--- a/dev-python/wrapt/Manifest
+++ b/dev-python/wrapt/Manifest
@@ -1,5 +1,4 @@
DIST wrapt-1.17.3.gh.tar.gz 140900 BLAKE2B 88c4cd718cd98a97c866c4f0b9f7e095347fe6fa5fed60c54e389329c89f9f07099c8fb79561cf5e12c19c44a4067d81e805c55b54a74429e6b75913dedd6b3f SHA512 1a1f7419f20faa461a9e23ad09cc98d381ef2c48b3b24ed1dfe98d42d16857a958252301e78dd41b7fa8ef37eea379f9244cace2b396b49718c44cbc701308a3
DIST wrapt-2.1.2.tar.gz 81678 BLAKE2B f7fc45f31b8077d6d97c14c1f649437e0f1da7537769d369d427edede0ba1b84c8c07e6de9ded8088f29f2fb774272186d0f9b707e6b2bef650dc5f78444d852 SHA512 97f1af4cabfd7a4cfabfaf36d26d1afc577747f18946226fbb80256e13c55302b746005e01720e874d46d536826c83e9234544c98f8dd1ecd3c9a091113da808
-DIST wrapt-2.2.0rc2.tar.gz 91919 BLAKE2B 5f3c42f36f2ec74677a0de7367a019f0b02a183ee28f77f91d2748f8a0cd6714a2d315bdd1900fffc9ea383e1f236b2437aada6fe308d1607578fdb70555f57b SHA512 a70626f14f1b59cc5dfcf99038a72dca022b953f280b34a9472621afe22cecda450b660244bade2956e1b8e13c21365839b186c60ac68e993a0f55f6e44a4ccd
-DIST wrapt-2.2.0rc4.tar.gz 95966 BLAKE2B 8c87e0998711cfa08b81c75ead0589bef8ab723df48d04b2304691cd0cbc0c5e25324381a6386f93deb022985285e025cb9600e210a8101e8bae782d8f531a3b SHA512 fb62f0e0b8448b246ee3b34497bf20ca0faac8b3b91da9ea07a2585bcc026ba0a58d5adb2786360a61cca54e212f931019675cb708de2bdda06d322c766ea31a
DIST wrapt-2.2.0rc5.tar.gz 101797 BLAKE2B 4784e51ece7f671cb7df884de69ec245569c1c5ea6fc6c8be58438ace8238b910b1d78c9d95de72e7e9a37d2c189d5326253c6784952092187962da6b742ec92 SHA512 509de5d5d1deff63485e0c2b7cbae04709c61276f5863596f31049f451e1eb845d23016d0cee03b9eea0495ce578e62db0a368499819965477d2a2bc08722ae8
+DIST wrapt-2.2.0rc6.tar.gz 107658 BLAKE2B 4efd21c7a575d7a19b421e6068d704a107013a4be09143544cabef6bd490cf11e7278eb011bb6024858fb61d116f628f6658519fd974a171874e51a64f1b9392 SHA512 2d28aaffd3da3d340428ef3f5d34461647eddc973b2b0fba6388dc14a3af3219d74d3c0635e7a964bf35809d7fd8cd099dc655a766841ddba4688774f3ddf4d3
diff --git a/dev-python/wrapt/wrapt-2.2.0_rc4.ebuild b/dev-python/wrapt/wrapt-2.2.0_rc4.ebuild
deleted file mode 100644
index 8514e94dc258..000000000000
--- a/dev-python/wrapt/wrapt-2.2.0_rc4.ebuild
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{10..14} )
-
-inherit distutils-r1 pypi
-
-MY_P=${P/_}
-DESCRIPTION="Module for decorators, wrappers and monkey patching"
-HOMEPAGE="
- https://github.com/GrahamDumpleton/wrapt/
- https://pypi.org/project/wrapt/
-"
-
-LICENSE="BSD"
-SLOT="0"
-if [[ ${PV} != *_rc* ]]; then
- KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
-fi
-IUSE="+native-extensions"
-
-EPYTEST_PLUGINS=()
-distutils_enable_tests pytest
-
-src_prepare() {
- distutils-r1_src_prepare
-
- # skip mypy tests, they are fragile
- rm -r tests/mypy || die
-}
-
-python_compile() {
- local -x WRAPT_INSTALL_EXTENSIONS=$(usex native-extensions true false)
- distutils-r1_python_compile
-}
diff --git a/dev-python/wrapt/wrapt-2.2.0_rc2.ebuild b/dev-python/wrapt/wrapt-2.2.0_rc6.ebuild
index 8514e94dc258..8514e94dc258 100644
--- a/dev-python/wrapt/wrapt-2.2.0_rc2.ebuild
+++ b/dev-python/wrapt/wrapt-2.2.0_rc6.ebuild