summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
authorRepository mirror & CI <repomirrorci@gentoo.org>2026-02-20 03:00:53 +0000
committerRepository mirror & CI <repomirrorci@gentoo.org>2026-02-20 03:00:53 +0000
commitbaf15efd1551e6ea16b0be484dd1f9b320c2ffdd (patch)
tree1f4ab62368297234b0bcc2ab234d7c3158d77259 /dev-python
parentc4ca3737e5b94d241238a7c4d81bb5b3d8066571 (diff)
parentbb962ceac906b2e3c834622f4eb766c0a5beff3a (diff)
downloadgentoo-baf15efd1551e6ea16b0be484dd1f9b320c2ffdd.tar.gz
gentoo-baf15efd1551e6ea16b0be484dd1f9b320c2ffdd.tar.bz2
gentoo-baf15efd1551e6ea16b0be484dd1f9b320c2ffdd.zip
Merge updates from master
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/boto3/Manifest1
-rw-r--r--dev-python/boto3/boto3-1.42.53.ebuild53
-rw-r--r--dev-python/botocore/Manifest1
-rw-r--r--dev-python/botocore/botocore-1.42.53.ebuild67
-rw-r--r--dev-python/dj-database-url/Manifest1
-rw-r--r--dev-python/dj-database-url/dj-database-url-3.1.2.ebuild29
-rw-r--r--dev-python/flask/Manifest3
-rw-r--r--dev-python/flask/flask-3.1.3.ebuild (renamed from dev-python/flask/flask-3.1.1.ebuild)12
-rw-r--r--dev-python/isort/Manifest1
-rw-r--r--dev-python/isort/isort-8.0.0.ebuild73
-rw-r--r--dev-python/regex/Manifest1
-rw-r--r--dev-python/regex/regex-2026.2.19.ebuild37
-rw-r--r--dev-python/responses/Manifest2
-rw-r--r--dev-python/responses/responses-0.26.0.ebuild (renamed from dev-python/responses/responses-0.25.7.ebuild)17
-rw-r--r--dev-python/rich/Manifest1
-rw-r--r--dev-python/rich/rich-14.3.3.ebuild70
-rw-r--r--dev-python/testtools/Manifest2
-rw-r--r--dev-python/testtools/testtools-2.8.4.ebuild44
-rw-r--r--dev-python/tox/Manifest2
-rw-r--r--dev-python/tox/tox-4.41.0.ebuild92
-rw-r--r--dev-python/typeguard/Manifest2
-rw-r--r--dev-python/typeguard/typeguard-4.5.1.ebuild41
-rw-r--r--dev-python/virtualenv/Manifest2
-rw-r--r--dev-python/virtualenv/virtualenv-20.38.0.ebuild133
-rw-r--r--dev-python/werkzeug/Manifest2
-rw-r--r--dev-python/werkzeug/werkzeug-3.1.6.ebuild53
26 files changed, 719 insertions, 23 deletions
diff --git a/dev-python/boto3/Manifest b/dev-python/boto3/Manifest
index 828e6e118abe..53b4d04dbd9f 100644
--- a/dev-python/boto3/Manifest
+++ b/dev-python/boto3/Manifest
@@ -9,3 +9,4 @@ DIST boto3-1.42.49.gh.tar.gz 1085810 BLAKE2B f9015a7ea5ff20a8c65d2ce25de3df2dab0
DIST boto3-1.42.50.gh.tar.gz 1086325 BLAKE2B d81f65b37af6cbec127dcc3e188880b31c6516b9870e33888117b70acfb739ac7677010b0496707518fce190e8bf49453de044ca3dd4e3a7a5cf57b75b496676 SHA512 1834d06a828e7ba1b8cbee90040afa1c0b128646d53f5cd4b253ce000c4970375484480c89c4d9ee1b6cc769d466af2a5595dd11205b373b4fe373867ffadae5
DIST boto3-1.42.51.gh.tar.gz 1086626 BLAKE2B 2e08abbef723638076c39fd515659bde8fb485868e6951525a1930a5e5cdff5ac0a5683302e295d64bb737a333d7da36d950431c78baafc5e29fb1783c5097ca SHA512 8f51f5dc3b37ffaad6c4c2a87408b54dc7d8dce6c08009876c3475c3e95a247e78baf83144715c6b485a66abbc725948e248c6f032467f5bdeb4029f4a9fdf2a
DIST boto3-1.42.52.gh.tar.gz 1086491 BLAKE2B 45f71cdaa4b4b73c9c502cec09772d25328a9140517bc5941d3b3125c3417f20f60ba7269035725f991a5ed2ded6755db89cff6232e9d50c67e2993844a674e0 SHA512 69d139ec9f68f6d8e3794e6fa2e63fd17f9953e1a06df74ef7f7b4eae31f4c1a4876c33f694aac37448d6b82ac6788fe59916b3a82b76c65d6064b7929aa8308
+DIST boto3-1.42.53.gh.tar.gz 1087318 BLAKE2B af74c567314eaaa3a225632317d63c1df76019863012177857c44436fe9c979e4e102e81ad3b92197187307f30728c7af1f0ed69e121fff15515d608f4f72aed SHA512 11c1f1bfb6645dee88da3fb08c05ce40b1c4593a4ea33ea6a322b8eb004a4317dde5acc47434bd978d7be858929cdd686516f171384f98f127fe82352713f19c
diff --git a/dev-python/boto3/boto3-1.42.53.ebuild b/dev-python/boto3/boto3-1.42.53.ebuild
new file mode 100644
index 000000000000..019ca75e6b75
--- /dev/null
+++ b/dev-python/boto3/boto3-1.42.53.ebuild
@@ -0,0 +1,53 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{11..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="The AWS SDK for Python"
+HOMEPAGE="
+ https://github.com/boto/boto3/
+ https://pypi.org/project/boto3/
+"
+SRC_URI="
+ https://github.com/boto/boto3/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/botocore-${PV}[${PYTHON_USEDEP}]
+ >=dev-python/jmespath-0.7.1[${PYTHON_USEDEP}]
+ >=dev-python/s3transfer-0.16.0[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ # don't lock versions to narrow ranges
+ sed -e '/botocore/ d' \
+ -e '/jmespath/ d' \
+ -e '/s3transfer/ d' \
+ -i setup.py || die
+
+ # do not rely on bundled deps in botocore (sic!)
+ find -name '*.py' -exec sed -i \
+ -e 's:from botocore[.]vendored import:import:' \
+ -e 's:from botocore[.]vendored[.]:from :' \
+ {} + || die
+
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ epytest tests/{functional,unit}
+}
diff --git a/dev-python/botocore/Manifest b/dev-python/botocore/Manifest
index f346548423bb..8f5d017561d7 100644
--- a/dev-python/botocore/Manifest
+++ b/dev-python/botocore/Manifest
@@ -9,3 +9,4 @@ DIST botocore-1.42.49.gh.tar.gz 15843630 BLAKE2B 823ba230ac7ba7fb3ecef8c716ff0fa
DIST botocore-1.42.50.gh.tar.gz 15844813 BLAKE2B 17738a393aee02ecf689acbb95daa9e1a8350913e8d8e24d00e0cd8a25f83bd688363558594f6cc22627a2d79c28b52dd2a99be64d2dc9023721e71c0de1881b SHA512 ebdd01be0d7653c2d31b77007998bfa09f1e67df1054e1bba4b121446fe1aa25a8646de8002621b870cbcd35614c80ce56ad89025f0b017c8d90ff3e66754a16
DIST botocore-1.42.51.gh.tar.gz 15803682 BLAKE2B 9b986c8171c3e4d8770d9996b995c2a440bd18f2e66c4bead3dbeee2f83b234576aebd3ce0d26e15a2a383cb1951111c06ebb1e614d29b6e1a818deb3199fa90 SHA512 13779007ca629d687fdc631dcd3e3f72f91f53496010f94d489c84132180cb71ff1209b933ac6de5a26adaa63670d12cb0229b8d3be35bd673cd9f0d0417ed09
DIST botocore-1.42.52.gh.tar.gz 15803656 BLAKE2B 429a6dafb158f11504d9ce888373af52d5916e76349101aec3ed83d3feb92e319692f6c8cdcb6d7dbf34cff4525bcc19dbea0346d95cf81c7516d56a83917818 SHA512 e88701a7f6091f8967586476b5dbe4216dc7a9b244e6a3f6d4c78612c8c47a14dd37e8cbff4e13d20cbf283e8eda858cba4f41498a6cade0c946b18c943a5ea7
+DIST botocore-1.42.53.gh.tar.gz 15805189 BLAKE2B 41192b9714c72f7841c6ad1dc11014c0714ce1b89f6020cbe806f91fde811762028d02b71499e3c14703f0b46f0f450f4662bc6901fe4787ff5b6e5703a3ea60 SHA512 812ac85114b50b038e97f25b4ac4467949c1919d3b49d029f15bc66e8aa6a170d8c0b927fa2f6ab75872c064b36113fa0758aca44766006e32c5ebffd9e1d1e1
diff --git a/dev-python/botocore/botocore-1.42.53.ebuild b/dev-python/botocore/botocore-1.42.53.ebuild
new file mode 100644
index 000000000000..d43f8b5c5f23
--- /dev/null
+++ b/dev-python/botocore/botocore-1.42.53.ebuild
@@ -0,0 +1,67 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{11..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="Low-level, data-driven core of boto 3"
+HOMEPAGE="
+ https://github.com/boto/botocore/
+ https://pypi.org/project/botocore/
+"
+SRC_URI="
+ https://github.com/boto/botocore/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
+
+RDEPEND="
+ <dev-python/jmespath-2[${PYTHON_USEDEP}]
+ dev-python/python-dateutil[${PYTHON_USEDEP}]
+ >=dev-python/urllib3-1.25.4[${PYTHON_USEDEP}]
+"
+# unbundled packages
+RDEPEND+="
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/six[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/jsonschema[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ # unpin deps
+ sed -i -e "s:>=.*':':" setup.py || die
+
+ # unbundle deps
+ rm -r botocore/vendored || die
+ find -name '*.py' -exec sed -i \
+ -e 's:from botocore[.]vendored import:import:' \
+ -e 's:from botocore[.]vendored[.]:from :' \
+ {} + || die
+
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # rely on bundled six
+ tests/functional/test_six_imports.py::test_no_bare_six_imports
+ tests/functional/test_six_threading.py::test_six_thread_safety
+ )
+
+ epytest tests/{functional,unit}
+}
diff --git a/dev-python/dj-database-url/Manifest b/dev-python/dj-database-url/Manifest
index c9885fd84db2..31a81b54da50 100644
--- a/dev-python/dj-database-url/Manifest
+++ b/dev-python/dj-database-url/Manifest
@@ -1 +1,2 @@
DIST dj_database_url-3.0.1.tar.gz 12556 BLAKE2B a0c9fc78c1f37f7f08addc111178636250706feb65e7200e1403c12916a619eb16fcddb11f8d59f528df8b5aa7816217fa0abcf1ee77f55811f264e5aaa50eda SHA512 7a7bb8b4f30659bf88f95b698b4147a3767c52a21996c39367267f516abe8d623954d9a9921cb3995e617478d22a2c6d56c30e1b80ad543933c1f0dbfe3e46bd
+DIST dj_database_url-3.1.2.tar.gz 11490 BLAKE2B f3a1fa91c1919878ac6dc84de1ff267ca86bd414a2df066395fd0d7902973edfff187f6160943506dc40fdb867f1ffff5ad2846acd47abf2870bd41787c6b92c SHA512 e2c465542ef7840d8950b583f3d89988bf52c432a4c3f3ec3825f94634fd2729c0964dcd4570c91698cd6d136421cc50236fae0118932ff5602bc09b29186199
diff --git a/dev-python/dj-database-url/dj-database-url-3.1.2.ebuild b/dev-python/dj-database-url/dj-database-url-3.1.2.ebuild
new file mode 100644
index 000000000000..96675d580d51
--- /dev/null
+++ b/dev-python/dj-database-url/dj-database-url-3.1.2.ebuild
@@ -0,0 +1,29 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=uv-build
+PYTHON_COMPAT=( python3_{12..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Use Database URLs in your Django Application"
+HOMEPAGE="
+ https://github.com/jazzband/dj-database-url/
+ https://pypi.org/project/dj-database-url/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
+
+RDEPEND="
+ >=dev-python/django-4.2[${PYTHON_USEDEP}]
+"
+
+distutils_enable_tests unittest
+
+python_test() {
+ eunittest -s tests
+}
diff --git a/dev-python/flask/Manifest b/dev-python/flask/Manifest
index a5d70980f977..d472421f2e0a 100644
--- a/dev-python/flask/Manifest
+++ b/dev-python/flask/Manifest
@@ -1,2 +1,3 @@
-DIST flask-3.1.1.tar.gz 753440 BLAKE2B 272ffc7c97ed68c8929e4b9aa41b6efac0beb205471e60e5a14030328be28fe629fe35d02440920abedc27d288ba20d36221c83aa6f64ef090d6ed3b248576bd SHA512 b582b71e10f72c2096f4a665a8182775165f48eece8bcded9ca5791bc575e3333ac913fb355279f0bee93fc57c16f9a8b635b329bfd71ed42df2b288c1a69741
DIST flask-3.1.2.tar.gz 720160 BLAKE2B 504b78897fb62ebed541d63edb14063dce70cf6f5aaabfa2e53570f64ca2184ff1ba5720f559efa9fdb477917370e256619a97b9250e38559a8f759b2cbfb4d3 SHA512 4eacac745cc285d82956a040385ec08d134ef639a7fe802a0bbb8b8d92e0c341668eed3ab49eedf4500796b7f1d54930e6a94515f88daedb39928fdbc693ac9b
+DIST flask-3.1.3.tar.gz 759004 BLAKE2B ff058d5d1f3565072704542245296ea709bf34061277b3681cb600705e201ca6d38153e02df3a3e3a6c9e7bf78add85fc9209c13509bd92ca687a89df4c5b945 SHA512 17c290fdccf3c7e45eeaf5d12a967889f6b0c6aac06a518624a18eb4de67904e825a2724d0c4d7701bb7e75a2f4629089a658e30909c6c7fe20992cc431b273e
+DIST flask-3.1.3.tar.gz.provenance 9221 BLAKE2B 8f06b8964259a210d39814f5905bcd22a0ed023a8394b47f63612ddc74261c81dfb4af74e29078c222bf14e699dc1647a0638d6887d802e424b6463b1a482c1e SHA512 f7a4b0843fc0cf133c68cb3778217b2561cc3af40af233a1ec96abed5869a74ebd190eb915489ff97461ea8401683996614146d1dd21e423b452215bfb7a18a8
diff --git a/dev-python/flask/flask-3.1.1.ebuild b/dev-python/flask/flask-3.1.3.ebuild
index cf75d6fd6c8a..91a1094b87e4 100644
--- a/dev-python/flask/flask-3.1.1.ebuild
+++ b/dev-python/flask/flask-3.1.3.ebuild
@@ -1,9 +1,10 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DISTUTILS_USE_PEP517=flit
+PYPI_VERIFY_REPO=https://github.com/pallets/flask
PYTHON_COMPAT=( python3_{11..14} pypy3_11 )
inherit distutils-r1
@@ -19,7 +20,7 @@ if [[ ${PV} == *9999* ]]; then
inherit git-r3
else
inherit pypi
- 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"
fi
LICENSE="BSD"
@@ -45,12 +46,9 @@ distutils_enable_sphinx docs \
dev-python/sphinx-issues \
dev-python/sphinx-tabs \
dev-python/sphinxcontrib-log-cabinet
-distutils_enable_tests pytest
-python_test() {
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
- epytest
-}
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
python_install_all() {
use examples && dodoc -r examples
diff --git a/dev-python/isort/Manifest b/dev-python/isort/Manifest
index 5f3f72129250..9e0677afa223 100644
--- a/dev-python/isort/Manifest
+++ b/dev-python/isort/Manifest
@@ -1 +1,2 @@
DIST isort-7.0.0.gh.tar.gz 812142 BLAKE2B 47758d2f046c43f2a9cf6bad9f638446d6131b22fcb4b0ad89f186f4dbfb2bc258b416042578414e27d7f4962123ac255c39165186ae69a2ea58597ed773b2f9 SHA512 d13328787962e045bbd65120dc90dee9794392ba4f637135ef1ef7e79032a4aaf5896441dda7cf85417b4e839be39ca1e3d3b4ecb02c933e743b0aad5dd2e2cb
+DIST isort-8.0.0.gh.tar.gz 773774 BLAKE2B fbd6423fc6c3ea348a37f5eedc8d9e32eddebd99a3fc57a20bbd353e0c85f837a11d01e5c4c7408f7112684856ec2e9dd9d28e37a1a9a9144eda839d3e6db601 SHA512 0439176a6e9e6229094ccac96ee286c0881451fa8d518ff49cec997d87c1c4e99f48ab56dbd3aa20aa4185367609503182e54f5159f6eb7b9170a5b755e77597
diff --git a/dev-python/isort/isort-8.0.0.ebuild b/dev-python/isort/isort-8.0.0.ebuild
new file mode 100644
index 000000000000..d34f9524ce2a
--- /dev/null
+++ b/dev-python/isort/isort-8.0.0.ebuild
@@ -0,0 +1,73 @@
+# 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_{11..14} pypy3_11 )
+
+inherit distutils-r1
+
+DESCRIPTION="A python utility/library to sort imports"
+HOMEPAGE="
+ https://github.com/PyCQA/isort/
+ https://pypi.org/project/isort/
+"
+SRC_URI="
+ https://github.com/PyCQA/isort/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"
+
+BDEPEND="
+ dev-python/hatch-vcs[${PYTHON_USEDEP}]
+ test? (
+ dev-python/black[${PYTHON_USEDEP}]
+ >=dev-python/colorama-0.4.6[${PYTHON_USEDEP}]
+ dev-python/natsort[${PYTHON_USEDEP}]
+ dev-vcs/git
+ )
+"
+
+EPYTEST_PLUGINS=( hypothesis pytest-mock )
+distutils_enable_tests pytest
+
+src_prepare() {
+ # unbundle tomli
+ sed -i -e 's:from ._vendored ::' isort/settings.py || die
+ rm -r isort/_vendored || die
+
+ distutils-r1_src_prepare
+
+ export SETUPTOOLS_SCM_PRETEND_VERSION=${PV}
+}
+
+python_test() {
+ cp -a "${BUILD_DIR}"/{install,test} || die
+ local -x PATH=${BUILD_DIR}/test/usr/bin:${PATH}
+
+ # Install necessary plugins
+ local p
+ for p in example*/; do
+ pushd "${p}" >/dev/null || die
+ distutils_pep517_install "${BUILD_DIR}"/test
+ popd >/dev/null || die
+ done
+
+ local EPYTEST_IGNORE=(
+ # Excluded from upstream's test script
+ tests/unit/test_deprecated_finders.py
+ )
+
+ if ! has_version "dev-python/pylama[${PYTHON_USEDEP}]"; then
+ EPYTEST_IGNORE+=(
+ tests/unit/test_importable.py
+ tests/unit/test_pylama_isort.py
+ )
+ fi
+
+ epytest tests/unit
+}
diff --git a/dev-python/regex/Manifest b/dev-python/regex/Manifest
index af70af566af9..a57ec670114d 100644
--- a/dev-python/regex/Manifest
+++ b/dev-python/regex/Manifest
@@ -1,2 +1,3 @@
DIST regex-2025.11.3.tar.gz 414669 BLAKE2B df6ddec6ab70f9119ecc780a5a69061cd19ed2067d8d5311712e2804b2d039988e243921366224c2e983cbbc4d4c38516839f7683b710e956a77e66d0ec1efc8 SHA512 929c4de507416c435343d7e27f2ce05520166c1b7499887747055c10dd05e7a424e009d3bf9661038707fbe99bd3cd0eda1eab2d5743d5bd8cae4bfd576390c4
DIST regex-2026.1.15.tar.gz 414811 BLAKE2B c8e75bc8981dea96bc40e5599e0244407c03c0bd2e85789577f8b600e3c1526996abaaeb67c7d26e4f2e2f0db8531863a09951f21c1cb72d166c2df66621bd5b SHA512 38d3b0dcb4c2cf705dd9cceeb57ddc7ee1b7612ccd3f00cc97f4b21f99ae716f0d411bbb5fb1aab489558d9892cefb269a286ab790b15644175e6fb250aca7ef
+DIST regex-2026.2.19.tar.gz 414973 BLAKE2B 6d0bb23520da74d6f5d00603e2bdec3136fb19118ba7dc8393523430f0391f36913921969e7f79b64945575d793316214201359a1250ff25d98db9a5fdf3270d SHA512 4a546d90e755d58d899ee5d80381bd24b1d38718dedb3903e8c5e286620a7e54a0631a77f5d8ac4f2807265b4dc8d22d29779853255e97a1ce57162c93ee044c
diff --git a/dev-python/regex/regex-2026.2.19.ebuild b/dev-python/regex/regex-2026.2.19.ebuild
new file mode 100644
index 000000000000..e97d16f332a2
--- /dev/null
+++ b/dev-python/regex/regex-2026.2.19.ebuild
@@ -0,0 +1,37 @@
+# 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
+# pypy isn't supported upstream because of its UTF8 representation for strings
+# See https://github.com/mrabarnett/mrab-regex/issues/521#issuecomment-1936260187.
+PYTHON_COMPAT=( python3_{11..14} python3_{13,14}t )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Alternative regular expression module to replace re"
+HOMEPAGE="
+ https://github.com/mrabarnett/mrab-regex/
+ https://pypi.org/project/regex/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos"
+IUSE="doc"
+
+distutils_enable_tests unittest
+
+python_install_all() {
+ use doc && local HTML_DOCS=( docs/Features.html )
+ local DOCS=( README.rst docs/*.rst )
+
+ distutils-r1_python_install_all
+}
+
+python_test() {
+ cd "${BUILD_DIR}/install$(python_get_sitedir)/regex/tests" || die
+ eunittest
+}
diff --git a/dev-python/responses/Manifest b/dev-python/responses/Manifest
index 978213bd17c6..45b0e99051a7 100644
--- a/dev-python/responses/Manifest
+++ b/dev-python/responses/Manifest
@@ -1,2 +1,2 @@
-DIST responses-0.25.7.tar.gz 79203 BLAKE2B 54225c450e965171e12d8f8d1847d34f40012ef4dc60a29d422347737da5870260ad697274185b847380a6e0d1aab3285c4a761b4aa03e58a7e339f7236b8a6f SHA512 929d516b3670619b6ce399a7df1145b38aa498ffe7f7f5e16608c72e31f16bed5a1c2825ca9db84b51cd56c819ffd34f293679563d08895cd53b1c683f21578b
DIST responses-0.25.8.tar.gz 79320 BLAKE2B 8a681c789e22b9a310cf237d81cc97c457fc0eb62b170c5d4958c26024a8398083bcabe09fc3a1183527af096adb1324f53b42869be67a6aee50903df410bfb2 SHA512 59cf48cf71347de3cd80aa84176bab2e3d5dd20cd6c0b7b6278f40be6adc530d6268360c2e722331ba6faede51be4fdd62c163de4eface0371588c49ec384ffb
+DIST responses-0.26.0.tar.gz 81303 BLAKE2B d5bb4cd185d738bfdb8d609c17cedefc9e2dbc0182448210ed99fe8e0a02438cb37459639b8083e9d6954bb870e46f18709562a60392d4a1937dfc8f14d7523f SHA512 62807ad4276cf9236cfbed045d550530695e97f695a0ac94195e4d477fe446dd99f621f57e4ba8d346db2d774d2f2a7d905aab86472a201ba773fd49724c0edb
diff --git a/dev-python/responses/responses-0.25.7.ebuild b/dev-python/responses/responses-0.26.0.ebuild
index dc8f9a5c93c5..6031132ff25f 100644
--- a/dev-python/responses/responses-0.25.7.ebuild
+++ b/dev-python/responses/responses-0.26.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="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"
# tomli backend is optional now, with pyyaml being the new default.
# However, keeping it unconditional here for backwards compatibility.
@@ -29,16 +29,5 @@ RDEPEND="
>=dev-python/urllib3-1.25.10[${PYTHON_USEDEP}]
"
-BDEPEND="
- test? (
- dev-python/pytest-asyncio[${PYTHON_USEDEP}]
- dev-python/pytest-httpserver[${PYTHON_USEDEP}]
- )
-"
-
+EPYTEST_PLUGINS=( pytest-{asyncio,httpserver} )
distutils_enable_tests pytest
-
-python_test() {
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
- epytest -o asyncio_mode=auto -p asyncio -p pytest_httpserver
-}
diff --git a/dev-python/rich/Manifest b/dev-python/rich/Manifest
index d15f01f0bce0..f0957b88e004 100644
--- a/dev-python/rich/Manifest
+++ b/dev-python/rich/Manifest
@@ -1,3 +1,4 @@
DIST rich-14.2.0.gh.tar.gz 15072049 BLAKE2B a44560624c3e3b77f279885935a239b162251087a4a58688c40ec7feb84fd7f4948b5966091231e71067131875c3ad71fd8ee4f5e72d90a872c5dc6f08d1d071 SHA512 8e1f7ee149ceac9074cf60ad1298f2b96cdeeb1f71e1e4181101ab0b0da858d03907998a8667fb73154abf02ae511c595257618bcc3321136df253842f8e4a85
DIST rich-14.3.1.gh.tar.gz 15087781 BLAKE2B c89a1c935db2be86423835ce0f026ec488741cca1de08b32604e89f56ff4f1b7a00758f8bac74a8841803544a49ce5166c786cb8846178288f23ac8f167a8af2 SHA512 7d99cf7a2fa3682d27792d37b39a6ffd5ce403498581b7f19e829c709e49ca01f8a1290b5909eea8323879cccaafdad0301e2de81b4312f0c16751905afbc146
DIST rich-14.3.2.gh.tar.gz 15086838 BLAKE2B 4ed2d676273dcb671b602982709179e7e2d317ce39ee1b882ee3c52c844b0357b6c4ab11e0617dd4db9edcd4865a01975f453b2fde8f97e73bced962467e315e SHA512 68a82b2c19c9ccf475549f5c096b646b40606626d86425ab2b87a18010039fca275ab431d96775a2770530ae975213109d984ed1934127c361c56f705c0dc13a
+DIST rich-14.3.3.gh.tar.gz 15087403 BLAKE2B 3d21a0b1e5b5441bdcb9d0051a552ffe771287707bc0ab24d75cea5f6dc14b8fad9daffd0d4b1f0704c96883259d11a0c57701ae7c2628b86157912a1b7fa591 SHA512 61026597c8224f64bb113231dc1e991b7ed471793c72700ca8d52adf5234f96c84de09ec8d175a60582e68d8ff935c507fdb2599d0a567832f739abcb599ef96
diff --git a/dev-python/rich/rich-14.3.3.ebuild b/dev-python/rich/rich-14.3.3.ebuild
new file mode 100644
index 000000000000..4dcc880bb5b7
--- /dev/null
+++ b/dev-python/rich/rich-14.3.3.ebuild
@@ -0,0 +1,70 @@
+# Copyright 2022-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=poetry
+PYTHON_COMPAT=( python3_{11..14} pypy3_11 )
+
+inherit distutils-r1 optfeature
+
+DESCRIPTION="Python library for rendering rich text, tables, etc. to the terminal"
+HOMEPAGE="
+ https://github.com/Textualize/rich/
+ https://pypi.org/project/rich/
+"
+SRC_URI="
+ https://github.com/Textualize/rich/archive/v${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"
+
+RDEPEND="
+ dev-python/colorama[${PYTHON_USEDEP}]
+ >=dev-python/markdown-it-py-2.2.0[${PYTHON_USEDEP}]
+ >=dev-python/pygments-2.13.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ >=dev-python/attrs-21.4.0[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # TODO
+ tests/test_console.py::test_size_can_fall_back_to_std_descriptors
+ # TODO: segfault in recursion (PyQt6 interfering?)
+ tests/test_traceback.py::test_recursive
+ # TODO: some random dep changes?
+ tests/test_markdown.py::test_inline_code
+ tests/test_syntax.py::test_blank_lines
+ tests/test_syntax.py::test_python_render_simple_indent_guides
+ # pygments version?
+ tests/test_syntax.py::test_from_path
+ tests/test_syntax.py::test_syntax_guess_lexer
+ # flaky? plain broken?
+ tests/test_console.py::test_brokenpipeerror
+ )
+ # version-specific output -- the usual deal
+ case ${EPYTHON} in
+ pypy3.11)
+ EPYTEST_DESELECT+=(
+ tests/test_inspect.py::test_inspect_integer_with_methods_python311
+ )
+ ;;
+ esac
+
+ local -x COLUMNS=80
+ epytest
+}
+
+pkg_postinst() {
+ optfeature "integration with HTML widgets for Jupyter" dev-python/ipywidgets
+}
diff --git a/dev-python/testtools/Manifest b/dev-python/testtools/Manifest
index 3391ab461a44..611e25081325 100644
--- a/dev-python/testtools/Manifest
+++ b/dev-python/testtools/Manifest
@@ -1,3 +1,5 @@
DIST testtools-2.7.2.tar.gz 201430 BLAKE2B d827d8e66c85908f4d16aa0762c3b0a454d374a0d23323fc3c123027f55f0e85f4fea9a24b5d1d0279266af2185f08abbcbbdcb785014b237df45a6448587611 SHA512 5815519d2b72d6b1e9f453c02793c70eb7d3b6580a211fb3708cd6121aed3c6100ceb1e35321f481a63b1f999ede030e43f1ae91d3621faf461c1908db767551
DIST testtools-2.8.2.tar.gz 206889 BLAKE2B 4c25e88d5602c00ab9079d5ef504648cf7f59ae63d8844d5bdbac2b215db64234925ee9ce89532ca71d681031fa4d656e1c60413f731aa135791b43edbbd6015 SHA512 2880b5e8c92e59e3d9cad7b6b64781763a549abf74672a46f0b3a33300793d91ea8453fc364d497ae7492095385309e6b150a712fea4529324cf4673b6e60aa7
DIST testtools-2.8.3.tar.gz 215317 BLAKE2B b3247497a492ab2c89e90dd30e2154797bed9a48b43f12a4b28bdd76cf8ee07d38f877f5e3407adc24c9f83473a873a2099aaf450f25fcaf734b0af88e3841fe SHA512 3f91f638d04e7e0d2c5a5723a8ed19e49aaefc7c31cb9db789d97dbc8ff8fdfdc6f924a02c412730451aaae78f7eb1e3ccb80acd9ad87048c9b8fea24b6a3e58
+DIST testtools-2.8.4.tar.gz 219143 BLAKE2B a0ddac267ebd0583f53fdec5b74769532708d76b00573fab4355f77fab1b3801c7dc65eb587635b2baf3d426f7f439d41797231d2d028496f63f56f36c4d8f26 SHA512 ba60cc64453921e9515cc7c5f04d61cb4e3ce7f0168e1acff564781e8a7392aff9c5306d9b3dca46eb891fb2b0df60847ca429bd926dc1df799c7318567b6b00
+DIST testtools-2.8.4.tar.gz.provenance 9220 BLAKE2B 32d60cdeb63500a3efdfa722a11a87b85773b45d9ef268bc75518f15fef9db4ab8b6d5201b3207a9dd9dbeaaa2c6cdd73668a78cab0ce9b33bb2b28d80b56fb3 SHA512 0d6bdcbdf67a3edaa1ce5c37326b7482837c14f05377fb76c7ec020e7dedf3a11100a295a48753052f1f350a8994ea9bb6bbb4252717ac6a1d5e4d8994f97f14
diff --git a/dev-python/testtools/testtools-2.8.4.ebuild b/dev-python/testtools/testtools-2.8.4.ebuild
new file mode 100644
index 000000000000..6a0177e8c455
--- /dev/null
+++ b/dev-python/testtools/testtools-2.8.4.ebuild
@@ -0,0 +1,44 @@
+# 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/testing-cabal/testtools
+PYTHON_COMPAT=( python3_{11..14} pypy3_11 )
+PYTHON_REQ_USE="threads(+)"
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Extensions to the Python standard library unit testing framework"
+HOMEPAGE="
+ https://github.com/testing-cabal/testtools/
+ https://pypi.org/project/testtools/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+ dev-python/hatch-vcs[${PYTHON_USEDEP}]
+ test? (
+ >=dev-python/fixtures-2.0.0[${PYTHON_USEDEP}]
+ dev-python/testscenarios[${PYTHON_USEDEP}]
+ dev-python/testresources[${PYTHON_USEDEP}]
+ dev-python/twisted[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_sphinx doc
+
+python_test() {
+ if ! has_version "dev-python/twisted[${PYTHON_USEDEP}]"; then
+ sed -i -e '/twistedsupport/d' tests/test_suite.py || die
+ fi
+
+ "${EPYTHON}" -m testtools.run tests.test_suite ||
+ die "tests failed under ${EPYTHON}"
+}
diff --git a/dev-python/tox/Manifest b/dev-python/tox/Manifest
index 410c703e75c0..135179c1b95d 100644
--- a/dev-python/tox/Manifest
+++ b/dev-python/tox/Manifest
@@ -16,3 +16,5 @@ DIST tox-4.38.0.tar.gz 215498 BLAKE2B d7fa0df218c205bf90d213fab3de5c729750db4ef8
DIST tox-4.38.0.tar.gz.provenance 9232 BLAKE2B 49593ac7877b6feee78ec58944f19c622a56a431266d8101d7dc2fd779626f4f1a5e204a2acf4a413207b6c930dbc2ab9dd5cbea9adb07e37480e7a0e1e040db SHA512 9e03320bd129dada7771f8cf8a8a5e51afd9c2a893d70607ccd8fe07e003cff603b775029fad209558e8dfce22b002a87353253cb331f7c098ab761fbb58621e
DIST tox-4.39.0.tar.gz 221354 BLAKE2B e1a648abbf8b3ac10915fad3f89542b99d3140157035b55e96c532880c4a8f1e48605e7ab99f7eb40dd807bd48f754e4a202b37929f6f3b4e9c0301cfcc00b05 SHA512 a7ebdc2cb06f73b9ff84971e39811553f48b1191146116b5ebd3f59b5f9027e1cd968aac0064f9d2e267c7f0a0c28c79f75305f55bef247e8d0fdec77c7442e9
DIST tox-4.39.0.tar.gz.provenance 9240 BLAKE2B e12c7db4f636960052c52ae8590635838c22905aaec6cd163c4a951d201b5d509028973d4247954d5ee33ff70a8cd577b41bd4864c75b3388aee56e1bc9186b1 SHA512 0a91eb44d63f071a997853891ca2edceae719d8002308dd733780350abb501465777aff1e44a027a44cd8ae09ccf25eac57ab74d99c57adf4427121e53c255ad
+DIST tox-4.41.0.tar.gz 228941 BLAKE2B f295d6b6b547cf350fa7ddc6e9215b0ac8713d912382651a64f4e9289d3b7790cefc57465c105afd09abbe32a30de5a1f37721532413210dae6b3be3b697cb2c SHA512 5803952a1912445791e1ce49e304b501ec0d519067e6946134531381097a50b5e3f4fde08bd8abd34cfc385a548fc1349a0874bf07b3d6a47839fb96cb866df7
+DIST tox-4.41.0.tar.gz.provenance 9142 BLAKE2B dad45f1f36c296d64a13a56c77b3edde9377c013a81ab34fb170d6200e2054a6ab62532a076306519645dec82e1755a0ecac99a0f27cb668867205f08758eabd SHA512 93cd8cf47cc2cf4e5fb8267dfed311ad9257a8608878a88d1b9891dcba294a60982ffbf88a980844bba0f4ae01b1d11686ac97d5e71631f1685576bb42a4ec71
diff --git a/dev-python/tox/tox-4.41.0.ebuild b/dev-python/tox/tox-4.41.0.ebuild
new file mode 100644
index 000000000000..d424cd21751c
--- /dev/null
+++ b/dev-python/tox/tox-4.41.0.ebuild
@@ -0,0 +1,92 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYPI_VERIFY_REPO=https://github.com/tox-dev/tox
+PYTHON_COMPAT=( python3_{11..14} pypy3_11 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="virtualenv-based automation of test activities"
+HOMEPAGE="
+ https://tox.readthedocs.io/
+ https://github.com/tox-dev/tox/
+ https://pypi.org/project/tox/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ dev-python/cachetools[${PYTHON_USEDEP}]
+ dev-python/chardet[${PYTHON_USEDEP}]
+ dev-python/colorama[${PYTHON_USEDEP}]
+ dev-python/filelock[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ dev-python/platformdirs[${PYTHON_USEDEP}]
+ dev-python/pluggy[${PYTHON_USEDEP}]
+ dev-python/pyproject-api[${PYTHON_USEDEP}]
+ dev-python/virtualenv[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ dev-python/hatch-vcs[${PYTHON_USEDEP}]
+ test? (
+ dev-python/build[${PYTHON_USEDEP}]
+ dev-python/distlib[${PYTHON_USEDEP}]
+ dev-python/psutil[${PYTHON_USEDEP}]
+ dev-python/re-assert[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/time-machine[${PYTHON_USEDEP}]
+ ' 'python*')
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-{mock,rerunfailures,timeout,xdist} )
+# xdist seems to mess up state between successive implementation runs
+distutils_enable_tests pytest
+
+src_prepare() {
+ # upstream lower bounds are meaningless
+ sed -i -e 's:>=[0-9.]*::' pyproject.toml || die
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ # devpi_process is not packaged, and has lots of dependencies
+ cat > "${T}"/devpi_process.py <<-EOF || die
+ def IndexServer(*args, **kwargs): raise NotImplementedError()
+ EOF
+
+ local -x PYTHONPATH=${T}:${PYTHONPATH}
+ local EPYTEST_DESELECT=(
+ # Internet
+ tests/tox_env/python/virtual_env/package/test_package_cmd_builder.py::test_build_wheel_external
+ tests/tox_env/python/virtual_env/package/test_package_cmd_builder.py::test_run_installpkg_targz
+ tests/tox_env/python/virtual_env/package/test_package_pyproject.py::test_pyproject_installpkg_pep517_envs
+ )
+ local EPYTEST_IGNORE=(
+ # requires devpi*
+ tests/test_provision.py
+ )
+
+ case ${EPYTHON} in
+ python*)
+ local EPYTEST_PLUGINS=( "${EPYTEST_PLUGINS[@]}" time-machine )
+ ;;
+ pypy3*)
+ EPYTEST_DESELECT+=(
+ 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[explicit-True-True]'
+ 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[requirements-True-True]'
+ 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[constraints-True-True]'
+ 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[explicit+requirements-True-True]'
+ 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[requirements_indirect-True-True]'
+ 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[requirements_constraints_indirect-True-True]'
+ )
+ ;;
+ esac
+
+ epytest -o addopts=
+}
diff --git a/de