summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
authorLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2026-02-11 07:19:50 +0000
committerLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2026-02-11 07:19:50 +0000
commit5c40340a6593a73162d632b105672b8340526941 (patch)
tree36b05d94c0ba4360e9140eb09c22d875face62d2 /dev-python
parentfc0f4949b6bca13ea588d2ea9bca91be58fc9ad8 (diff)
downloadbaldeagleos-repo-5c40340a6593a73162d632b105672b8340526941.tar.gz
baldeagleos-repo-5c40340a6593a73162d632b105672b8340526941.tar.xz
baldeagleos-repo-5c40340a6593a73162d632b105672b8340526941.zip
Adding metadata
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/alembic/Manifest1
-rw-r--r--dev-python/alembic/alembic-1.18.4.ebuild57
-rw-r--r--dev-python/assertpy/Manifest1
-rw-r--r--dev-python/assertpy/assertpy-1.1.ebuild27
-rw-r--r--dev-python/assertpy/metadata.xml10
-rw-r--r--dev-python/behave/Manifest1
-rw-r--r--dev-python/behave/behave-1.3.3.ebuild48
-rw-r--r--dev-python/behave/metadata.xml12
-rw-r--r--dev-python/boto3/Manifest1
-rw-r--r--dev-python/boto3/boto3-1.42.46.ebuild53
-rw-r--r--dev-python/botocore/Manifest1
-rw-r--r--dev-python/botocore/botocore-1.42.46.ebuild67
-rw-r--r--dev-python/cachetools/Manifest1
-rw-r--r--dev-python/cachetools/cachetools-7.0.1.ebuild27
-rw-r--r--dev-python/cucumber-expressions/Manifest1
-rw-r--r--dev-python/cucumber-expressions/cucumber-expressions-19.0.0.ebuild34
-rw-r--r--dev-python/cucumber-expressions/metadata.xml10
-rw-r--r--dev-python/cucumber-tag-expressions/Manifest1
-rw-r--r--dev-python/cucumber-tag-expressions/cucumber-tag-expressions-9.0.0.ebuild34
-rw-r--r--dev-python/cucumber-tag-expressions/metadata.xml10
-rw-r--r--dev-python/immutabledict/Manifest3
-rw-r--r--dev-python/immutabledict/immutabledict-4.3.0.ebuild (renamed from dev-python/immutabledict/immutabledict-4.2.1.ebuild)6
-rw-r--r--dev-python/jupyterlab/Manifest1
-rw-r--r--dev-python/jupyterlab/jupyterlab-4.5.4.ebuild76
-rw-r--r--dev-python/mkdocs-autorefs/Manifest2
-rw-r--r--dev-python/mkdocs-autorefs/mkdocs-autorefs-1.4.4.ebuild (renamed from dev-python/mkdocs-autorefs/mkdocs-autorefs-1.4.2.ebuild)3
-rw-r--r--dev-python/nbdime/Manifest1
-rw-r--r--dev-python/nbdime/nbdime-4.0.4.ebuild61
-rw-r--r--dev-python/pypiserver/Manifest2
-rw-r--r--dev-python/pypiserver/files/pypiserver-2.3.1-unbundle-bottle.patch110
-rw-r--r--dev-python/pypiserver/pypiserver-2.4.1.ebuild (renamed from dev-python/pypiserver/pypiserver-2.3.2-r1.ebuild)19
-rw-r--r--dev-python/pyproject-fmt/Manifest3
-rw-r--r--dev-python/pyproject-fmt/pyproject-fmt-2.15.2.ebuild101
-rw-r--r--dev-python/pytest-regressions/Manifest2
-rw-r--r--dev-python/pytest-regressions/pytest-regressions-2.10.0.ebuild72
-rw-r--r--dev-python/python-pskc/Manifest1
-rw-r--r--dev-python/python-pskc/metadata.xml15
-rw-r--r--dev-python/python-pskc/python-pskc-1.4.ebuild42
-rw-r--r--dev-python/python-pskc/python-pskc-9999.ebuild42
-rw-r--r--dev-python/python-tlsh/Manifest1
-rw-r--r--dev-python/python-tlsh/files/python-tlsh-4.12.1-tlshmodule.patch11
-rw-r--r--dev-python/python-tlsh/python-tlsh-4.12.1.ebuild38
-rw-r--r--dev-python/qtconsole/Manifest2
-rw-r--r--dev-python/qtconsole/qtconsole-5.7.1.ebuild (renamed from dev-python/qtconsole/qtconsole-5.5.2.ebuild)23
-rw-r--r--dev-python/signxml/Manifest1
-rw-r--r--dev-python/signxml/metadata.xml15
-rw-r--r--dev-python/signxml/signxml-4.2.2.ebuild40
-rw-r--r--dev-python/signxml/signxml-9999.ebuild40
-rw-r--r--dev-python/trimesh/Manifest1
-rw-r--r--dev-python/trimesh/trimesh-4.11.2.ebuild88
-rw-r--r--dev-python/typer/Manifest4
-rw-r--r--dev-python/typer/typer-0.20.0.ebuild68
-rw-r--r--dev-python/typer/typer-0.20.1.ebuild68
-rw-r--r--dev-python/uv-build/Manifest1
-rw-r--r--dev-python/uv-build/uv-build-0.10.2.ebuild99
-rw-r--r--dev-python/uv/Manifest2
-rw-r--r--dev-python/uv/uv-0.10.2.ebuild161
57 files changed, 1349 insertions, 273 deletions
diff --git a/dev-python/alembic/Manifest b/dev-python/alembic/Manifest
index 4011d7e1a8ce..6950b934b259 100644
--- a/dev-python/alembic/Manifest
+++ b/dev-python/alembic/Manifest
@@ -3,3 +3,4 @@ DIST alembic-1.18.0.tar.gz 2043788 BLAKE2B 1e32e82be3d148b437d2648368e1d4f918a50
DIST alembic-1.18.1.tar.gz 2044319 BLAKE2B cae1cfba98c726dbb62a0118f078775251e3cd36fcafb2a31915273d3ac80642975ba22ec26ec30603f17f29a428e9a8f9055cfdc83c01eb2cd3d3932ac44111 SHA512 61badced91f07e0179dd034792133557b6adcc406a478b78960cf59f0a34a409372b7f482de29b581fccc314a8cfd3e493755c716c593d40303d8099646699aa
DIST alembic-1.18.2.tar.gz 2048272 BLAKE2B abbf8db02bf33954506c4abc2b12b8460bebd916413e6a5059893e8903128f2ae863150931e795b18e2a84d63019cfc22f9f48778a5490aab8ae93a521a109cc SHA512 3e9e9a9ca03a3cb93ba127a9566892430eb5619270d6e40ec6a753a9ce77b505b8cc6020f6ea52288ed5347da1fe5c8603dc3b14d4acf23c9947735abcdb43a8
DIST alembic-1.18.3.tar.gz 2052564 BLAKE2B 4afc7f97a3bfcc0521177d5d3b748dc527ced6321779408d9f91cc2162bcdf21a6fb1a54300715a2708e422db562f460570a8abc96c54aff7e7f8476bd4691e6 SHA512 5a3430b559f97f91484ed4caea00c1ccc23bde8379bffbc2e06551a188eaf979f452bacbd019625058351254307d2d83d87a6adabd9855eeec949362ddf6309c
+DIST alembic-1.18.4.tar.gz 2056725 BLAKE2B 5de761b6dc383a4f44532bcbeeb6520836cae8992a09c24a5e268d05c835caa5d5e395873c97b650942fe94b995cc995dae8f8c57278d28aa3d1c0987830e5f1 SHA512 ae38b0551858573b6b602b56537a518c7169d4fadef7b11d8112b2427402b745ea5e3cd4387c2b49fec8158cf505de7206919caa10d73445446bb53e264fd448
diff --git a/dev-python/alembic/alembic-1.18.4.ebuild b/dev-python/alembic/alembic-1.18.4.ebuild
new file mode 100644
index 000000000000..23c968f881b7
--- /dev/null
+++ b/dev-python/alembic/alembic-1.18.4.ebuild
@@ -0,0 +1,57 @@
+# 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="Database migrations tool, written by the author of SQLAlchemy"
+HOMEPAGE="
+ https://github.com/sqlalchemy/alembic/
+ https://pypi.org/project/alembic/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+IUSE="doc"
+
+RDEPEND="
+ >=dev-python/sqlalchemy-1.4.23[${PYTHON_USEDEP}]
+ dev-python/mako[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.12[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ sys-libs/timezone-data
+ )
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=()
+
+ if ! has_version "dev-python/black[${PYTHON_USEDEP}]"; then
+ EPYTEST_DESELECT+=(
+ tests/test_post_write.py::RunHookTest::test_module
+ tests/test_post_write.py::RunHookTest::test_module_black_with_cwd
+ tests/test_post_write.py::RunHookTest::test_module_filename_interpolation
+ tests/test_post_write.py::RunHookTest::test_module_path_in_config
+ )
+ fi
+
+ # setup.cfg contains -p no:warnings in addopts which triggers
+ # datetime.utcfromtimestamp() deprecation warning as an error in py3.12
+ epytest -o addopts=
+}
+
+python_install_all() {
+ use doc && local HTML_DOCS=( docs/. )
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/assertpy/Manifest b/dev-python/assertpy/Manifest
new file mode 100644
index 000000000000..6555d20b2d31
--- /dev/null
+++ b/dev-python/assertpy/Manifest
@@ -0,0 +1 @@
+DIST assertpy-1.1.gh.tar.gz 63093 BLAKE2B d1b500c8770ead974b278f323532ce6e9d53fc26a95c761582bce2948f6f5666adca03bda12d45c86646297b0180dbe563f7112a2722c7e95112073d4af3f3cb SHA512 e5c2b72756bff0fa12a2dbb15d8dee20267f5026b9f20f2150da8d2716303afbe7ac56dc27ce0f77a4c1ac5518b5f9127e4b34397148f6d5485da241d9b23aa5
diff --git a/dev-python/assertpy/assertpy-1.1.ebuild b/dev-python/assertpy/assertpy-1.1.ebuild
new file mode 100644
index 000000000000..481e035eda82
--- /dev/null
+++ b/dev-python/assertpy/assertpy-1.1.ebuild
@@ -0,0 +1,27 @@
+# Copyright 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
+
+DESCRIPTION="Simple assertion library for unit testing in python with a fluent API"
+HOMEPAGE="
+ https://github.com/assertpy/assertpy/
+ https://pypi.org/project/assertpy/
+"
+# no tests in sdist
+SRC_URI="
+ https://github.com/assertpy/assertpy/archive/refs/tags/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
diff --git a/dev-python/assertpy/metadata.xml b/dev-python/assertpy/metadata.xml
new file mode 100644
index 000000000000..a0d4c5913ba0
--- /dev/null
+++ b/dev-python/assertpy/metadata.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>python@gentoo.org</email>
+ </maintainer>
+
+ <origin>gentoo-staging</origin>
+ <stabilize-allarches/>
+</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/behave/Manifest b/dev-python/behave/Manifest
new file mode 100644
index 000000000000..54a223da56ac
--- /dev/null
+++ b/dev-python/behave/Manifest
@@ -0,0 +1 @@
+DIST behave-1.3.3.tar.gz 892639 BLAKE2B 3e8438abb796a99a8b6e5d1482754d159e9656a8cf8b68a5b0fe34261809b5677c05ed118146fa1801a9f9b0c51e3c5f38530cd5b70a9ece0d523ecc227cd57c SHA512 fb098b8dbcc9468ac3c9385c03e036baaf5827891bc8f464919ba963df93c5f11f0dcc84dda563e8ce4e5e67c0f0df23b8c128d762a0de26b186b8d77c708396
diff --git a/dev-python/behave/behave-1.3.3.ebuild b/dev-python/behave/behave-1.3.3.ebuild
new file mode 100644
index 000000000000..9d452e51dd54
--- /dev/null
+++ b/dev-python/behave/behave-1.3.3.ebuild
@@ -0,0 +1,48 @@
+# Copyright 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="BDD, Python style"
+HOMEPAGE="
+ https://github.com/behave/behave/
+ https://pypi.org/project/behave/
+"
+
+LICENSE="BSD-2"
+SLOT="0"
+KEYWORDS="~amd64"
+
+RDEPEND="
+ >=dev-python/colorama-0.3.7[${PYTHON_USEDEP}]
+ >=dev-python/cucumber-expressions-17.1.0[${PYTHON_USEDEP}]
+ >=dev-python/cucumber-tag-expressions-4.1.0[${PYTHON_USEDEP}]
+ >=dev-python/parse-1.18.0[${PYTHON_USEDEP}]
+ >=dev-python/parse-type-0.6.0[${PYTHON_USEDEP}]
+ >=dev-python/six-1.15.0[${PYTHON_USEDEP}]
+ >=dev-python/tomli-1.1.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ dev-python/wheel[${PYTHON_USEDEP}]
+ test? (
+ >=dev-python/assertpy-1.1[${PYTHON_USEDEP}]
+ dev-python/chardet[${PYTHON_USEDEP}]
+ >=dev-python/freezegun-1.5.1[${PYTHON_USEDEP}]
+ >=dev-python/mock-4.0[${PYTHON_USEDEP}]
+ >=dev-python/path-13.1.0[${PYTHON_USEDEP}]
+ >=dev-python/pyhamcrest-2.0.2[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+python_test() {
+ # avoid pytest-html options
+ epytest -o addopts=
+}
diff --git a/dev-python/behave/metadata.xml b/dev-python/behave/metadata.xml
new file mode 100644
index 000000000000..b0cb534410bf
--- /dev/null
+++ b/dev-python/behave/metadata.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>python@gentoo.org</email>
+ </maintainer>
+ <upstream>
+ <doc>https://behave.readthedocs.io/</doc>
+ </upstream>
+ <origin>gentoo-staging</origin>
+ <stabilize-allarches/>
+</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/boto3/Manifest b/dev-python/boto3/Manifest
index 1729ce24608a..ad9b64a07b69 100644
--- a/dev-python/boto3/Manifest
+++ b/dev-python/boto3/Manifest
@@ -10,3 +10,4 @@ DIST boto3-1.42.42.gh.tar.gz 1080942 BLAKE2B 32609f924f414160f5649611b98ed023493
DIST boto3-1.42.43.gh.tar.gz 1082187 BLAKE2B f53ca79ea1c6ca1db912d7c7ddbb34776ec982a438f13c6de677f82ef031529d77eaeed2c947a6065559878a4100f731b5601fc9332b473cb099155f0480fb7c SHA512 0f70bbd161e55a241fe8f1c9ed9fa28742c37d95fbc8df4881e5e291d92dde06905d1aa872d14f07b26004d225f10a536bf24261ab2771e5e5bc4bdefb6ac8bc
DIST boto3-1.42.44.gh.tar.gz 1082573 BLAKE2B 98ac0981ec6df7594dcfcbc1ccddcbe8e9f4423cd61e034279dd4c9b52a5b251f158b1a3ec026dec02bf3178a3e30dc61086cdf53ff2516b7ee6b22ea32bfb3d SHA512 16b05dee6df917a8be2b4e09bc44f4032a08c059eb6aea5d9bf76ad38951ae589b4fa244f0d8b591123622fc3244d955bc028dd397a79ca0ab3d6dcddb7ae0cd
DIST boto3-1.42.45.gh.tar.gz 1083470 BLAKE2B 4d6f23bbe6e05cc813cf48bfb81c425c192132ef6dfd573958b2d0ae624eaa11e3fd9dcd177e3fe0d1322d60860e7e5b0bdebf0651bebeb2495b42661aaf7456 SHA512 e7510d3842074e54148b21e82297974c4b8a7d6ee92889bade6dd2669209f3ec5c8f94eb651a057b8a6fb85ed4609a0730592509ac9059a5ed50792c0855e15f
+DIST boto3-1.42.46.gh.tar.gz 1084384 BLAKE2B 37e931dcee276e0100fce155d5919e43d2fe17c49960e0aadc97e3a877ae52dee3f85d5f2b1c0dcfdf8edc26e6b9be1feb3ffbbd0d937fa874d6d265f5cde620 SHA512 a2bff5ea50915b7901eb406df80992b31ab407966202c3a397c173b4b3845407d878c93e254faf54468c5d4c4cb87f7f0e4c0cf17a7f102dc5fc1ca4818cb99a
diff --git a/dev-python/boto3/boto3-1.42.46.ebuild b/dev-python/boto3/boto3-1.42.46.ebuild
new file mode 100644
index 000000000000..6e5f06a012ad
--- /dev/null
+++ b/dev-python/boto3/boto3-1.42.46.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_{10..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 3241c63178ed..1b21f86dd30f 100644
--- a/dev-python/botocore/Manifest
+++ b/dev-python/botocore/Manifest
@@ -10,3 +10,4 @@ DIST botocore-1.42.42.gh.tar.gz 15806216 BLAKE2B 4cd696276acb5e2d340ab9b8c6c3bc8
DIST botocore-1.42.43.gh.tar.gz 15818434 BLAKE2B 386b4bdff2a7b7595dfa71dad6cef183ce0628df8e82af28d1b307b4f07ec1820d5aca46974d51dd4c440a74d26902e7ea473ea8fa6e66a8c641e322ccc654aa SHA512 dd4ba485047d751cc55c1e446805e63b997c217f96e7111c3c98f40979625665d21a70947357b7bf215a8c8e957971f55fccd8cb2359e96504fd3655561b469d
DIST botocore-1.42.44.gh.tar.gz 15820139 BLAKE2B a7047f799dc39ee8f49c7128e91e0f11f20c38b946ec5555a75e6fd3f8691fe396d312b9ff3023fc031415cc0846fe94f5d9a5357e31f9d0670cf7e534474609 SHA512 519b7e28d5b46e7e6ac3b375f1926670d361695b34f07d8eddcf48fee8af2b3674040fa5a3b1a27961f77c435a3c4c78deb1802933f08d993dfe4cb782ea4b2c
DIST botocore-1.42.45.gh.tar.gz 15825494 BLAKE2B d376a9f800b28b784dba58d32713108ab88d72b6c98ebbef84dc8dc81d1b286609cd6249c7deffa92626d24ad83ee7873465aaab85e23b5938857a432041087d SHA512 401db4160b04bb585d648d6b05c7dc9f33bebb0b50077e04a6e07aabb43a6049be510630d889b9e550843af607a06a0a2cd20c74379a41dce0a58f9f0d1f0deb
+DIST botocore-1.42.46.gh.tar.gz 15831397 BLAKE2B 148e1bc0dcf632a76c5d2fb80ae31d197ec9006565660a42fe535ef43c618b411d1caa3835dedc57e9abc9eaf2535c20617f5c7ca0703310a1cb18a9d9a981f9 SHA512 bc7fa8a77589638dfe903eed1c54e315439a3e9014c046d3ecbd06197abadceed3be68d3cce268aa8a9b45a060ec492a95b4fba5c403d0803d2b7cf5aafef3ec
diff --git a/dev-python/botocore/botocore-1.42.46.ebuild b/dev-python/botocore/botocore-1.42.46.ebuild
new file mode 100644
index 000000000000..f6ce0d9ed8d5
--- /dev/null
+++ b/dev-python/botocore/botocore-1.42.46.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_{10..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/cachetools/Manifest b/dev-python/cachetools/Manifest
index 31991bc21240..0c2eed9a2b22 100644
--- a/dev-python/cachetools/Manifest
+++ b/dev-python/cachetools/Manifest
@@ -3,3 +3,4 @@ DIST cachetools-6.2.4.tar.gz 31731 BLAKE2B 26c78c82d14db69020077dd0432a40c25cd76
DIST cachetools-6.2.5.tar.gz 32168 BLAKE2B 0fc72c6703e07f9b2a9df286a50cfd4e142f237c6fc4e4d34a46f9a8bd328661dd978b330bca64c9826785da309d85303efc2ad34239e0507792d355c39421e5 SHA512 443d66974938ecd4159792e05cef214ec472dea9f36728ce4e09ac9e9707ef78c8cfe1aae9eb4f4b23b559b1825a15bdc7e12f099d1e590a8bf3d83178dd53ec
DIST cachetools-6.2.6.tar.gz 32363 BLAKE2B 0560af2d8ac1b3da6a831df3011457d329d6f500c0d46747747450929c96c9cc074f780bb2553d48837781a73fc5daf4a014d24fcc410aef3b71e1c96e71fe27 SHA512 99437623eb08b7a9cd135240ba257fd83d4b133d3da5b6676f578fa762020c2afa4f2f025513338718680be6d8b45a58c5d2381ce6791f0a7e5bcbdc548d43d4
DIST cachetools-7.0.0.tar.gz 35796 BLAKE2B f5da6e9c0d060693add6f42245d5b2498d7a66b73f932ed19abfda5ea2eaf1ac58ad8df51e56ebf6983b9d6cd9bce151d81856b25c8e06ffbc59dfd47fbd0f93 SHA512 5cf5253239dfdef799e70ec7de966af0915ea15d8f21dd05526302f60caf50e682963c2499a6cce8dc87db7e4f862bc9ad1d16f993a64e1f2f7ff7f705d08156
+DIST cachetools-7.0.1.tar.gz 36126 BLAKE2B 4e5456d28772f2e03d90bdc23c02c3194a2cef0f27585c563dcb27f77f8f126c36d3cc7592b5f49121ef685f3926eb4a7b56f5a2356b02eef5d8cee9570aa852 SHA512 b849c8dfd1ee6a24181c0eb634fe710052f9b464df75b527d25f9fabccb128f499d6ad5ba68c8c6d12fa5f708cd5206eed6db7791c75b33320990ba3ce48e312
diff --git a/dev-python/cachetools/cachetools-7.0.1.ebuild b/dev-python/cachetools/cachetools-7.0.1.ebuild
new file mode 100644
index 000000000000..ad2f2949a441
--- /dev/null
+++ b/dev-python/cachetools/cachetools-7.0.1.ebuild
@@ -0,0 +1,27 @@
+# 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="Extensible memoizing collections and decorators"
+HOMEPAGE="
+ https://github.com/tkem/cachetools/
+ https://pypi.org/project/cachetools/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+python_test() {
+ local -x THREADING_TESTS=1
+ epytest
+}
diff --git a/dev-python/cucumber-expressions/Manifest b/dev-python/cucumber-expressions/Manifest
new file mode 100644
index 000000000000..c18ac6a781e2
--- /dev/null
+++ b/dev-python/cucumber-expressions/Manifest
@@ -0,0 +1 @@
+DIST cucumber-expressions-19.0.0.gh.tar.gz 309977 BLAKE2B 89d297402e78081843d8319dee500c2be4e43493e74f04413e970bd1ddbba44136fc63afafc4c609a5c41254c65e338a3e6f2e988f09d81a40782a1907804ad9 SHA512 8743abd54c9c4e7538f21c7c2033f1410dbfb18815714add222024d013e91ed4f775b83f989981ee5d840af7e02aaf3b42d134563be484b8ffc7c1d839828d93
diff --git a/dev-python/cucumber-expressions/cucumber-expressions-19.0.0.ebuild b/dev-python/cucumber-expressions/cucumber-expressions-19.0.0.ebuild
new file mode 100644
index 000000000000..74d55f0ffd9b
--- /dev/null
+++ b/dev-python/cucumber-expressions/cucumber-expressions-19.0.0.ebuild
@@ -0,0 +1,34 @@
+# Copyright 2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=uv-build
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="Human friendly alternative to Regular Expressions"
+HOMEPAGE="
+ https://github.com/cucumber/cucumber-expressions/
+ https://pypi.org/project/cucumber-expressions/
+"
+# no tests in sdist
+SRC_URI="
+ https://github.com/cucumber/cucumber-expressions/archive/refs/tags/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+S="${WORKDIR}/${P}/python"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+
+BDEPEND="
+ test? (
+ >=dev-python/pyyaml-6.0.3[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
diff --git a/dev-python/cucumber-expressions/metadata.xml b/dev-python/cucumber-expressions/metadata.xml
new file mode 100644
index 000000000000..a0d4c5913ba0
--- /dev/null
+++ b/dev-python/cucumber-expressions/metadata.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>python@gentoo.org</email>
+ </maintainer>
+
+ <origin>gentoo-staging</origin>
+ <stabilize-allarches/>
+</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/cucumber-tag-expressions/Manifest b/dev-python/cucumber-tag-expressions/Manifest
new file mode 100644
index 000000000000..ad708a6963cf
--- /dev/null
+++ b/dev-python/cucumber-tag-expressions/Manifest
@@ -0,0 +1 @@
+DIST cucumber-tag-expressions-9.0.0.gh.tar.gz 187333 BLAKE2B 1f94fccae28898e372c64cafa4d19ad6ca67b81d107dcdb75140b7f2d30a9fefe968f1184d008d053bce85e8a5751121325ef3c740c744303ed00c0fcd2c952f SHA512 942495ee3370fce7c87918f77ab4be9e174586d7afe4a39751dc12e56879ce1e7c7756ce796323b37da47a107d4d5eeb96ed683d2a0d60e35084cf3180efac25
diff --git a/dev-python/cucumber-tag-expressions/cucumber-tag-expressions-9.0.0.ebuild b/dev-python/cucumber-tag-expressions/cucumber-tag-expressions-9.0.0.ebuild
new file mode 100644
index 000000000000..48f29930a28b
--- /dev/null
+++ b/dev-python/cucumber-tag-expressions/cucumber-tag-expressions-9.0.0.ebuild
@@ -0,0 +1,34 @@
+# Copyright 2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=uv-build
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="Cucumber tag expression parser"
+HOMEPAGE="
+ https://github.com/cucumber/tag-expressions/
+ https://pypi.org/project/cucumber-tag-expressions/
+"
+# no tests in sdist
+SRC_URI="
+ https://github.com/cucumber/tag-expressions/archive/refs/tags/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+S="${WORKDIR}/tag-expressions-${PV}/python"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+
+BDEPEND="
+ test? (
+ >=dev-python/pyyaml-6.0.3[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
diff --git a/dev-python/cucumber-tag-expressions/metadata.xml b/dev-python/cucumber-tag-expressions/metadata.xml
new file mode 100644
index 000000000000..a0d4c5913ba0
--- /dev/null
+++ b/dev-python/cucumber-tag-expressions/metadata.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>python@gentoo.org</email>
+ </maintainer>
+
+ <origin>gentoo-staging</origin>
+ <stabilize-allarches/>
+</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/immutabledict/Manifest b/dev-python/immutabledict/Manifest
index be9cabad7b34..7d74a778259e 100644
--- a/dev-python/immutabledict/Manifest
+++ b/dev-python/immutabledict/Manifest
@@ -1,2 +1,3 @@
-DIST immutabledict-4.2.1.tar.gz 6228 BLAKE2B 55c97af9d906567f8ba9096d4bc30734012f72b9d7d6cf3a6268ba1219b5b64eb985d2665b131be1ad017e93fc05d66250df3e0826d02f24eaacaf8daf13df89 SHA512 bf09067a371abe4caa829b9ad08000f244a8ed8cbbc6f25c118f555a9f281c2b7e26f66f112a5188e80b49e826a76953040f45eb64f3ce9d258dc66c911a5200
DIST immutabledict-4.2.2.tar.gz 6099 BLAKE2B 34f31b0d5a75d7565f0bce04a98e34afe7932a532bf407b72d097567c4f49c52ae32905ce5b30103c809f0adce2cb530679ce90e8fcce5f602befe15fcdd0263 SHA512 86a50d5327292bc58b1c22bfd8d2863f8aa674e4a8f54f03704969a9ca682a4728cfe5141abc05104f6b065b7b67ddb3bae39c9c20a4c01824a9565f9ccd5b6f
+DIST immutabledict-4.3.0.tar.gz 6863 BLAKE2B 39ca4d57bf891f7ebf8b058c51e06d77e10596028fd3d75db22d643a021fc8da6b858fbae2d7ac651afc0b4051a5145fbdae0daeea5c180a9326d643def8fc34 SHA512 3f35b6e2dffa8a8c8588e94cd06f3cb4e9b1174c55951975cf48650e93e0d67a3a42762be0073545c97a849d7d86ab2057dc213f5876d606292d13aaf50e61a6
+DIST immutabledict-4.3.0.tar.gz.provenance 9504 BLAKE2B 42ece6bf9f04646c76f30710667e874c929b3b9185504042f45216ab4e996682eb5303dddbbb3d365c532e4c04401335fdf0008bda8f62ad393c5f333b5df861 SHA512 ad689b95c4b0d6fcd67b30b81863df6c0beeb5080f55ebafce671832d8619079894ae596693c9e46a38a8698f3251e77bba540d4e60970be85ecfce71ad13a0b
diff --git a/dev-python/immutabledict/immutabledict-4.2.1.ebuild b/dev-python/immutabledict/immutabledict-4.3.0.ebuild
index 53a964007714..37cf497639c4 100644
--- a/dev-python/immutabledict/immutabledict-4.2.1.ebuild
+++ b/dev-python/immutabledict/immutabledict-4.3.0.ebuild
@@ -1,9 +1,10 @@
-# Copyright 2023-2025 Gentoo Authors
+# Copyright 2023-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DISTUTILS_USE_PEP517=poetry
+PYPI_VERIFY_REPO=https://github.com/corenting/immutabledict
PYTHON_COMPAT=( python3_{10..14} )
inherit distutils-r1 pypi
@@ -16,8 +17,9 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 arm64 ~ppc64"
+KEYWORDS="~amd64 ~arm64 ~ppc64"
+EPYTEST_PLUGINS=()
distutils_enable_tests pytest
EPYTEST_DESELECT=(
diff --git a/dev-python/jupyterlab/Manifest b/dev-python/jupyterlab/Manifest
index 58357fc989c3..1c3802bf1ce8 100644
--- a/dev-python/jupyterlab/Manifest
+++ b/dev-python/jupyterlab/Manifest
@@ -2,3 +2,4 @@ DIST jupyterlab-4.4.10.tar.gz 22969303 BLAKE2B 478b424ff65b4f88ee849f0e87cebf30a
DIST jupyterlab-4.5.1.tar.gz 23992251 BLAKE2B 9439eaa774cf6d4d849112746018f3cd3785f085fa707b734288d8aff55558bafdefc81c6fcf5b9311e8b548e691da7c138c175d60b47e2782f085aed9070627 SHA512 217d001cad9598566f2acd478959646ae1febf003396d18376a9ea4846932c055067070eb24ac8425aa16eb27612d31e1ed7c4a84d8bc4f05864e195e3094174
DIST jupyterlab-4.5.2.tar.gz 23990371 BLAKE2B 631ec4e584289344354a783711fac49c4aba7876a616a2a7704f777c97f029ed1ece02740f1ee1ce1f70a9cb12f3317590986dac4715d23b846c9eb3c00cce64 SHA512 0ef5ddeb66d8ece0cce9f528fe0b213e7d1269f39b12790a5f4aa94ad93331fcb814a7f7e708dfbbbde3c6dd35b2907626d3817a432bf086a464d074c8647795
DIST jupyterlab-4.5.3.tar.gz 23939231 BLAKE2B b610f9cf5127bcd000bdd4babdb9436ee64fed6d5dfdddae603fba986aea0118715aac5ea898f5f1d7287545c686995e0ce9f39e671ec9dc249510f17dd7ccfe SHA512 374c32f81156cea408ec2abae0f8fc5de6b6f43f847cf0eaae33cae18d37492446c0982150b507bd7e323796458517da2980cc1bd0a206525488fa5f666453f4
+DIST jupyterlab-4.5.4.tar.gz 23943597 BLAKE2B be057805bbb1bf6d2e117a04b879ee38884f3d0a796b4f8a82c875ef16e360ee35ba538c6a310de47c6be57069c3ed1aa21e9de15973f5c4a2b84567f2d38bdd SHA512 98e60a4796da29282c91d066ff2ac62e092f2d2b630aa06ffc7794aa0f2a165d79adab1a827e3f94432ee9619ef9d2c18fd1f273f6ad44191e785e36879b5c53
diff --git a/dev-python/jupyterlab/jupyterlab-4.5.4.ebuild b/dev-python/jupyterlab/jupyterlab-4.5.4.ebuild
new file mode 100644
index 000000000000..1701378bc41a
--- /dev/null
+++ b/dev-python/jupyterlab/jupyterlab-4.5.4.ebuild
@@ -0,0 +1,76 @@
+# 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_{10..14} )
+
+inherit distutils-r1 pypi xdg
+
+DESCRIPTION="JupyterLab computational environment"
+HOMEPAGE="
+ https://jupyter.org/
+ https://github.com/jupyterlab/jupyterlab/
+ https://pypi.org/project/jupyterlab/
+"
+
+LICENSE="BSD MIT GPL-3 Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+
+RDEPEND="
+ >=dev-python/async-lru-1.0.0[${PYTHON_USEDEP}]
+ >=dev-python/httpx-0.28.0[${PYTHON_USEDEP}]
+ >=dev-python/ipykernel-6.5.0[${PYTHON_USEDEP}]
+ >=dev-python/jinja2-3.0.3[${PYTHON_USEDEP}]
+ dev-python/jupyter-core[${PYTHON_USEDEP}]
+ >=dev-python/jupyter-lsp-2.0.0[${PYTHON_USEDEP}]
+ >=dev-python/jupyter-server-2.4.0[${PYTHON_USEDEP}]
+ <dev-python/jupyter-server-3[${PYTHON_USEDEP}]
+ >=dev-python/jupyterlab-server-2.28.0[${PYTHON_USEDEP}]
+ <dev-python/jupyterlab-server-3[${PYTHON_USEDEP}]
+ >=dev-python/notebook-shim-0.2[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ >=dev-python/setuptools-41.1.0[${PYTHON_USEDEP}]
+ >=dev-python/tornado-6.2.0[${PYTHON_USEDEP}]
+ dev-python/traitlets[${PYTHON_USEDEP}]
+ net-libs/nodejs[npm]
+"
+
+BDEPEND="
+ dev-python/hatch-jupyter-builder[${PYTHON_USEDEP}]
+ test? (
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/requests-cache[${PYTHON_USEDEP}]
+ dev-python/virtualenv[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_DESELECT=(
+ # These tests call npm and want internet
+ jupyterlab/tests/test_jupyterlab.py::TestExtension::test_uninstall_core_extension
+ jupyterlab/tests/test_jupyterlab.py::TestExtension::test_install_and_uninstall_pinned_folder
+ jupyterlab/tests/test_jupyterlab.py::TestExtension::test_install_and_uninstall_pinned
+ jupyterlab/tests/test_jupyterlab.py::TestExtension::test_build_custom_minimal_core_config
+ jupyterlab/tests/test_jupyterlab.py::TestExtension::test_build_custom
+ jupyterlab/tests/test_jupyterlab.py::TestExtension::test_build_check
+ jupyterlab/tests/test_jupyterlab.py::TestExtension::test_build
+ jupyterlab/tests/test_build_api.py::TestBuildAPI::test_clear
+ jupyterlab/tests/test_build_api.py::TestBuildAPI::test_build
+)
+
+EPYTEST_IGNORE=(
+ jupyterlab/tests/test_announcements.py
+)
+
+EPYTEST_PLUGINS=( pytest-{console-scripts,jupyter,tornasync,timeout} )
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+# TODO: package sphinx_copybutton
+#distutils_enable_sphinx docs/source dev-python/sphinx-rtd-theme dev-python/myst-parser
+
+python_install_all() {
+ distutils-r1_python_install_all
+ mv "${ED}/usr/etc" "${ED}/etc" || die
+}
diff --git a/dev-python/mkdocs-autorefs/Manifest b/dev-python/mkdocs-autorefs/Manifest
index e914762d0ec3..1296a8e0dca4 100644
--- a/dev-python/mkdocs-autorefs/Manifest
+++ b/dev-python/mkdocs-autorefs/Manifest
@@ -1,2 +1,2 @@
-DIST mkdocs_autorefs-1.4.2.tar.gz 54961 BLAKE2B 7649642a6cb55f37d07ec7da42887acb19311156d4fdeb02f20100c3d3059646fa1deebc92c525a2e910efdf9a12ce1be4080069f33d479445e8badf75bf0d82 SHA512 f56768394806a876097dccebd94146fa90bb706b304e1f7b86dd51f12da604ce8be7c4d75c67d4694a248b15bf3786c0b5a45e0bc74ea846839e2317c975db12
DIST mkdocs_autorefs-1.4.3.tar.gz 55425 BLAKE2B 1967566f9e1e67ce35fa1d15a3e82502316af591ba6570c463d4f754ecec3b606745f41a21ee561cc0a8e33eab7821ae4abcd85403947c7161c5bef96a187f26 SHA512 a15625f77c76998abed7684696ee6677a497f4b08a674a62e2ead8f38f393ff27adeb339ed587ea708714e8e8efad57c7fad4f3cb01e9d031c5f4839eaed3af1
+DIST mkdocs_autorefs-1.4.4.tar.gz 56588 BLAKE2B 0cb538f8329f889eb7886c309a94e1497e73754b4b84875b6ceea274ba8a12f8410ee04d7ec91e7c4043990ee0ec57bbda6036ca886e6c65bee4d8e5aaa08d33 SHA512 b1551247e4cf3ee5cea9235dc6be81b7a8eb88a07f33a946ed1329fe6730b15be9f0f9fda5023df5f2f50c7aae50ac3da80fa16fc07ae84b1e4e3a58f4ee37f8
diff --git a/dev-python/mkdocs-autorefs/mkdocs-autorefs-1.4.2.ebuild b/dev-python/mkdocs-autorefs/mkdocs-autorefs-1.4.4.ebuild
index 89c025091433..fe1a2040967e 100644
--- a/dev-python/mkdocs-autorefs/mkdocs-autorefs-1.4.2.ebuild
+++ b/dev-python/mkdocs-autorefs/mkdocs-autorefs-1.4.4.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
@@ -32,4 +32,5 @@ BDEPEND="
)
"
+EPYTEST_PLUGINS=()
distutils_enable_tests pytest
diff --git a/dev-python/nbdime/Manifest b/dev-python/nbdime/Manifest
index f065417a8b48..274fb1db4e74 100644
--- a/dev-python/nbdime/Manifest
+++ b/dev-python/nbdime/Manifest
@@ -1,2 +1,3 @@
DIST nbdime-4.0.2.tar.gz 9452967 BLAKE2B c9c390f9165d0b8b3277c7bd93e5a90f4ac23cf0d084ed8ba166254bfbfe9cc0e9f0bc35c2a86b39d84167e78639cb2ed69f6cda5da02bb113f7323a86d745a6 SHA512 1e923b7f719d6a33f1dc06e06511a6d48bb8bfef7d8f7676da2520edd2914014eb88f70eaaeec27af6b03f1cefbd9a3e6854a7c0dec7f76f211d750b3fd90894
DIST nbdime-4.0.3.tar.gz 9453461 BLAKE2B f2d3254155c8b00a246a232da201a13ceb2656e8b9d98a0701bfebc6ca37c5b8bc97a46831c3cbc0218c90d1e71e848f9deffedb7899f58407b6db475ec771dd SHA512 b94a1684bca3585fa68611b330c3e7626e198c6b619d0714921324bf623a4b80ba474d808177ebeebd43d95eb0439cb01a7c6b47247ae4ffe15ea65bd5dc72ab
+DIST nbdime-4.0.4.tar.gz 9454602 BLAKE2B 1f28045c460f377250d9a37eee6df3d59558c38f7a8212af59e0e701baafc9286c00d371e5a3ed9142e07aa635753f0d9b05e656ba782e9e6c5fb77918bd5ac0 SHA512 59bce72c87247e9e42c2ef0357f0593c707eb8d782204556d4c3dba27b93e1acd89b46977273e58554be9f3c9407a81613f1b9b301b5de5eb56ea1e8c37ea76a
diff --git a/dev-python/nbdime/nbdime-4.0.4.ebuild b/dev-python/nbdime/nbdime-4.0.4.ebuild
new file mode 100644
index 000000000000..cf576aa1a1d6
--- /dev/null
+++ b/dev-python/nbdime/nbdime-4.0.4.ebuild
@@ -0,0 +1,61 @@
+# 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_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Diff and merge of Jupyter Notebooks"
+HOMEPAGE="
+ https://jupyter.org/
+ https://github.com/jupyter/nbdime/
+ https://pypi.org/project/nbdime/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+
+RDEPEND="
+ dev-python/colorama[${PYTHON_USEDEP}]
+ dev-python/gitpython[${PYTHON_USEDEP}]
+ dev-python/jinja2[${PYTHON_USEDEP}]
+ dev-python/jupyter-server[${PYTHON_USEDEP}]
+ dev-python/nbformat[${PYTHON_USEDEP}]
+ dev-python/pygments[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/tornado[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/jsonschema[${PYTHON_USEDEP}]
+ dev-python/notebook[${PYTHON_USEDEP}]
+ dev-python/tabulate[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_sphinx docs/source \
+ dev-python/recommonmark \
+ dev-python/sphinx-rtd-theme
+EPYTEST_PLUGINS=( pytest-timeout )
+distutils_enable_tests pytest
+
+src_test() {
+ # user.email and user.name are not configured in the sandbox
+ git config --global user.email "larry@gentoo.org" || die
+ git config --global user.name "Larry the Cow" || die
+
+ distutils-r1_src_test
+}
+
+python_test() {
+ epytest -o tmp_path_retention_policy=all
+}
+
+src_install() {
+ distutils-r1_src_install
+ mv "${ED}"{/usr,}/etc || die
+}
diff --git a/dev-python/pypiserver/Manifest b/dev-python/pypiserver/Manifest
index 50d84639256a..1a6292ef5124 100644
--- a/dev-python/pypiserver/Manifest
+++ b/dev-python/pypiserver/Manifest
@@ -1,2 +1,2 @@
-DIST pypiserver-2.3.2.gh.tar.gz 164673 BLAKE2B 7982c3fdb4cdb159e7450476a9f845825ad1d3bd1327fa125f978f1848f3a15d4d6d5f8676c8c050e25d49dd4a83e806496c863dd7f4d3e9005764b33e4a9a5e SHA512 83e48cf55892affee04533e0e1bb17dfa79548cd3629d1a61dd8f84cad635eb220ebe4207d1ceebe939eea0953fa17ffe6e549a015a9d9d6f627c9041e5786d2
DIST pypiserver-2.4.0.gh.tar.gz 156766 BLAKE2B 99254c4cbc4290a80a2e272c1932f91e33aa7ee68a28463faf2dbad27fca505c52697aeaea812ae7aff6b0ee5e109d7c535f0d6c4bbe3af804de29a5ccabff53 SHA512 543f8bf98bface6a6db996c130be5acb19aa31ab85d5d37d9766e132b38713aed1eb0a46c67f767185409bf8c4eaef6fdfdcb5137af2651b5b6191032b5c5268
+DIST pypiserver-2.4.1.gh.tar.gz 157182 BLAKE2B 37d8898360070465f90f706401d94cc73502d8aefef8867281b52de527a162595b6707a862bf5bbaeba55c7c112cc04b8ec2d75fccc85a712cd10664288299a5 SHA512 11e1d224f5a001748e41e766431228af69f449562af70294194561b9f567da66a7f94a29ca107e1eb919694ad5d7a4325ed85c785885991bacaf705d63e7542a
diff --git a/dev-python/pypiserver/files/pypiserver-2.3.1-unbundle-bottle.patch b/dev-python/pypiserver/files/pypiserver-2.3.1-unbundle-bottle.patch
deleted file mode 100644
index c879e5291a88..000000000000
--- a/dev-python/pypiserver/files/pypiserver-2.3.1-unbundle-bottle.patch
+++ /dev/null
@@ -1,110 +0,0 @@
-From 65c42e562500590d4e2377479ce23c4bcf4c325c Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
-Date: Sun, 24 Nov 2024 04:11:10 +0100
-Subject: [PATCH] unbundle pypiserver
-
----
- pypiserver/__init__.py | 2 +-
- pypiserver/__main__.py | 2 +-
- pypiserver/_app.py | 2 +-
- tests/test_app.py | 3 ++-
- tests/test_main.py | 8 ++++----
- 5 files changed, 9 insertions(+), 8 deletions(-)
-
-diff --git a/pypiserver/__init__.py b/pypiserver/__init__.py
-index 326a13f..42bbcd0 100644
---- a/pypiserver/__init__.py
-+++ b/pypiserver/__init__.py
-@@ -4,7 +4,7 @@ import re as _re
- import sys
- import typing as t
-
--from pypiserver.bottle import Bottle
-+from bottle import Bottle
- from pypiserver.config import Config, RunConfig, strtobool
-
- version = __version__ = "2.3.1"
-diff --git a/pypiserver/__main__.py b/pypiserver/__main__.py
-index a47418b..b433335 100644
---- a/pypiserver/__main__.py
-+++ b/pypiserver/__main__.py
-@@ -160,7 +160,7 @@ def main(argv: t.Sequence[str] = None) -> None:
-
- gevent.monkey.patch_all()
-
-- from pypiserver import bottle
-+ import bottle
-
- bottle.debug(config.verbosity > 1)
- bottle._stderr = ft.partial( # pylint: disable=protected-access
-diff --git a/pypiserver/_app.py b/pypiserver/_app.py
-index ed6ae20..2224619 100644
---- a/pypiserver/_app.py
-+++ b/pypiserver/_app.py
-@@ -13,7 +13,7 @@ from urllib.parse import urljoin, urlparse, quote
-
- from pypiserver.config import RunConfig
- from . import __version__
--from .bottle import (
-+from bottle import (
- static_file,
- redirect,
- request,
-diff --git a/tests/test_app.py b/tests/test_app.py
-index 230a03e..8bd3d75 100644
---- a/tests/test_app.py
-+++ b/tests/test_app.py
-@@ -8,12 +8,13 @@ import xmlrpc.client as xmlrpclib
- from html import unescape
-
- # Third party imports
-+import bottle
- import pytest
- import webtest
-
- # Local Imports
- from tests.test_pkg_helpers import files, invalid_files
--from pypiserver import __main__, bottle, core, Bottle, _app
-+from pypiserver import __main__, core, Bottle, _app
- from pypiserver.backend import CachingFileBackend, SimpleFileBackend
-
- # Enable logging to detect any problems with it
-diff --git a/tests/test_main.py b/tests/test_main.py
-index 5fcace7..5369c78 100644
---- a/tests/test_main.py
-+++ b/tests/test_main.py
-@@ -5,11 +5,11 @@ import sys
- import typing as t
- from unittest import mock
-
-+import bottle
- import pytest
-
--import pypiserver.bottle
-+from bottle import Bottle
- from pypiserver import __main__
--from pypiserver.bottle import Bottle
-
-
- THIS_DIR = pathlib.Path(__file__).parent
-@@ -51,7 +51,7 @@ def main(monkeypatch):
- main.update_args = args
- main.update_kwargs = kwargs
-
-- monkeypatch.setattr("pypiserver.bottle.run", run)
-+ monkeypatch.setattr("bottle.run", run)
- monkeypatch.setattr("pypiserver.manage.update_all_packages", update)
-
- return main
-@@ -262,7 +262,7 @@ def test_auto_servers() -> None:
- """Test auto servers."""
- # A list of bottle ServerAdapters
- bottle_adapters = tuple(
-- a.__name__.lower() for a in pypiserver.bottle.AutoServer.adapters
-+ a.__name__.lower() for a in bottle.AutoServer.adapters
- )
- # We are going to expect that our AutoServer enum names must match those
- # at least closely enough to be recognizable.
---
-2.47.0
-
diff --git a/dev-python/pypiserver/pypiserver-2.3.2-r1.ebuild b/dev-python/pypiserver/pypiserver-2.4.1.ebuild
index 19cbfa5d409e..4540a1673e30 100644
--- a/dev-python/pypiserver/pypiserver-2.3.2-r1.ebuild
+++ b/dev-python/pypiserver/pypiserver-2.4.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
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="ZLIB"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
RDEPEND="
dev-python/bottle[${PYTHON_USEDEP}]
@@ -29,6 +29,9 @@ RDEPEND="
$(python_gen_cond_dep '
dev-python/importlib-resources[${PYTHON_USEDEP}]
' 3.11)
+ $(python_gen_cond_dep '
+ dev-python/legacy-cgi[${PYTHON_USEDEP}]
+ ' 3.14)
"
# NB: many test deps are optional/specific to tests we skip
BDEPEND="
@@ -43,17 +46,16 @@ BDEPEND="
DOCS=( CHANGES.rst README.md )
-PATCHES=(
- "${FILESDIR}/${PN}-2.3.1-unbundle-bottle.patch"
-)
-
+EPYTEST_PLUGINS=()
distutils_enable_tests pytest
src_prepare() {
distutils-r1_src_prepare
- # remove bundled bottle
- rm pypiserver/bottle.py || die
+ # unbundle bottle
+ sed -e 's:pypiserver[.]bottle_wrapper[.]::' \
+ -i pypiserver/bottle_wrapper/__init__.py || die
+ rm pypiserver/bottle_wrapper/bottle.py || die
}
python_test() {
@@ -73,6 +75,5 @@ python_test() {
)
fi
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
epytest tests
}
diff --git a/dev-python/pyproject-fmt/Manifest b/dev-python/pyproject-fmt/Manifest
index 0a3e7c2d0dfc..de9d8db9e8f2 100644
--- a/dev-python/pyproject-fmt/Manifest
+++ b/dev-python/pyproject-fmt/Manifest
@@ -56,6 +56,8 @@ DIST pyproject_fmt-2.14.0.tar.gz 109775 BLAKE2B 7417d3a08af776339056d2fd4b2abb08
DIST pyproject_fmt-2.14.1.tar.gz 118476 BLAKE2B 4d1045f4744fac803bb3c72efe51ec6ed36d0f67ad3115a0e28c17e59d6525c75c0010b4728269f7e6c01307c4fcc9f3d014ff5c12786c41f5e6c1c1999e348e SHA512 0a58e5bdafb161fcf19b179a60829e032c8ee94a4461571dd5daff8a0a2e1e3c2bac6ab78388e2d5f666b52793b2055ae84fb0d8f57bbae44bb0d6573683f499
DIST pyproject_fmt-2.15.1.tar.gz 125598 BLAKE2B af12d3a62b558a3ac7edcaf67db7d2ee2a69f09cfe3968cb977e57b636b230c2356c2ffa03ba11a829447bec2e852b56b54b030e02e8fb19bbf542f093db327e SHA512 2caf5d3c79453692b7f1c971c3404de3647c37a794db404d283f64d6b8dbac917ac20dd8d50105f80c0cbdb75ae73b17e06022094759ef74b88283203d8ea468
DIST pyproject_fmt-2.15.1.tar.gz.provenance 9836 BLAKE2B 48af8cf30ac4490c5f3b0e4b59347159f61b9c7e5dab43f00b577635e5e5b8a4b4458c9c023f7d7288ca7399128dcdf3e62ef7e7807dc43fdac221ddad3cf5ec SHA512 0ad754761cbb46ea58b1034aa8b9e0310bbed4e6eea3a285628ced9952127877834696c0042df1cf4ce1f71476e7c54ff56058d1cc98814f165740621e3a04b8
+DIST pyproject_fmt-2.15.2.tar.gz 126980 BLAKE2B 1fdc3eca2b225d0815c7a176084f808e92292f2bef7fcd8cf9ddc55af7a2ca441a0d744036c40af7bc4859983e5f292f18b76febffb6e4888238d2793c0bf69d SHA512 843310fad343f6a568b4ef6fdf5b1cefca1d2d1559238619e4e64679ff3902a8c3c614fd88114675fa76d4632b3d48db545d6cfb2cc840344eb37afef7a8925b
+DIST pyproject_fmt-2.15.2.tar.gz.provenance 9699 BLAKE2B cc707839cd17d2cd44468b4887fb0ce6a42278132faf03e7176be372a6da623a8716c327bf2464be0fe544921c8db7cf8b7b555e51d1028a15084b464839e427 SHA512 ab4ab30ea7d632d66bf004642efa25351463a8296e00c8af2b6d95994d7a97b7cf749fe2e229bbfe50f919efd5f95a97df200a39479ccd64e3030caa35a9018d
DIST quote-1.0.40.crate 31063 BLAKE2B 09036ff3e5ebbd775c466bb936de91d4c070481eb4b98c62a4cddcda57cd7b67d63f979b321f6ec64aabee3f5da6c28e7a3efb83f4647768ba578f1bd0bd0bdb SHA512 45a76e22a2b0bec47e4ba73c3b73cc41d821dfcce9876134c5d8eed514da214aee4ce7612e372c8709f888c0d8b9b7e5442f27adb7a59f3571f0339ed7e2ac99
DIST r-efi-5.2.0.crate 64764 BLAKE2B ee17fae983b2c39137cb75698062a3bf8edb4bc680b04900797730618b54298e2f1d13ceab6b660f7a1799f6fc4113ca15d4320b1b95fc42913e0930f3aa16f8 SHA512 80f89d467b482297ec2c13cb0dc8e310442495483e25c33bb523f1cb66d6ce01fee4a57b36880a4f51c0e9f20eb3f993a5bc0a13224d52693dbc81b97c630158
DIST regex-1.11.1.crate 254170 BLAKE2B 5cf41012fc2ba8a006c0eb4a922cbbf1614bf300be361c9e2d98956a9a5e9b140e37bea09132fab7bfb633d4439158723624bcf45e8c619c4061b399253c1b82 SHA512 d065f6dc405771518260425f39a5eaaf8cab62e78c91ceed3b3994a9a121674d2484cadaaf816bdad89c87a40550d57b66a3d9de6618a7119a658301ce7e67d8
@@ -94,6 +96,7 @@ DIST tombi-749df5d762ec02cc6d960f37dbaeaf060ebaf1d5.gh.tar.gz 10358474 BLAKE2B 8
DIST toml-fmt-pyproject-fmt-2.14.0-crates.tar.xz 17729776 BLAKE2B 00b4918b86c3c35d1a0574348ad6f4559b33e06553e25906da65971d33a428c4a2842b07ff551e823800a3b10682fe1c607cd412f0468ac209c68b73d90ac26e SHA512 63b69d0dc643915ff8930dc8a367f7e66ce6034e20a269482cd152ef88dcbd1ccfb2664a291d1881a47eee4b36c1458e3d1f869ea60f1d1d6119deb0fe9ed561
DIST toml-fmt-pyproject-fmt-2.14.1-crates.tar.xz 17945184 BLAKE2B 8e8e9b9713aaac87efcc128f194217c0f662e947d6011d675fe789594ca689ed947f71999a1f2e59ae7afb59cdbb76be1bb96a2a1f54c8a917115ef0a1ef088b SHA512 7d4eec57f8f1733bdbb86fa75ef198a45f9c56e93feff96c3e12c7747f637ffacd55a71f999ec3b34a48ee08e8772e5f858d56bd243b8a003861d504f2edcb8b
DIST toml-fmt-pyproject-fmt-2.15.1-crates.tar.xz 17961528 BLAKE2B 2bb9ec28695cae8feed6166291c82eed4e25e0653046e05b32dfd9fa3d8fec0d4702025c7a13fc8c9b963d8bea3cc2d44b627220b69e000cd64f05b91c236f7d SHA512 f7bf4d6aa77d84016be40a4fc6f4368a425011e285ecb69e9a32188a41141a081d49723974a97128f159767690359ece1a26a3eba94de9c7b5a9b73abf0912b3
+DIST toml-fmt-pyproject-fmt-2.15.2-crates.tar.xz 18692916 BLAKE2B a48520f1fefbf64a3b7d8f9244a1dcec0c0d5875fedfd1923b399cf36f2ffaa59d5f3ee162c292242254b9464dde9bb3317f416a2650532b3f17f34cd816b5bd SHA512 3d27f4d184f9eee50322f207516d6f5b33226694e159ee06520f21dd316e177775edf7ef36c991cf65598f3bcf46030e2546e62eb5d06d353b6bb13767af86f5
DIST toml_datetime-0.6.9.crate 12622 BLAKE2B 0362fbee2359fb7388bd679ccf114e554234294437dd3aa26b0e969aadd0e0fb76ad89eb33e0c4a2b50883764f64708fad2e265562feba13688fdd07623e18af SHA512 8409a902d7f6c22a8837cb71fd0e4fbb40b34c1608c3e858f4f5268c34948b94e9f9dae9e6f3ba73c78e3db14754fcec0b22081160acb228ae366aeafaaead9c
DIST toml_edit-0.22.26.crate 121714 BLAKE2B c1e39ec75d3d34e038d7a7e3af4d74b1a53010ed2d837a3643f08e459231ec7f15c149910dbc5294187601e342b0ba03fa8129dbc879b326841a32513ed7fdd2 SHA512 8cad3472f790e3423dadb34da76f77fd122721daa1c855a749699ac0af8e39c2453ed47369b14e8603204acb896a966ea98857118003a5d75cc48ca5e28ecff7
DIST tracing-0.1.41.crate 82448 BLAKE2B c056d938e001654e03efaec7a11eb8ecfbdfe9af2099271fcefa43f4f4683b40c59f7111fdf7f27df4da38bcbe94f1b2ac0abb6ec3d6e6a0d165b9fbb14da3a3 SHA512 dffb8d3a1375f1b9d5418550a46cb7b1d92b2cc8ffbccb430a38f7731547960775bb42798074186711847d256eee30fb3e74078b69cb36f28c07d9f231dbf96c
diff --git a/dev-python/pyproject-fmt/pyproject-fmt-2.15.2.ebuild b/dev-python/pyproject-fmt/pyproject-fmt-2.15.2.ebuild
new file mode 100644
index 000000000000..b5325fb80145
--- /dev/null
+++ b/dev-python/pyproject-fmt/pyproject-fmt-2.15.2.ebuild
@@ -0,0 +1,101 @@
+# Copyright 2022-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=maturin
+PYPI_VERIFY_REPO=https://github.com/tox-dev/toml-fmt
+PYTHON_COMPAT=( python3_{10..14} )
+
+RUST_MIN_VER="1.87.0"
+CRATES="
+"
+
+declare -A GIT_CRATES=(
+ [tombi-accessor]='https://github.com/tombi-toml/tombi;749df5d762ec02cc6d960f37dbaeaf060ebaf1d5;tombi-%commit%/crates/tombi-accessor'
+ [tombi-ast-editor]='https://github.com/tombi-toml/tombi;749df5d762ec02cc6d960f37dbaeaf060ebaf1d5;tombi-%commit%/crates/tombi-ast-editor'
+ [tombi-ast]='https://github.com/tombi-toml/tombi;749df5d762ec02cc6d960f37dbaeaf060ebaf1d5;tombi-%commit%/crates/tombi-ast'
+ [tombi-cache]='https://github.com/tombi-toml/tombi;749df5d762ec02cc6d960f37dbaeaf060ebaf1d5;tombi-%commit%/crates/tombi-cache'
+ [tombi-comment-directive-serde]='https://github.com/tombi-toml/tombi;749df5d762ec02cc6d960f37dbaeaf060ebaf1d5;tombi-%commit%/crates/tombi-comment-directive-serde'
+ [tombi-comment-directive-store]='https://github.com/tombi-toml/tombi;749df5d762ec02cc6d960f37dbaeaf060ebaf1d5;tombi-%commit%/crates/tombi-comment-directive-store'
+ [tombi-comment-directive]='https://github.com/tombi-toml/tombi;749df5d762ec02cc6d960f37dbaeaf060ebaf1d5;tombi-%commit%/crates/tombi-comment-directive'
+ [tombi-config]='https://github.com/tombi-toml/tombi;749df5d762ec02cc6d960f37dbaeaf060ebaf1d5;tombi-%commit%/crates/tombi-config'
+ [tombi-date-time]='https://github.com/tombi-toml/tombi;749df5d762ec02cc6d960f37dbaeaf060ebaf1d5;tombi-%commit%/crates/tombi-date-time'
+ [tombi-diagnostic]='https://github.com/tombi-toml/tombi;749df5d762ec02cc6d960f37dbaeaf060ebaf1d5;tombi-%commit%/crates/tombi-diagnostic'
+ [tombi-document-tree]='https://github.com/tombi-toml/tombi;749df5d762ec02cc6d960f37dbaeaf060ebaf1d5;tombi-%commit%/crates/tombi-document-tree'
+ [tombi-document]='https://github.com/tombi-toml/tombi;749df5d762ec02cc6d960f37dbaeaf060ebaf1d5;tombi-%commit%/crates/tombi-document'
+ [tombi-formatter]='https://github.com/tombi-toml/tombi;749df5d762ec02cc6d960f37dbaeaf060ebaf1d5;tombi-%commit%/crates/tombi-formatter'
+ [tombi-future]='https://github.com/tombi-toml/tombi;749df5d762ec02cc6d960f37dbaeaf060ebaf1d5;tombi-%commit%/crates/tombi-future'
+ [tombi-json-lexer]='https://github.com/tombi-toml/tombi;749df5d762ec02cc6d960f37dbaeaf060ebaf1d5;tombi-%commit%/crates/tombi-json-lexer'
+ [tombi-json-syntax]='https://github.com/tombi-toml/tombi;749df5d762ec02cc6d960f37dbaeaf060ebaf1d5;tombi-%commit%/crates/tombi-json-syntax'
+ [tombi-json-value]='https://github.com/tombi-toml/tombi;749df5d762ec02cc6d960f37dbaeaf060ebaf1d5;tombi-%commit%/crates/tombi-json-value'
+ [tombi-json]='https://github.com/tombi-toml/tombi;749df5d762ec02cc6d960f37dbaeaf060ebaf1d5;tombi-%commit%/crates/tombi-json'
+ [tombi-lexer]='https://github.com/tombi-toml/tombi;749df5d762ec02cc6d960f37dbaeaf060ebaf1d5;tombi-%commit%/crates/tombi-lexer'
+ [tombi-parser]='https://github.com/tombi-toml/tombi;749df5d762ec02cc6d960f37dbaeaf060ebaf1d5;tombi-%commit%/crates/tombi-parser'
+ [tombi-regex]='https://github.com/tombi-toml/tombi;749df5d762ec02cc6d960f37dbaeaf060ebaf1d5;tombi-%commit%/crates/tombi-regex'
+ [tombi-rg-tree]='https://github.com/tombi-toml/tombi;749df5d762ec02cc6d960f37dbaeaf060ebaf1d5;tombi-%commit%/crates/tombi-rg-tree'
+ [tombi-schema-store]='https://github.com/tombi-toml/tombi;749df5d762ec02cc6d960f37dbaeaf060ebaf1d5;tombi-%commit%/crates/tombi-schema-store'
+ [tombi-severity-level]='https://github.com/tombi-toml/tombi;749df5d762ec02cc6d960f37dbaeaf060ebaf1d5;tombi-%commit%/crates/tombi-severity-level'
+ [tombi-syntax]='https://github.com/tombi-toml/tombi;749df5d762ec02cc6d960f37dbaeaf060ebaf1d5;tombi-%commit%/crates/tombi-syntax'
+ [tombi-text]='https://github.com/tombi-toml/tombi;749df5d762ec02cc6d960f37dbaeaf060ebaf1d5;tombi-%commit%/crates/tombi-text'
+ [tombi-toml-text]='https://github.com/tombi-toml/tombi;749df5d762ec02cc6d960f37dbaeaf060ebaf1d5;tombi-%commit%/crates/tombi-toml-text'
+ [tombi-toml-version]='https://github.com/tombi-toml/tombi;749df5d762ec02cc6d960f37dbaeaf060ebaf1d5;tombi-%commit%/crates/tombi-toml-version'
+ [tombi-uri]='https://github.com/tombi-toml/tombi;749df5d762ec02cc6d960f37dbaeaf060ebaf1d5;tombi-%commit%/crates/tombi-uri'
+ [tombi-validator]='https://github.com/tombi-toml/tombi;749df5d762ec02cc6d960f37dbaeaf060ebaf1d5;tombi-%commit%/crates/tombi-validator'
+ [tombi-version-sort]='https://github.com/tombi-toml/tombi;749df5d762ec02cc6d960f37dbaeaf060ebaf1d5;tombi-%commit%/crates/tombi-version-sort'
+ [tombi-x-keyword]='https://github.com/tombi-toml/tombi;749df5d762ec02cc6d960f37dbaeaf060ebaf1d5;tombi-%commit%/crates/tombi-x-keyword'
+)
+
+inherit cargo distutils-r1 pypi
+
+DESCRIPTION="Format your pyproject.toml file"
+HOMEPAGE="
+ https://github.com/tox-dev/toml-fmt/
+ https://pypi.org/project/pyproject-fmt/
+"
+SRC_URI+="
+ ${CARGO_CRATE_URIS}
+ https://github.com/gentoo-crate-dist/toml-fmt/releases/download/pyproject-fmt%2F${PV}/toml-fmt-${P}-crates.tar.xz
+"
+
+LICENSE="MIT"
+# Dependent crate licenses
+LICENSE+="
+ Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD ISC MIT MPL-2.0
+ Unicode-3.0 ZLIB
+"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ ~dev-python/toml-fmt-common-1.2.0[${PYTHON_USEDEP}]
+"
+# tox is called as a subprocess, to get targets from tox.ini
+BDEPEND="
+ test? (
+ dev-python/tox
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-mock )
+distutils_enable_tests pytest
+
+QA_FLAGS_IGNORED="usr/lib/py.*/site-packages/pyproject_fmt/_lib.*.so"
+
+src_unpack() {
+ pypi_src_unpack
+ cargo_src_unpack
+}
+
+src_prepare() {
+ distutils-r1_src_prepare
+ sed -i -e '/strip/d' pyproject.toml || die
+}
+
+python_test_all() {
+ # default features cause linking errors because they make pyo3
+ # wrongly assume it's compiling a Python extension
+ # https://github.com/tox-dev/toml-fmt/issues/23
+ cargo_src_test --no-default-features
+}
diff --git a/dev-python/pytest-regressions/Manifest b/dev-python/pytest-regressions/Manifest
index edddc9aef0e8..205cc89f0d52 100644
--- a/dev-python/pytest-regressions/Manifest
+++ b/dev-python/pytest-regressions/Manifest
@@ -1,3 +1,5 @@
+DIST pytest_regressions-2.10.0.tar.gz 115513 BLAKE2B 0f532f31033f0f8b2173068b7cacb5577e094b30a4c27c60445516fb09c470ece93f0b73141b1a7d55d33599c7af9b2405a2c5f781bb56193e8c8f05994f478a SHA512 2d815efd0d2d652189b46ea885d05c9939b849f0e29532b4418e7edce5ba1bab888ead06dde5ef03f74a357da00f5202b1ed15d4320c42d57d2f55c1229b6ccf
+DIST pytest_regressions-2.10.0.tar.gz.provenance 9449 BLAKE2B a22ab9546334566f32a9f1f3776626c0c801b87d224a2d600cdb3cf9d7ade1af188a99cc1eb4234327264e7a1e05463b4dd71df186e5f83494a5040ba9849761 SHA512 aed8ee5469fd94d6cbb27a76f9e93432347b7d608158b9176d6d2103105ca9bf17db9f87ef4a2eb2890d57c27d4a88dc3d6fac36fac933a0701b4d6069b91fbb
DIST pytest_regressions-2.8.3.tar.gz 117168 BLAKE2B e47121216fa3d2212eaac14c479ffcdd0c84d960f9b8e81d7720da2cb0bca3f34f5c632e2732a317a56c6ac60329bd66c8dfdea9460920e6dac2b5cf4e7108a4 SHA512 67edda9b0e0cc2ed7526a00b5cf45057307bee7dd7bf82b79c2d1e06a7ccef7a4b9787938322ab0aec52f11865a73f23bbcc1d7b9f7d162a77e63e94bb89b8c3
DIST pytest_regressions-2.8.3.tar.gz.provenance 9801 BLAKE2B d2257b1c64b91031d46537f801ebe6f0cf1041cd32aafea347f67b5508bf9bd2af0dfee18ec87b356003d8b59a50ec4c0097993bf08331b0ad044202bfb0e396 SHA512 d658957c78dddf74159bde3d8fad6ee61e6ac2e493a190a76f009827f16c65c58a44a8f78402c3f632d60bd50069fcb26430333fa04c0b5aa1f1063c6acb73de
DIST pytest_regressions-2.9.0.tar.gz 115110 BLAKE2B 45272956929730ce2d0c35115f5fe77dff0c18695e7dbae1cb573a9d4696e71b759b3117995b25aecaa6f30eb0ac34b88820e6d9be490ad43c8e7fd544ef0984 SHA512 1e47859ff2823fc80f9514831079df4746d574c3e18b12264141a8e5c0251adca6bce855bd11ec6c8ba04e2fde10c5ab7a334c6329c069339e0fb7e6df350e06
diff --git a/dev-python/pytest-regressions/pytest-regressions-2.10.0.ebuild b/dev-python/pytest-regressions/pytest-regressions-2.10.0.ebuild
new file mode 100644
index 000000000000..7f579bc2ab75
--- /dev/null
+++ b/dev-python/pytest-regressions/pytest-regressions-2.10.0.ebuild
@@ -0,0 +1,72 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_VERIFY_REPO=https://github.com/ESSS/pytest-regressions
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Easy to use fixtures to write regression tests"
+HOMEPAGE="
+ https://github.com/ESSS/pytest-regressions/
+ https://pypi.org/project/pytest-regressions/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ dev-python/pytest[${PYTHON_USEDEP}]
+ >=dev-python/pytest-datadir-1.7.0[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGIN_LOAD_VIA_ENV=1
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+distutils_enable_sphinx doc dev-python/sphinx-rtd-theme
+
+python_test() {
+ local EPYTEST_DESELECT=()
+ local EPYTEST_IGNORE=()
+ if ! has_version "dev-python/matplotlib[${PYTHON_USEDEP}]"; then
+ EPYTEST_DESELECT+=(
+ tests/test_image_regression.py::test_image_regression
+ )
+ fi
+ if ! has_version "dev-python/numpy[${PYTHON_USEDEP}]"; then
+ EPYTEST_IGNORE+=(
+ tests/test_ndarrays_regression.py
+ )
+ fi
+ if ! has_version "dev-python/pandas[${PYTHON_USEDEP}]"; then
+ EPYTEST_DESELECT+=(
+ tests/test_filenames.py::test_foo
+ tests/test_filenames.py::TestClass::test_foo
+ tests/test_filenames.py::TestClassWithIgnoredName::test_foo
+ )
+ EPYTEST_IGNORE+=(
+ tests/test_dataframe_regression.py
+ tests/test_num_regression.py
+ )
+ fi
+ if ! has_version "dev-python/pillow[${PYTHON_USEDEP}]"; then
+ EPYTEST_DESELECT+=(
+ tests/test_image_regression.py
+ )
+ fi
+
+ if [[ ${EPYTHON} == python3.14* ]] ; then
+ EPYTEST_DESELECT+=(
+ # Sensitive to warnings
+ tests/test_data_regression.py::test_regen_all
+ )
+ fi
+
+ local EPYTEST_PLUGINS=( pytest-{datadir,regressions} )
+ epytest
+}
diff --git a/dev-python/python-pskc/Manifest b/dev-python/python-pskc/Manifest
new file mode 100644
index 000000000000..aa94db973d31
--- /dev/null
+++ b/dev-python/python-pskc/Manifest
@@ -0,0 +1 @@
+DIST python_pskc-1.4.tar.gz 138221 BLAKE2B b58eea688007ff1fc8895aafc249ef1e5ab97e797ab2ce8c928cc33f58e87068ab09088f2033af8b2bbea719dc82bf2fce98a3c0206c991938e7569f3bc94d2d SHA512 e2e1999dc108936b91d19b015a446387db11d8d166a2e25a151da0080bd68f91bf701bab1ff02e04862da95991a8d399fbe0389483788451f1d7fcd588df2c06
diff --git a/dev-python/python-pskc/metadata.xml b/dev-python/python-pskc/metadata.xml
new file mode 100644
index 000000000000..4189a8cd9466
--- /dev/null
+++ b/dev-python/python-pskc/metadata.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>mario.haustein@hrz.tu-chemnitz.de</email>
+ <name>Mario Haustein</name>
+ </maintainer>
+ <maintainer type="project">
+ <email>proxy-maint@gentoo.org</email>
+ <name>Proxy Maintainers</name>
+ </maintainer>
+
+ <origin>gentoo-staging</origin>
+ <stabilize-allarches/>
+</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/python-pskc/python-pskc-1.4.ebuild b/dev-python/python-pskc/python-pskc-1.4.ebuild
new file mode 100644
index 000000000000..80ae2c970ef9
--- /dev/null
+++ b/dev-python/python-pskc/python-pskc-1.4.ebuild
@@ -0,0 +1,42 @@
+# Copyright 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
+
+DESCRIPTION="Python module for handling Portable Symmetric Key Container files"
+HOMEPAGE="
+ https://pypi.org/project/python-pskc/
+ https://arthurdejong.org/python-pskc/
+ https://github.com/arthurdejong/python-pskc
+"
+
+if [[ ${PV} == "9999" ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://arthurdejong.org/git/python-pskc"
+else
+ inherit pypi
+ KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv"
+fi
+
+LICENSE="LGPL-2.1+"
+SLOT="0"
+
+RDEPEND="
+ dev-python/cryptography[${PYTHON_USEDEP}]
+ dev-python/python-dateutil[${PYTHON_USEDEP}]
+ dev-python/defusedxml[${PYTHON_USEDEP}]
+ dev-python/signxml[${PYTHON_USEDEP}]
+"
+
+src_prepare() {
+ default
+
+ sed -i -e "s/ --cov=pskc --cov-report=term-missing:skip-covered --cov-report=html//" "${S}/setup.cfg" || die
+}
+
+distutils_enable_tests pytest
diff --git a/dev-python/python-pskc/python-pskc-9999.ebuild b/dev-python/python-pskc/python-pskc-9999.ebuild
new file mode 100644
index 000000000000..80ae2c970ef9
--- /dev/null
+++ b/dev-python/python-pskc/python-pskc-9999.ebuild
@@ -0,0 +1,42 @@
+# Copyright 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
+
+DESCRIPTION="Python module for handling Portable Symmetric Key Container files"
+HOMEPAGE="
+ https://pypi.org/project/python-pskc/
+ https://arthurdejong.org/python-pskc/
+ https://github.com/arthurdejong/python-pskc
+"
+
+if [[ ${PV} == "9999" ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://arthurdejong.org/git/python-pskc"
+else
+ inherit pypi
+ KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv"
+fi
+
+LICENSE="LGPL-2.1+"
+SLOT="0"
+
+RDEPEND="
+ dev-python/cryptography[${PYTHON_USEDEP}]
+ dev-python/python-dateutil[${PYTHON_USEDEP}]
+ dev-python/defusedxml[${PYTHON_USEDEP}]
+ dev-python/signxml[${PYTHON_USEDEP}]
+"
+
+src_prepare() {
+ default
+
+ sed -i -e "s/ --cov=pskc --cov-report=term-missing:skip-covered --cov-report=html//" "${S}/setup.cfg" || die
+}
+
+distutils_enable_tests pytest
diff --git a/dev-python/python-tlsh/Manifest b/dev-python/python-tlsh/Manifest
index 6fc86ca17aeb..0c9b0e709bce 100644
--- a/dev-python/python-tlsh/Manifest
+++ b/dev-python/python-tlsh/Manifest
@@ -1 +1,2 @@
+DIST tlsh-4.12.1.gh.tar.gz 10243609 BLAKE2B 96095f897ff68e4e6c738b7df2d11963003b360db2354674803aa68e5b76f25b28cdf3ef9d376f046ab0a2b7663d1e4efe77f1ed6594c3e7692aef614b25c987 SHA512 82d6971baacdede7b4e4fd282d861d264e4ae196d1b5f3ea26648e93c0f0884b90bf9cab4dd1cc0f36fd00fb2e2ca3db8128769725a8858c5fcf48c192f33c45
DIST tlsh-4.8.2.gh.tar.gz 3345458 BLAKE2B 27d5eece16bb36225b9ae8b3d3a9d055a0f214fffae08a58c39211c3d918dd842497315a62237b291ee1055dfadad78826bbd24f7b9d88f510e9a31f74654039 SHA512 5355c7734f5356a3a7a31ccc078254835871fc0369f1889a34131a0f810735201c68f674eb18e975b6a03a32e5c284899ca9ffdc1f583e42192188c172d2aad0
diff --git a/dev-python/python-tlsh/files/python-tlsh-4.12.1-tlshmodule.patch b/dev-python/python-tlsh/files/python-tlsh-4.12.1-tlshmodule.patch
new file mode 100644
index 000000000000..3c134e0b5b7c
--- /dev/null
+++ b/dev-python/python-tlsh/files/python-tlsh-4.12.1-tlshmodule.patch
@@ -0,0 +1,11 @@
+--- a/tlshmodule.cpp
++++ b/tlshmodule.cpp
+@@ -59,7 +59,7 @@
+ #include <Python.h>
+ #include <new>
+ #include <bytesobject.h>
+-#include "tlsh.h"
++#include <tlsh/tlsh.h>
+
+ // to generate the "T1" hashes introduced in TLSH 4.0.0
+ // see 4.0.0 from 26/Mar/2020 at https://github.com/trendmicro/tlsh/blob/master/Change_History.md
diff --git a/dev-python/python-tlsh/python-tlsh-4.12.1.ebuild b/dev-python/python-tlsh/python-tlsh-4.12.1.ebuild
new file mode 100644
index 000000000000..722cd5811a00
--- /dev/null
+++ b/dev-python/python-tlsh/python-tlsh-4.12.1.ebuild
@@ -0,0 +1,38 @@
+# Copyright 2022-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
+
+MY_P=tlsh-${PV}
+DESCRIPTION="Fuzzy matching library - C++ extension for Python"
+HOMEPAGE="
+ https://github.com/trendmicro/tlsh/
+ https://pypi.org/project/python-tlsh/
+"
+SRC_URI="
+ https://github.com/trendmicro/tlsh/archive/${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}/py_ext
+
+LICENSE="|| ( Apache-2.0 BSD )"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x86"
+
+DEPEND="dev-libs/tlsh"
+RDEPEND="${DEPEND}"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-4.8.2-setup-sources.patch
+ "${FILESDIR}"/${P}-tlshmodule.patch
+)
+
+python_test() {
+ ../Testing/python_test.sh "${EPYTHON}" || die
+}
diff --git a/dev-python/qtconsole/Manifest b/dev-python/qtconsole/Manifest
index ffbb62345273..f64aad833651 100644
--- a/dev-python/qtconsole/Manifest
+++ b/dev-python/qtconsole/Manifest
@@ -1,3 +1,3 @@
-DIST qtconsole-5.5.2.tar.gz 439219 BLAKE2B f354d3e6132142a3da52a1cb6b290d0a07b13920bc9f33f7fb29eb307cc5b653beccc5d28e53f7cbe7483147adb6e34ffc584718a79b814c9ce2c37b57a768fc SHA512 f79e51903fe5a1164a90c0905c308d2bce066bef2c61fed2b5bb7e757a9cf56875cdd14665df9284317497cd73bb544ae09e0b23c63b527bbd4bc90b874009f6
DIST qtconsole-5.6.1.tar.gz 435808 BLAKE2B 74476bfa85e08dfdd3bb0595531253638957024a2a5c9ec16e5eefa3677cf57756ddacdbf21405e93da1b5101bb4a354970ef86c786db02c52ca92e40877bbc0 SHA512 1bc2cf75019186ad439033ca7e262fb0e3172336b15573fec1da4925830c26f33117229f7552cdd26a3691b0c9facaf0073c640aea8098c3599aed38e7621392
DIST qtconsole-5.7.0.tar.gz 436635 BLAKE2B fac7cff969337f4f2d7f7450e91f15761512017e209a1a61f38fbc1da5007a7df0e48f801336002ee123889dc1af41fdc001b4ed579ac4264c1dc1ae4219da3e SHA512 597d977d0dcd4895fc1ad0adfdfde6acad8a50ee0d94a9747b5cdfef5b9a43af5aa105c866a06ccddf059b67ec09bbb963f6189aa0336e56e41d918950c030c8
+DIST qtconsole-5.7.1.tar.gz 436262 BLAKE2B 545e615fa2799a31d726030809cc82c981611521610eda195093938f280bbdf38734d35598375ed89dcd40d6041a49179e8cad2765d2b582e6ffc7d95ad2bf1a SHA512 ac4d1004738f3588fc5cf5bc1def5312f36af25f4b327a449e7a61987fc8b3f4060def28a3d0ffc20fd52b49c63c20be087e25ffe633e7dc03065d23c05365e5
diff --git a/dev-python/qtconsole/qtconsole-5.5.2.ebuild b/dev-python/qtconsole/qtconsole-5.7.1.ebuild
index e06fb3d5a4ce..ed7e4c7dd231 100644
--- a/dev-python/qtconsole/qtconsole-5.5.2.ebuild
+++ b/dev-python/qtconsole/qtconsole-5.7.1.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
@@ -11,14 +11,14 @@ inherit distutils-r1 pypi virtualx
DESCRIPTION="Qt-based console for Jupyter with support for rich media output"
HOMEPAGE="
- https://jupyter.org/
- https://github.com/jupyter/qtconsole/
+ https://www.spyder-ide.org/
+ https://github.com/spyder-ide/qtconsole/
https://pypi.org/project/qtconsole/
"
LICENSE="BSD"
SLOT="0"
-KEYWORDS="amd64 ~arm arm64 ~loong ~riscv x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~riscv ~x86"
RDEPEND="
>=dev-python/ipykernel-4.1[${PYTHON_USEDEP}]
@@ -26,14 +26,11 @@ RDEPEND="
>=dev-python/jupyter-client-4.1.1[${PYTHON_USEDEP}]
dev-python/packaging[${PYTHON_USEDEP}]
dev-python/pygments[${PYTHON_USEDEP}]
- >=dev-python/pyzmq-17.1[${PYTHON_USEDEP}]
>=dev-python/traitlets-5.2.2_p1[${PYTHON_USEDEP}]
>=dev-python/qtpy-2.4.0[${PYTHON_USEDEP},gui,printsupport,svg]
"
BDEPEND="
test? (
- dev-python/flaky[${PYTHON_USEDEP}]
- dev-python/pytest-qt[${PYTHON_USEDEP}]
dev-python/qtpy[${PYTHON_USEDEP},svg,testlib]
)
"
@@ -43,8 +40,20 @@ PDEPEND="
"
distutils_enable_sphinx docs/source dev-python/sphinx-rtd-theme
+
+EPYTEST_PLUGINS=( pytest-{asyncio,qt} )
+EPYTEST_RERUNS=10
distutils_enable_tests pytest
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # remove upstream marks to let us override rerun count
+ # (this test suite is extremely flaky)
+ # https://github.com/pytest-dev/pytest-rerunfailures/issues/306
+ sed -i -e '/pytest\.mark\.flaky/d' qtconsole/tests/*.py || die
+}
+
src_test() {
virtx distutils-r1_src_test
}
diff --git a/dev-python/signxml/Manifest b/dev-python/signxml/Manifest
new file mode 100644
index 000000000000..91fb65b117ff
--- /dev/null
+++ b/dev-python/signxml/Manifest
@@ -0,0 +1 @@
+DIST signxml-4.2.2.tar.gz 1611966 BLAKE2B 65249e3ed854ae1a45bf625a7965d66c41eee524e303f550f4835953afdc61e4d3140450b8a2876edc796ca87b5c19bac5230792a003e29ad7315d955ea95ff9 SHA512 60c955e8bb53f958cf3b28ced816d34f5182adbe1b7a27eee4717af3b04426c0353219e07d5277f78a7bdb30c7f0d5ff29d90503d0f53f6d334396f8d26e995b
diff --git a/dev-python/signxml/metadata.xml b/dev-python/signxml/metadata.xml
new file mode 100644
index 000000000000..4189a8cd9466
--- /dev/null
+++ b/dev-python/signxml/metadata.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>mario.haustein@hrz.tu-chemnitz.de</email>
+ <name>Mario Haustein</name>
+ </maintainer>
+ <maintainer type="project">
+ <email>proxy-maint@gentoo.org</email>
+ <name>Proxy Maintainers</name>
+ </maintainer>
+
+ <origin>gentoo-staging</origin>
+ <stabilize-allarches/>
+</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/signxml/signxml-4.2.2.ebuild b/dev-python/signxml/signxml-4.2.2.ebuild
new file mode 100644
index 000000000000..f3b6d5b00d59
--- /dev/null
+++ b/dev-python/signxml/signxml-4.2.2.ebuild
@@ -0,0 +1,40 @@
+# Copyright 2025-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="Python XML Signature and XAdES library"
+HOMEPAGE="
+ https://pypi.org/project/signxml/
+ https://github.com/XML-Security/signxml
+"
+
+if [[ ${PV} == "9999" ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/XML-Security/signxml.git"
+else
+ inherit pypi
+ KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv"
+fi
+
+LICENSE="Apache-2.0"
+SLOT="0"
+IUSE="test"
+
+RDEPEND="
+ >=dev-python/lxml-5[${PYTHON_USEDEP}]
+ <dev-python/lxml-7[${PYTHON_USEDEP}]
+ >=dev-python/cryptography-43[${PYTHON_USEDEP}]
+ >=dev-python/certifi-2023.11.17[${PYTHON_USEDEP}]
+"
+
+RESTRICT="!test? ( test )"
+
+python_test() {
+ "${EPYTHON}" test/test.py -v || die
+}
diff --git a/dev-python/signxml/signxml-9999.ebuild b/dev-python/signxml/signxml-9999.ebuild
new file mode 100644
index 000000000000..1ac24209b894
--- /dev/null
+++ b/dev-python/signxml/signxml-9999.ebuild
@@ -0,0 +1,40 @@
+# Copyright 2025-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="Python XML Signature and XAdES library"
+HOMEPAGE="
+ https://pypi.org/project/signxml/
+ https://github.com/XML-Security/signxml
+"
+
+if [[ ${PV} == "9999" ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/XML-Security/signxml.git"
+else
+ inherit pypi
+ KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv"
+fi
+
+LICENSE="Apache-2.0"
+SLOT="0"
+IUSE="test"
+
+RDEPEND="
+ >=dev-python/lxml-5[${PYTHON_USEDEP}]
+ <dev-python/lxml-6[${PYTHON_USEDEP}]
+ >=dev-python/cryptography-43[${PYTHON_USEDEP}]
+ >=dev-python/certifi-2023.11.17[${PYTHON_USEDEP}]
+"
+
+RESTRICT="!test? ( test )"
+
+python_test() {
+ "${EPYTHON}" test/test.py -v || die
+}
diff --git a/dev-python/trimesh/Manifest b/dev-python/trimesh/Manifest
index 7f3900c450d1..8ba315c3db54 100644
--- a/dev-python/trimesh/Manifest
+++ b/dev-python/trimesh/Manifest
@@ -1,3 +1,4 @@
DIST trimesh-4.10.1.gh.tar.gz 13705595 BLAKE2B 3bc4308f69c767988ce0d4e6df7e07892373bcc276002c5425379a04cdd561031a171be8fb4b08ede6a55aa4a89eb9cbb8631fb5bb7c2a33ae2abcc123a60eec SHA512 28ce90a55f93dd2a6af38d576e7531457f80b22007eb76dee96c9691ab60c6cefb9980f67bb6c0f859de43d142b124a54c55c80822dddf367be90f414e01a49e
DIST trimesh-4.11.0.gh.tar.gz 13708336 BLAKE2B fe8becf5f5b8e581649eb9e3ca387a28371849019f8a5654b68c3df994ec49fd9de107f1f8388ccbd30daf4bab146b9441d98696bac947a2c9cadc3df6617aad SHA512 5783b6b4e57de23d5020b2b062ab97363aafc90fecc3fb34b405ffee0efd9c831193f6ca0f7be81eb85a4c0231ef7fb6faa5cd43ed078188d1e8c47f0735ab4e
DIST trimesh-4.11.1.gh.tar.gz 13707913 BLAKE2B 210748520e8d99a93a07eab8c89df720a2845a0eacded90c0d2651481acf494f23272e9b6ecaee444e5350f7bc66d3779f90904d88dfb254ae170f641654b985 SHA512 68d58a365ad7c3ee4e23b569a1594f13ef9e5ecaf3dd5f17a67c476909b31988fa4d3cf58ede5ea507f9e3e12e67260aed2e3511419f85f6c7ff87afb52baf07
+DIST trimesh-4.11.2.gh.tar.gz 13707855 BLAKE2B 8f38cd10fa2910c21c521eaec04e860853d61e2b5d0ce8a3d66056ac53ff2985943dea82d9bcb6c913c00e05b9fe28d5173dff5c981b36b2812c9ecbd28a8335 SHA512 4b76a85f2fc27a2fabbe5a1f284d39a7edd8df5d2e085e7a42ea5b5d1484c17c02d1b774416fb31d81a963b06003d5c4847881f9ed5653bb1921cefa0ae78c8d
diff --git a/dev-python/trimesh/trimesh-4.11.2.ebuild b/dev-python/trimesh/trimesh-4.11.2.ebuild
new file mode 100644
index 000000000000..8d2e8edbe674
--- /dev/null
+++ b/dev-python/trimesh/trimesh-4.11.2.ebuild
@@ -0,0 +1,88 @@
+# 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 optfeature
+
+DESCRIPTION="Python library for loading and using triangular meshes"
+HOMEPAGE="
+ https://trimesh.org/
+ https://github.com/mikedh/trimesh/
+ https://pypi.org/project/trimesh/
+"
+SRC_URI="
+ https://github.com/mikedh/${PN}/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="
+ dev-python/charset-normalizer[${PYTHON_USEDEP}]
+ dev-python/colorlog[${PYTHON_USEDEP}]
+ dev-python/httpx[${PYTHON_USEDEP}]
+ dev-python/jsonschema[${PYTHON_USEDEP}]
+ dev-python/lxml[${PYTHON_USEDEP}]
+ dev-python/networkx[${PYTHON_USEDEP}]
+ >=dev-python/numpy-1.20[${PYTHON_USEDEP}]
+ dev-python/pillow[${PYTHON_USEDEP}]
+ dev-python/pycollada[${PYTHON_USEDEP}]
+ dev-python/pyglet[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/scipy[${PYTHON_USEDEP}]
+ >=dev-python/shapely-1.8.2[${PYTHON_USEDEP}]
+ dev-python/svg-path[${PYTHON_USEDEP}]
+ dev-python/sympy[${PYTHON_USEDEP}]
+ dev-python/xxhash[${PYTHON_USEDEP}]
+ dev-python/rtree[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/mapbox-earcut[${PYTHON_USEDEP}]
+ dev-python/pillow[webp,${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_DESELECT=(
+ # requires manifold3d
+ tests/test_boolean.py::test_multiple_difference
+ # timing nonsense
+ tests/test_bounds.py::BoundsTest::test_obb_mesh_large
+)
+EPYTEST_IGNORE=(
+ # require pyinstrument
+ tests/test_sweep.py
+)
+
+EPYTEST_PLUGINS=()
+: ${EPYTEST_TIMEOUT:=300}
+EPYTEST_RERUNS=3
+EPYTEST_XDIST=1
+
+distutils_enable_tests pytest
+
+python_test() {
+ # We run tests in parallel, so avoid having n^2 threads in lapack
+ # tests.
+ local -x BLIS_NUM_THREADS=1
+ local -x MKL_NUM_THREADS=1
+ local -x OMP_NUM_THREADS=1
+ local -x OPENBLAS_NUM_THREADS=1
+
+ epytest
+}
+
+pkg_postinst() {
+ optfeature_header "${PN} functionality can be extended by installing the following packages:"
+ optfeature "making GUI applications with 3D stuff" dev-python/glooey
+ optfeature "2D triangulations of polygons" dev-python/mapbox-earcut
+ optfeature "loading a number of additional mesh formats" dev-python/meshio
+ optfeature "figuring out how much memory we have" dev-python/psutil
+ optfeature "marching cubes and other nice stuff" dev-python/scikit-image
+}
diff --git a/dev-python/typer/Manifest b/dev-python/typer/Manifest
index 40301d63bac4..ff5feef12fe9 100644
--- a/dev-python/typer/Manifest
+++ b/dev-python/typer/Manifest
@@ -1,6 +1,2 @@
-DIST typer-0.20.0.tar.gz 106492 BLAKE2B 2efc70beced0f7c29e2b31b997cafc27932048d845b902045eb444af14f290395556e10cc42d4ca33032e2f3763c4de03395e61e384b4977f81c846417e4b97d SHA512 441afc25267bb998674e63075a3ff1b3a2835601c4ea8b8693520037b132d34b96c8901fafea58938b7a7d19630c11a8f58ea58d5f36f53fdd9db38636296fe9
-DIST typer-0.20.0.tar.gz.provenance 9125 BLAKE2B a4ad62d4913fd31b565e8ac9e6ad128df8789451341565ae4f4240276074dad4202d5468af3ec7f15e7cf5e099d01b4d357cf06a0294d1a6b28c392da82f66fb SHA512 4c351c9ae252290cfa83cd9ae70ea74f7be9cc3c97fc6bb306d7c678763a50bdda0c34eedbf81246f69be77f0ad1fd28de15730d348c7c0a947efc41db27f50b
-DIST typer-0.20.1.tar.gz 105968 BLAKE2B 40f354116d0116062568debadb3f403a1a36437e0c1f465d97489900e8f02e75d8d5acd83452a524a9f2e434008ab9d870a310691c98aa4305a9aa84f909ee57 SHA512 f77b35b648c020fa0ac748502c6ec2273a8952aba997e1363163c4f754e4c992fa183208bd82a5b533a3b415659340f77b757668494f47f39b8077e5e30c80e9
-DIST typer-0.20.1.tar.gz.provenance 9411 BLAKE2B 0249c5b7111a2fc631b1624e2573a96648561ef11e121e593f51c49bd59ec69fb15105f26688df8e479253c67ee654c4dbfaa0191e81b1c2e5e94cbdba91bd31 SHA512 cc88c2661ee8228e52bbb290a96cda36c61ca97e5deb9ed61d4aad73e21f56a1f8293f6f3affc688e241c206457534ba1fbb9c1e0ac63af6027def0c370dcacf
DIST typer-0.21.0.tar.gz 106781 BLAKE2B 12d426b0a4fe7b515adfdb66b9d45b97ea8df540607462cd0fff5e40ccd8eee6965bc36a5f85aa7a3d373f11f5e083a9ef0beea51c3869a331bc75e3c871b3e6 SHA512 2cbcb31fa98e4c18a62a598b04dce584d9f63b92bf4d0b1376aaa24e327e33b383f6fa840870f37cf7a4e9f35e159c6b9eb570870c1008d97ce2acee0d87346c
DIST typer-0.21.0.tar.gz.provenance 9031 BLAKE2B 99ff1f36faba9fdf49bd52ca84e0aab67741e56d8cb4ead915ca436cb36b47a871886af7c414c27b2eb08a1d7ea8dbdb0468f1bd3393d8b653b693b881d7672a SHA512 75088b0d6076cc5eb4c5587074d2f6bc7e93551d634b79a3aa064e375970c4e0c99b2931e9bb8c2a70f7f9299d5dd8d8085cb697baa65ff02c68c2e306832b26
diff --git a/dev-python/typer/typer-0.20.0.ebuild b/dev-python/typer/typer-0.20.0.ebuild
deleted file mode 100644
index 2c26730b71a3..000000000000
--- a/dev-python/typer/typer-0.20.0.ebuild
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright 2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=pdm-backend
-PYPI_VERIFY_REPO=https://github.com/fastapi/typer
-PYTHON_COMPAT=( python3_{10..14} )
-
-inherit distutils-r1 shell-completion pypi
-
-DESCRIPTION="Build great CLIs. Easy to code. Based on Python type hints"
-HOMEPAGE="
- https://typer.tiangolo.com/
- https://github.com/fastapi/typer/
- https://pypi.org/project/typer/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="amd64 ~arm arm64"
-IUSE="cli"
-
-RDEPEND="
- >=dev-python/click-8.0.0[${PYTHON_USEDEP}]
- >=dev-python/rich-10.11.0[${PYTHON_USEDEP}]
- >=dev-python/shellingham-1.3.0[${PYTHON_USEDEP}]
- >=dev-python/typing-extensions-3.7.4.3[${PYTHON_USEDEP}]
- cli? ( !dev-lang/erlang )
-"
-BDEPEND="
- test? (
- dev-python/coverage[${PYTHON_USEDEP}]
- )
-"
-
-EPYTEST_PLUGINS=()
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-src_prepare() {
- distutils-r1_src_prepare
-
- if ! use cli; then
- sed -i -e '/typer\.cli/d' pyproject.toml || die
- fi
-}
-
-python_test() {
- # See scripts/tests.sh
- local -x TERMINAL_WIDTH=3000
- local -x _TYPER_FORCE_DISABLE_TERMINAL=1
- local -x _TYPER_RUN_INSTALL_COMPLETION_TESTS=1
-
- epytest
-}
-
-python_install() {
- if use cli && [[ ! ${COMPLETIONS_INSTALLED} ]]; then
- local -x _TYPER_COMPLETE_TEST_DISABLE_SHELL_DETECTION=1
- newbashcomp - typer < <(typer --show-completion bash || die)
- newzshcomp - typer < <(typer --show-completion zsh || die)
- newfishcomp - typer < <(typer --show-completion fish || die)
- COMPLETIONS_INSTALLED=1
- fi
-
- distutils-r1_python_install
-}
diff --git a/dev-python/typer/typer-0.20.1.ebuild b/dev-python/typer/typer-0.20.1.ebuild
deleted file mode 100644
index 30af3cbe5e0b..000000000000
--- a/dev-python/typer/typer-0.20.1.ebuild
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright 2025-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=pdm-backend
-PYPI_VERIFY_REPO=https://github.com/fastapi/typer
-PYTHON_COMPAT=( python3_{10..14} )
-
-inherit distutils-r1 shell-completion pypi
-
-DESCRIPTION="Build great CLIs. Easy to code. Based on Python type hints"
-HOMEPAGE="
- https://typer.tiangolo.com/
- https://github.com/fastapi/typer/
- https://pypi.org/project/typer/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="amd64 ~arm arm64"
-IUSE="cli"
-
-RDEPEND="
- >=dev-python/click-8.0.0[${PYTHON_USEDEP}]
- >=dev-python/rich-10.11.0[${PYTHON_USEDEP}]
- >=dev-python/shellingham-1.3.0[${PYTHON_USEDEP}]
- >=dev-python/typing-extensions-3.7.4.3[${PYTHON_USEDEP}]
- cli? ( !dev-lang/erlang )
-"
-BDEPEND="
- test? (
- dev-python/coverage[${PYTHON_USEDEP}]
- )
-"
-
-EPYTEST_PLUGINS=()
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-src_prepare() {
- distutils-r1_src_prepare
-
- if ! use cli; then
- sed -i -e '/typer\.cli/d' pyproject.toml || die
- fi
-}
-
-python_test() {
- # See scripts/tests.sh
- local -x TERMINAL_WIDTH=3000
- local -x _TYPER_FORCE_DISABLE_TERMINAL=1
- local -x _TYPER_RUN_INSTALL_COMPLETION_TESTS=1
-
- epytest
-}
-
-python_install() {
- if use cli && [[ ! ${COMPLETIONS_INSTALLED} ]]; then
- local -x _TYPER_COMPLETE_TEST_DISABLE_SHELL_DETECTION=1
- newbashcomp - typer < <(typer --show-completion bash || die)
- newzshcomp - typer < <(typer --show-completion zsh || die)
- newfishcomp - typer < <(typer --show-completion fish || die)
- COMPLETIONS_INSTALLED=1
- fi
-
- distutils-r1_python_install
-}
diff --git a/dev-python/uv-build/Manifest b/dev-python/uv-build/Manifest
index 6aab20359c12..072430136e0d 100644
--- a/dev-python/uv-build/Manifest
+++ b/dev-python/uv-build/Manifest
@@ -1,4 +1,5 @@
DIST uv_build-0.10.0.tar.gz 361570 BLAKE2B e94909f789b4f09b407b2441261c60235d9e4572c3cf71e9947fb285fea1240be90faa9edf0a8a6fc9b0992103a0c99c7edcf32d969267482f63a354a2f00b94 SHA512 c053b31df98966b1e2d327d912d610f7844fe98565ab0f396cf87c3f9cfcafcad142fc6999d23afa7a5819a69995195d9ed65f76d6179a890c842db6e8e2aebb
+DIST uv_build-0.10.2.tar.gz 361619 BLAKE2B 846ebd454b8f9ec126bb25671c39e75b6f22b0ec60ccc7cd0775ef84df0ed8ba9cad94d343538def6c5ebfa142df60bc502ee732017f0d5abbd53392747d9c6c SHA512 fee7ddb7eedc2490eed4240120b6541b6d4b247dd428e8e6844895880d4ed8310dc90a5a0805ee77a5ea179b753212719cf9e2be9baad19c5661e7df50d84f34
DIST uv_build-0.9.15.tar.gz 354021 BLAKE2B a47350ead8d9672d09967bbd7f9ac2f8e231e1dd5afb8c20e59926429792d3872feb1f8e4d7a9318ec447a99ce8add0503dfba0be2b970b2f192f954b472f1a7 SHA512 11fa1ebb1cfc184bd5bedf5e11fb28f14abf118183d94cbe0ac9a1b83f150a69836f0547a671e8cf16527d84ec61dd5b2983efafe5aeccd86e94cda79e1de664
DIST uv_build-0.9.21.tar.gz 357539 BLAKE2B 721e12e0260301d3234f3fbc76d5944c9b15e14b345876d3f231314f64f15c5e6c37c8c7155e24605c928dbe52b12b3b02cd2f0a1373b8d93b017f2c122ddf19 SHA512 1e2885f978fa45e1481a72a35d5734ef80d3ab7da0213fc41cad8c4e49756bf0b172cea570d25a6b0461c6dd13fead8a8fae356b11ec758f8bd7b915faa322c4
DIST uv_build-0.9.25.tar.gz 359005 BLAKE2B b0c8307919092aa0abbca7da379efd315f54c4d70c066633a3524fb1a78fcff0831e071086050b240536a123d965706337f09c716814e5655c9051cd4d879a19 SHA512 601eea260c615b6102c0e6a766d7c5fd0585c72005fb813a22cdc3f568c2f57042f72d3d16822f1c1773e1f9e8580d1f77b1e73b940a026c0a8e8783ef817f7b
diff --git a/dev-python/uv-build/uv-build-0.10.2.ebuild b/dev-python/uv-build/uv-build-0.10.2.ebuild
new file mode 100644
index 000000000000..639745396c25
--- /dev/null
+++ b/dev-python/uv-build/uv-build-0.10.2.ebuild
@@ -0,0 +1,99 @@
+# 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_{10..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 ~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}/
+uv_build-${PV}/README.md
+uv_build-${PV}/pyproject.toml
+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 f165676e67bf..0bce067e2022 100644
--- a/dev-python/uv/Manifest
+++ b/dev-python/uv/Manifest
@@ -1,5 +1,7 @@
DIST uv-0.10.0-crates.tar.xz 40475984 BLAKE2B 8146350fd684ac9aeadda44142b8fb0b0dd8652530de27b61100178c7095a2bd75ea4005b120dc978c468e0f896fe4a7d54ee38d86754c9e05648e05c5358ce2 SHA512 8ce9f23b552ff002b52e74ae85638b5ac139341a3045f35c4721e339590c2edc96e09614718d1278b39ea4661f36e6d1598f2b892b7e41961bb131c7352bfff1
DIST uv-0.10.0.gh.tar.gz 4924383 BLAKE2B 957a9ab408ad5f07416a76a97f23d0bb41b22a1d1ebffc6a84e41c382b8cf271094bce08be19d5649fd9866d22c75619c3561b79659c65c99fa45ea318b6bf95 SHA512 84bf1ecfa730cbb4fe4c602dba3ef3d58bf070472cde5f160291fabfdd7630fd8dcbb45b10e7abcb00db6898d5cefa8ac616c68dfa56bb15640ce6211caff51d
+DIST uv-0.10.2-crates.tar.xz 40488272 BLAKE2B 7b60ce55ac335b4f22c14e4029451e5931a52d2fbd2342d53d444a84ea50383ba79c5152b0f394d49937dd5e0d7449f92bf69fd6a32e3509f682403533eb9f8b SHA512 7fdac474d6b6cbd4ff22e40396b47edcf050ace6d7d74885c90e6833169ba2051d392b2f70f7a8dc9d12cecb7fc81102a556c5b5510cd678be996a3e90ff2e08
+DIST uv-0.10.2.gh.tar.gz 4927786 BLAKE2B bdbc9014a9362121205f12046eea0999838c9a72bf6d3cb347c51c13f92cb7b5b4524b4abcc81caac297645f2863e577981b033a4ee6a29166cd818aec06a6ad SHA512 7592217ce76cd0a418a4979df045890e215c5bcff53d18e34924e0d57ec388fc8ce56b3fdc7ee473f131de5d04a4349b1dbb9d5a585493a0cd9a22dfd51e9cfc
DIST uv-0.9.15-crates.tar.xz 46539408 BLAKE2B 57e582f56e12858292d1dfaec10292eb58fb118051618875eab0d2dcd4f55aa89de6f788b3aa5013ce5e03068bb404ef04faae633d5c208f382366ac5ddf70df SHA512 4db7549d6902682db7af385e5099e74bbd82e54aaf45a44fe64416fda91e065f4bf978b9db55ab72f2872f9e8933b49020102b959c1d2bcef4b9a9877ac1e789
DIST uv-0.9.15.gh.tar.gz 4887603 BLAKE2B 422a3c004abdf052438b145400675010b1adfc8cb8d49979367544e2d381389594188276fe603ffa983f5926be624f5d863053bd79342eeee10caf1260b2a479 SHA512 2605e2e7d5f6fdbb5ec4839363f65c8e71559944ec003cb9c69040be08094eb5c041831151b669e2dbbcf1799e862f484a21a592090524f79686469eac0e3381
DIST uv-0.9.21-crates.tar.xz 48642776 BLAKE2B 4ce225a3639d02ea05014c2132a7fd8baf53f3bd0bf3cafc6ebde144f2cea982426835f91bcb587e8dba122afe381c5a0ffa654667d4677f0b0b18b4b63a2f2e SHA512 db391109602bf1afbe868740ee977e76f92911136f61a9db8918ca89bcabdad02b75f1892cef200a370ea91829e177fd6c775aff9522f72fb90f2fc9d3acb22a
diff --git a/dev-python/uv/uv-0.10.2.ebuild b/dev-python/uv/uv-0.10.2.ebuild
new file mode 100644
index 000000000000..4bc9aace14fe
--- /dev/null
+++ b/dev-python/uv/uv-0.10.2.ebuild
@@ -0,0 +1,161 @@
+# Copyright 2024-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+CRATES="
+"
+RUST_MIN_VER="1.91.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 MPL-2.0 Unicode-3.0 Unicode-DFS-2016
+ ZLIB
+"
+# ring crate
+LICENSE+=" openssl"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~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 libz-ng-sys, tikv-jemalloc-sys?
+
+ # remove unbundled sources, just in case
+ find "${ECARGO_VENDOR}"/{bzip2,lzma,zstd}-sys-*/ -name '*.c' -delete || die
+
+ # bzip2-sys requires a pkg-config file
+ # https://github.com/alexcrichton/bzip2-rs/issues/104
+ mkdir "${T}/pkg-config" || die
+ export PKG_CONFIG_PATH=${T}/pkg-config${PKG_CONFIG_PATH+:${PKG_CONFIG_PATH}}
+ cat >> "${T}/pkg-config/bzip2.pc" <<-EOF || die
+ Name: bzip2
+ Version: 9999
+ Description:
+ Libs: -lbz2
+ EOF
+}
+
+src_configure() {
+ local myfeatures=(
+ test-git
+ test-pypi
+ test-python
+ )
+
+ cargo_src_configure --no-default-features
+}
+
+src_compile() {
+ cd crates/uv || die
+ cargo_src_compile
+}
+
+src_test() {
+ cd crates/uv || die
+ cargo_src_test --no-fail-fast
+}
+
+src_install() {
+ cd crates/uv || die
+ cargo_src_install
+
+ 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
+}