summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
authorCrucible <crucible@localhost>2026-09-23 01:27:26 -0500
committerCrucible <crucible@localhost>2026-09-23 01:27:26 -0500
commit89638002224beb1b5cc8a81e8f7abb9c0943aaed (patch)
tree1708e516820c278bc2f192056872632412216a8d /dev-python
parentd7f82bffe8354989cbca631fdb55135397e3b0b1 (diff)
downloadsrcux-develop.tar.gz
srcux-develop.tar.xz
srcux-develop.zip
Publish srcux candidate 0000000360-20260923-012508HEADdevelop
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/ansible-compat/Manifest4
-rw-r--r--dev-python/ansible-compat/ansible-compat-26.9.0.ebuild (renamed from dev-python/ansible-compat/ansible-compat-26.6.0.ebuild)9
-rw-r--r--dev-python/boto3/Manifest1
-rw-r--r--dev-python/boto3/boto3-1.43.100.ebuild53
-rw-r--r--dev-python/botocore/Manifest1
-rw-r--r--dev-python/botocore/botocore-1.43.100.ebuild80
-rw-r--r--dev-python/confuse/Manifest2
-rw-r--r--dev-python/confuse/confuse-2.3.0.ebuild (renamed from dev-python/confuse/confuse-2.2.0.ebuild)4
-rw-r--r--dev-python/flake8/Manifest1
-rw-r--r--dev-python/flake8/flake8-7.4.0.ebuild48
-rw-r--r--dev-python/hiredis/Manifest2
-rw-r--r--dev-python/hiredis/hiredis-3.4.2.ebuild (renamed from dev-python/hiredis/hiredis-3.4.0.ebuild)2
-rw-r--r--dev-python/mako/Manifest2
-rw-r--r--dev-python/mako/mako-1.4.3.ebuild (renamed from dev-python/mako/mako-1.3.12.ebuild)4
-rw-r--r--dev-python/nest-asyncio2/Manifest2
-rw-r--r--dev-python/nest-asyncio2/nest-asyncio2-1.7.3.ebuild (renamed from dev-python/nest-asyncio2/nest-asyncio2-1.7.0.ebuild)0
-rw-r--r--dev-python/nuitka/Manifest1
-rw-r--r--dev-python/nuitka/nuitka-4.2.2.ebuild58
-rw-r--r--dev-python/pdm-backend/Manifest1
-rw-r--r--dev-python/pdm-backend/pdm-backend-2.4.10.ebuild78
-rw-r--r--dev-python/pycodestyle/Manifest1
-rw-r--r--dev-python/pycodestyle/pycodestyle-2.15.0.ebuild31
-rw-r--r--dev-python/pyflakes/Manifest1
-rw-r--r--dev-python/pyflakes/pyflakes-4.0.0.ebuild22
-rw-r--r--dev-python/pymdown-extensions/Manifest2
-rw-r--r--dev-python/pymdown-extensions/pymdown-extensions-12.1.ebuild34
-rw-r--r--dev-python/python-slugify/Manifest1
-rw-r--r--dev-python/python-slugify/python-slugify-9.1.1.ebuild32
-rw-r--r--dev-python/sqlglot/Manifest2
-rw-r--r--dev-python/sqlglot/sqlglot-30.19.0.ebuild (renamed from dev-python/sqlglot/sqlglot-30.17.0.ebuild)0
-rw-r--r--dev-python/url-normalize/Manifest1
-rw-r--r--dev-python/url-normalize/url-normalize-3.0.1.ebuild34
-rw-r--r--dev-python/uv-build/Manifest1
-rw-r--r--dev-python/uv-build/uv-build-0.12.18.ebuild100
-rw-r--r--dev-python/uv/Manifest2
-rw-r--r--dev-python/uv/uv-0.12.18.ebuild151
-rw-r--r--dev-python/virtualenv/Manifest2
-rw-r--r--dev-python/virtualenv/virtualenv-21.11.0.ebuild124
38 files changed, 874 insertions, 20 deletions
diff --git a/dev-python/ansible-compat/Manifest b/dev-python/ansible-compat/Manifest
index b47d8f5299d8..e121f7090a6a 100644
--- a/dev-python/ansible-compat/Manifest
+++ b/dev-python/ansible-compat/Manifest
@@ -1,4 +1,4 @@
-DIST ansible_compat-26.6.0.tar.gz 233940 BLAKE2B f3fe1f5652afd74c742fbdab02a39a16fea8322bd4cf633bd1e4d3007ecd95ac280675e8c1f3cca6e2cc7b2fc546bf517102ea742a7e8893b7af2dea3d5d9fdc SHA512 f6c7b17a5832ca6f91fcd0e97d48324f3e7af7f2a50ac5d888824ae5d75ca5e20aa2aac4bb63347e284c3ec1cb2508401db31a3bb097a52322a0f259c830e4d0
-DIST ansible_compat-26.6.0.tar.gz.provenance 9711 BLAKE2B 4a8753db64c293d3e2f61f7f947caaa765f7069edb133669293492d407fde977d6f50bb1e6e95b63b029e22d08724e57d280bebe8634279045a7381cc4cc1750 SHA512 8c874671e04f51015d567cd967105b62af629d0d7685b0f0049f5eb7d6fc18a1412df4898f638ad8ede289cc1ea05b21e6c8ae06a2e5fe6809cea509eba110e4
DIST ansible_compat-26.8.0.tar.gz 235350 BLAKE2B 46baa7e4e61086410d0b981afc976b20564b3d9af4aa306fce12b1ea6e60a5492b53159bf75bfeb67b1cbc7276131141816ba09f9f9a9aab01b7ac7a39ef0660 SHA512 69d480228dedb8ff13ae7cdf3e3ae7ab51b573bc0e15fed9665938de21e77f27f47777ff3fc1d08258183c7bbe7ab95ba5df4c378249da6cb0b914e0f5d6bc4f
DIST ansible_compat-26.8.0.tar.gz.provenance 9948 BLAKE2B 67c87276c9a8e0c6091f4da62d51853b3c4caaeb0142ee40e671e9c4aed3b592df35da35b74f8393b33824cb7d7a50432b4767636fb947beb2ffd0c5de181dd2 SHA512 ecb9ab99400cc0f15b9648b4d00b37c075c3bfbea621304c72e39032c068b34591a135b97e197a7f3b102bffc09616db5485ffccbc3916fe5919f2e973dc61e6
+DIST ansible_compat-26.9.0.tar.gz 256824 BLAKE2B 75adc91f7a9e49202d804499384d0ad38b1da87ee81b7fb443f8af2a2138be8b5a12883d492793bf1e680c0837edc1b3c57c351340b924d1127e23dfefa7faf6 SHA512 110536d4c097be8c677b485887f251c704d5344a3455292f022a3f23724f92a1922c2ce8011c80dad7c4789fc898e64f3687798329ac11a10e3810e019b85124
+DIST ansible_compat-26.9.0.tar.gz.provenance 9666 BLAKE2B 8013c01427f2cb95c7d5dd480eb496ebbe11751f498efef0968891d2d476e11f9e4b6e4a888b1b017fc3fec35a18df9636aa7e7e2a8acd3e7c9ff372178e23db SHA512 b6874a10be56b48575fbd24e08d89ec75d4641c0b9719e2c017a185e4053a06f4b4cbfff450b74147e31a5dd51f3c35421f7c652c5521a18079908bb6a9bf526
diff --git a/dev-python/ansible-compat/ansible-compat-26.6.0.ebuild b/dev-python/ansible-compat/ansible-compat-26.9.0.ebuild
index f0ce39ae6c3f..8473df442b2a 100644
--- a/dev-python/ansible-compat/ansible-compat-26.6.0.ebuild
+++ b/dev-python/ansible-compat/ansible-compat-26.9.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 ~arm64 ~riscv"
+KEYWORDS="~amd64 ~arm64 ~riscv"
RDEPEND="
>=app-admin/ansible-core-2.18.6[${PYTHON_USEDEP}]
@@ -33,13 +33,6 @@ BDEPEND="
EPYTEST_PLUGINS=( pytest-mock )
distutils_enable_tests pytest
-src_prepare() {
- distutils-r1_src_prepare
-
- # remove stupid upstream version block
- sed -i -e 's:2.20.0dev0:0:' src/ansible_compat/prerun.py || die
-}
-
python_test() {
local EPYTEST_DESELECT=(
# All these tests attempt to connect to galaxy.ansible.com
diff --git a/dev-python/boto3/Manifest b/dev-python/boto3/Manifest
index cffa09dcf270..d597465b8902 100644
--- a/dev-python/boto3/Manifest
+++ b/dev-python/boto3/Manifest
@@ -1,3 +1,4 @@
+DIST boto3-1.43.100.gh.tar.gz 1237221 BLAKE2B dd5cc359ef4772d8b0df5192b023637456e8e5107383cfd1e72ddad4d24afe7f2d7beeeddb6e0a0b421113f3395298e6005635786e2d34ecf0d007c9af5220c9 SHA512 006deaffaabf4b2a3b376bc4ba6ac6dfcd8ecf62aa73f05d9d5fd81ebf58fb13ba85ce2072315cd1d6c69b6cc1303c3bb30d588401eaddbf9e730e19f1e359dd
DIST boto3-1.43.72.gh.tar.gz 1208773 BLAKE2B 1250a1fffa6b31c2e3c5ab40221db938a56605c09b19b1d07db8eafe5acd68d06e3d6b75fc206fad1cd4c8b2ae9c663a69fdeb9c8b32246dad3134c1f4154275 SHA512 b357a17de48ff1ab460ba71315249f294e979311b7787aa2bfc7f82e2b54717039a04420d63d63ebbb51685b526eec863e0278ba58d2b68e7dfa60bdd4017f41
DIST boto3-1.43.78.gh.tar.gz 1213393 BLAKE2B b3e4188ba53609873bf6613d5667792d24634d728dfe0e0588917ade93c4d6c9a5a28d2e46bd5ca314723604a9cab9a4fae7ca1e6f9e496cc29671bc68849d7e SHA512 c98ede06cf4934089ba4a62c4fb03da692a5f9e2a415728e9f51979e33942229d8f4cd6fa02ac229b360b63a930fd91890f2ed645d17011d4a42e236943fd780
DIST boto3-1.43.83.gh.tar.gz 1218064 BLAKE2B 0758e28dd9b086615b045e107aece2ef46bee541110e51fdcd231c60cac0452f4cdfec58ea4041757835c195cd2b8becb3c4e9fd24ad7bc306d90b16af082f63 SHA512 ed110edd551138c5d63ab7ead46a4c9ddb410dea1b5e642045102936af22c4208f357f79fc994434fc6a7df7c16aba99052508103bad7599f8cc558ae1c5f842
diff --git a/dev-python/boto3/boto3-1.43.100.ebuild b/dev-python/boto3/boto3-1.43.100.ebuild
new file mode 100644
index 000000000000..93fbbe6dd59b
--- /dev/null
+++ b/dev-python/boto3/boto3-1.43.100.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_{13..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.19.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 365efe6ba125..6ac52a685828 100644
--- a/dev-python/botocore/Manifest
+++ b/dev-python/botocore/Manifest
@@ -1,3 +1,4 @@
+DIST botocore-1.43.100.gh.tar.gz 17215276 BLAKE2B f799985125d4522f867a684507c748026d31cba917c5a40b75179ff77b70adefe0b172d5f92c9293a43ddc9e54a8e449255c6a649dcdf1de950462f2456e03d8 SHA512 a7724a4d57d870ca91fc8564bb73f200065f63ae1070464f73bddaf1c066e8f0df29725ec2f9969d8c857c37bbd3f53414fcaeeb71f5cb86b7bfeb3de83ed8d1
DIST botocore-1.43.72.gh.tar.gz 16966215 BLAKE2B ccb01e2001fd1584bc635a19daf241371bf9e00b97f5d1adf07f4dbff0a5f8ac75ab93f66b8e05976a1fda1c111c6148ade5bdfa585ccdad4376a7651cf088e2 SHA512 0ee8aa2a82c6db2d1094679612146b9be98eff499880a33721cbc324b631ba6e268031e4ec0c1f8025da5dd187e7f211ef6da6c97ab13c5a3b9d9d93f4a80248
DIST botocore-1.43.78.gh.tar.gz 17008224 BLAKE2B 137656d64f62025ca47f03c48ba84aa7eccae9dbc752c81f909c3c3f12dd843bb40173075fc7e255492385d8ea8824da08e5d3155bb5ff1dbfd62c858c0a057f SHA512 bd65c7fe451ef0b3bef21e25e557aa37748ca01f71e567b31b852ac356d323f1cfa6dd0e920eff7c52e0db879a34cf99eed6c1b841dfa6065e139362702f9d13
DIST botocore-1.43.83.gh.tar.gz 17038145 BLAKE2B f74b399b04f9b259e1a2f424719c4b80cc279627174ac96f9b79d85418ecc0442fbd27d7e79ccdf12526ac02489fde4254e360f216103f3cd5ff050b3cf1a838 SHA512 618c0ef0fc89879ee6900606e3378b2876901c4a63ede52529de12898a65e34fc41a8f0ad8ab682b7788626176f9b86904e257b63d88be9d58c53116918b1d12
diff --git a/dev-python/botocore/botocore-1.43.100.ebuild b/dev-python/botocore/botocore-1.43.100.ebuild
new file mode 100644
index 000000000000..14ad5b2d1f27
--- /dev/null
+++ b/dev-python/botocore/botocore-1.43.100.ebuild
@@ -0,0 +1,80 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="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
+ )
+
+ # The test suite can eat up a lot of memory when running via xdist,
+ # and slow down some tiny tests. Let's just run a safe subset
+ # of tests known to be slow-ish in parallel, and the rest in series.
+ local parallel_tests=(
+ tests/functional/*/
+ tests/functional/test_event_alias.py
+ tests/functional/test_[cds-z]*.py
+ tests/unit/
+ )
+
+ epytest "${parallel_tests[@]}"
+
+ local EPYTEST_IGNORE=( "${parallel_tests[@]}" )
+ EPYTEST_XDIST= epytest tests/functional
+}
diff --git a/dev-python/confuse/Manifest b/dev-python/confuse/Manifest
index b3181a5a44ae..8597730dfe5b 100644
--- a/dev-python/confuse/Manifest
+++ b/dev-python/confuse/Manifest
@@ -1,2 +1,2 @@
-DIST confuse-2.2.0.gh.tar.gz 106359 BLAKE2B b5f9f7dd34366e3e00a4e1b0536fbc1bb5faa9f784645236edf7c1d1e6e4954bfdd3972506b87f2e04087e8aa9fa3b32a19bd9eeb7f38e2b49d261323fe76de5 SHA512 965dcaea51bcbf91360ac94b39cf38ff7f08772484e063b72758c8096f0bd20455fb3359ae5ca6263a3322e258712be0bcc1a7421b99441829caa88982b55751
DIST confuse-2.2.1.gh.tar.gz 106696 BLAKE2B 81cbf3df61dbe48a2d7f293c615ebadc46d4c525ea10f661e594370c764f38bee4947eca698fc435b95144a3dcffb5b775197cb8b87351347bc454c906b796e3 SHA512 1ad32d2000d10fd7b73e3defb0de2b258575fc34217e59b5dd8394680b28873e20001de4edbcf8afbd2cc8495ff905b64823bb59737a76c64a662f39605c5f9d
+DIST confuse-2.3.0.gh.tar.gz 112248 BLAKE2B ef1610fcc0ff8570bea854a8d5be206407709a402545df29eb895a35428b80f8b08e4f4e03869d04ab738182d71c71e65b1aa8656486d5ef48f3ecd85cc88864 SHA512 04406a73365952dae5e289250f3700f07402c3cb015f27694dec85dd24754f5acbd1845bfa9c2f23b2b607b60dd71fde260446fcc21653f0e65606863317ef30
diff --git a/dev-python/confuse/confuse-2.2.0.ebuild b/dev-python/confuse/confuse-2.3.0.ebuild
index ab4202e7c1e5..1ac2e1198b1c 100644
--- a/dev-python/confuse/confuse-2.2.0.ebuild
+++ b/dev-python/confuse/confuse-2.3.0.ebuild
@@ -4,7 +4,7 @@
EAPI=8
PYTHON_COMPAT=( python3_{13..14} )
-DISTUTILS_USE_PEP517=poetry
+DISTUTILS_USE_PEP517=poetry-core
inherit distutils-r1
@@ -17,7 +17,7 @@ SRC_URI="https://github.com/beetbox/confuse/archive/refs/tags/v${PV}.tar.gz -> $
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 ~x86"
+KEYWORDS="~amd64 ~x86"
RDEPEND="
dev-python/pyyaml[${PYTHON_USEDEP}]
diff --git a/dev-python/flake8/Manifest b/dev-python/flake8/Manifest
index 75bef65528cd..fe6c72ab5714 100644
--- a/dev-python/flake8/Manifest
+++ b/dev-python/flake8/Manifest
@@ -1 +1,2 @@
DIST flake8-7.3.0.gh.tar.gz 139555 BLAKE2B 342aab4e70c5f03bbd17336f8717815eb5bd0e9a9992cde1e4266faba36bc388ae104295acea7bc89a003bf52152ae93eec4bff91cebc52ac1f8251d32a2f083 SHA512 46e843fc6c3fae0e3b2cd5de09af4131ccdd2c0d7b09fe4942203d065e8625a0f95a3e6cbb89cc94bdb2925c1bd87ec8ba56211a9d695045fb64de91056236d8
+DIST flake8-7.4.0.gh.tar.gz 139363 BLAKE2B f49daaef4114c03c13a3d9842bc90d0659e38f5f1dcef2e3342d4495224bf0f5bf0d262a69865476d4b3a7f0e1ffef161a9c6d58327014af2733949ee773f83a SHA512 ad8766bdb0ce7c31dc977015f4fae1c78761978ff6e4780b45bda0db684b365342b2ba74a27b6d99b9a0558657964690ca3bb17ea6b27ed3d8f6d98fb15ce81c
diff --git a/dev-python/flake8/flake8-7.4.0.ebuild b/dev-python/flake8/flake8-7.4.0.ebuild
new file mode 100644
index 000000000000..f710da5904a8
--- /dev/null
+++ b/dev-python/flake8/flake8-7.4.0.ebuild
@@ -0,0 +1,48 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="A wrapper around PyFlakes, pep8 & mccabe"
+HOMEPAGE="
+ https://github.com/PyCQA/flake8/
+ https://pypi.org/project/flake8/
+"
+SRC_URI="
+ https://github.com/PyCQA/flake8/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 ~x64-macos"
+
+RDEPEND="
+ =dev-python/pyflakes-4.0*[${PYTHON_USEDEP}]
+ =dev-python/pycodestyle-2.15*[${PYTHON_USEDEP}]
+"
+PDEPEND="
+ =dev-python/mccabe-0.7*[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ ${RDEPEND}
+ test? (
+ ${PDEPEND}
+ )
+"
+
+distutils_enable_sphinx docs/source \
+ dev-python/sphinx-prompt \
+ dev-python/sphinx-rtd-theme
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # fails if additional flake8 plugins are installed
+ tests/integration/test_plugins.py::test_local_plugin_can_add_option
+)
diff --git a/dev-python/hiredis/Manifest b/dev-python/hiredis/Manifest
index d0f16ad703ea..0d8153bfe9ce 100644
--- a/dev-python/hiredis/Manifest
+++ b/dev-python/hiredis/Manifest
@@ -1,2 +1,2 @@
-DIST hiredis-py-3.4.0.gh.tar.gz 20142 BLAKE2B 2f008475f266c965ef3b9918cefe7071f140cf4aa7d2f55194f5339a4d59b31d0d9359229f8c91f8ca5e629b8ee02d9c4821651aa77c1027d8405bc7b764def7 SHA512 9c8161b72187eaf64593cd73a855daa6f9bb94ed7b34cded353a0541b9870c2d1ef914f6d575d771432767f9bd6d40c243179f54f674cb2065bb05d206203f6d
DIST hiredis-py-3.4.1.gh.tar.gz 20136 BLAKE2B 6794e13298b7fc6beba9dc409c6d98d6e34840f10e60551b914f07d48cb8091e1d3944b828dfb31617c6f4d7c237c82b64012b979230389d89356e08d5111f8b SHA512 e3100dec1a7ab3fe9f11dc9d269f3a70ffae5dea3c1d14386cb9e03fdede09d265fb440a1d6dc8d785c1978c0cff655d49f973026b435bf75572f8500f902bdd
+DIST hiredis-py-3.4.2.gh.tar.gz 20678 BLAKE2B 5641f15482d1f503306128a341c35eefc12057288156a81518060019846baa96fa7eb1540d82dbcd885b5d6f921562731d0f35d037e4b6b082029287d3edc3c7 SHA512 389f5e2b57f3fdbd018f8e9ab317a95ecef777cd67be97fca6b35a2fdc2d9b94f4910352700ad1a22f1e8faaca8919cd83708bde296b6f54e2ce73f1743e1ecc
diff --git a/dev-python/hiredis/hiredis-3.4.0.ebuild b/dev-python/hiredis/hiredis-3.4.2.ebuild
index 2914187cba29..9da6a8046e12 100644
--- a/dev-python/hiredis/hiredis-3.4.0.ebuild
+++ b/dev-python/hiredis/hiredis-3.4.2.ebuild
@@ -23,7 +23,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 ~arm arm64 ~ppc ~ppc64 ~riscv ~sparc x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~sparc ~x86"
DEPEND="
>=dev-libs/hiredis-1.0.0:=
diff --git a/dev-python/mako/Manifest b/dev-python/mako/Manifest
index c356bbeb59e7..cb92cacf2a23 100644
--- a/dev-python/mako/Manifest
+++ b/dev-python/mako/Manifest
@@ -1,2 +1,2 @@
-DIST mako-1.3.12.tar.gz 400219 BLAKE2B 6ebbf366b733035b899bef86f970054450037c80df3dfe9c85b23ad6c6e26e385a82271a0e722e3718a28801227efe45e60ffc49864c90c4c840866706c52ccc SHA512 405de95c7656e00458015b84131e8b32d399c4d8f738af690ab34d21b2f57113d2736b7e91d862175bebf578191f62d49fae3533a65c2e469abc36cb1d95b886
DIST mako-1.4.1.tar.gz 410165 BLAKE2B ce814feb5a32843eb40f989bc92c52fb636285152353e612f0e50dc2791ed83d1a5ada888c132cb0a6d6fc432bf543a5e4ee87664d8ad5ce03c6f63b0490f46e SHA512 5129ff5335dc2b5d90941905b6b4de12bbba766a5ad91032a4adf362428e71e48e11998ead598d9f19140e7a1f4f84be91a02cfa47b7a8933f23a6c1ffda658e
+DIST mako-1.4.3.tar.gz 412799 BLAKE2B 561c86a6632af8960a2629631f45b44c87adedcb2429391dd47fe14c17bd85877a52f31717b363d2f797fbe2a25a1efc39b4cff8d0eb75201ab5b39a7ae24a96 SHA512 2b35c28c64c57dc55d9ecf792b497c7834e3871b63f72daba37d730aeaaa070fe4d37b6a0ef2ab590eb978340d17b3fb9a6f02e093a600eb9cd2d9d5b9dff258
diff --git a/dev-python/mako/mako-1.3.12.ebuild b/dev-python/mako/mako-1.4.3.ebuild
index c283c8894778..df73ba14d238 100644
--- a/dev-python/mako/mako-1.3.12.ebuild
+++ b/dev-python/mako/mako-1.4.3.ebuild
@@ -18,11 +18,11 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
IUSE="doc"
RDEPEND="
- >=dev-python/markupsafe-0.9.2[${PYTHON_USEDEP}]
+ >=dev-python/markupsafe-2.0[${PYTHON_USEDEP}]
"
BDEPEND="
test? (
diff --git a/dev-python/nest-asyncio2/Manifest b/dev-python/nest-asyncio2/Manifest
index fee81e207e51..aecd490904b7 100644
--- a/dev-python/nest-asyncio2/Manifest
+++ b/dev-python/nest-asyncio2/Manifest
@@ -1,2 +1,2 @@
-DIST nest_asyncio2-1.7.0.tar.gz 13797 BLAKE2B 0c575ea965b49c6f4d4b9b764e2c4595de6fae45d03ad058e93ec01d8f5a25414cbdf6d2c54a08a6644d0cc31836c7809f5e35ebdece60e0919be836524c1e95 SHA512 3bbdbca192ed0dbd9417ba7dff2d39d1729b49ef258a747c2afd8164f3894269267d238f49ea9c8c2df2004c21893ed2c619cba2a424343eeb705b8880bc79e0
DIST nest_asyncio2-1.7.2.tar.gz 14743 BLAKE2B 556fce95a1ae50b486e41c20a945da10cd570911475e20a8c1a258c0ef657e4cbf4d4a62f3f27f75f02f3dfbd2bc52ddb7d001c8edc8172ac134e80a7d082980 SHA512 8487fd49ff1f21d3c0f89549782f760126c1e1fb9b5c9db0bff6c1a7d4d8c1a945729a79ff7af9543ef58d50c14830aeedaaa6c35f4a2510630fa7a32c9002e1
+DIST nest_asyncio2-1.7.3.tar.gz 15642 BLAKE2B 0c685124ec81d2c0ccfdd9544cde72e8b450c6acf54388ad7799e39ae40f62d468f6ff5840cb62ee2a25b35aaceab981165b920360777878cf26939156ec5bc7 SHA512 4c9de618862ff0ce02b8ec1558c671b3d5936c003d64bcef9902012121eb9bb82d7d67e712bed42efa00913eb81a1af8b1fa2a68b86ed36a6b6cb9aa348cd1d0
diff --git a/dev-python/nest-asyncio2/nest-asyncio2-1.7.0.ebuild b/dev-python/nest-asyncio2/nest-asyncio2-1.7.3.ebuild
index 91b87c2ab79b..91b87c2ab79b 100644
--- a/dev-python/nest-asyncio2/nest-asyncio2-1.7.0.ebuild
+++ b/dev-python/nest-asyncio2/nest-asyncio2-1.7.3.ebuild
diff --git a/dev-python/nuitka/Manifest b/dev-python/nuitka/Manifest
index f51d12a0b0dc..bbc30f941e6b 100644
--- a/dev-python/nuitka/Manifest
+++ b/dev-python/nuitka/Manifest
@@ -1,2 +1,3 @@
DIST nuitka-4.2.1.tar.gz 4632551 BLAKE2B d507e98d69171380e1bed4b36094b3ff4ea1ffbcb54d2cd42822e5ff3be2f7d3fba2a0a7b45c56bf83c54525df834133ed94f29a30200aa56ea6da6aa1a09a75 SHA512 478ad3ef299ce5c2df85eeea4f27dfd754c0821367d775f00dba59734063c60ed6bbf6b10d7a9046242ef6b67d6a372671992d7bd6327a00d89c471f939a18c2
+DIST nuitka-4.2.2.tar.gz 4635975 BLAKE2B 0fca85450b40118fe2a7531484ae55eb873da150167b0c23d73d7c2ffed12fc8ffd0b45c2163be2e22821a0cb0fa58631674af472b1443caa471efe443c756a9 SHA512 cb1d20bcb2c056fb2b4909fbf6bffff645a336da3b2439ce720df812c8649f002f774ae88124dba8a98837d5de41d510ab4196fd6d1a6084ebda9b2089ec8445
DIST nuitka-4.2.tar.gz 4628471 BLAKE2B fb3322dcdded4404b2d4dfd25837ed61f41ab05581af5dfc315b9625395196abd1af3c9e20414ef5a8404b00cc98389a4d58ccb55ed7cb990d5f85050768faf1 SHA512 067a1851bf017ac399dfe251ed07c6bd3aea9bea8bea44ba21c3769d9a11203d1d31e5ceb2b53131ac0b55ea5730abfb0e08b55628a056031f9dc6a1d8836a34
diff --git a/dev-python/nuitka/nuitka-4.2.2.ebuild b/dev-python/nuitka/nuitka-4.2.2.ebuild
new file mode 100644
index 000000000000..9cf157377a76
--- /dev/null
+++ b/dev-python/nuitka/nuitka-4.2.2.ebuild
@@ -0,0 +1,58 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_PN=${PN^}
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 flag-o-matic optfeature pypi
+
+DESCRIPTION="Python to native compiler"
+HOMEPAGE="
+ https://nuitka.net/
+ https://github.com/Nuitka/Nuitka/
+ https://pypi.org/project/Nuitka/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ dev-build/scons[${PYTHON_USEDEP}]
+ >=dev-python/ordered-set-4.1.0[${PYTHON_USEDEP}]
+ >=dev-python/zstandard-0.15[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ ${RDEPEND}
+ test? ( dev-util/ccache )
+"
+
+src_prepare() {
+ local PATCHES=(
+ "${FILESDIR}/${PN}-4.2-disable-update-check.patch"
+ )
+ distutils-r1_src_prepare
+
+ # remove vendored version of SCons that is Python2 only
+ # this should be removed when upstream removes support for Python2
+ rm -vR "nuitka/build/inline_copy/lib/scons-2.3.2/SCons" || die
+}
+
+python_install() {
+ distutils-r1_python_install
+ doman doc/nuitka.1 doc/nuitka-run.1
+}
+
+python_test() {
+ append-ldflags -Wl,--no-warn-search-mismatch
+ ./tests/basics/run_all.py search || die
+}
+
+pkg_postinst() {
+ optfeature "support for stand-alone executables" dev-util/patchelf
+}
diff --git a/dev-python/pdm-backend/Manifest b/dev-python/pdm-backend/Manifest
index ee44fa1f8d98..3d1c063a9d97 100644
--- a/dev-python/pdm-backend/Manifest
+++ b/dev-python/pdm-backend/Manifest
@@ -1 +1,2 @@
+DIST pdm-backend-2.4.10.gh.tar.gz 160294 BLAKE2B 57df4398cdde361ab07086d811a853a9bb5030a1fb9baad7c16c55ace8addc5788d00c83951b047b6b0c151e43ccc971b20ab6d6960439200672fd4288dc12c8 SHA512 09fbfc04d093790f73d4c9898749096a5ce4eef9fb91a0cd5c1de1f23f53d08f2a25a15a07500fed00a08f44e52b71164d526809dba7e774d5dccafbf6971b0e
DIST pdm-backend-2.4.9.gh.tar.gz 159329 BLAKE2B 869796a9f68971c050f93c0fce2dec2f6891d2df198cdfd5be5e514b9929c7ab1271daf1a343225a0de90c346c0d344343b75d9ed1625fecff4e12220c6bcad6 SHA512 69cc6669448dd36cf55bf5260fe9eaf28169b2dc5700648f6992ab29662adf97ba3febf1083aec4d1649fbd973f9c918afd0709784cedecd4b115b947bd7760e
diff --git a/dev-python/pdm-backend/pdm-backend-2.4.10.ebuild b/dev-python/pdm-backend/pdm-backend-2.4.10.ebuild
new file mode 100644
index 000000000000..c1c35dde58f6
--- /dev/null
+++ b/dev-python/pdm-backend/pdm-backend-2.4.10.ebuild
@@ -0,0 +1,78 @@
+# Copyright 2022-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=standalone
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="A PEP 517 backend for PDM that supports PEP 621 metadata"
+HOMEPAGE="
+ https://pypi.org/project/pdm-backend/
+ https://github.com/pdm-project/pdm-backend/
+"
+SRC_URI="
+ https://github.com/pdm-project/pdm-backend/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+# see src/pdm/backend/_vendor/vendor.txt
+RDEPEND="
+ >=dev-python/editables-0.5[${PYTHON_USEDEP}]
+ >=dev-python/packaging-24.0[${PYTHON_USEDEP}]
+ >=dev-python/pyproject-metadata-0.9.0_beta7[${PYTHON_USEDEP}]
+ >=dev-python/tomli-w-1.0.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ ${RDEPEND}
+ test? (
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ dev-vcs/git
+ )
+"
+# setuptools are used to build C extensions
+RDEPEND+="
+ dev-python/setuptools[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # changes in editables or somewhere
+ tests/test_api.py::test_build_editable
+ tests/test_api.py::test_build_editable_src
+ tests/test_api.py::test_build_editable_pep420
+)
+
+src_prepare() {
+ rm -r src/pdm/backend/_vendor || die
+ find -name '*.py' -exec sed \
+ -e 's:from pdm\.backend\._vendor\.:from :' \
+ -e 's:from pdm\.backend\._vendor ::' \
+ -e 's:import pdm\.backend\._vendor\.:import :' \
+ -i {} + || die
+ distutils-r1_src_prepare
+}
+
+src_compile() {
+ # this must not be set during src_test()
+ local -x PDM_BUILD_SCM_VERSION=${PV}
+ distutils-r1_src_compile
+}
+
+src_test() {
+ git config --global user.email "test@example.com" || die
+ git config --global user.name "Test User" || die
+ distutils-r1_src_test
+}
+
+python_test() {
+ epytest -k "not [hg"
+}
diff --git a/dev-python/pycodestyle/Manifest b/dev-python/pycodestyle/Manifest
index 6cc696b39e97..5765f887277e 100644
--- a/dev-python/pycodestyle/Manifest
+++ b/dev-python/pycodestyle/Manifest
@@ -1 +1,2 @@
DIST pycodestyle-2.14.0.gh.tar.gz 81096 BLAKE2B d776407ac0eef88f05a322832d295f59962ddb626760d530fbebe423d9df259cd15cddc5d8e78cdf877646d4434811d19b2b0392ba05f8f968c866bb99c3f5ae SHA512 0c81febffaf0f23ff4a8f7168202a05917aef913bdd92f0a45b1d595272b8206e79987c43eefbdc850b94a467f25f43067209320b60be628d46788c3cc1ad618
+DIST pycodestyle-2.15.0.gh.tar.gz 81506 BLAKE2B 281bb5c2402f66ec5b6c6913bbfdcc92b0a59a3a90f0df2fdf9b575fb17c3a8166856e1806986f7de940568c883ab70222488850d8fd91a4199f325114d991b1 SHA512 fdf6719a49283e46388dd9cf790c344041ce913c565ee6120f3bcafe650f2d181af9a11670de883fb64d1bfb2fab46ab81d73c640dcf478d7c216a7b4df0c7dd
diff --git a/dev-python/pycodestyle/pycodestyle-2.15.0.ebuild b/dev-python/pycodestyle/pycodestyle-2.15.0.ebuild
new file mode 100644
index 000000000000..d027b18ffa55
--- /dev/null
+++ b/dev-python/pycodestyle/pycodestyle-2.15.0.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=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="Python style guide checker (fka pep8)"
+HOMEPAGE="
+ https://pycodestyle.pycqa.org/en/latest/
+ https://github.com/PyCQA/pycodestyle/
+ https://pypi.org/project/pycodestyle/
+"
+# 2.11.0 broke sdist
+# https://github.com/PyCQA/pycodestyle/issues/1183
+SRC_URI="
+ https://github.com/PyCQA/pycodestyle/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 ~x64-macos ~x64-solaris"
+
+distutils_enable_sphinx docs \
+ dev-python/sphinx-rtd-theme
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
diff --git a/dev-python/pyflakes/Manifest b/dev-python/pyflakes/Manifest
index d40f78d11e9a..5c556316ef3b 100644
--- a/dev-python/pyflakes/Manifest
+++ b/dev-python/pyflakes/Manifest
@@ -1 +1,2 @@
DIST pyflakes-3.4.0.tar.gz 64669 BLAKE2B 693708f575b7d98a3042845682b29fef1e077fe904c650c57c0c7af756471a3a36875bfcdb9d6d304415e772d5771591a6508bcef14d0e19cfe821ac3de7e0c4 SHA512 d2c48d2b3a1024af27f8fa1b304b9839d65d63d4a5d1db408e8546396b5150627dc9d84189716624f228a70ab0b2343d8c66b2ab154d4c6042362c9f6ed1b8c7
+DIST pyflakes-4.0.0.tar.gz 66927 BLAKE2B 0b88ddad56e2ef228afd1e320ca0ca48afd4d627e0d256d91a0ed41ef3f09b1ccc083d34ab80aa768a2965b86bd8b19c33711187c70a0861200fdf7169791c68 SHA512 e7fece830ce8f781f2acc0be52ff27a38941c1723aa3fe51a412e4175000e0aafe4864586cffc90a30d76eaed82a7d17efca6e5b7df030394268d91a95c4ee73
diff --git a/dev-python/pyflakes/pyflakes-4.0.0.ebuild b/dev-python/pyflakes/pyflakes-4.0.0.ebuild
new file mode 100644
index 000000000000..0634180e5f65
--- /dev/null
+++ b/dev-python/pyflakes/pyflakes-4.0.0.ebuild
@@ -0,0 +1,22 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Passive checker for Python programs"
+HOMEPAGE="
+ https://github.com/PyCQA/pyflakes/
+ https://pypi.org/project/pyflakes/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos ~x64-solaris"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
diff --git a/dev-python/pymdown-extensions/Manifest b/dev-python/pymdown-extensions/Manifest
index 704894af9e08..84ca891c334c 100644
--- a/dev-python/pymdown-extensions/Manifest
+++ b/dev-python/pymdown-extensions/Manifest
@@ -6,3 +6,5 @@ DIST pymdown_extensions-12.0.1.tar.gz 866904 BLAKE2B 99dc77c0cf21fc3ae37f9ffca62
DIST pymdown_extensions-12.0.1.tar.gz.provenance 9890 BLAKE2B 491f20c46cfdb392d7ad484b52d26397d30aa28ce95039fa9ccf93e69cb1b4a54147d2ce81f7d22fd3079b111041109102a65de9e8a7a00a2e91fbd01c533687 SHA512 0992eead14c6c8147683616ad66d32d8134dab1279b275b06bda5f50e60d5dbd4566eea139903f3dba535f6ed3c1d91cfa91965637ace3c1389771c40c48c0af
DIST pymdown_extensions-12.0.tar.gz 867035 BLAKE2B 2a95a81964b16f816c435892c9498614c3c9befd50c5d34b3d3e1fd324ef14a4dcb43eec487b1af865e4c778746f7b1b4f4d50ce77edb626fdbc5fc9f2f8b83f SHA512 bc1738a04021889df3a802074d93131a84ec5000db3aa4cae5b068cb9ace315941bcf57565983d172f3965cb57017c168df96ab25667132ed3e2517a61edc2b7
DIST pymdown_extensions-12.0.tar.gz.provenance 9995 BLAKE2B 2c231bb3f412bbdad5abbeb7627be427e8ba3bc6eec22f2128ad089e71d639599494edaf9a9e84db8093ea484955843b23f642fd33c7d1f93c5a3ae0ee02175f SHA512 36de2ab58cf83c00e4f207b6421eddf225646ee38bf79dbfad6a969dde532c8d8352ba39e173567a455037710cc9dfd77e658607a02fad987e43bded7e2f82c7
+DIST pymdown_extensions-12.1.tar.gz 868245 BLAKE2B f3503d27b7c819cb88c2b3325c80cebef2dbaa7e8e85e19c1ab4f9b2ef5924a35785626205f3b11d05a2f8bd9e42667d4bcc6c0a81a5c03e4b68e5dcee8c506f SHA512 eff6bb92df1e87cd68007a6543f075a6b8276c8718c25ab95dec1e948995ee60ed80cb9067f9fef8819710fb5306b8b94ca44d4640c8777de6b765d0c06a1743
+DIST pymdown_extensions-12.1.tar.gz.provenance 9948 BLAKE2B 30fc0aec28f48da59c4a236f7b5f5802970975781fb446f01e0040f4ba77f246fde8b3c22a3a149b9d15f01db5d3724029d08f8edce20d0211c6cdcc6fdbf8fe SHA512 cbac49f1d07b4f99f01a649d22ff4ed31bb8e08ac322706265a9e9f2509de841e515015f1378bd55ec117e15a972116823f2f67c04d5e0be1b2532d48d11feef
diff --git a/dev-python/pymdown-extensions/pymdown-extensions-12.1.ebuild b/dev-python/pymdown-extensions/pymdown-extensions-12.1.ebuild
new file mode 100644
index 000000000000..1c6dfb8c42e4
--- /dev/null
+++ b/dev-python/pymdown-extensions/pymdown-extensions-12.1.ebuild
@@ -0,0 +1,34 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYPI_VERIFY_REPO=https://github.com/facelessuser/pymdown-extensions
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Extensions for Python Markdown"
+HOMEPAGE="
+ https://github.com/facelessuser/pymdown-extensions/
+ https://pypi.org/project/pymdown-extensions/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86"
+
+RDEPEND="
+ >=dev-python/markdown-3.6[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+"
+
+BDEPEND="
+ test? (
+ >=dev-python/pygments-2.19.1[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
diff --git a/dev-python/python-slugify/Manifest b/dev-python/python-slugify/Manifest
index f5a87a8d1227..efd7a4ec289a 100644
--- a/dev-python/python-slugify/Manifest
+++ b/dev-python/python-slugify/Manifest
@@ -1,3 +1,4 @@
DIST python-slugify-8.0.4.gh.tar.gz 14098 BLAKE2B 684061ef5f1ee96d727caeb123957709ed391c4a746ef8a40945294ae9278947c18bd8be3d51fd2d9466b420f27ce833a54b84882375617004f9909a683090a9 SHA512 b401e574f23fa77152f8c64f15263766ed7d081759e93c28fce5fa32495eb4921701030b395ca1c738ca46a509e54bc987d81ff07fa602dd42bfa630a49aa4a0
DIST python_slugify-9.0.0.tar.gz 60189 BLAKE2B c1459a0600301eab6005a49e58ee9fa18199539d80df99b37c4823a6952fcce2b8f8d99590f3e6b5ca08660fd766a290530e09f1ce093f38494370ab9ed4bc1a SHA512 2f2ddc0dee7c790a96dc38f84c3dcc006a7e22c3dd67b9a878461dbed03f6cc0b0c56b327dd0ec0b497ee730d27d2a8c96120b72f7233f199ba912868590cd94
DIST python_slugify-9.1.0.tar.gz 63567 BLAKE2B 911f4363b313d21bcd98174ab5fc791f2f160ed4a425b007b3a8e99f23813dcb651dda85ff5cb23149954d3b7caac8f10a657f9b5bbcfcc7831994fa174773d6 SHA512 c710d87f427495c6dc4b96cb4e56dba1b34a6ee855d83858c9a9d5340ba97511e267a6a6f7951721b0037120d953e29ef6ac11b2b64465ad27b4e7e274a95e41
+DIST python_slugify-9.1.1.tar.gz 64108 BLAKE2B b28253242a3d7afa235a3e1b01e30c4bd52f3b619504b0c921baf74802fbfcbf1af1de624e3995b513347976437253a2021c3b859ce1caf0fabf0b1b75d0a80d SHA512 043440766012745017a7dd4b3ea209efa4a6828d959e7d21027bd00cc3c905e634953c73955ab47ada122f4943176cfdcfc7f22bb3f5332119252e07b5929ae4
diff --git a/dev-python/python-slugify/python-slugify-9.1.1.ebuild b/dev-python/python-slugify/python-slugify-9.1.1.ebuild
new file mode 100644
index 000000000000..fdd8cf8b1650
--- /dev/null
+++ b/dev-python/python-slugify/python-slugify-9.1.1.ebuild
@@ -0,0 +1,32 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A Python Slugify application that handles Unicode"
+HOMEPAGE="
+ https://github.com/un33k/python-slugify/
+ https://pypi.org/project/python-slugify/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~x86"
+
+RDEPEND="
+ >=dev-python/text-unidecode-1.3[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/anyascii[${PYTHON_USEDEP}]
+ dev-python/unidecode[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
diff --git a/dev-python/sqlglot/Manifest b/dev-python/sqlglot/Manifest
index f09370f4637e..ac2e264b01a9 100644
--- a/dev-python/sqlglot/Manifest
+++ b/dev-python/sqlglot/Manifest
@@ -1,2 +1,2 @@
-DIST sqlglot-30.17.0.tar.gz 5999019 BLAKE2B 7d9e3855bc37296b01f55cde9f48a4da4ababc9600e59a9afe1748d00ae99046aaf41fce488ecee3a096351e73464c6da0da3b1b3481b427d768314b87e69cab SHA512 f451481fd2aea96e6c7818604414ac3759c478bbd4adff655358e0c551e125111ce12b956e9fac6cb1ec5e0cb5338991744a90972e1fe546954978ebd856d730
DIST sqlglot-30.18.0.tar.gz 6018496 BLAKE2B 0df58a325c3c5b19ba79d667d6e2be5cfbab5d61714056784a12f5f689fae3cd5ef887ee366f6f38c4a0ee42c26f0c1a771da8d6e7142c71ce2d83273e4ea90d SHA512 817c667e7dc7f178d3b9b838d3db10e28a25d0c903b6fd80eef80f74eeaec2ef49db5ceb6a425d2359aaf864d201603bc4e8e82ab436d881d4685d4ff6601356
+DIST sqlglot-30.19.0.tar.gz 6042945 BLAKE2B 588d583bcf1deee2a778bb2d0bc2f46b73ba3367a1f69615275412ab7cf720b1b20ab019ea1840c889c6f071b2afa2d28aeed32d7bf866ef167e086c02cfb919 SHA512 70b599c739093cf9c79926ff5d4ca3c3a2211f554d54ce25097115de40ef8e40cd2a8ba377d42ff0301f3ac50025539df35c796dde1cef8efa50c6c1947c0b3b
diff --git a/dev-python/sqlglot/sqlglot-30.17.0.ebuild b/dev-python/sqlglot/sqlglot-30.19.0.ebuild
index 063fa5096326..063fa5096326 100644
--- a/dev-python/sqlglot/sqlglot-30.17.0.ebuild
+++ b/dev-python/sqlglot/sqlglot-30.19.0.ebuild
diff --git a/dev-python/url-normalize/Manifest b/dev-python/url-normalize/Manifest
index 30189b3821b5..083a522ed16d 100644
--- a/dev-python/url-normalize/Manifest
+++ b/dev-python/url-normalize/Manifest
@@ -1 +1,2 @@
DIST url-normalize-3.0.0.gh.tar.gz 62532 BLAKE2B c79eb146709b4bf031fbfa866df6784f7fea66daa9fd1822830dc5af245fe3ab1d81823c661b1fe3dd3a6c4e8144b5dc2a6522eb8ca18bbf952d385d2c9e00ea SHA512 5d1d4984788d09b88c191807760878391fa6a92b5930d1efe12985a7700126319750f6b1b29632071668f7d2dfe0977c782a0b859ccca10a9114698578cd7e4f
+DIST url-normalize-3.0.1.gh.tar.gz 70269 BLAKE2B 755d5a95f748e6078df228362167d7a7fd4c66c1829a493ea6e8d2c2aa66a3b4bbf595e3b7d07b3f74e630b3f95d0a2c0c6bd430bcb11f7f22c2bce2757d48b2 SHA512 851aadd2ca22f9b41565b91020078da7c421ddb461036bdcfeb7a170fd597c5f63aab4cea2bf059a0e11ebe54e6a8b5eeb9d2b4d457839ef81fb4eb2bcac459c
diff --git a/dev-python/url-normalize/url-normalize-3.0.1.ebuild b/dev-python/url-normalize/url-normalize-3.0.1.ebuild
new file mode 100644
index 000000000000..a0c6d1606cc6
--- /dev/null
+++ b/dev-python/url-normalize/url-normalize-3.0.1.ebuild
@@ -0,0 +1,34 @@
+# Copyright 2021-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="URL normalization for Python"
+HOMEPAGE="
+ https://github.com/niksite/url-normalize/
+ https://pypi.org/project/url-normalize/
+"
+SRC_URI="
+ https://github.com/niksite/url-normalize/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+
+RDEPEND="
+ >=dev-python/idna-3.3[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+python_test() {
+ epytest -o addopts= -m "not socket"
+}
diff --git a/dev-python/uv-build/Manifest b/dev-python/uv-build/Manifest
index 5d9423de410f..f45dd96d364d 100644
--- a/dev-python/uv-build/Manifest
+++ b/dev-python/uv-build/Manifest
@@ -6,6 +6,7 @@ DIST uv_build-0.12.14.tar.gz 427528 BLAKE2B 81c3c2310058e279debf4c3964ac02fbccb0
DIST uv_build-0.12.15.tar.gz 427499 BLAKE2B 30c3f72775de6f609ada7eca182fbd46da150624945983bd64691c59afb86e5e6c2bbeda1ea7f0bb5d12e8c9a332e741a9e2443ac6edba09da90352c00680d6a SHA512 8ad1d541ee1e287683d3013efb453e0ce1867e1404b369c36ac8f46b7300dd201516ade51930aad08b38ef1d42dff362baa13f58281d454344fde22f00443919
DIST uv_build-0.12.16.tar.gz 432812 BLAKE2B 2401a3d86cef31756ae50ad6fb888b731139c18bdd9ca019ac0d2dcd8fe2debad881de41f63987347975682650e78d719f9069922d02740a1b896923591bb956 SHA512 f97ba7943f2ab91859859091f8a13a0392c86182e7ffccaf0083f48f6d158fe9fd943a667c063a07316c9026b32e93b58a6e2ecab2ed45a37809d5014495e4d3
DIST uv_build-0.12.17.tar.gz 434807 BLAKE2B 8823907abc14637a684723b683284cc8b6a40b2467adbab74059b139388aeb1ff8870bdc09a497bad3e06af60c4e9c360c8d57cc6dd62e26e9239f4cf041f827 SHA512 a833a0578c6d543eabe51089d330f0d93d141bea5ff2bc1a194ad27a7ad4a1c7189321cdcf6012465b819bffd620affb42d4fb148bce69beeee0e32537a74668
+DIST uv_build-0.12.18.tar.gz 435289 BLAKE2B 3324730347edfc217d158d44583aea65d11039191d3ed86f0e8908393c33a1d512abffaf1fd1b3783dace76f489ca464d96efab8f7f3e8ab0c3b6eae77649626 SHA512 82751ab98fa7d2676b68b9f3153d4c742304c63970d2128c3baa8823564f53aa192a4fbf634d45280b6689968641dcafbc0d52a609a8676487a256627f3d3a66
DIST uv_build-0.12.3.tar.gz 414444 BLAKE2B f226c1c2bf0b2af538f66095e20c02ad1933afdee62a07eff5f1135692bab47e286f67e7a8f5882e98c61fbb6bf831a85dd56a2d5af2bee6d62d8857a59e56bc SHA512 90d9af3e1a1ff1d7dda21fa38c0ac2d94536e73697ddabb408fb38e2d381498b2401007af0ab31c39cbf3b632aeca2991b3a66d7108e1c5eb7294b3fba8fe107
DIST uv_build-0.12.7.tar.gz 418759 BLAKE2B 94aa33b2644f849a686d80d7f7d365ca8433615d93f27209fca5b21747363cd349d11e887d090420102f06a49977ce963b8f19c24a4280bf82a09943ba08885b SHA512 135f845b3ee6d1925f740917f83f94ec1a7e95aab5ed2db0aa70516c712ab0a143a0e427d3c172fac0bb1fabaa9103718bb2a26c31c9a287e3af65ac0175a245
DIST uv_build-0.12.9.tar.gz 423446 BLAKE2B 8f32f7527633f5853a11a0f798a2aa075f9e96c2b34144f986a639dbd042bac7c5e33853287ef43273352a3ee84da852062c42daead1f188281295b635694177 SHA512 3aa6ea5b4e60218e7cbc3c5ed8ff7fbeeace36eb0d2c75627fb7a0ce7c060e8d6405378e9713f7164319cce55dc96b1a335ccb3032cfc7e9e60e99862295e79e
diff --git a/dev-python/uv-build/uv-build-0.12.18.ebuild b/dev-python/uv-build/uv-build-0.12.18.ebuild
new file mode 100644
index 000000000000..65d94f2051ae
--- /dev/null
+++ b/dev-python/uv-build/uv-build-0.12.18.ebuild
@@ -0,0 +1,100 @@
+# Copyright 2025-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# Maturin compiles uv-build executable for every impl, we do not want
+# that, so we use another backend. And since we use another backend,
+# why not dogfood it in the first place?
+DISTUTILS_USE_PEP517=standalone
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="PEP517 uv build backend"
+HOMEPAGE="
+ https://github.com/astral-sh/uv/
+ https://pypi.org/project/uv-build/
+"
+
+LICENSE="|| ( Apache-2.0 MIT )"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-python/uv-${PV}
+"
+BDEPEND="
+ test? (
+ app-arch/unzip
+ dev-python/build[${PYTHON_USEDEP}]
+ )
+"
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # use the executable from dev-python/uv instead of building
+ # a largely overlapping uv-build executable (at least for now)
+ sed -i -e '/USE_UV_EXECUTABLE/s:False:True:' python/uv_build/__init__.py || die
+
+ # replace the build-system section
+ sed -i -e '/\[build-system\]/,$d' pyproject.toml || die
+ cat >> pyproject.toml <<-EOF || die
+ [build-system]
+ requires = ["uv_build<9999"]
+ build-backend = "uv_build"
+ backend-path = ["src"]
+ EOF
+
+ # rename to make uv-build find it
+ mv python src || die
+}
+
+python_test() {
+ "${EPYTHON}" -m build -n || die "Self-build failed with ${EPYTHON}"
+
+ local zip_result=$(
+ unzip -t "dist/uv_build-${PV}-py3-none-any.whl" || die
+ )
+ local zip_expected="\
+Archive: dist/uv_build-${PV}-py3-none-any.whl
+ testing: uv_build/ OK
+ testing: uv_build/__init__.py OK
+ testing: uv_build/__main__.py OK
+ testing: uv_build/py.typed OK
+ testing: uv_build-${PV}.dist-info/ OK
+ testing: uv_build-${PV}.dist-info/WHEEL OK
+ testing: uv_build-${PV}.dist-info/METADATA OK
+ testing: uv_build-${PV}.dist-info/RECORD OK
+No errors detected in compressed data of dist/uv_build-${PV}-py3-none-any.whl.\
+"
+ if [[ ${zip_result} != ${zip_expected} ]]; then
+ eerror ".zip result:\n${zip_result}"
+ eerror ".zip expected:\n${zip_expected}"
+ die ".whl result mismatch"
+ fi
+
+ local tar_result=$(
+ tar -tf "dist/uv_build-${PV}.tar.gz" || die
+ )
+ local tar_expected="\
+uv_build-${PV}/PKG-INFO
+uv_build-${PV}/pyproject.toml
+uv_build-${PV}/pyproject.toml.orig
+uv_build-${PV}/
+uv_build-${PV}/README.md
+uv_build-${PV}/src
+uv_build-${PV}/src/uv_build
+uv_build-${PV}/src/uv_build/__init__.py
+uv_build-${PV}/src/uv_build/__main__.py
+uv_build-${PV}/src/uv_build/py.typed\
+"
+ if [[ ${tar_result} != ${tar_expected} ]]; then
+ eerror ".tar.gz result:\n${tar_result}"
+ eerror ".tar.gz expected:\n${tar_expected}"
+ die ".tar.gz result mismatch"
+ fi
+}
diff --git a/dev-python/uv/Manifest b/dev-python/uv/Manifest
index 3f74666f061e..4f3e605906d5 100644
--- a/dev-python/uv/Manifest
+++ b/dev-python/uv/Manifest
@@ -14,6 +14,8 @@ DIST uv-0.12.16-crates.tar.xz 43866124 BLAKE2B 50e976af5551b92eaf2edc16b9aa6c729
DIST uv-0.12.16.gh.tar.gz 8687042 BLAKE2B 69c16bcfd99300ae8073d5f5022d4ad2a876ea989755b2e3c9ae07150bd5cb6a17ad4fffb501b353991275c79f6e0c416d17c4c66c628516869992d2d1e86a72 SHA512 2d139e609f23b584fc6942ba261d90f724c047f9fcfe0ededa235f763957ca04828b0189feb5824a732cd15c6e39e7d3d4c4e89ca895b69ea06664cd852c2ce1
DIST uv-0.12.17-crates.tar.xz 43846848 BLAKE2B f899f093a14a7195cb93d81aa71c31d68f068050d5a3d7a299be166808ff7333e8b93884637649bcf219e2dbd3ae14f7bc68250c7249c3f9c07b5e794a88c3c0 SHA512 d3d33ea3e3fa1468442abf13afde74a6cbccb52a674086833f2075424a6c79eb75644d0fc411eae3b015eaad81d7612dbed1d8123ed05c79f8d9542beff187a7
DIST uv-0.12.17.gh.tar.gz 8706123 BLAKE2B e45aae4ea550252440e8f646a505ba4d295e1eafe94092798e79e5db26320dae4b899cc7d04d96387791996e55e4ced2cbcff6ffcd9edc056c9580f5e175751f SHA512 ae554aa9d096afa7e1c35a1e50ba11c0553cd182ba75e5dd425613add092d38c46b3cbd47b026f03674394d6d0852162d5953c4cacef511c7157378d1790b8a1
+DIST uv-0.12.18-crates.tar.xz 43866448 BLAKE2B be0edae4bf12216c1d8f7b14b987bc0f483afac80380b1425e8f153097aea5271fff65a56652c400df86181b4dce3c2b31151e97c22356d860b36d2473ff86b1 SHA512 26f88051220016fdbbd8261f74b8d752aa2ac75c31b96b361f3eb026e7bb5d1aaccfaa5be308b181838fbc1c917d55f051709f7e489748a02d3e5286ee1eb6d7
+DIST uv-0.12.18.gh.tar.gz 8720443 BLAKE2B d19eb0bf9a38a2e2407d575faf371e4b1208da2a2be71b0f183a0849d04f9a4959a04285e30e2810864bc91cf2b880081211179fdbaf070c4284c4563b0262a3 SHA512 ee62d1f51efc28bd0ad1fe91bd007537556e30bc96d449a3628457863796bfd1b27b7357d016b1a11abc1fd3cc5637e043c83e4731fb880442499a18ed0660d0
DIST uv-0.12.3-crates.tar.xz 42197452 BLAKE2B 996bb294d37774e0cb5529c34552d20877cd82a3d063b6e4dc1f6feff05a7822a91c44408a970f038d3045312be0edd4c9e8d34f6eebc04d71bd4d2ffa0184ee SHA512 8de33956c5a603fb4aa1bb5ab6db68c537d7523a84f3092057f562b1209bc976b0bc64cc6ed76cbf1b0edb4981b6a41765fa5e2729a487e4e2322052aa08b8a4
DIST uv-0.12.3.gh.tar.gz 7273161 BLAKE2B 706a2297090b13c6f731d25f55ae8c2225e3b9bd820c61814f512c1e04d98d2e46ce5bfac6ec6ea346dbce1663aea644384b37663b53d64a08a90b48217bdb0d SHA512 a4933b9b9b852dee2485800ad82ee3be111a4a5a437ab32d5064cfd4004e124ba733294a546a097379c74cf1fc234d1da0488aec7725037c7b967ec1aa862a71
DIST uv-0.12.7-crates.tar.xz 44143088 BLAKE2B 075113e8cbafd99a1c70c4ce53678f2ceb13ce31dc7cafb5773e32ae9dfa14144390380e0149219912a0c4b92e6d3b9d0a0a0016cdd4c69097bf75adf1b8a716 SHA512 f9dbdad7cbddd3238c7cc9fbcbec4e92fc8c8c66bc7247ccc8159bb186223c199e3bd411ad9148750ec1fa258775dcec1e2bb6bc3287fca7aeb6ffa7ba4d6b44
diff --git a/dev-python/uv/uv-0.12.18.ebuild b/dev-python/uv/uv-0.12.18.ebuild
new file mode 100644
index 000000000000..9826f9045941
--- /dev/null
+++ b/dev-python/uv/uv-0.12.18.ebuild
@@ -0,0 +1,151 @@
+# Copyright 2024-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+CRATES="
+"
+RUST_MIN_VER="1.96.0"
+
+inherit cargo check-reqs
+
+CRATE_PV=${PV}
+DESCRIPTION="A Python package installer and resolver, written in Rust"
+HOMEPAGE="
+ https://github.com/astral-sh/uv/
+ https://pypi.org/project/uv/
+"
+# pypi sdist misses scripts/, needed for tests
+SRC_URI="
+ https://github.com/astral-sh/uv/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+ ${CARGO_CRATE_URIS}
+"
+if [[ ${PKGBUMPING} != ${PVR} ]]; then
+ SRC_URI+="
+ https://github.com/gentoo-crate-dist/uv/releases/download/${CRATE_PV}/uv-${CRATE_PV}-crates.tar.xz
+ "
+fi
+
+# most of the code
+LICENSE="|| ( Apache-2.0 MIT )"
+# crates/pep508-rs is || ( Apache-2.0 BSD-2 ) which is covered below
+# Dependent crate licenses
+LICENSE+="
+ 0BSD Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD-2 BSD CC0-1.0
+ CDLA-Permissive-2.0 ISC MIT MIT-0 MPL-2.0 Unicode-3.0
+ Unicode-DFS-2016 ZLIB
+"
+# ring crate
+LICENSE+=" openssl"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~x86"
+IUSE="test"
+RESTRICT="test"
+PROPERTIES="test_network"
+
+DEPEND="
+ app-arch/bzip2:=
+ app-arch/xz-utils:=
+ app-arch/zstd:=
+"
+RDEPEND="
+ ${DEPEND}
+"
+BDEPEND="
+ virtual/pkgconfig
+ test? (
+ dev-lang/python:3.9
+ dev-lang/python:3.10
+ dev-lang/python:3.11
+ dev-lang/python:3.12
+ dev-lang/python:3.13
+ !!~dev-python/uv-0.5.0
+ )
+"
+
+QA_FLAGS_IGNORED="usr/bin/.*"
+
+check_space() {
+ local CHECKREQS_DISK_BUILD=3G
+ use debug && CHECKREQS_DISK_BUILD=9G
+ check-reqs_pkg_setup
+}
+
+pkg_pretend() {
+ check_space
+}
+
+pkg_setup() {
+ check_space
+ rust_pkg_setup
+}
+
+src_prepare() {
+ default
+
+ # force thin lto, makes build much faster and less memory hungry
+ # (i.e. makes it possible to actually build uv on 32-bit PPC)
+ sed -i -e '/lto/s:fat:thin:' Cargo.toml || die
+
+ # enable system libraries where supported
+ export ZSTD_SYS_USE_PKG_CONFIG=1
+ # TODO: unbundle tikv-jemalloc-sys?
+
+ # remove unbundled sources, just in case
+ find "${ECARGO_VENDOR}"/zstd-sys-*/ -name '*.c' -delete || die
+}
+
+src_configure() {
+ local myfeatures=(
+ test-git
+ test-pypi
+ test-python
+ )
+
+ cargo_src_configure --no-default-features
+ # otherwise, rustc/llvm runs out of address space
+ use arm && export RUSTFLAGS="${RUSTFLAGS} -Copt-level=0"
+}
+
+src_compile() {
+ cd crates/uv || die
+ cargo_src_compile
+}
+
+src_test() {
+ cd crates/uv || die
+ cargo_src_test --no-fail-fast
+}
+
+src_install() {
+ dobin "$(cargo_target_dir)"/{uv,uvx}
+
+ insinto /etc/xdg/uv
+ newins - uv.toml <<-EOF || die
+ # These defaults match Fedora, see:
+ # https://src.fedoraproject.org/rpms/uv/pull-request/18
+
+ # By default ("automatic"), uv downloads missing Python versions
+ # automatically and keeps them in the user's home directory.
+ # Disable that to make downloading opt-in, and especially
+ # to avoid unnecessarily fetching custom Python when the distro
+ # package would be preferable. Python builds can still be
+ # downloaded manually via "uv python install".
+ #
+ # https://docs.astral.sh/uv/reference/settings/#python-downloads
+ python-downloads = "manual"
+
+ # By default ("managed"), uv always prefers self-installed
+ # Python versions over the system Python, independently
+ # of versions. Since we generally expect users to use that
+ # to install old Python versions not in ::gentoo anymore,
+ # this effectively means that uv would end up preferring very
+ # old Python versions over the newer ones that are provided
+ # by the system. Default to using the system versions to avoid
+ # this counter-intuitive behavior.
+ #
+ # https://docs.astral.sh/uv/reference/settings/#python-preference
+ python-preference = "system"
+ EOF
+}
diff --git a/dev-python/virtualenv/Manifest b/dev-python/virtualenv/Manifest
index b5f963133971..8e7b0103facb 100644
--- a/dev-python/virtualenv/Manifest
+++ b/dev-python/virtualenv/Manifest
@@ -1,3 +1,5 @@
+DIST virtualenv-21.11.0.tar.gz 5391846 BLAKE2B dd51942be29ffb5b94808963b3477ba86141630ff30baf634844ff204fe822e9e94a978b050cf5ed9b53b4a0967f4f4fa9b394eb59956e48ed46265160ef9b4a SHA512 b4c3e0e920f0f4ac4c2eba800336f14dd0b78c465c0a500559d5a5f6123ed3f31a812a1024465301098d943af537228bc469d759079dc6458196a01919553110
+DIST virtualenv-21.11.0.tar.gz.provenance 9769 BLAKE2B 9be192674fb3c3124eef990942d29f7f444c36cf1d62379f5654cd9433b9a475a7bf6931e5cfe804d4eaef8fcffdbdf81b769104ff89b83b65e5e07093d26932 SHA512 f9c3a5a9cee047e3e4814c67b2348a0ad66b47b8a0c68173097c6f0e62b04126f93dde0cb908237ba059832d05138e5de107de99151b5748edaf88b04fb7951a
DIST virtualenv-21.7.10.tar.gz 5350247 BLAKE2B 9d9b5f419c4ac1225ed4435a9f5a2e337854efe68b3453a67fb764e84b48d34d896ea322ab01de1892f33a0ceabf29a7937ecc1fa6173615c3e4e68aae4b3665 SHA512 87e8de301a3d089c1066a87cc40848c0e60985eddaba9aff217f41aaa10149d96dc0ec39ee507066c3f3cc402a9ca09ca8b22d14cf369c63075e2eb703187311
DIST virtualenv-21.7.10.tar.gz.provenance 9440 BLAKE2B 6f75442780a0ce863a63316b4c43c92c5464ca27065f1d31e410a8cdadbf716fd3b8c07dcb22e2c855b2a745d9dcdcab1249ee20457e413b25b611a08f86e18a SHA512 f4386b408b460bbd0921d48e1f0751dc93b253dd4f3a1adfbb565263fd63488f6fd64d68ef52b0a60651a256c7714a687fe5cb6c23126446a6def5578f2dc5ed
DIST virtualenv-21.7.11.tar.gz 5354008 BLAKE2B 166651d9ced8ac3b6bffb0330e23e140fe0a8861487ab50f2c6ebaded9b98c57103eb8a3d3f2526300f3bc1037fbea4178debc1486312daf4a90c60a7abff950 SHA512 f7befbd3c9c3b7347ca4e1ce9319854f9ad4c84b3d670415594a0c16f2c29210913751ae4e86e50c25cbc369020b1a14ac947b0595b752890a505e14024b4274
diff --git a/dev-python/virtualenv/virtualenv-21.11.0.ebuild b/dev-python/virtualenv/virtualenv-21.11.0.ebuild
new file mode 100644
index 000000000000..bce474c5f691
--- /dev/null
+++ b/dev-python/virtualenv/virtualenv-21.11.0.ebuild
@@ -0,0 +1,124 @@
+# 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_{13..14} )
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Virtual Python Environment builder"
+HOMEPAGE="
+ https://virtualenv.pypa.io/en/stable/
+ https://pypi.org/project/virtualenv/
+ https://github.com/pypa/virtualenv/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-python/distlib-0.3.7[${PYTHON_USEDEP}]
+ >=dev-python/filelock-3.24.2[${PYTHON_USEDEP}]
+ >=dev-python/platformdirs-3.9.1[${PYTHON_USEDEP}]
+ >=dev-python/python-discovery-1.6[${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/hatchling-1.27[${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/time-machine[${PYTHON_USEDEP}]
+ dev-python/wheel[${PYTHON_USEDEP}]
+ >=dev-python/packaging-20.0[${PYTHON_USEDEP}]
+ ' "${PYTHON_TESTED[@]}")
+ )
+"
+
+src_prepare() {
+ local PATCHES=(
+ # use wheels from ensurepip bundle
+ "${FILESDIR}/${PN}-21.5.1-ensurepip.patch"
+ )
+
+ distutils-r1_src_prepare
+
+ # workaround test failures due to warnings from setuptools-scm, sigh
+ echo '[tool.setuptools_scm]' >> pyproject.toml || die
+
+ # remove useless pins
+ sed -i -e 's:,<[=0-9.]*::' pyproject.toml || die
+
+ # remove bundled wheels
+ rm src/virtualenv/seed/wheels/embed/*.whl || die
+}
+
+python_test() {
+ if ! has "${EPYTHON}" "${PYTHON_TESTED[@]/_/.}"; then
+ einfo "Skipping testing on ${EPYTHON}"
+ return
+ fi
+
+ local EPYTEST_DESELECT=(
+ tests/unit/seed/embed/test_bootstrap_link_via_app_data.py::test_seed_link_via_app_data
+ # tests for old wheels with py3.7 support
+ tests/unit/seed/embed/test_pip_invoke.py::test_base_bootstrap_via_pip_invoke
+ tests/unit/seed/wheels/test_wheels_util.py::test_wheel_not_support
+ # broken by different wheel versions in ensurepip
+ tests/unit/seed/wheels/test_acquire_find_wheel.py::test_find_latest_string
+ tests/unit/seed/wheels/test_acquire_find_wheel.py::test_find_exact
+ tests/unit/seed/wheels/test_acquire_find_wheel.py::test_find_latest_none
+ tests/unit/seed/wheels/test_acquire.py::test_download_wheel_bad_output
+ tests/unit/seed/wheels/test_wheels_util.py::test_embed_wheel_below_oldest_supported_is_missing
+ # 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
+ # requires bundled packages in pip
+ tests/unit/test_sbom.py::test_sbom_spdx_declared_license
+ # require pre-commit, which probably means internet
+ tests/unit/test_wheel_age.py::test_generator_converges
+ tests/unit/test_wheel_age.py::test_generator_formatter_failure
+ tests/unit/test_wheel_age.py::test_generator_updates_license
+ )
+
+ local -x TZ=UTC
+ local EPYTEST_PLUGINS=( pytest-{mock,rerunfailures} time-machine )
+ 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
+}