summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
authorLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2025-11-27 07:15:03 +0000
committerLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2025-11-27 07:15:03 +0000
commit4e9ac8629d6bfae6130d867aec4945020426e56a (patch)
tree54ab5a170566ba02baf0d1d22c4392be94aef760 /dev-python
parenta83f83503ca781307aec15be276de1c0b272df5a (diff)
downloadbaldeagleos-repo-4e9ac8629d6bfae6130d867aec4945020426e56a.tar.gz
baldeagleos-repo-4e9ac8629d6bfae6130d867aec4945020426e56a.tar.xz
baldeagleos-repo-4e9ac8629d6bfae6130d867aec4945020426e56a.zip
Adding metadata
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/alembic/alembic-1.17.0.ebuild2
-rw-r--r--dev-python/bitarray/bitarray-3.7.2.ebuild2
-rw-r--r--dev-python/boto3/Manifest1
-rw-r--r--dev-python/boto3/boto3-1.41.5.ebuild53
-rw-r--r--dev-python/botocore/Manifest1
-rw-r--r--dev-python/botocore/botocore-1.41.5.ebuild67
-rw-r--r--dev-python/cachetools/cachetools-6.2.1.ebuild2
-rw-r--r--dev-python/cattrs/cattrs-25.3.0.ebuild2
-rw-r--r--dev-python/cbor2/cbor2-5.7.1.ebuild2
-rw-r--r--dev-python/charset-normalizer/charset-normalizer-3.4.4-r1.ebuild45
-rw-r--r--dev-python/charset-normalizer/charset-normalizer-3.4.4.ebuild2
-rw-r--r--dev-python/charset-normalizer/metadata.xml1
-rw-r--r--dev-python/faker/faker-37.12.0.ebuild2
-rw-r--r--dev-python/frozenlist/frozenlist-1.8.0.ebuild2
-rw-r--r--dev-python/google-api-core/google-api-core-2.27.0.ebuild2
-rw-r--r--dev-python/hatchling/Manifest1
-rw-r--r--dev-python/hatchling/hatchling-1.28.0.ebuild101
-rw-r--r--dev-python/langdetect/Manifest2
-rw-r--r--dev-python/langdetect/files/langdetect-1.0.9-explicit-config.patch13
-rw-r--r--dev-python/langdetect/langdetect-1.0.9.ebuild4
-rw-r--r--dev-python/langdetect/metadata.xml10
-rw-r--r--dev-python/moto/moto-5.1.15.ebuild2
-rw-r--r--dev-python/msgpack/msgpack-1.1.2.ebuild2
-rw-r--r--dev-python/multidict/multidict-6.7.0.ebuild2
-rw-r--r--dev-python/netcdf4/netcdf4-1.7.3.ebuild2
-rw-r--r--dev-python/nuitka/Manifest5
-rw-r--r--dev-python/nuitka/nuitka-2.7.16.ebuild55
-rw-r--r--dev-python/nuitka/nuitka-2.8.1.ebuild55
-rw-r--r--dev-python/nuitka/nuitka-2.8.3.ebuild55
-rw-r--r--dev-python/nuitka/nuitka-2.8.7.ebuild (renamed from dev-python/nuitka/nuitka-2.8.4.ebuild)1
-rw-r--r--dev-python/numpy/numpy-2.3.2.ebuild2
-rw-r--r--dev-python/proto-plus/proto-plus-1.26.1-r1.ebuild2
-rw-r--r--dev-python/pydantic/Manifest2
-rw-r--r--dev-python/pydantic/pydantic-2.12.5.ebuild231
-rw-r--r--dev-python/pylsqpack/pylsqpack-0.3.23.ebuild2
-rw-r--r--dev-python/pymdown-extensions/Manifest2
-rw-r--r--dev-python/pymdown-extensions/pymdown-extensions-10.17.2.ebuild34
-rw-r--r--dev-python/pyproject-fmt/pyproject-fmt-2.11.0.ebuild2
-rw-r--r--dev-python/pyspelling/Manifest2
-rw-r--r--dev-python/pyspelling/pyspelling-2.12.1.ebuild45
-rw-r--r--dev-python/python-json-logger/python-json-logger-4.0.0.ebuild2
-rw-r--r--dev-python/python-tests/python-tests-3.11.14.ebuild2
-rw-r--r--dev-python/python-xmp-toolkit/Manifest1
-rw-r--r--dev-python/python-xmp-toolkit/python-xmp-toolkit-2.1.0.ebuild31
-rw-r--r--dev-python/rdflib/rdflib-7.3.0.ebuild2
-rw-r--r--dev-python/regex/regex-2025.10.23.ebuild2
-rw-r--r--dev-python/rpds-py/rpds-py-0.28.0.ebuild2
-rw-r--r--dev-python/setuptools-scm/setuptools-scm-9.2.2.ebuild2
-rw-r--r--dev-python/sigstore-models/Manifest1
-rw-r--r--dev-python/sigstore-models/sigstore-models-0.0.6.ebuild31
-rw-r--r--dev-python/spotipy/Manifest1
-rw-r--r--dev-python/spotipy/spotipy-2.25.2.ebuild49
-rw-r--r--dev-python/spyder-notebook/Manifest1
-rw-r--r--dev-python/spyder-notebook/spyder-notebook-0.7.1.ebuild58
-rw-r--r--dev-python/spyder/Manifest1
-rw-r--r--dev-python/spyder/spyder-6.1.1.ebuild208
-rw-r--r--dev-python/translate-toolkit/Manifest2
-rw-r--r--dev-python/translate-toolkit/translate-toolkit-3.15.6.ebuild126
-rw-r--r--dev-python/translate-toolkit/translate-toolkit-3.16.2.ebuild127
-rw-r--r--dev-python/uv-build/Manifest1
-rw-r--r--dev-python/uv-build/uv-build-0.9.13.ebuild99
-rw-r--r--dev-python/uv/Manifest2
-rw-r--r--dev-python/uv/uv-0.9.13.ebuild167
63 files changed, 1269 insertions, 469 deletions
diff --git a/dev-python/alembic/alembic-1.17.0.ebuild b/dev-python/alembic/alembic-1.17.0.ebuild
index 80155a232d38..a3404f013739 100644
--- a/dev-python/alembic/alembic-1.17.0.ebuild
+++ b/dev-python/alembic/alembic-1.17.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+KEYWORDS="amd64 arm64 ~riscv x86"
IUSE="doc"
RDEPEND="
diff --git a/dev-python/bitarray/bitarray-3.7.2.ebuild b/dev-python/bitarray/bitarray-3.7.2.ebuild
index 5d8312e56cd5..853e3b7848a0 100644
--- a/dev-python/bitarray/bitarray-3.7.2.ebuild
+++ b/dev-python/bitarray/bitarray-3.7.2.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="PSF-2"
SLOT="0"
-KEYWORDS="amd64 ~arm ~arm64 ~x86 ~amd64-linux ~x86-linux"
+KEYWORDS="amd64 ~arm arm64 ~x86 ~amd64-linux ~x86-linux"
python_test() {
"${EPYTHON}" bitarray/test_bitarray.py -v || die "Tests fail with ${EPYTHON}"
diff --git a/dev-python/boto3/Manifest b/dev-python/boto3/Manifest
index 50a2dd305e60..a7249284e66e 100644
--- a/dev-python/boto3/Manifest
+++ b/dev-python/boto3/Manifest
@@ -7,3 +7,4 @@ DIST boto3-1.40.74.gh.tar.gz 1032058 BLAKE2B c24653bac3279f688d240390f53a9070d51
DIST boto3-1.41.2.gh.tar.gz 1047105 BLAKE2B ac62862f9430604d6056e9ee9c0c6747bc8abd000957365e569d20c96f0672c771c628ce0bd1d644aee6149b22792f455b43f58fce987d5ba00acbfbf56bd7f2 SHA512 98209ea6ded6c1018b98106c89b53d2115fad3de26524f7b9efa0c91f1e4435c9ea2d954c21d8666cb427777ade60bb12a36544d9844dc1d79f925c3206a578f
DIST boto3-1.41.3.gh.tar.gz 1047349 BLAKE2B dbabb10e58a122f654e1b545d966a0f2de31b8fc88ba9b29b71c296fdee6f9e2aefd5061c6c0a05ee52240455af9c9c7ddb374b76400fa4d69fc712f9957fa55 SHA512 2e228ad6a7ee514ed7b588599121719088bb7a5751e713e0971cef9dd44baab3cbd6bc452e39dc66209e3137bbd84605b7c1dfafcf8c88abab1fc655f66a7ff7
DIST boto3-1.41.4.gh.tar.gz 1047635 BLAKE2B 75e55f4ec2dfb460c1782faf01b896091667ba176c0a31b75e8cfca52f4fc0de3201214ebad798be793936d540e2042f177faf1a35abd4782b3dadfb96b40eb2 SHA512 a391726e7016d314b52e79ae7847929e36e856ae0dfb6be2d552d8a8b29c5e8ef2c9ab7fc603dae348918a055ae6dbb68b83d1899b5375fec45b9244623cf77c
+DIST boto3-1.41.5.gh.tar.gz 1047828 BLAKE2B c4ff68f8851f56539998186d6dab74d015e5752aa3e1f29226ff67b7457618f48d04637a6532e73016203970be82ca3fe9f295dbf6fb68c6a126058bfe452999 SHA512 c41c80a42513ae9aa09789aed69798b8946042d9cbf9de67c8541cce254cacc06ee965d53d61b0bd773762e4bf49e533d6c9ca11c5bce390544be317b60a601b
diff --git a/dev-python/boto3/boto3-1.41.5.ebuild b/dev-python/boto3/boto3-1.41.5.ebuild
new file mode 100644
index 000000000000..217620928fd0
--- /dev/null
+++ b/dev-python/boto3/boto3-1.41.5.ebuild
@@ -0,0 +1,53 @@
+# Copyright 1999-2025 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 ~amd64-linux ~x86-linux"
+
+RDEPEND="
+ >=dev-python/botocore-${PV}[${PYTHON_USEDEP}]
+ >=dev-python/jmespath-0.7.1[${PYTHON_USEDEP}]
+ >=dev-python/s3transfer-0.15.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 9bcbf4eeec6c..3babf98674a4 100644
--- a/dev-python/botocore/Manifest
+++ b/dev-python/botocore/Manifest
@@ -7,3 +7,4 @@ DIST botocore-1.40.74.gh.tar.gz 15284643 BLAKE2B 585f072a5ec39c12e3f74a272b0c5ed
DIST botocore-1.41.2.gh.tar.gz 15504253 BLAKE2B 3c3967e3876ec2529ed0fbd192594f963ebc75f27f196188456a3f4999187b92072224da7d0d91d3dba44c109a74eb35229062e61f161d30f5fad69fcd6097ae SHA512 47cbae2cd1c729fbe6ef55ef5ad6102f636dfb62dd4b4011ad8d163dfdd038d94201b49e48847fed4130e5523b0279b921eedcb94ee4611f42e6aa102bb3705f
DIST botocore-1.41.3.gh.tar.gz 15508146 BLAKE2B ee0ef8eeb86c0ed90b30b2bf9fa180e300f015ebc219b58b975e4f835eeed7b411a491aca6de9628b53538d308f20985dfce249f0f3a9bc37d72058f1c36f371 SHA512 09a00793df98c337d6e9a8ed67841af64a95b701f1b54675f764ba6553549efb7f27061ecc5d7f8b3b3affccb20d4044d052648fc3a913b4e5cb901a7d129118
DIST botocore-1.41.4.gh.tar.gz 15518786 BLAKE2B 3941223f02cc709f3388b725b15eb6b563f134c14beb8084a19899efa1acb4a8f93e44e4a747f9dbbe53f3f4a7b347e7311f381afae6f210a7e45aeda97379c0 SHA512 77ec108112da6e31e62f923c465a33e621257b497732da142fae90df4ec39a37f37cfaa056ea41dfe0858227221aa54db79c33fbd4cb42745bc3467a85f5c4a9
+DIST botocore-1.41.5.gh.tar.gz 15519699 BLAKE2B 05c9cd0768013d6e3af76ad9daf8b957bb8d6e3f17b3bfb85d4dc73de36ab71ff5da14306d5147375ec1d5a3080f5b25c056e2796c7918f21aba1fafe32deff8 SHA512 8f95ce652ef670129966aca8265022c79544bcb0927504ee0567272412437dc8789df10c7f77696434864ec541b6b17dc39aabb1ec16ee690a22617fe8d7da03
diff --git a/dev-python/botocore/botocore-1.41.5.ebuild b/dev-python/botocore/botocore-1.41.5.ebuild
new file mode 100644
index 000000000000..ee8074e67dce
--- /dev/null
+++ b/dev-python/botocore/botocore-1.41.5.ebuild
@@ -0,0 +1,67 @@
+# Copyright 1999-2025 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 ~amd64-linux ~x86-linux"
+
+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/cachetools-6.2.1.ebuild b/dev-python/cachetools/cachetools-6.2.1.ebuild
index c3bcfea71835..be409fc8a8d2 100644
--- a/dev-python/cachetools/cachetools-6.2.1.ebuild
+++ b/dev-python/cachetools/cachetools-6.2.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
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"
EPYTEST_PLUGINS=()
distutils_enable_tests pytest
diff --git a/dev-python/cattrs/cattrs-25.3.0.ebuild b/dev-python/cattrs/cattrs-25.3.0.ebuild
index 3305493f7266..2aa4c36c1f52 100644
--- a/dev-python/cattrs/cattrs-25.3.0.ebuild
+++ b/dev-python/cattrs/cattrs-25.3.0.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
IUSE="test-rust"
RDEPEND="
diff --git a/dev-python/cbor2/cbor2-5.7.1.ebuild b/dev-python/cbor2/cbor2-5.7.1.ebuild
index 51c0a6728801..00006526267b 100644
--- a/dev-python/cbor2/cbor2-5.7.1.ebuild
+++ b/dev-python/cbor2/cbor2-5.7.1.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
IUSE="+native-extensions"
BDEPEND="
diff --git a/dev-python/charset-normalizer/charset-normalizer-3.4.4-r1.ebuild b/dev-python/charset-normalizer/charset-normalizer-3.4.4-r1.ebuild
new file mode 100644
index 000000000000..32180ab9a503
--- /dev/null
+++ b/dev-python/charset-normalizer/charset-normalizer-3.4.4-r1.ebuild
@@ -0,0 +1,45 @@
+# Copyright 2022-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# please keep this ebuild at EAPI 8 -- sys-apps/portage dep
+EAPI=8
+
+DISTUTILS_USE_PEP517=standalone
+DISTUTILS_EXT=1
+PYPI_VERIFY_REPO=https://github.com/jawah/charset_normalizer
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="The Real First Universal Charset Detector"
+HOMEPAGE="
+ https://pypi.org/project/charset-normalizer/
+ https://github.com/jawah/charset_normalizer/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos"
+IUSE="+native-extensions"
+
+BDEPEND="
+ native-extensions? (
+ $(python_gen_cond_dep '
+ dev-python/mypy[${PYTHON_USEDEP}]
+ ' python3.{11..14})
+ )
+ dev-python/setuptools[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+python_compile() {
+ local -x CHARSET_NORMALIZER_USE_MYPYC=$(usex native-extensions 1 0)
+
+ distutils-r1_python_compile
+}
+
+python_test() {
+ epytest -o addopts=
+}
diff --git a/dev-python/charset-normalizer/charset-normalizer-3.4.4.ebuild b/dev-python/charset-normalizer/charset-normalizer-3.4.4.ebuild
index d770023438aa..d6fdc8496ec6 100644
--- a/dev-python/charset-normalizer/charset-normalizer-3.4.4.ebuild
+++ b/dev-python/charset-normalizer/charset-normalizer-3.4.4.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos"
BDEPEND="
dev-python/setuptools[${PYTHON_USEDEP}]
diff --git a/dev-python/charset-normalizer/metadata.xml b/dev-python/charset-normalizer/metadata.xml
index a0d4c5913ba0..7ad11570cc7d 100644
--- a/dev-python/charset-normalizer/metadata.xml
+++ b/dev-python/charset-normalizer/metadata.xml
@@ -6,5 +6,4 @@
</maintainer>
<origin>gentoo-staging</origin>
- <stabilize-allarches/>
</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/faker/faker-37.12.0.ebuild b/dev-python/faker/faker-37.12.0.ebuild
index 40c6b84d6c57..f0658a4b84b5 100644
--- a/dev-python/faker/faker-37.12.0.ebuild
+++ b/dev-python/faker/faker-37.12.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
dev-python/tzdata[${PYTHON_USEDEP}]
diff --git a/dev-python/frozenlist/frozenlist-1.8.0.ebuild b/dev-python/frozenlist/frozenlist-1.8.0.ebuild
index cda7658355be..642af440d199 100644
--- a/dev-python/frozenlist/frozenlist-1.8.0.ebuild
+++ b/dev-python/frozenlist/frozenlist-1.8.0.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
IUSE="+native-extensions"
BDEPEND="
diff --git a/dev-python/google-api-core/google-api-core-2.27.0.ebuild b/dev-python/google-api-core/google-api-core-2.27.0.ebuild
index 3805ab85c48e..69d3f1774f5e 100644
--- a/dev-python/google-api-core/google-api-core-2.27.0.ebuild
+++ b/dev-python/google-api-core/google-api-core-2.27.0.ebuild
@@ -23,7 +23,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="amd64 ~arm64 ~x86"
+KEYWORDS="amd64 arm64 ~x86"
IUSE="grpc"
RDEPEND="
diff --git a/dev-python/hatchling/Manifest b/dev-python/hatchling/Manifest
index 90878d785943..e81a36e877ed 100644
--- a/dev-python/hatchling/Manifest
+++ b/dev-python/hatchling/Manifest
@@ -1 +1,2 @@
DIST hatch-hatchling-v1.27.0.gh.tar.gz 5275714 BLAKE2B 5db266a4efa8d315ac991b4f109834cbe3710d6b944de78591f3707d1552a60ac24c1970c093190c2b3fdb8515d7ed5f4af7a32a1a364cefe9f4c08eef84b369 SHA512 d519428c4c7c21950df2484f38332b5c89525347f3557ff21a55a85811955c8466f6eb4f919d824ab7a576cd35d8a59e4a5e7827100f6ea1e38c10c0f1864a29
+DIST hatch-hatchling-v1.28.0.gh.tar.gz 5296066 BLAKE2B 2def4eee372b0fbf2019c716f63fdd35b110ce6a17a0fcfd4208a52334cd16ab1db9bd73d3a46ab652dd43ac8be02fb1bd4f5b7df44016895523f7900001ab99 SHA512 cbf29be0d0e2e0053c39034a697b4bebce4754205713c9dc35c9f3c9ea9be2652924664c0d11b90869443995c6f9f06ce20ca06afe10a2ac174a0e9dc2e737a2
diff --git a/dev-python/hatchling/hatchling-1.28.0.ebuild b/dev-python/hatchling/hatchling-1.28.0.ebuild
new file mode 100644
index 000000000000..63120139a410
--- /dev/null
+++ b/dev-python/hatchling/hatchling-1.28.0.ebuild
@@ -0,0 +1,101 @@
+# Copyright 2022-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=standalone
+PYTHON_TESTED=( pypy3_11 python3_{11..14} )
+PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" )
+
+inherit distutils-r1
+
+TAG=${P/-/-v}
+MY_P=hatch-${TAG}
+DESCRIPTION="Modern, extensible Python build backend"
+HOMEPAGE="
+ https://pypi.org/project/hatchling/
+ https://github.com/pypa/hatch/
+"
+SRC_URI="
+ https://github.com/pypa/hatch/archive/${TAG}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}/backend
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+# deps are listed in backend/src/hatchling/ouroboros.py
+# editables are optional but required for editable installs
+RDEPEND="
+ >=dev-python/editables-0.3[${PYTHON_USEDEP}]
+ >=dev-python/packaging-24.2[${PYTHON_USEDEP}]
+ >=dev-python/pathspec-0.10.1[${PYTHON_USEDEP}]
+ >=dev-python/pluggy-1.0.0[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ >=dev-python/tomli-1.2.2[${PYTHON_USEDEP}]
+ ' 3.10)
+ dev-python/trove-classifiers[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ ${RDEPEND}
+ test? (
+ $(python_gen_cond_dep '
+ dev-python/atomicwrites[${PYTHON_USEDEP}]
+ dev-python/click[${PYTHON_USEDEP}]
+ dev-python/httpx[${PYTHON_USEDEP}]
+ dev-python/platformdirs[${PYTHON_USEDEP}]
+ dev-python/pytest[${PYTHON_USEDEP}]
+ dev-python/pytest-mock[${PYTHON_USEDEP}]
+ dev-python/rich[${PYTHON_USEDEP}]
+ dev-python/tomli-w[${PYTHON_USEDEP}]
+ dev-python/virtualenv[${PYTHON_USEDEP}]
+ ' "${PYTHON_TESTED[@]}")
+ )
+"
+
+src_test() {
+ # top-level "tests" directory contains tests both for hatch
+ # and hatchling
+ cd "${WORKDIR}/${MY_P}" || die
+
+ # sigh; standalone test suites are overrated, right?
+ echo "__version__ = '${PV}'" > src/hatch/_version.py || die
+ local -x PYTHONPATH="src:${PYTHONPATH}"
+
+ # do not require uv for portability, sigh
+ mkdir "${T}/bin" || die
+ cat > "${T}/bin/uv" <<-EOF || die
+ #!/bin/sh
+ exit 127
+ EOF
+ chmod +x "${T}/bin/uv" || die
+ local -x PATH=${T}/bin:${PATH}
+
+ # tests mock cargo subprocess call but the backend raises if CARGO
+ # is not set and shutil.which() can't find it
+ local -x CARGO=cargo
+
+ distutils-r1_src_test
+}
+
+python_test() {
+ if ! has "${EPYTHON}" "${PYTHON_TESTED[@]/_/.}"; then
+ einfo "Skipping tests on ${EPYTHON}"
+ return
+ fi
+
+ local -x EPYTEST_DESELECT=(
+ # most of these run uv to install stuff
+ # the few remaining tests aren't worth running
+ tests/backend/dep/test_core.py
+ # broken if CARGO is set
+ tests/backend/builders/test_binary.py::TestBuildBootstrap::test_no_cargo
+ )
+
+ local EPYTEST_PLUGINS=( pytest-mock )
+ epytest tests/backend
+}
diff --git a/dev-python/langdetect/Manifest b/dev-python/langdetect/Manifest
index a11d7c268c91..d12ab8aeaca8 100644
--- a/dev-python/langdetect/Manifest
+++ b/dev-python/langdetect/Manifest
@@ -1 +1,3 @@
DIST langdetect-1.0.9.tar.gz 981474 BLAKE2B ea8a9c3f16a2987c080742473bff4f2c1503f53fb3c2b40b0b1d6212bb6133ea22dce7864ffcfb8968c3a46b157d45cb3e2cf6f84bdbed0266cc716a853b032c SHA512 7558d674c47b080c79e43a00a25d2c7f77188cf60bea2cecb3bebb803d75e1aa42b43c74bd26ea1b541f4cb927421908882cbec01a91f0913984217e71ccc8db
+EBUILD langdetect-1.0.9.ebuild 494 BLAKE2B 9cd8a2a93a8d45bf51fe2324402b175d641762ea591fcb99459427f977a95eccffa6ca4777ca4df39814eea6eac62711567faa654456d32f79023a4685804504 SHA512 d973b85ba1a44389a4275f02a779a93a005f7c2e096467b94b072862e4984d5b42cf33f9821ac68aa5b85b12c98983a90b96049989d8c84497969174b6bb838e
+MISC metadata.xml 457 BLAKE2B 630128a3e982b6d60cc7b9f74c79fcb5ee47a71a02c73a50af9da8cedb6fad8e20a7f74b881e5b25c6483b92c9edbd56552cd38b2d9cbfa8b3eb4530facea969 SHA512 674f4f5cd809c6c77bc14e0f5687fa972bef14bdfa0b3343c5d66b7163eef1906eb87d060c8288732f825de71dce291ad0b841a5f2f0dd230f957b5687e45d45
diff --git a/dev-python/langdetect/files/langdetect-1.0.9-explicit-config.patch b/dev-python/langdetect/files/langdetect-1.0.9-explicit-config.patch
deleted file mode 100644
index 637368d2f237..000000000000
--- a/dev-python/langdetect/files/langdetect-1.0.9-explicit-config.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Fix "Package 'langdetect.profiles' is absent from the `packages` configuration."
-
---- a/setup.py
-+++ b/setup.py
-@@ -18,7 +18,7 @@ setup(
- author_email='michal.danilak@gmail.com',
- url='https://github.com/Mimino666/langdetect',
- keywords='language detection library',
-- packages=['langdetect', 'langdetect.utils', 'langdetect.tests'],
-+ packages=['langdetect', 'langdetect.utils', 'langdetect.tests', 'langdetect.profiles'],
- include_package_data=True,
- install_requires=['six'],
- license='MIT',
diff --git a/dev-python/langdetect/langdetect-1.0.9.ebuild b/dev-python/langdetect/langdetect-1.0.9.ebuild
index 7100f5f39dd8..271137de443d 100644
--- a/dev-python/langdetect/langdetect-1.0.9.ebuild
+++ b/dev-python/langdetect/langdetect-1.0.9.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2022-2025 Gentoo Authors
+# Copyright 2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -19,6 +19,4 @@ KEYWORDS="~amd64"
RDEPEND="dev-python/six[${PYTHON_USEDEP}]"
-PATCHES=( "${FILESDIR}/${P}-explicit-config.patch" )
-
distutils_enable_tests unittest
diff --git a/dev-python/langdetect/metadata.xml b/dev-python/langdetect/metadata.xml
index c0f74ac187e2..020e07f2a3dd 100644
--- a/dev-python/langdetect/metadata.xml
+++ b/dev-python/langdetect/metadata.xml
@@ -2,9 +2,11 @@
<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
- <email>pastalian46@gmail.com</email>
- <name>Takuya Wakazono</name>
+ <email>marcin.deranek@slonko.net</email>
+ <name>Marcin Deranek</name>
</maintainer>
-
- <origin>gentoo-guru-overlay</origin>
+ <upstream>
+ <bugs-to>https://github.com/Mimino666/langdetect/issues</bugs-to>
+ </upstream>
+ <origin>slonko-overlay</origin>
</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/moto/moto-5.1.15.ebuild b/dev-python/moto/moto-5.1.15.ebuild
index ecaa03a4288b..05efda45a5f2 100644
--- a/dev-python/moto/moto-5.1.15.ebuild
+++ b/dev-python/moto/moto-5.1.15.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="amd64 ~arm64 ~riscv ~x86"
+KEYWORDS="amd64 arm64 ~riscv ~x86"
RDEPEND="
>=dev-python/aws-xray-sdk-0.93[${PYTHON_USEDEP}]
diff --git a/dev-python/msgpack/msgpack-1.1.2.ebuild b/dev-python/msgpack/msgpack-1.1.2.ebuild
index 34a1c0d02762..a590f0a0f18a 100644
--- a/dev-python/msgpack/msgpack-1.1.2.ebuild
+++ b/dev-python/msgpack/msgpack-1.1.2.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
IUSE="+native-extensions"
# extension code is relying on CPython implementation details
diff --git a/dev-python/multidict/multidict-6.7.0.ebuild b/dev-python/multidict/multidict-6.7.0.ebuild
index e4883bcdeeca..77da3d3d8165 100644
--- a/dev-python/multidict/multidict-6.7.0.ebuild
+++ b/dev-python/multidict/multidict-6.7.0.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
IUSE="+native-extensions"
BDEPEND="
diff --git a/dev-python/netcdf4/netcdf4-1.7.3.ebuild b/dev-python/netcdf4/netcdf4-1.7.3.ebuild
index ee64c35c1276..68d5bd358f35 100644
--- a/dev-python/netcdf4/netcdf4-1.7.3.ebuild
+++ b/dev-python/netcdf4/netcdf4-1.7.3.ebuild
@@ -19,7 +19,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 ~arm64 ~x86 ~amd64-linux ~x86-linux"
+KEYWORDS="amd64 arm64 ~x86 ~amd64-linux ~x86-linux"
IUSE="blosc bzip2 mpi test szip zstd"
RESTRICT="!test? ( test )"
diff --git a/dev-python/nuitka/Manifest b/dev-python/nuitka/Manifest
index 10d3857fc208..b810c55cbf9c 100644
--- a/dev-python/nuitka/Manifest
+++ b/dev-python/nuitka/Manifest
@@ -1,5 +1,2 @@
-DIST Nuitka-2.7.16.tar.gz 3889164 BLAKE2B 1dfdf805e74246d15945fa294910228185796e882f3a34ca0c3706bf172c4aee8b6618ce66a248656fb82f0c9639b251194c1baa6a4e903907eb65d6e95cf77a SHA512 be729f0e749502d8c82a56af6ea5cdd3a7d228f751154af814febccb3c3682b553add61863e7bfb11032c5772dac6c759008f4b430f8dcb9e1769030c9e479b1
-DIST Nuitka-2.8.1.tar.gz 3884450 BLAKE2B d6ac886e7854543cca0568a741bfc47379e0d17b9c15e9c877f6f9950b5a0c3d6f048edbfb73fb11df55f3a723ffd8f43624df0b61d8817b88daca783d0e53e4 SHA512 99c1431c29a2da7ac855cd136216b71506b7fc763106d753926c4489365306d7de12ffa9a2ac68b0c42477c3cdfa33e46ac90b246f6956dd9f6d5906b93d511d
-DIST Nuitka-2.8.3.tar.gz 3884732 BLAKE2B 9dd543614ee7bc188c0acf24abc217dd89bcb655021ec08ee60ea81d35c7889e9270103a99782c8a637eece26e04e4fffaa870cfa77f3662732c42e4f7dc49d8 SHA512 949c3c567acbd841431bc799bcf33c8f74bbd2460060ee2853c61532db7d9d35b57836d0b481530fe571ecd6b76104e33a9dc2702195c935f4258fbb73ccf28b
-DIST Nuitka-2.8.4.tar.gz 3885111 BLAKE2B f37422341a2ae947fbe39a30b87926efc228bb1917f3aa14d5a808dedab4c0257f2fca490d4e0e671896fd6d8dc7957833dcfd00846e4d2d14172d5b2f32a614 SHA512 32242721b43446496e444f7127245a2cdcca50c10a3ab1a99800facf88757f23ebf78727ae74a59d717ca96dea41bfd1d8169803895db46666de1543e53029af
DIST nuitka-2.8.6.tar.gz 3885843 BLAKE2B fa51534a0229e3f54ddb3da87373f6b9275aa3d1d6a068267180478d46ba9d2619abbc8e33b898e425c4acfa5d39387b7ec351a1b0cbcf42130a11af221f99e1 SHA512 d035372ff32de1bc8b9e6e9a62997f431eaf0a12c672dfd8c7c254b5dd87dd22b1ce959efd39fe61cfa1a219b0fdd9961b1f34446260453bd18526a6774f64e5
+DIST nuitka-2.8.7.tar.gz 4331865 BLAKE2B 49e9aeb61bcad964b068c009a17ab33a046795dd07e79967a8c94b2f0b6aff528b7b7cf587c7ebc628be0016ea30c8871d84fa484953a5d033ae7cac34503604 SHA512 f3b01af1405b2844c19814003f239c3f5a4df7a3b524672ffbeb58016f3b1550e110965886419ba15cffb6d66c6afa7664455ad28bb26cedb0dbfa4158fac83d
diff --git a/dev-python/nuitka/nuitka-2.7.16.ebuild b/dev-python/nuitka/nuitka-2.7.16.ebuild
deleted file mode 100644
index c5ce0a5a81ad..000000000000
--- a/dev-python/nuitka/nuitka-2.7.16.ebuild
+++ /dev/null
@@ -1,55 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYPI_NO_NORMALIZE=1
-PYPI_PN=${PN^}
-PYTHON_COMPAT=( python3_{10..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 ~loong ~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 )
-"
-
-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
- eapply_user
-}
-
-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/nuitka/nuitka-2.8.1.ebuild b/dev-python/nuitka/nuitka-2.8.1.ebuild
deleted file mode 100644
index c5ce0a5a81ad..000000000000
--- a/dev-python/nuitka/nuitka-2.8.1.ebuild
+++ /dev/null
@@ -1,55 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYPI_NO_NORMALIZE=1
-PYPI_PN=${PN^}
-PYTHON_COMPAT=( python3_{10..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 ~loong ~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 )
-"
-
-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
- eapply_user
-}
-
-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/nuitka/nuitka-2.8.3.ebuild b/dev-python/nuitka/nuitka-2.8.3.ebuild
deleted file mode 100644
index c5ce0a5a81ad..000000000000
--- a/dev-python/nuitka/nuitka-2.8.3.ebuild
+++ /dev/null
@@ -1,55 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYPI_NO_NORMALIZE=1
-PYPI_PN=${PN^}
-PYTHON_COMPAT=( python3_{10..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 ~loong ~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 )
-"
-
-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
- eapply_user
-}
-
-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/nuitka/nuitka-2.8.4.ebuild b/dev-python/nuitka/nuitka-2.8.7.ebuild
index c5ce0a5a81ad..ed0a610fde19 100644
--- a/dev-python/nuitka/nuitka-2.8.4.ebuild
+++ b/dev-python/nuitka/nuitka-2.8.7.ebuild
@@ -4,7 +4,6 @@
EAPI=8
DISTUTILS_USE_PEP517=setuptools
-PYPI_NO_NORMALIZE=1
PYPI_PN=${PN^}
PYTHON_COMPAT=( python3_{10..14} )
diff --git a/dev-python/numpy/numpy-2.3.2.ebuild b/dev-python/numpy/numpy-2.3.2.ebuild
index f0b5a6e9c330..329c5d925070 100644
--- a/dev-python/numpy/numpy-2.3.2.ebuild
+++ b/dev-python/numpy/numpy-2.3.2.ebuild
@@ -20,7 +20,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0/2"
-KEYWORDS="~alpha ~amd64 ~arm arm64 ~hppa ~loong ~m68k ~mips ~ppc ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~loong ~m68k ~mips ~ppc ppc64 ~riscv ~s390 ~sparc ~x86"
# +lapack because the internal fallbacks are pretty slow. Building without blas
# is barely supported anyway, see bug #914358.
IUSE="big-endian +lapack"
diff --git a/dev-python/proto-plus/proto-plus-1.26.1-r1.ebuild b/dev-python/proto-plus/proto-plus-1.26.1-r1.ebuild
index 9699c49ed329..6f33413efee0 100644
--- a/dev-python/proto-plus/proto-plus-1.26.1-r1.ebuild
+++ b/dev-python/proto-plus/proto-plus-1.26.1-r1.ebuild
@@ -22,7 +22,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="amd64 ~arm64 ~x86"
+KEYWORDS="amd64 arm64 ~x86"
RDEPEND="
<dev-python/protobuf-7[${PYTHON_USEDEP}]
diff --git a/dev-python/pydantic/Manifest b/dev-python/pydantic/Manifest
index 504d07de5110..324ccc0fd5b5 100644
--- a/dev-python/pydantic/Manifest
+++ b/dev-python/pydantic/Manifest
@@ -53,6 +53,8 @@ DIST pydantic-2.12.3.tar.gz 819383 BLAKE2B 77e7242c478ad0cb686334207737d93e7381e
DIST pydantic-2.12.3.tar.gz.provenance 9153 BLAKE2B 9e7de239ba62592cf420a77a85cd64e7ace52d7cc8eb8069af6b0d811e6ce740602df7ec6af97086659437b400d5faece4ed9190ba9fa590eab747c766c14cf2 SHA512 1c3cf685838846b350f309b2ec71f7794490277bcfd799031decc53bf4ccb2eb634952103b37148b3a3cd14b5f009845bb40f97047f865d24f23b26136c9bf38
DIST pydantic-2.12.4.tar.gz 821038 BLAKE2B c756e980c65af58785d39233d4d3adb4f738d2f7072df1b11525fc1fd150bf10eaf7ce81e1922eaf860ed1011c830bcdf87b5285b3f36c06b21ea621098b9aa8 SHA512 50eb4ac28a9990a2005f82caf1d363dc9d3c19592d734228f6ade2556f252a6551f99c628d144df8b3aa18dc8054348dd0b8d77008c407f62ac85633dc2cf917
DIST pydantic-2.12.4.tar.gz.provenance 9243 BLAKE2B f81fd238a3ec0e86520578046d4921166dfd2cce5a65317704d9fdc3a73f478388fa8ba0ce53800842895e8af40b9f8427c470317f9b79f008db914140799484 SHA512 bd3cc6a5cccb1ec88dd7eaf3b3347acae56fc4b396dff2a38a5913dc5205866591bd7bdfab25fbb15107e8162ca0aef3b0fa0c214266c30d962c41df6ddc5f2d
+DIST pydantic-2.12.5.tar.gz 821591 BLAKE2B 7b139db92fc103cc5e0e5820a3541af8ffaa850ecca9d0136f09768bf5f51ceddb933b12434ea3428b9e2f10e587d9227ec22ced9609b83759765446e6a9cb9d SHA512 93968bf402ba1b2ea48375be021f8e2cfc61bee2cb39a7ec470bf445d752f1bfd638dd951b34f443ddb6a853aa81f1860b11cc6478eb20c142e48347c80ec827
+DIST pydantic-2.12.5.tar.gz.provenance 9274 BLAKE2B 9796b665fbb38345b99cbe1ca5890c14a1bbdc2f1995f69685aab53590aaabdc841544d4cacb0e723414bfc8cc18b0368ae958d486b84bfdd201537c78eab3a4 SHA512 e95f64e35c6fbc35d3d6fee2b1104b0a48df5fc0376d95dc4102961f957eed6ebbcb51903cd51e7a61dbd97e6f0e0b5c1d50e26a352018e4a1079169e34a249a
DIST pydantic_core-2.41.4.tar.gz 457557 BLAKE2B ebff295fe3a735fe29fd1c2384eb54c44f783413e849848392eff23e317f3e6650567211a284c2f5df5318827e447ff4ab457f7d63984e3a618698f3b9bfc243 SHA512 aced59b149d48956220407ff42001167c7fa98f3ae7539bab0b16011bf9a38d9c1e8994770db7bb0426114d3322316cb3ce12cb1961d54f6a4798d8b00d1ee85
DIST pydantic_core-2.41.5.tar.gz 460952 BLAKE2B dd7d45acdc5f3093668cb57813c0c4e40e5916d04f75ef8f06308ec00243c9b0469cba5ffd2eb8449e11279d28c12ccc039dc03ed108cdb879da675d9f61aebe SHA512 1447f257efdbad0f70b490569c073696f8bdcdbd0baccac40e843520eb3cabfd23d499dca31afdc67581dd6a690cc138b882f393a91f57afcc309c800b9620c3
DIST pyo3-0.26.0.crate 1151579 BLAKE2B bcc8236785502928bf4a0b7a320e0a8f3d6140c562de4351a52d015aaebb8dd6b4d68fe607c8ea13ec66941c8f01d2c18c4249adfacb521355d4bf158667f3a3 SHA512 e073a4d893f88aa0301ef0ead78048137515edd93c490e6dccbc301ff65a208534c65c1d216b04639d4b1ec1e4b69bc87bd34974e5d0659134c28dcce589c194
diff --git a/dev-python/pydantic/pydantic-2.12.5.ebuild b/dev-python/pydantic/pydantic-2.12.5.ebuild
new file mode 100644
index 000000000000..b2ed3f9671c3
--- /dev/null
+++ b/dev-python/pydantic/pydantic-2.12.5.ebuild
@@ -0,0 +1,231 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=hatchling
+# no provenance for pydantic-core:
+# https://github.com/pydantic/pydantic-core/issues/1842
+PYPI_VERIFY_REPO=https://github.com/pydantic/pydantic
+PYTHON_COMPAT=( python3_{10..14} )
+
+PYDANTIC_CORE_PV=2.41.5
+RUST_MIN_VER="1.75.0"
+CRATES="
+ ahash@0.8.12
+ aho-corasick@1.1.3
+ autocfg@1.3.0
+ base64@0.22.1
+ bitflags@2.9.1
+ bitvec@1.0.1
+ bumpalo@3.19.0
+ cc@1.0.101
+ cfg-if@1.0.0
+ displaydoc@0.2.5
+ enum_dispatch@0.3.13
+ form_urlencoded@1.2.1
+ funty@2.0.0
+ getrandom@0.3.3
+ heck@0.5.0
+ hex@0.4.3
+ icu_collections@1.5.0
+ icu_locid@1.5.0
+ icu_locid_transform@1.5.0
+ icu_locid_transform_data@1.5.0
+ icu_normalizer@1.5.0
+ icu_normalizer_data@1.5.0
+ icu_properties@1.5.1
+ icu_properties_data@1.5.0
+ icu_provider@1.5.0
+ icu_provider_macros@1.5.0
+ idna@1.1.0
+ idna_adapter@1.2.0
+ indoc@2.0.5
+ itoa@1.0.11
+ jiter@0.11.1
+ js-sys@0.3.77
+ lexical-parse-float@1.0.5
+ lexical-parse-integer@1.0.5
+ lexical-util@1.0.6
+ libc@0.2.155
+ litemap@0.7.3
+ log@0.4.27
+ memchr@2.7.4
+ memoffset@0.9.1
+ num-bigint@0.4.6
+ num-integer@0.1.46
+ num-traits@0.2.19
+ once_cell@1.21.3
+ percent-encoding@2.3.2
+ portable-atomic@1.6.0
+ proc-macro2@1.0.86
+ pyo3-build-config@0.26.0
+ pyo3-ffi@0.26.0
+ pyo3-macros-backend@0.26.0
+ pyo3-macros@0.26.0
+ pyo3@0.26.0
+ python3-dll-a@0.2.14
+ quote@1.0.36
+ r-efi@5.2.0
+ radium@0.7.0
+ regex-automata@0.4.13
+ regex-syntax@0.8.5
+ regex@1.12.2
+ rustversion@1.0.17
+ ryu@1.0.18
+ serde@1.0.228
+ serde_core@1.0.228
+ serde_derive@1.0.228
+ serde_json@1.0.145
+ smallvec@1.15.1
+ speedate@0.17.0
+ stable_deref_trait@1.2.0
+ static_assertions@1.1.0
+ strum@0.27.2
+ strum_macros@0.27.2
+ syn@2.0.82
+ synstructure@0.13.1
+ tap@1.0.1
+ target-lexicon@0.13.2
+ tinystr@0.7.6
+ unicode-ident@1.0.12
+ unindent@0.2.3
+ url@2.5.4
+ utf16_iter@1.0.5
+ utf8_iter@1.0.4
+ uuid@1.18.1
+ version_check@0.9.5
+ wasi@0.14.2+wasi-0.2.4
+ wasm-bindgen-backend@0.2.100
+ wasm-bindgen-macro-support@0.2.100
+ wasm-bindgen-macro@0.2.100
+ wasm-bindgen-shared@0.2.100
+ wasm-bindgen@0.2.100
+ wit-bindgen-rt@0.39.0
+ write16@1.0.0
+ writeable@0.5.5
+ wyz@0.5.1
+ yoke-derive@0.7.4
+ yoke@0.7.4
+ zerocopy-derive@0.8.25
+ zerocopy@0.8.25
+ zerofrom-derive@0.1.4
+ zerofrom@0.1.4
+ zerovec-derive@0.10.3
+ zerovec@0.10.4
+"
+
+inherit cargo distutils-r1 pypi
+
+DESCRIPTION="Data parsing and validation using Python type hints"
+HOMEPAGE="
+ https://github.com/pydantic/pydantic/
+ https://pypi.org/project/pydantic/
+"
+# pydantic-core & pydantic have a perfect circular test dep now
+SRC_URI+="
+ $(pypi_sdist_url pydantic_core "${PYDANTIC_CORE_PV}")
+ ${CARGO_CRATE_URIS}
+"
+PYDANTIC_CORE_S=${WORKDIR}/pydantic_core-${PYDANTIC_CORE_PV}
+
+LICENSE="MIT"
+# Dependent crate licenses
+LICENSE+="
+ Apache-2.0-with-LLVM-exceptions MIT Unicode-3.0 Unicode-DFS-2016
+ || ( Apache-2.0 Boost-1.0 )
+"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/annotated-types-0.6.0[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.14.1[${PYTHON_USEDEP}]
+ >=dev-python/typing-inspection-0.4.2[${PYTHON_USEDEP}]
+ dev-python/tzdata[${PYTHON_USEDEP}]
+ !dev-python/pydantic-core
+"
+BDEPEND="
+ >=dev-python/hatch-fancy-pypi-readme-22.5.0[${PYTHON_USEDEP}]
+ dev-util/maturin[${PYTHON_USEDEP}]
+ test? (
+ $(python_gen_cond_dep '
+ dev-python/cloudpickle[${PYTHON_USEDEP}]
+ ' 'python3*')
+ dev-python/dirty-equals[${PYTHON_USEDEP}]
+ >=dev-python/email-validator-2.0.0[${PYTHON_USEDEP}]
+ >=dev-python/faker-18.13.0[${PYTHON_USEDEP}]
+ >=dev-python/jsonschema-4.23.0[${PYTHON_USEDEP}]
+ dev-python/pytz[${PYTHON_USEDEP}]
+ dev-python/rich[${PYTHON_USEDEP}]
+ )
+"
+# pydantic-core
+BDEPEND+="
+ test? (
+ >=dev-python/dirty-equals-0.5.0[${PYTHON_USEDEP}]
+ >=dev-python/inline-snapshot-0.13.3[${PYTHON_USEDEP}]
+ >=dev-python/typing-inspection-0.4.1[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( hypothesis pytest-mock )
+distutils_enable_tests pytest
+
+QA_FLAGS_IGNORED="usr/lib.*/py.*/site-packages/pydantic_core/_pydantic_core.*.so"
+
+src_unpack() {
+ pypi_src_unpack
+ cargo_src_unpack
+}
+
+src_prepare() {
+ sed -i -e '/benchmark/d' {.,"${PYDANTIC_CORE_S}"}/pyproject.toml || die
+ sed -i -e '/^strip/d' "${PYDANTIC_CORE_S}"/Cargo.toml || die
+ distutils-r1_src_prepare
+}
+
+python_compile() {
+ distutils-r1_python_compile
+
+ local DISTUTILS_USE_PEP517=maturin
+ local DISTUTILS_UPSTREAM_PEP517=maturin
+ cd "${PYDANTIC_CORE_S}" || die
+ distutils-r1_python_compile
+ cd - >/dev/null || die
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # == pydantic ==
+ # -Werror, sigh
+ tests/test_types_typeddict.py::test_readonly_qualifier_warning
+
+ # == pydantic-core ==
+ # TODO: recursion till segfault
+ tests/serializers/test_functions.py::test_recursive_call
+ )
+ local EPYTEST_IGNORE=(
+ # require pytest-examples (pydantic)
+ tests/test_docs.py
+ # benchmarks (both)
+ tests/benchmarks
+ )
+
+ if ! has_version "dev-python/cloudpickle[${PYTHON_USEDEP}]"; then
+ EPYTEST_IGNORE+=(
+ # (pydantic)
+ tests/test_pickle.py
+ )
+ fi
+
+ cd "${PYDANTIC_CORE_S}" || die
+ rm -rf pydantic_core || die
+ # tests link to libpython, so they fail to link on pypy3
+ [[ ${EPYTHON} != pypy3* ]] && cargo_src_test
+ epytest -o xfail_strict=False -o addopts=
+ cd - 2>/dev/null || die
+
+ epytest
+}
diff --git a/dev-python/pylsqpack/pylsqpack-0.3.23.ebuild b/dev-python/pylsqpack/pylsqpack-0.3.23.ebuild
index 2dde9f18538e..42ce66f1bcf7 100644
--- a/dev-python/pylsqpack/pylsqpack-0.3.23.ebuild
+++ b/dev-python/pylsqpack/pylsqpack-0.3.23.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="amd64 ~arm arm64 ~mips ~ppc ~ppc64 ~riscv ~x86"
+KEYWORDS="amd64 arm arm64 ~mips ~ppc ~ppc64 ~riscv ~x86"
DEPEND="
dev-libs/ls-qpack:=
diff --git a/dev-python/pymdown-extensions/Manifest b/dev-python/pymdown-extensions/Manifest
index d1d9935bfe24..6354ae4f3e66 100644
--- a/dev-python/pymdown-extensions/Manifest
+++ b/dev-python/pymdown-extensions/Manifest
@@ -1,3 +1,5 @@
DIST pymdown_extensions-10.16.1.tar.gz 853277 BLAKE2B 3cfe1511ead6abec9e5098fc7a1e9ccedadedda3d6cad67f5a4f835f12e009e5dc33fe19460bd79ed0beffc460c4c5139102f6fdbd1fc58db76c861122b16e0e SHA512 7fdb30f7e3df2f049fc4d88d0d588696a5fa588a1b67d2e4060797d555a2732efbaa661513e8323ff386604b5632a0d72cce29f1a61c9b418b8f460c3aa1b9ae
DIST pymdown_extensions-10.17.1.tar.gz 845207 BLAKE2B 038de03010e2721dde39bfb24e1f1292dde82ba38c39ec1c140b4cf39cb86d1c336960f94cb5254621b6050065d8c6f85120c0abba4110f3fdfef023d9f212fe SHA512 ee29996aed7f6df4233c5b9d8355792e8a0a91de55ed3a328a1724db80c0a44c5f40754359499341a7c308462ee35dc4cd9327d1e12b9375f814e9ded1f48dc6
DIST pymdown_extensions-10.17.1.tar.gz.provenance 9505 BLAKE2B b2b20a7def36ad058acb43e6026f4dc3e8c476004cfb584ae6de1e353eb3fcb5f016d9c59c0ec126a3e6889a35a8c9f53d26a9fa2de543431500468a02068544 SHA512 b3a6305de6831d61eec4d7f065fff0feb0c0dad23c84e4326ec89e2a0f3f3acccd56080a5692ba8612731b6bc1fe0bef9208873185669cffe919dda55015afb4
+DIST pymdown_extensions-10.17.2.tar.gz 847344 BLAKE2B 91cccfab072caa3ad671643ee995dff18253e608e00a958e0164912ee098def26ccb5fda7e7215b242fc8565d0d4c4ada04bdf2bf3d03f61c19d252e81956680 SHA512 e43e0cd064eb0a6977f9e334006d089d509f77d1aa9c4f02821522aa95f052c9b27647ec8fe7c3e52abb142ed9302eec6732edf7066ff64b30fd7d4950ab438d
+DIST pymdown_extensions-10.17.2.tar.gz.provenance 9560 BLAKE2B 27c913954a1f7005f3b42786a043bcfb39e20a01710d49dcb3108c7a3126ff394d00f4b9248ad6eff8be5dc91b9f3f8a80551992161e2f220f1bf82f3b6a14df SHA512 fdec579aa5fcb3ef0d4d6f8d26d878a1081664745dbafa2e93116d91c6c2c032263fb5c9e663ac7263cb3249562b1d97e6eb611482024a5aa03884bd3a353b99
diff --git a/dev-python/pymdown-extensions/pymdown-extensions-10.17.2.ebuild b/dev-python/pymdown-extensions/pymdown-extensions-10.17.2.ebuild
new file mode 100644
index 000000000000..33a5573a9936
--- /dev/null
+++ b/dev-python/pymdown-extensions/pymdown-extensions-10.17.2.ebuild
@@ -0,0 +1,34 @@
+# Copyright 1999-2025 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_{10..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/pyproject-fmt/pyproject-fmt-2.11.0.ebuild b/dev-python/pyproject-fmt/pyproject-fmt-2.11.0.ebuild
index 30d4aea1d6d0..d086d6955377 100644
--- a/dev-python/pyproject-fmt/pyproject-fmt-2.11.0.ebuild
+++ b/dev-python/pyproject-fmt/pyproject-fmt-2.11.0.ebuild
@@ -119,7 +119,7 @@ LICENSE+="
|| ( Apache-2.0 Boost-1.0 )
"
SLOT="0"
-KEYWORDS="amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="amd64 arm arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
RDEPEND="
~dev-python/toml-fmt-common-1.0.1[${PYTHON_USEDEP}]
diff --git a/dev-python/pyspelling/Manifest b/dev-python/pyspelling/Manifest
index 51b5c4718cd9..e6037325c075 100644
--- a/dev-python/pyspelling/Manifest
+++ b/dev-python/pyspelling/Manifest
@@ -1,2 +1,4 @@
DIST pyspelling-2.11.gh.tar.gz 153925 BLAKE2B b0f125a7a91b946d75479e2d7e001af1fc61dc2e57454e92d3ab4faf28c69d7d12771a1f83edffa1235a4e7a3822fecdd90c7d456b75ad868ecc78182442ef1c SHA512 908e2521c6bdff749994809b87310d4153c77873be7cc9543c40857dec351d5432c23c6bf408704a913ccc0563086bf2789384c7f65a24cc89e5807b18571347
+DIST pyspelling-2.12.1.tar.gz 163855 BLAKE2B b4837980ccbe42cd39469ee5aac8481bdad0058682315150a125caac1e0b2f7e4663eb6ba0ab4bbd41c0b7fb142ef1ea2f43d1702f86377c0cbae34a3adf4589 SHA512 31480bf588035077339629743929981c52d3129899b82473048d0ca87ec93e3ce3600e29d6fd0077c4973a220d3c351674e4937f1cf1a47edf6f752058a1749a
+DIST pyspelling-2.12.1.tar.gz.provenance 9383 BLAKE2B 4dbe9f89f3690dd329b8207139360fc52a6c3c7458a632c388a2c87024ecaec9dbfa813b9bbea78be9c83b92de8b5e3bf968517b5cbaad49e3d3df468bbcaee4 SHA512 4d4d781bb5f72065c33e56e111c7a9497df933cefb9c83162b94b1835dc5660db224c6cfd336bd587367f4755d9900cb296c8c5ee7f418c2b3656054834ea2d4
DIST pyspelling-2.12.gh.tar.gz 154057 BLAKE2B 4abd43e5ec97a63ccf9397b64499e036e400108b0b2248c85400b3ecb96105b0e53eb845ca5c6547e7cf9f3c43f011e8606af0b91f9dfd699e37fb89c1560716 SHA512 9a50e60043fbd26510152d577ce36b098bd54d407568f53d19de11ce42f017c5cd019a402e9894da468a2831a11eee45f7271290ea37045d9636008d05e4745a
diff --git a/dev-python/pyspelling/pyspelling-2.12.1.ebuild b/dev-python/pyspelling/pyspelling-2.12.1.ebuild
new file mode 100644
index 000000000000..521eab12eba6
--- /dev/null
+++ b/dev-python/pyspelling/pyspelling-2.12.1.ebuild
@@ -0,0 +1,45 @@
+# Copyright 1999-2025 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/pyspelling
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Spell checker automation tool"
+HOMEPAGE="
+ https://github.com/facelessuser/pyspelling/
+ https://pypi.org/project/pyspelling/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86"
+
+RDEPEND="
+ || ( app-text/aspell app-text/hunspell )
+
+ dev-python/beautifulsoup4[${PYTHON_USEDEP}]
+ dev-python/html5lib[${PYTHON_USEDEP}]
+ dev-python/lxml[${PYTHON_USEDEP}]
+ dev-python/markdown[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ >=dev-python/soupsieve-1.8[${PYTHON_USEDEP}]
+ >=dev-python/wcmatch-6.5[${PYTHON_USEDEP}]
+"
+# The package can use either aspell or hunspell but tests both if both
+# are installed. Therefore, we need to ensure that both have English
+# dictionary installed.
+BDEPEND="
+ test? (
+ app-dicts/aspell-en
+ app-dicts/myspell-en
+ dev-vcs/git
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
diff --git a/dev-python/python-json-logger/python-json-logger-4.0.0.ebuild b/dev-python/python-json-logger/python-json-logger-4.0.0.ebuild
index a66ed5006e78..f417560a44df 100644
--- a/dev-python/python-json-logger/python-json-logger-4.0.0.ebuild
+++ b/dev-python/python-json-logger/python-json-logger-4.0.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="amd64 ~arm arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="amd64 arm arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
BDEPEND="
test? (
diff --git a/dev-python/python-tests/python-tests-3.11.14.ebuild b/dev-python/python-tests/python-tests-3.11.14.ebuild
index 7e385f7190aa..78bca38b6bf6 100644
--- a/dev-python/python-tests/python-tests-3.11.14.ebuild
+++ b/dev-python/python-tests/python-tests-3.11.14.ebuild
@@ -28,7 +28,7 @@ S="${WORKDIR}/${MY_P}/Lib"
LICENSE="PSF-2"
SLOT="${PYVER}"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
# enable by default to help CI handle it (we have no additional deps)
IUSE="+python_targets_${PYTHON_COMPAT[0]}"
REQUIRED_USE="${PYTHON_REQUIRED_USE}"
diff --git a/dev-python/python-xmp-toolkit/Manifest b/dev-python/python-xmp-toolkit/Manifest
index aaca8017a812..a7538083df06 100644
--- a/dev-python/python-xmp-toolkit/Manifest
+++ b/dev-python/python-xmp-toolkit/Manifest
@@ -1 +1,2 @@
DIST python-xmp-toolkit-2.0.2.gh.tar.gz 3577828 BLAKE2B bc24224c5dc789b0f66545a85b10bcab2dd64dcd5195ef04eae6cac94e1c377466aa40adc4aa42d014a7094df4dbe6f437b78e38b5a0e36e0f2eeeb0a08f1f4b SHA512 7ab70e78abe3f315863c444c5d841ff4ae9e95968ccef45e15d20df5206140939f0e857e6c987a643ba908aa8d92dc4870e77d94cfafc547208e4705fa9187e1
+DIST python-xmp-toolkit-2.1.0.gh.tar.gz 3576440 BLAKE2B 95c63715baad442070590ab4794c609b8b3b401562fd715448041f2479aa76505444e1ad594657fa44ceda98cd0d905853df37dc6681f0e4c9324737ac762974 SHA512 18d0cbcc05117b91e1b7f8d0311d7490b2d9a63801c9850b813860d2cb21d384848eb19dd16450c00ccb97803465ec801b5688c52a0333e162d6292f830797f3
diff --git a/dev-python/python-xmp-toolkit/python-xmp-toolkit-2.1.0.ebuild b/dev-python/python-xmp-toolkit/python-xmp-toolkit-2.1.0.ebuild
new file mode 100644
index 000000000000..20697607b2cc
--- /dev/null
+++ b/dev-python/python-xmp-toolkit/python-xmp-toolkit-2.1.0.ebuild
@@ -0,0 +1,31 @@
+# Copyright 2020-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=flit
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="Library for working with XMP metadata"
+HOMEPAGE="
+ https://github.com/python-xmp-toolkit/python-xmp-toolkit/
+ https://pypi.org/project/python-xmp-toolkit/
+"
+SRC_URI="
+ https://github.com/python-xmp-toolkit/python-xmp-toolkit/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+
+RDEPEND="
+ dev-python/pytz[${PYTHON_USEDEP}]
+ media-libs/exempi
+"
+
+distutils_enable_sphinx docs
+distutils_enable_tests unittest
diff --git a/dev-python/rdflib/rdflib-7.3.0.ebuild b/dev-python/rdflib/rdflib-7.3.0.ebuild
index 31c770296204..b143799dc280 100644
--- a/dev-python/rdflib/rdflib-7.3.0.ebuild
+++ b/dev-python/rdflib/rdflib-7.3.0.ebuild
@@ -22,7 +22,7 @@ SRC_URI="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~sparc x86"
IUSE="examples sqlite"
RDEPEND="
diff --git a/dev-python/regex/regex-2025.10.23.ebuild b/dev-python/regex/regex-2025.10.23.ebuild
index d3302588d4e0..fe01ca79a20f 100644
--- a/dev-python/regex/regex-2025.10.23.ebuild
+++ b/dev-python/regex/regex-2025.10.23.ebuild
@@ -19,7 +19,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos"
IUSE="doc"
distutils_enable_tests unittest
diff --git a/dev-python/rpds-py/rpds-py-0.28.0.ebuild b/dev-python/rpds-py/rpds-py-0.28.0.ebuild
index 161c8e72c10c..387776844d7b 100644
--- a/dev-python/rpds-py/rpds-py-0.28.0.ebuild
+++ b/dev-python/rpds-py/rpds-py-0.28.0.ebuild
@@ -52,7 +52,7 @@ LICENSE="MIT"
# Dependent crate licenses
LICENSE+=" Apache-2.0-with-LLVM-exceptions MIT Unicode-3.0"
SLOT="0"
-KEYWORDS="amd64 ~arm arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="amd64 arm arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
QA_FLAGS_IGNORED="usr/lib.*/py.*/site-packages/rpds/rpds.*.so"
diff --git a/dev-python/setuptools-scm/setuptools-scm-9.2.2.ebuild b/dev-python/setuptools-scm/setuptools-scm-9.2.2.ebuild
index d03b636538ba..81017d3bdc94 100644
--- a/dev-python/setuptools-scm/setuptools-scm-9.2.2.ebuild
+++ b/dev-python/setuptools-scm/setuptools-scm-9.2.2.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
# there's an optional dep on rich for cute logs
RDEPEND="
diff --git a/dev-python/sigstore-models/Manifest b/dev-python/sigstore-models/Manifest
index ebfda63e8d71..ed9b26e9f352 100644
--- a/dev-python/sigstore-models/Manifest
+++ b/dev-python/sigstore-models/Manifest
@@ -1 +1,2 @@
DIST sigstore-models-0.0.5.gh.tar.gz 29297 BLAKE2B 344284540bf1e279fa7e11b27b6f3ebe584a099bc2da08a6278d6700db0bfd2a6f9d55ec8aba8bb6a4cb5b74a66c625013e338e03f650fe8ca3a0c723ac237fe SHA512 e66ac6f079cbf6a531e92edc72e2a951fa756396449ac51e76f5556fcae47d05b57394d5728812af7497cd226e641b44241f3172251f1f9ba90b35c068b75819
+DIST sigstore-models-0.0.6.gh.tar.gz 30598 BLAKE2B 9b3de71bfe7bc1ec85465cf0a3ad6a9eef964e604ad09062e3de824b43e5a5df686dfe3f373c4d84c5cc83f07126e1ae3c64e4066699a47ea4c3c44f1a111a25 SHA512 94fae96b4e8698a4e1f1dbc5186e3aedc05bed9da8c1c8520e66980bfc3d37d88b59602a3279c0146004a7bdecc6ffc30346908b53a2455a03cf018e45c56336
diff --git a/dev-python/sigstore-models/sigstore-models-0.0.6.ebuild b/dev-python/sigstore-models/sigstore-models-0.0.6.ebuild
new file mode 100644
index 000000000000..4cb52b84180b
--- /dev/null
+++ b/dev-python/sigstore-models/sigstore-models-0.0.6.ebuild
@@ -0,0 +1,31 @@
+# Copyright 2025 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="Pydantic based models for Sigstore's protobuf specifications"
+HOMEPAGE="
+ https://github.com/astral-sh/sigstore-models/
+ https://pypi.org/project/sigstore-models/
+"
+SRC_URI="
+ https://github.com/astral-sh/sigstore-models/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc ~ppc64"
+
+RDEPEND="
+ >=dev-python/pydantic-2.11.7[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.14.1[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
diff --git a/dev-python/spotipy/Manifest b/dev-python/spotipy/Manifest
index 801533beb01c..61f9fd3acb20 100644
--- a/dev-python/spotipy/Manifest
+++ b/dev-python/spotipy/Manifest
@@ -1 +1,2 @@
DIST spotipy-2.25.1.gh.tar.gz 107750 BLAKE2B 5814a831d81f94f112fe9312fc508497275d7780d41250f807ea7b72cc555511ee883ed8a0ec3b3d21c6f13b7facb462b9380a478866f0d90d52dd31b1e5d2e7 SHA512 1c9af1f8a07d111a719d4f9646ccc8fea21d86325221c0395fdfe155a1ed2b588dfcf5c9e958bf3ecc286033117f7cc3061f975a046788e11a1cea4f9e2a927a
+DIST spotipy-2.25.2.gh.tar.gz 108288 BLAKE2B 63aa46b8775820cd481157f7c0e9471b5bf8140936db3d2e62164b1299cdff05c19b347349f3b0458f06d7ee428c0aeb4351f19df8a5832de7698aec55b4b1c4 SHA512 1cdb607e9da6edf7d90778665cfd1fe22732336f4844a64799772963a017afbac6c033fdf7f918cb995528345756a1049aa865d85e3990e768d3f6e15ff52538
diff --git a/dev-python/spotipy/spotipy-2.25.2.ebuild b/dev-python/spotipy/spotipy-2.25.2.ebuild
new file mode 100644
index 000000000000..ce7b128c9f60
--- /dev/null
+++ b/dev-python/spotipy/spotipy-2.25.2.ebuild
@@ -0,0 +1,49 @@
+# Copyright 2022-2025 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="A lightweight Python library for the Spotify Web API"
+HOMEPAGE="
+ https://spotipy.readthedocs.io/
+ https://github.com/spotipy-dev/spotipy/
+ https://pypi.org/project/spotipy/
+"
+SRC_URI="
+ https://github.com/spotipy-dev/spotipy/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="examples"
+
+RDEPEND="
+ dev-python/redis[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/urllib3[${PYTHON_USEDEP}]
+"
+
+distutils_enable_sphinx docs \
+ dev-python/redis \
+ dev-python/sphinx-rtd-theme
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # Internet
+ tests/unit/test_oauth.py::TestSpotifyClientCredentials::test_spotify_client_credentials_get_access_token
+)
+
+python_install_all() {
+ distutils-r1_python_install_all
+
+ use examples && dodoc -r examples
+}
diff --git a/dev-python/spyder-notebook/Manifest b/dev-python/spyder-notebook/Manifest
index ca20f7ab4eae..da59ce3ed4c9 100644
--- a/dev-python/spyder-notebook/Manifest
+++ b/dev-python/spyder-notebook/Manifest
@@ -1,2 +1,3 @@
DIST spyder_notebook-0.6.2.tar.gz 7270229 BLAKE2B 85ec279a10adfc965d3da324a399d9f627626611fbafd3f0b2c8a16a5b7a6740b5ec6b5417de4704007599967b06279876d7547227277ed6be0f26f28591462b SHA512 e2bd545b14d90461cc30c4a1cffdae81bff4791be1d3b770c614369fb10bbbfaea9098089226c5333ab2cb8cb6d162254929d9dbd81faa305da93faf1192dc8f
DIST spyder_notebook-0.7.0.tar.gz 7813912 BLAKE2B aa66e985e4b34574605b4fd72c645d4b00492d73584dfa65e4099e8d924d4023918aaf2108e469a87b4e2f310e49c4c221e564237adeff622281e7d07616c54b SHA512 c83a4f2a33a1086d62c9d64f19e5e4f5915072be6396ef041fe783469893e2f90f7f0998e997de785d3dd0a2230c1a8ac5d215cfda084fa17dbe93da76445c52
+DIST spyder_notebook-0.7.1.tar.gz 7825065 BLAKE2B 7072fa7858ca414f3f351afa20fe31b819dcca70f4fcac69f3da15487ca8b440caa4f18dbdc2f9225daa078cc517e4c72a390bfdb4eac020d8e2ee6279c26264 SHA512 1a4bfbd428c20be784a797acaa3537e4bd20948745a2192a2aae389043d4cd3a16cd2f589c6ded572dbd8975ed6c7a15087883dfa5311bd1d37a60f00f01e3fe
diff --git a/dev-python/spyder-notebook/spyder-notebook-0.7.1.ebuild b/dev-python/spyder-notebook/spyder-notebook-0.7.1.ebuild
new file mode 100644
index 000000000000..521f698c3e1c
--- /dev/null
+++ b/dev-python/spyder-notebook/spyder-notebook-0.7.1.ebuild
@@ -0,0 +1,58 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..14} )
+DISTUTILS_USE_PEP517=setuptools
+
+inherit distutils-r1 pypi virtualx
+
+DESCRIPTION="Jupyter notebook integration with Spyder"
+HOMEPAGE="https://github.com/spyder-ide/spyder-notebook"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+
+RDEPEND="
+ dev-python/nbformat[${PYTHON_USEDEP}]
+ >=dev-python/notebook-7.4.7[${PYTHON_USEDEP}]
+ <dev-python/notebook-7.5[${PYTHON_USEDEP}]
+ dev-python/psutil[${PYTHON_USEDEP}]
+ dev-python/qdarkstyle[${PYTHON_USEDEP}]
+ dev-python/qtpy[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ >=dev-python/spyder-6.1[${PYTHON_USEDEP}]
+ <dev-python/spyder-6.2[${PYTHON_USEDEP}]
+ dev-python/tornado[${PYTHON_USEDEP}]
+ dev-python/traitlets[${PYTHON_USEDEP}]
+"
+
+BDEPEND="
+ test? (
+ dev-python/pytest-mock[${PYTHON_USEDEP}]
+ dev-python/pytest-qt[${PYTHON_USEDEP}]
+ )
+"
+
+DOCS=( "README.md" "CHANGELOG.md" )
+
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # Hangs
+ spyder_notebook/widgets/tests/test_main_widget.py::test_save_notebook
+ spyder_notebook/widgets/tests/test_main_widget.py::test_new_notebook
+ # Fails in sandbox
+ spyder_notebook/tests/test_plugin.py::test_open_console_when_no_kernel
+ spyder_notebook/widgets/tests/test_main_widget.py::test_shutdown_notebook_kernel
+ spyder_notebook/widgets/tests/test_main_widget.py::test_file_in_temp_dir_deleted_after_notebook_closed
+ # Some missing file
+ spyder_notebook/widgets/tests/test_main_widget.py::test_open_notebook_in_non_ascii_dir
+ spyder_notebook/widgets/tests/test_main_widget.py::test_close_nonexisting_notebook
+)
+
+python_test() {
+ virtx epytest
+}
diff --git a/dev-python/spyder/Manifest b/dev-python/spyder/Manifest
index 02019bae8cc9..2727ae110ce3 100644
--- a/dev-python/spyder/Manifest
+++ b/dev-python/spyder/Manifest
@@ -1,3 +1,4 @@
DIST spyder-6.0.8.gh.tar.gz 15831723 BLAKE2B 0f9feb6f6a2178799f5dc8fc20c8130fdc66a861902f6c2984ad4ceabbe6dc6bb9468289cfb702f7ac25b465b340d6e928f5dfcf59f4754720d5a50bd92cd474 SHA512 555ad56fcec1926626a18f8edc71aedfdbc0a85fa0bf4e5a69935489434b6d4a83d37a600b5720a34d37f6da967684dd7c890c9e6e5d66283a301fba164e833c
DIST spyder-6.1.0.gh.tar.gz 15933320 BLAKE2B 38f6ac1fd032b808f4df5ae2a55ced30a3ef9b3854e3ee8eda61106cfe88f47c845fefbebbdc750f1f34d6d8e4f55d308454aa48c39e439c3757d1aacfa9160e SHA512 0db05cde6968f4a9b34f20777f87884b19dd007bcd35e3b6a5255e6f77837cfea9ebeb4213afff270056120f067975ad1b3ac6f347d927d5d06ed48f3d7c698e
+DIST spyder-6.1.1.gh.tar.gz 15985728 BLAKE2B bff0f4469b529e56c30cc365baee5797bdea846b03683eda5edbaaaa4544c896e3530c17207f5defd2fce6793cec4704e4da38bee5064f6cfbea01c485cae608 SHA512 0e9fac2eb702acbd2c37fd41c8e12abc2413f2fa69dbd7ea1757ddf1eba7f5106716a98dbf1f71af11302e12b5587bda27664971dffb6ca71ed3561684e9686f
DIST spyder-docs-98004cb46d97fa9fa1cfc3f469919928761e7054.gh.tar.gz 93375891 BLAKE2B c98d391bb33b1ba70bf9c8e8072073e87437541aacd4be42140711b786e8ae07bf5a7ca53dffdb826922b5523150fa2950b04117c335dc57f7c2c22eb693c23f SHA512 55e13f9a55075aed007be32581af954d406703dd9586352084162e01865f943c5aff3aa11b50bdc9813dd8a3a52f8fa8f961c73cfc3f96d95930f2a7b823a1d1
diff --git a/dev-python/spyder/spyder-6.1.1.ebuild b/dev-python/spyder/spyder-6.1.1.ebuild
new file mode 100644
index 000000000000..e96aed7ff499
--- /dev/null
+++ b/dev-python/spyder/spyder-6.1.1.ebuild
@@ -0,0 +1,208 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..14} )
+DISTUTILS_USE_PEP517=setuptools
+
+inherit distutils-r1 optfeature xdg #virtualx
+
+# Commit of documentation to fetch
+DOCS_PV="98004cb46d97fa9fa1cfc3f469919928761e7054"
+
+DESCRIPTION="The Scientific Python Development Environment"
+HOMEPAGE="
+ https://www.spyder-ide.org/
+ https://github.com/spyder-ide/spyder/
+ https://pypi.org/project/spyder/
+"
+SRC_URI="
+ https://github.com/spyder-ide/${PN}/archive/v${PV}.tar.gz -> ${P}.gh.tar.gz
+ https://github.com/spyder-ide/${PN}-docs/archive/${DOCS_PV}.tar.gz -> ${PN}-docs-${DOCS_PV}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+
+# Missing deps and broken
+RESTRICT="test"
+
+RDEPEND="
+ >=dev-python/aiohttp-3.11.2[${PYTHON_USEDEP}]
+ >=dev-python/asyncssh-2.14.0[${PYTHON_USEDEP}]
+ <dev-python/asyncssh-3.0.0[${PYTHON_USEDEP}]
+ >=dev-python/atomicwrites-1.2.0[${PYTHON_USEDEP}]
+ >=dev-python/bcrypt-4.3.0[${PYTHON_USEDEP}]
+ >=dev-python/chardet-2.0.0[${PYTHON_USEDEP}]
+ >=dev-util/cookiecutter-1.6.0[${PYTHON_USEDEP}]
+ >=dev-python/diff-match-patch-20181111[${PYTHON_USEDEP}]
+ >=dev-python/intervaltree-3.0.2[${PYTHON_USEDEP}]
+ >=dev-python/ipython-pygments-lexers-1.0.0[${PYTHON_USEDEP}]
+ >=dev-python/jellyfish-0.7[${PYTHON_USEDEP}]
+ >=dev-python/jsonschema-3.2.0[${PYTHON_USEDEP}]
+ >=dev-python/keyring-17.0.0[${PYTHON_USEDEP}]
+ >=dev-python/nbconvert-4.0[${PYTHON_USEDEP}]
+ >=dev-python/numpydoc-0.6.0[${PYTHON_USEDEP}]
+ >=dev-python/packaging-20.0[${PYTHON_USEDEP}]
+ >=dev-python/pexpect-4.4.0[${PYTHON_USEDEP}]
+ >=dev-python/pickleshare-0.4[${PYTHON_USEDEP}]
+ >=dev-python/psutil-5.3[${PYTHON_USEDEP}]
+ >=dev-python/pygithub-2.3.0[${PYTHON_USEDEP}]
+ >=dev-python/pygments-2.0[${PYTHON_USEDEP}]
+ >=dev-python/pylint-venv-3.0.2[${PYTHON_USEDEP}]
+ >=dev-python/python-lsp-black-2.0.0[${PYTHON_USEDEP}]
+ <dev-python/python-lsp-black-3.0.0[${PYTHON_USEDEP}]
+ >=dev-python/python-lsp-ruff-2.3.0[${PYTHON_USEDEP}]
+ <dev-python/python-lsp-ruff-3.0.0[${PYTHON_USEDEP}]
+ >=dev-python/pyls-spyder-0.4.0[${PYTHON_USEDEP}]
+ >=dev-python/pyuca-1.2[${PYTHON_USEDEP}]
+ >=dev-python/pyxdg-0.26[${PYTHON_USEDEP}]
+ >=dev-python/pyzmq-24.0.0[${PYTHON_USEDEP}]
+ >=dev-python/qdarkstyle-3.2.0[${PYTHON_USEDEP}]
+ <dev-python/qdarkstyle-3.3.0[${PYTHON_USEDEP}]
+ >=dev-python/qstylizer-0.2.2[${PYTHON_USEDEP}]
+ >=dev-python/qtawesome-1.4.0[${PYTHON_USEDEP}]
+ <dev-python/qtawesome-1.5.0[${PYTHON_USEDEP}]
+ >=dev-python/qtconsole-5.7.0[${PYTHON_USEDEP}]
+ <dev-python/qtconsole-5.8.0[${PYTHON_USEDEP}]
+ >=dev-python/qtpy-2.4.0[${PYTHON_USEDEP},pyqt6,quick,svg,webengine]
+ >=dev-python/rtree-0.9.7[${PYTHON_USEDEP}]
+ >=dev-python/sphinx-7.2.0[${PYTHON_USEDEP}]
+ >=dev-python/spyder-kernels-3.1.2[${PYTHON_USEDEP}]
+ <dev-python/spyder-kernels-3.2.0[${PYTHON_USEDEP}]
+ >=dev-python/superqt-0.6.2[${PYTHON_USEDEP}]
+ <dev-python/superqt-1.0.0[${PYTHON_USEDEP}]
+ >=dev-python/textdistance-4.2.0[${PYTHON_USEDEP}]
+ >=dev-python/three-merge-0.1.1[${PYTHON_USEDEP}]
+ >=dev-python/watchdog-0.10.3[${PYTHON_USEDEP}]
+ >=dev-python/yarl-1.9.4[${PYTHON_USEDEP}]
+"
+
+# BDEPEND="
+# test? (
+# dev-python/cython[${PYTHON_USEDEP}]
+# dev-python/flaky[${PYTHON_USEDEP}]
+# dev-python/matplotlib[tk,${PYTHON_USEDEP}]
+# dev-python/pandas[${PYTHON_USEDEP}]
+# dev-python/pillow[${PYTHON_USEDEP}]
+# dev-python/pytest-lazy-fixture[${PYTHON_USEDEP}]
+# dev-python/pytest-mock[${PYTHON_USEDEP}]
+# dev-python/pytest-order[${PYTHON_USEDEP}]
+# dev-python/pytest-qt[${PYTHON_USEDEP}]
+# dev-python/pytest-timeout[${PYTHON_USEDEP}]
+# dev-python/pyyaml[${PYTHON_USEDEP}]
+# dev-python/qtpy[${PYTHON_USEDEP}]
+# dev-python/scipy[${PYTHON_USEDEP}]
+# dev-python/sympy[${PYTHON_USEDEP}]
+# )"
+
+# Based on the courtesy of Arfrever
+# This patch removes a call to update-desktop-database during build
+# This fails because access is denied to this command during build
+PATCHES=(
+ "${FILESDIR}/${PN}-5.0.0-build.patch"
+ "${FILESDIR}/${PN}-6.0.3-no-dep-on-importlib.patch"
+)
+
+DOCS=(
+ "AUTHORS.txt"
+ "Announcements.md"
+ "CHANGELOG.md"
+ "CODE_OF_CONDUCT.md"
+ "CONTRIBUTING.md"
+ "NOTICE.txt"
+ "README.md"
+ "RELEASE.md"
+)
+
+distutils_enable_tests pytest
+# TODO: Package sphinx-design
+# distutils_enable_sphinx docs/doc \
+# dev-python/sphinx-panels \
+# dev-python/pydata-sphinx-theme \
+# dev-python/sphinx-multiversion
+
+python_prepare_all() {
+ # move docs into workdir
+ mv ../spyder-docs-${DOCS_PV}* docs || die
+
+ # these dependencies are packaged separately:
+ # dev-python/spyder-kernels,
+ # dev-python/python-lsp-server,
+ # dev-python/qdarkstyle
+ rm -r external-deps/* || die
+ # runs against things packaged in external-deps dir
+ rm conftest.py || die
+
+ # Do not depend on pyqt5<5.16, this dependency is carried by QtPy[pyqt5]
+ # Do not depend on pyqtwebengine<5.16, this dependency is carried by QtPy[webengine]
+ # Do not depend on parso and jedi, this is dependency is carried in python-lsp-server
+ # Do not depend on python-lsp-server, this dependency is carried in pyls-spyder
+ # Do not depend on ipython, this dependency is carried in spyder-kernels
+ # The explicit version requirements only make things more complicated, if e.g.
+ # pyls-spyder gains compatibility with a newer version of python-lsp-server
+ # in a new release it will take time for this information to propagate into
+ # the next spyder release. So just remove the dependency and let the other
+ # ebuilds handle the version requirements to speed things up and prevent
+ # issues such as Bug 803269.
+ sed -i \
+ -e "/'pyqt5[ 0-9<=>.,]*',/d" \
+ -e "/'pyqtwebengine[ 0-9<=>.,]*',/d" \
+ -e "/'python-lsp-server\[all\][ 0-9<=>.,]*',/d" \
+ -e "/'parso[ 0-9<=>.,]*',/d" \
+ -e "/'jedi[ 0-9<=>.,]*',/d" \
+ -e "/'pylint[ 0-9<=>.,]*',/d" \
+ setup.py || die
+ # -e "/'ipython[ 0-9<=>.,]*',/d" \
+ sed -i \
+ -e "/^PYLS_REQVER/c\PYLS_REQVER = '>=0.0.1'" \
+ -e "/^PYLSP_REQVER/c\PYLSP_REQVER = '>=0.0.1'" \
+ -e "/^PARSO_REQVER/c\PARSO_REQVER = '>=0.0.1'" \
+ -e "/^JEDI_REQVER/c\JEDI_REQVER = '>=0.0.1'" \
+ -e "/^PYLINT_REQVER/c\PYLINT_REQVER = '>=0.0.1'" \
+ spyder/dependencies.py || die
+ # -e "/^IPYTHON_REQVER/c\IPYTHON_REQVER = '>=0.0.1'" \
+
+ # do not check deps, fails because we removed dependencies above
+ sed -i -e 's:test_dependencies_for_spyder_setup_install_requires_in_sync:_&:' \
+ spyder/tests/test_dependencies_in_sync.py || die
+
+ # skip online test
+ rm spyder/widgets/github/tests/test_github_backend.py || die
+
+ export SPYDER_QT_BINDING=pyqt6
+
+ distutils-r1_python_prepare_all
+}
+
+# Calling pytest directly somehow passes the pytest arguments to spyder
+# causing an invalid argument error
+# python_test() {
+# virtx "${EPYTHON}" runtests.py
+# }
+
+pkg_postinst() {
+ xdg_pkg_postinst
+
+ optfeature "2D/3D plotting in the Python and IPython consoles" dev-python/matplotlib
+ optfeature "View and edit DataFrames and Series in the Variable Explorer" dev-python/pandas
+ optfeature "View and edit two or three dimensional arrays in the Variable Explorer" dev-python/numpy
+ optfeature "Symbolic mathematics in the IPython console" dev-python/sympy
+ optfeature "Import Matlab workspace files in the Variable Explorer" dev-python/scipy
+ optfeature "Run Cython files in the IPython console" dev-python/cython
+ optfeature "The hdf5/h5py plugin" dev-python/h5py
+ optfeature "The line profiler plugin" dev-python/spyder-line-profiler
+ optfeature "Vim key bindings" dev-python/spyder-vim
+ optfeature "Unittest support" dev-python/spyder-unittest
+ optfeature "System terminal inside spyder" dev-python/spyder-terminal
+ optfeature "Jupyter notebook support" dev-python/spyder-notebook
+ # spyder-memory-profiler is not compatible with spyder-5.2+ yet
+ # optfeature "The memory profiler plugin" dev-python/spyder-memory-profiler
+ # spyder-reports not yet updated to >=spyder-4.0.0
+ # optfeature "Markdown reports using Pweave" dev-python/spyder-reports
+ # Plugins with no release yet:
+ # optfeature "Manage virtual environments and packages" dev-python/spyder-env-manager
+ # optfeature "VCS (e.g. git) integration" dev-python/spyder-vcs
+}
diff --git a/dev-python/translate-toolkit/Manifest b/dev-python/translate-toolkit/Manifest
index e93e05af8bdd..4cab4ae85480 100644
--- a/dev-python/translate-toolkit/Manifest
+++ b/dev-python/translate-toolkit/Manifest
@@ -1,3 +1 @@
-DIST translate-3.15.6.gh.tar.gz 1176856 BLAKE2B 4d23c254f89b84098f0e97dd6ba726129cedda3fc7bf7fad6d3171b5e66817bbf07025d8d1c2f8e7a5d643903ddc13668909fd06888fbd6fa152c83734be8791 SHA512 7881c6aba835003efb67ab0cf1f1420d1d4928d62fa04a6f15a49f49a5bb4d42eadbc3ae9b7dbe3ecbd756333a054c41f1f0fd45d9f6aedba609931233b691b1
-DIST translate-3.16.2.gh.tar.gz 1182285 BLAKE2B bc61eb5ff86586582f2c78be292345cc4cda54cfbb6e6687a8c54cbaf4634933c464548b6f42d5da916d0e92596d61767d79f8a2db8c0013766b0361ba0b2ec4 SHA512 58571a096f51d159334ae6c7fb242d35e05fcefeb7ce3a5984d89d8c4ede714432694ad03895352ee3450f40cd587431a92763be225fe6f0e680378bb1336317
DIST translate-3.16.3.gh.tar.gz 1182562 BLAKE2B 25ea88b5490891140670cdc384c9c1a318dce0085d6b9c8f6b1a7fbb0892a2e6eb80c26c02fa4890d3ec45c0d9c3958d7c3c4c33dba76d1ee03d977ee0a6863a SHA512 e2e59ca01769a88fd7c6367d0e1e8b96da9f950b600fc62eecae9aed4ad072877b1fd1a6742f0588b2b27d33f6652e98db4c90e63fb4d09481a651019beaee44
diff --git a/dev-python/translate-toolkit/translate-toolkit-3.15.6.ebuild b/dev-python/translate-toolkit/translate-toolkit-3.15.6.ebuild
deleted file mode 100644
index 88500ec54284..000000000000
--- a/dev-python/translate-toolkit/translate-toolkit-3.15.6.ebuild
+++ /dev/null
@@ -1,126 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{10..14} )
-PYTHON_REQ_USE="sqlite"
-
-inherit distutils-r1
-
-MY_P=translate-${PV}
-DESCRIPTION="Toolkit to convert between many translation formats"
-HOMEPAGE="
- https://github.com/translate/translate/
- https://pypi.org/project/translate-toolkit/
-"
-SRC_URI="
- https://github.com/translate/translate/archive/${PV}.tar.gz
- -> ${MY_P}.gh.tar.gz
-"
-S="${WORKDIR}"/${MY_P}
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="amd64 arm64 x86"
-IUSE="+html +ical +ini +subtitles +yaml"
-
-RDEPEND="
- app-text/iso-codes
- >=dev-python/chardet-3.0.4[${PYTHON_USEDEP}]
- dev-python/cheroot[${PYTHON_USEDEP}]
- >=dev-python/levenshtein-0.12.0[${PYTHON_USEDEP}]
- >=dev-python/lxml-5.2.0[${PYTHON_USEDEP}]
- >=dev-python/mistletoe-1.1.0[${PYTHON_USEDEP}]
- >=dev-python/pyparsing-3[${PYTHON_USEDEP}]
- dev-python/ruamel-yaml[${PYTHON_USEDEP}]
- >=dev-python/cwcwidth-0.1.9[${PYTHON_USEDEP}]
- sys-devel/gettext
- html? ( dev-python/utidylib[${PYTHON_USEDEP}] )
- ical? ( dev-python/vobject[${PYTHON_USEDEP}] )
- ini? ( >=dev-python/iniparse-0.5[${PYTHON_USEDEP}] )
- subtitles? ( media-video/gaupol[${PYTHON_USEDEP}] )
- yaml? ( dev-python/pyyaml[${PYTHON_USEDEP}] )
-"
-# Technically, the test suite also has undeclared dependency
-# on dev-python/snapshottest but all the tests using it are broken
-# anyway, so we skip them.
-BDEPEND="
- test? (
- dev-python/phply[${PYTHON_USEDEP}]
- )
-"
-
-EPYTEST_PLUGINS=()
-distutils_enable_tests pytest
-
-src_prepare() {
- distutils-r1_src_prepare
-
- # strip unnecessary pins
- sed -i -e 's:,<[0-9.]*::' pyproject.toml || die
-}
-
-src_test() {
- # unfortunately, this bad quality package doesn't support XDG_DATA_DIRS
- # correctly, so we need to reassemble all data files in a single directory
- local -x XDG_DATA_HOME=${T}/share
- cp -r translate/share "${T}/" || die
- cp -r "${ESYSROOT}"/usr/share/gaupol "${XDG_DATA_HOME}"/ || die
-
- distutils-r1_src_test
-}
-
-python_test() {
- local EPYTEST_DESELECT=(
- # Fails with network-sandbox (and even with it off but w/ softer fail)
- 'tests/xliff_conformance/test_xliff_conformance.py::test_open_office_to_xliff'
- 'tests/xliff_conformance/test_xliff_conformance.py::test_po_to_xliff'
- # all tests based on snapshottest are broken and I'm too tired
- # to figure this out
- tests/translate/tools/test_pocount.py::test_{cases,output}
- tests/translate/tools/test_junitmsgfmt.py::test_output
- )
- local EPYTEST_IGNORE=(
- # unpackaged fluent.*
- tests/translate/storage/test_fluent.py
- # changes directory and does not change it back, sigh
- tests/odf_xliff/test_odf_xliff.py
- )
-
- if ! has_version "dev-python/iniparse[${PYTHON_USEDEP}]"; then
- EPYTEST_IGNORE+=(
- translate/convert/test_ini2po.py
- translate/convert/test_po2ini.py
- )
- fi
-
- if ! has_version "media-video/gaupol[${PYTHON_USEDEP}]"; then
- EPYTEST_IGNORE+=(
- translate/storage/test_subtitles.py
- )
- fi
-
- epytest
-}
-
-python_install_all() {
- distutils-r1_python_install_all
-
- insinto /usr
- doins -r translate/share
-
- if ! use html; then
- rm "${ED}"/usr/bin/{html2po,po2html} || die
- fi
- if ! use ical; then
- rm "${ED}"/usr/bin/{ical2po,po2ical} || die
- fi
- if ! use ini; then
- rm "${ED}"/usr/bin/{ini2po,po2ini} || die
- fi
- if ! use subtitles; then
- rm "${ED}"/usr/bin/{sub2po,po2sub} || die
- fi
-}
diff --git a/dev-python/translate-toolkit/translate-toolkit-3.16.2.ebuild b/dev-python/translate-toolkit/translate-toolkit-3.16.2.ebuild
deleted file mode 100644
index 728cbcf31b38..000000000000
--- a/dev-python/translate-toolkit/translate-toolkit-3.16.2.ebuild
+++ /dev/null
@@ -1,127 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{10..14} )
-PYTHON_REQ_USE="sqlite"
-
-inherit distutils-r1
-
-MY_P=translate-${PV}
-DESCRIPTION="Toolkit to convert between many translation formats"
-HOMEPAGE="
- https://github.com/translate/translate/
- https://pypi.org/project/translate-toolkit/
-"
-SRC_URI="
- https://github.com/translate/translate/archive/${PV}.tar.gz
- -> ${MY_P}.gh.tar.gz
-"
-S="${WORKDIR}"/${MY_P}
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="amd64 arm64 x86"
-IUSE="+html +ical +ini +subtitles +yaml"
-
-RDEPEND="
- app-text/iso-codes
- >=dev-python/chardet-3.0.4[${PYTHON_USEDEP}]
- dev-python/cheroot[${PYTHON_USEDEP}]
- >=dev-python/levenshtein-0.12.0[${PYTHON_USEDEP}]
- >=dev-python/lxml-5.2.0[${PYTHON_USEDEP}]
- >=dev-python/mistletoe-1.1.0[${PYTHON_USEDEP}]
- >=dev-python/pyparsing-3[${PYTHON_USEDEP}]
- dev-python/ruamel-yaml[${PYTHON_USEDEP}]
- >=dev-python/wcwidth-0.2.14[${PYTHON_USEDEP}]
- sys-devel/gettext
- html? ( dev-python/utidylib[${PYTHON_USEDEP}] )
- ical? ( dev-python/vobject[${PYTHON_USEDEP}] )
- ini? ( >=dev-python/iniparse-0.5[${PYTHON_USEDEP}] )
- subtitles? ( media-video/gaupol[${PYTHON_USEDEP}] )
- yaml? ( dev-python/pyyaml[${PYTHON_USEDEP}] )
-"
-# Technically, the test suite also has undeclared dependency
-# on dev-python/snapshottest but all the tests using it are broken
-# anyway, so we skip them.
-BDEPEND="
- test? (
- dev-python/phply[${PYTHON_USEDEP}]
- )
-"
-
-EPYTEST_PLUGINS=()
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-src_prepare() {
- distutils-r1_src_prepare
-
- # strip unnecessary pins
- sed -i -e 's:,<[0-9.]*::' pyproject.toml || die
-}
-
-src_test() {
- # unfortunately, this bad quality package doesn't support XDG_DATA_DIRS
- # correctly, so we need to reassemble all data files in a single directory
- local -x XDG_DATA_HOME=${T}/share
- cp -r translate/share "${T}/" || die
- cp -r "${ESYSROOT}"/usr/share/gaupol "${XDG_DATA_HOME}"/ || die
-
- distutils-r1_src_test
-}
-
-python_test() {
- local EPYTEST_DESELECT=(
- # Fails with network-sandbox (and even with it off but w/ softer fail)
- 'tests/xliff_conformance/test_xliff_conformance.py::test_open_office_to_xliff'
- 'tests/xliff_conformance/test_xliff_conformance.py::test_po_to_xliff'
- # all tests based on snapshottest are broken and I'm too tired
- # to figure this out
- tests/translate/tools/test_pocount.py::test_{cases,output}
- tests/translate/tools/test_junitmsgfmt.py::test_output
- )
- local EPYTEST_IGNORE=(
- # unpackaged fluent.*
- tests/translate/storage/test_fluent.py
- # changes directory and does not change it back, sigh
- tests/odf_xliff/test_odf_xliff.py
- )
-
- if ! has_version "dev-python/iniparse[${PYTHON_USEDEP}]"; then
- EPYTEST_IGNORE+=(
- translate/convert/test_ini2po.py
- translate/convert/test_po2ini.py
- )
- fi
-
- if ! has_version "media-video/gaupol[${PYTHON_USEDEP}]"; then
- EPYTEST_IGNORE+=(
- translate/storage/test_subtitles.py
- )
- fi
-
- epytest
-}
-
-python_install_all() {
- distutils-r1_python_install_all
-
- insinto /usr
- doins -r translate/share
-
- if ! use html; then
- rm "${ED}"/usr/bin/{html2po,po2html} || die
- fi
- if ! use ical; then
- rm "${ED}"/usr/bin/{ical2po,po2ical} || die
- fi
- if ! use ini; then
- rm "${ED}"/usr/bin/{ini2po,po2ini} || die
- fi
- if ! use subtitles; then
- rm "${ED}"/usr/bin/{sub2po,po2sub} || die
- fi
-}
diff --git a/dev-python/uv-build/Manifest b/dev-python/uv-build/Manifest
index e1b4b67bd5ea..8debe4b06c14 100644
--- a/dev-python/uv-build/Manifest
+++ b/dev-python/uv-build/Manifest
@@ -1,6 +1,7 @@
DIST uv_build-0.9.10.tar.gz 335784 BLAKE2B 17b88b25081dcd8f95aa1e35f871663ba7f5910ed78c2d2aa09cefca9d4a7db26bf0731fe2ff468ff4ec049c251485116fe38ba48c8b04ea218bbe213d6c7253 SHA512 0a202b67a19054bd01830d2cfb3382cde90c0edf54118b179ef2bf0d4ea04730dafb7683e4bf932c8a3c7779c35b0deec96bb0fa60cde8baf6a39e6c16420378
DIST uv_build-0.9.11.tar.gz 336407 BLAKE2B 19177207f53ecab919ee875ae5aecd77f76dc971841a2f68f388e69cdfbb4d181a544e1fda08cccea66774839ec7e64600f9cf50d04025b1c827e85777c0f5f7 SHA512 1d0f26d05d1a418c32f4a78de50b256be01de0e4e527f68269ec3f245cbaf943a3f3f140d630a304c9e87463b8202b152e788efc95aa0ca0b87430fa13697079
DIST uv_build-0.9.12.tar.gz 338778 BLAKE2B b11a99bcd9f130107a2529a204bfcb64a3bdc7116a5f8dacef285f08db1cc999ad55b8b791c820dd6c16ff9d6941c9090dd9d58ffafb3d97da6031c350a736c8 SHA512 84e5231654e133032909a30375ab6284fcad3770140d9e9b9d14ea0fc261f380b7b60be3785acb51e2f09e3cdee1f9c76c8af38daa9ca42513c9728725d6ff44
+DIST uv_build-0.9.13.tar.gz 338831 BLAKE2B ba0b4eca782afc52d7303a51ecb18957073c22c0be1dae90ccc044c59cc2a6502c89ce06a5fa6b4014fdd54f641d97523cdad4ab15f19e9ae97541aa51a7a5ec SHA512 6ef5fe809b2fc80778b33c43b3083fdd4320be031818d88f3bf9e7f2dd4bcf59303ccd7b5398eacedbf9c500ae336bf18c7ed15de858b6f369594e14b005d71d
DIST uv_build-0.9.4.tar.gz 332506 BLAKE2B 3b65cc80192cf3abc33bcf01735c8b7f937a12f2dcd0557d0ae255ce8bd4cb7dbb15522e73802be0e17ac10c4acad6f9075f12d5f853bb1881b0c13f1d120b33 SHA512 c3be52cfbc1cf5a229df91d9e1125925a534e3fca3041e29a16edd2334fa28b055c73e21a6bd1a3d1d63924cf8f112645300530e8cb6139fb549499ca672070f
DIST uv_build-0.9.6.tar.gz 332253 BLAKE2B 2c3fa23dbe36b0866a3a3194b07ee1212cb00acd785c375646c3eb6c97a63435f28c9e934f56c8d6feeec145aace1aad37550b85ae2a611f521fc25a4c7d3bc1 SHA512 e8d8bbd46c92722261722f3d8865b2b24e695edf52652c1d1310adae3cb437ebef5397feda90e3bf863394ca75cf3024eb90a5f80b2b92af24ede4e2f81b0ce1
DIST uv_build-0.9.7.tar.gz 332992 BLAKE2B 069e615f41e78098b61cc073cb01bc77e0e6778f3054ccfcf36985be3755d7e819cc1bd151e875db109461f423cc855cd336467015ec7103e47346f230564679 SHA512 d61249de00640f6e0ab62ab440a8aae1802acbd6cf8ecb8aca3efe26361d7191d057735ab91c174c5772fc04accf0ae3281f447d010c99e2f458829f4c618abc
diff --git a/dev-python/uv-build/uv-build-0.9.13.ebuild b/dev-python/uv-build/uv-build-0.9.13.ebuild
new file mode 100644
index 000000000000..fe8e9650d15e
--- /dev/null
+++ b/dev-python/uv-build/uv-build-0.9.13.ebuild
@@ -0,0 +1,99 @@
+# Copyright 2025 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 2e821038c2f4..1ee1a6e8e1fc 100644
--- a/dev-python/uv/Manifest
+++ b/dev-python/uv/Manifest
@@ -9,6 +9,8 @@ DIST uv-0.9.11-crates.tar.xz 46466972 BLAKE2B 2d953b33911283ba96474a6d265043ead6
DIST uv-0.9.11.gh.tar.gz 4813209 BLAKE2B 3849e3f6156623b7f56aa215b081f6b16675e7f588f21b08a6cdb4738b1bf4866e1ed0ff386a2ba11b1df9bc39b6f7ab1bf253d59c2062ea6c1e5f95a2d4f7a2 SHA512 a3399fa2f68c59c777743990e1b76db7da172486c32e45349ca9ccb27a2f29c6d691f23ecd6095f8805f58a2867925485fed4d0d3a367c592111f79cf62e7d03
DIST uv-0.9.12-crates.tar.xz 46463392 BLAKE2B 54b504453381a619537155898ab8c19d330e1b7207df43f1c38dec644031e94ed4562219d69c55a4907f33a5ca8b5d6871af5d016e7ffbcf77416477ad81640e SHA512 bbbc5a1713aae4ca5b035a77a5bba96e33cdf67350bcfa2a05058e8d26004b43444ecf99b3a836afd88e2b81465069a63b602fb4868c2238752239d05628bc4a
DIST uv-0.9.12.gh.tar.gz 4855216 BLAKE2B dc25a9a6fb6ffe6010a6be358d5b3a14eab9cd459f7b563dfa7d18d840d1fdb2d5e9b38478222c7c9e5c1bee7e824b913f4d482cdfd8b53c4671a22e222abb54 SHA512 fa7e8dd846c328c2ad5d7d7c2163432f031286cdc485a3754d8068acc84568a877dc3daf9052d674b69c5b6c54347c612a8ba13dcba100418318b46206464ff0
+DIST uv-0.9.13-crates.tar.xz 46463392 BLAKE2B 54b504453381a619537155898ab8c19d330e1b7207df43f1c38dec644031e94ed4562219d69c55a4907f33a5ca8b5d6871af5d016e7ffbcf77416477ad81640e SHA512 bbbc5a1713aae4ca5b035a77a5bba96e33cdf67350bcfa2a05058e8d26004b43444ecf99b3a836afd88e2b81465069a63b602fb4868c2238752239d05628bc4a
+DIST uv-0.9.13.gh.tar.gz 4856421 BLAKE2B f7b0a2ead03da04b61e9d5c56add88f17a5f314f6a6b8bca4aa9c66d2d3754595c42cff98be8022ccc729c7213d53a1af002c145f091da6b736f7d7a199a1414 SHA512 eb35b243c18c2e7fb7783eecdb3c6d85c277d808117cc02ed4c600246237f56613988a414f66b7486691f770444eb2b2e5f3bee6c2e539e4c4dec305cb022266
DIST uv-0.9.4-crates.tar.xz 46093644 BLAKE2B bdce4b138718b91a67ccb36e6d8839358ab2ddeeedec3017bc245b0717e32d890a41f8c9c831983681ec715ce458efa8d43356c189b9b7457df3e71122924e3f SHA512 7047b68db7e05abb6a399250a4a531499985d42f12eff61ad1557823b37d62576b38b51ccbe39a02bc9a98af6341de728466b262c49bb48dd30abb64eb804660
DIST uv-0.9.4.gh.tar.gz 4749319 BLAKE2B b46d44830f7a2a621f3ab420db85e9d999b7c42ddebc21403ea2f11e819e8295af37049f1529848a3fd83ef87ac0de26ce1e1c03bf4177c3032b9adfd6dfe1e8 SHA512 ae11c1e777e3d0e036f0a665e2edfb9a4b5b50a9e107d795113b626bc16d406d3fca12e8a133185e54279b2a64f8e3d276372cefc9a96b2ac5f1ed0ece2c10b0
DIST uv-0.9.6-crates.tar.xz 45696768 BLAKE2B 96cff52c0e5477c4e9648e3863d32bde4b34a1a46b6d96703c48fe340b655319e951471aa6403c09818c313a59b0e54804467efa7e13a8410de34299a98f077b SHA512 46964460f3404304faefd1758bb07bcddf1d48efbdd2b890ddb0d2623841e1a0c86108ac3c9312ed8e2f8fcaefbf9b022b57cd6074fdb6d52f43c35e3b3c2d32
diff --git a/dev-python/uv/uv-0.9.13.ebuild b/dev-python/uv/uv-0.9.13.ebuild
new file mode 100644
index 000000000000..253d1ec065af
--- /dev/null
+++ b/dev-python/uv/uv-0.9.13.ebuild
@@ -0,0 +1,167 @@
+# Copyright 2024-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+CRATES="
+"
+RUST_MIN_VER="1.89.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="
+ 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=(
+ git
+ pypi
+ python
+ )
+
+ cargo_src_configure --no-default-features
+}
+
+src_compile() {
+ cd crates/uv || die
+ cargo_src_compile
+}
+
+src_test() {
+ # work around https://github.com/astral-sh/uv/issues/4376
+ local -x PATH=${BROOT}/usr/lib/python-exec/python3.12:${PATH}
+ local -x COLUMNS=100
+ local -x PYTHONDONTWRITEBYTECODE=
+ # fix tests failing because of our config
+ local -x XDG_CONFIG_DIRS=${T}
+
+ 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
+}