summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
authorLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2025-10-16 07:34:20 +0000
committerLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2025-10-16 07:34:20 +0000
commitfe923440723177a33e774e89ffe269b1017ee3ce (patch)
tree075866216ca6ae63cd7077d83cd44fadf0fe982a /dev-python
parent86478e788fb36152770b208ece6adb68a5050838 (diff)
downloadbaldeagleos-repo-fe923440723177a33e774e89ffe269b1017ee3ce.tar.gz
baldeagleos-repo-fe923440723177a33e774e89ffe269b1017ee3ce.tar.xz
baldeagleos-repo-fe923440723177a33e774e89ffe269b1017ee3ce.zip
Adding metadata
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/boto3/Manifest1
-rw-r--r--dev-python/boto3/boto3-1.40.53.ebuild53
-rw-r--r--dev-python/botocore/Manifest1
-rw-r--r--dev-python/botocore/botocore-1.40.53.ebuild67
-rw-r--r--dev-python/coverage/Manifest2
-rw-r--r--dev-python/coverage/coverage-7.11.0.ebuild110
-rw-r--r--dev-python/humanize/Manifest2
-rw-r--r--dev-python/humanize/humanize-4.14.0.ebuild30
-rw-r--r--dev-python/hypothesis/Manifest1
-rw-r--r--dev-python/hypothesis/hypothesis-6.141.1.ebuild125
-rw-r--r--dev-python/inline-snapshot/Manifest2
-rw-r--r--dev-python/inline-snapshot/inline-snapshot-0.30.0.ebuild62
-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/mkdocs-material/Manifest1
-rw-r--r--dev-python/mkdocs-material/mkdocs-material-9.6.22.ebuild73
-rw-r--r--dev-python/numpy/Manifest2
-rw-r--r--dev-python/numpy/numpy-2.3.4.ebuild358
-rw-r--r--dev-python/patiencediff/Manifest21
-rw-r--r--dev-python/patiencediff/patiencediff-0.2.18.ebuild71
-rw-r--r--dev-python/pbs-installer/Manifest2
-rw-r--r--dev-python/pbs-installer/pbs-installer-2025.10.14.ebuild31
-rw-r--r--dev-python/pillow/Manifest3
-rw-r--r--dev-python/pillow/files/pillow-11.2.1-py314.patch49
-rw-r--r--dev-python/pillow/pillow-12.0.0.ebuild (renamed from dev-python/pillow/pillow-11.2.1.ebuild)13
-rw-r--r--dev-python/pyghmi/Manifest3
-rw-r--r--dev-python/pyghmi/pyghmi-1.6.3.ebuild33
-rw-r--r--dev-python/pyghmi/pyghmi-1.6.6.ebuild (renamed from dev-python/pyghmi/pyghmi-1.6.2.ebuild)0
-rw-r--r--dev-python/pylint/Manifest1
-rw-r--r--dev-python/pylint/pylint-4.0.1.ebuild85
-rw-r--r--dev-python/pyproject-fmt/Manifest1
-rw-r--r--dev-python/pyproject-fmt/pyproject-fmt-2.11.0.ebuild150
-rw-r--r--dev-python/sphinx-autodoc-typehints/Manifest2
-rw-r--r--dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-3.5.2.ebuild41
-rw-r--r--dev-python/unearth/Manifest2
-rw-r--r--dev-python/unearth/unearth-0.18.1.ebuild37
-rw-r--r--dev-python/uv-build/Manifest1
-rw-r--r--dev-python/uv-build/uv-build-0.9.3.ebuild99
-rw-r--r--dev-python/uv/Manifest2
-rw-r--r--dev-python/uv/uv-0.9.3.ebuild183
42 files changed, 1647 insertions, 102 deletions
diff --git a/dev-python/boto3/Manifest b/dev-python/boto3/Manifest
index b4fa2c1a3e0b..e7e15d17664e 100644
--- a/dev-python/boto3/Manifest
+++ b/dev-python/boto3/Manifest
@@ -8,3 +8,4 @@ DIST boto3-1.40.45.gh.tar.gz 1007074 BLAKE2B b6b36715046fc1468ad02770b31c88276d3
DIST boto3-1.40.50.gh.tar.gz 1009112 BLAKE2B a5c1be6c13cacb8b0fa1a7b4c64a9fec9caabd6b17ba9cdceb45da4954e21d4020a707d72eb2de52e8d83b78990adf5ce8a82dc166d84f5e98fa5289304dadee SHA512 7955190f7a55b47293b25b15e1b5c86e79a3a468aba20999a114de99df3af57cf6a2d23acbc90dde056aa2f557db938fa8f6638d3de939009b6a6ec69d691a18
DIST boto3-1.40.51.gh.tar.gz 1009591 BLAKE2B 1b574f5c14eb8e8274f51764b587c8dc6cd4be95445cd5988cbfd1930ba970643653b7b2343e0c9f28c8ec906d714da662df7ed5743fc4d732e62d39f862e967 SHA512 d2564dce5a656b5f0eff78f2953c1407150e67f92fb01df0ca45f1e62ad0e343ea09fa362e64ecf688f091017ff068eb7a77d37c908d23215c61bcc28bb5cfaa
DIST boto3-1.40.52.gh.tar.gz 1010268 BLAKE2B 83b1ca1b5b65bd8e058fea5a97dc37b6bef6a4243bf0fc2cc1c6d9be1b9808852e5b854ac902e7a97ded4a65cb25279ae43ca39c179c6552b83f859522859f80 SHA512 8e18f4c9ba9101babd0ca83a7094daa1e1302ef2e46c49d67a3b61b00f89983698a0dd2632d2d566138031cf6cbe3924202b60e5aaee4a9d48ace83fa77b8e86
+DIST boto3-1.40.53.gh.tar.gz 1011133 BLAKE2B c2b93b36d9ed83c442ee2f2f873668947c06f27122b77eec925ca23b52753ac2056dbfb49aed7793b95c8bba7d8bf5b19df85f9bd7160270f72039dd4c61e412 SHA512 b595ec51307c5d218a25fe88cd26f01786d4b0afb7b160f6c42f256f7fdd1789ed9a05d0b2e77c4967384413328caa7fda43981567ad562ba3230e25844f92ae
diff --git a/dev-python/boto3/boto3-1.40.53.ebuild b/dev-python/boto3/boto3-1.40.53.ebuild
new file mode 100644
index 000000000000..cb388ebe6570
--- /dev/null
+++ b/dev-python/boto3/boto3-1.40.53.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.14.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 e1f90d69cb81..1c302cca8ea5 100644
--- a/dev-python/botocore/Manifest
+++ b/dev-python/botocore/Manifest
@@ -8,3 +8,4 @@ DIST botocore-1.40.45.gh.tar.gz 15197014 BLAKE2B 6b44913005d75f22b0ff993b1fea47a
DIST botocore-1.40.50.gh.tar.gz 15222465 BLAKE2B 626b040c06531d96c1e0276e4bf6a70747b2c8184d9178b24333b1b7e91e833175114d31e7ee1b48b83597b22b2869132b50f3834a4bdaa082a111a7a9f41a10 SHA512 91ac7467c8b1cc58d2b29a0bb34d7374a7c8987eb73caccc3b3becb782995d64a874d099ea74a5e0c046d0aae2497211a0a84d3a8e7f42efc1252fa6ab517872
DIST botocore-1.40.51.gh.tar.gz 15225894 BLAKE2B c4524ecc477f6d21b87040792f4c123e8b1f6dfcee1a8fa04374ced27f685251028a8aa43a5f608bb0a46aa51b2d19d00e46cceaa5822e2a28a701782d8a9109 SHA512 1091fbe9c63b9990367886d937f93392bae720682c0471496cca1c841ef177157e3191575b70f40c721f787b25ea4747df0d1b26c12b9b7eae62db93127695d9
DIST botocore-1.40.52.gh.tar.gz 15233376 BLAKE2B 42b98caa71139cc3893a99216caa5eb3553d37419c24ddf1f8f21798652ef7c61611d887b7b4d2d0d68a6060a7e96c2847f0858d1c9445ad224a586db864d1c2 SHA512 799393c26e105a64fb6e83259f2a4ade3fdddd334056a5bf4f77f7b51eda548687e9fe1de9dad4e95a0258302d63d84a66d2b3e0296643bd96234ec96c31ace3
+DIST botocore-1.40.53.gh.tar.gz 15251620 BLAKE2B ff4e660e6b2ab94e1ddc2f7a8c9a888ebc9be3833f672e49dc7fa9960f51caddf6e1ad5d0a7453a8948bcd016f2bbe995c1a06509341713c863b64e92fef01b0 SHA512 f64a034fa916b7cd49a21a3248b888c63635bafbce3034ca1ee144f80a92ccc94ac7f51cb5a459399449259d2f20d6f39efb126d6c19aa6c8200dd87e190e772
diff --git a/dev-python/botocore/botocore-1.40.53.ebuild b/dev-python/botocore/botocore-1.40.53.ebuild
new file mode 100644
index 000000000000..ee8074e67dce
--- /dev/null
+++ b/dev-python/botocore/botocore-1.40.53.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/coverage/Manifest b/dev-python/coverage/Manifest
index c4666fd9d549..96a4b2ea6195 100644
--- a/dev-python/coverage/Manifest
+++ b/dev-python/coverage/Manifest
@@ -1,5 +1,7 @@
DIST coverage-7.10.5.tar.gz 821662 BLAKE2B 36fa0ecff03d140b36efdc93ddfdd8ae9d2cd3aa7a414a73afcda6e1f23c3f02ce5b36cf93250d83b2733c00a438984d7b2428454998238942ca44e0af1ca4a8 SHA512 885454d5b38f523e968df953e7008da23c110c7a8af42aab2fd1c8882784acd587f7f97a0f28bc58b14792ba5177e670683206f413ad4552c632b689b90aac2c
DIST coverage-7.10.6.tar.gz 823736 BLAKE2B fbe443d98426213c275b3c32c6f0457f0e7994477da9a6fe95140c6876dfb42499e95d1239dc8e7ed796b17b81b9296e7a72962bf2b322fe97a09c6b8d4c6e7d SHA512 9b53246be27e009ba8639da2fdb9c975d743da6782f1d20a9f0da3ab07f4ebf2747124f3bb75c2694685c5b7fcdd09377a4611c85819123b9cc4defcf05c1cc3
DIST coverage-7.10.7.tar.gz 827704 BLAKE2B a1361d23e192c6207a817d3cf0d6fc269292b6a5fe7c6d8ef453c554c64ba338449e75503aad912e61f34fb32046839760d1768dc13a718f625ea7748e0e8fca SHA512 3fd187c014d1eb3edd3aa91ff1946a325daa0cdec02f61d19fd8acd5bd65f8b3cb21d48a8875bce2f47543a1494b02f8d96070045a37d928c8e76d8563e776a1
+DIST coverage-7.11.0.tar.gz 811905 BLAKE2B 58ddf4598171d25363fbef08b19dfbb101d77f59bf61e7101b5c5f9f4fe71ca458d04b934ffbd1661f4e343e7b48988748a26259dfc294cd8133b918fa155af6 SHA512 35eb8239a7a32570d6d04f537ee22a0edc63f4ae621595a3404fc267919d7b468cad1398c1a7c8d320cf449dd8ddcfe03900812365e135e0839b120e142a364a
+DIST coverage-7.11.0.tar.gz.provenance 9413 BLAKE2B 8a864e66d1ec7e96b334264bcc93a394ab44c33d192b4feab14126007425793c1e3c6c018f07026604ab135422aa372c581b1672e71ba38182a1da81a8403a97 SHA512 c01b2a2fdca8ce56e0f69eaf412a006a08f22c227abf74f1c30eab8ae1d33e2cf88df63abacb44fee3cc3d4e00247e7c78814b09cfacd3b747e762e65a3288b2
DIST coverage-7.9.1.tar.gz 813650 BLAKE2B 42ea77277135a98d812c690aad744db427d6832ff01af68197015e4ff932c7ca88d2f804c0bceaca28b86087cb24245e5f57600444d064f1f008fc8b0a2353b5 SHA512 0bccbf802cdbd7d4df7c88cd7573466b024f7fb4cbf41fc5166a3e2dd70cd107caad01529971eb061cd571faadb342de057d0929f02b3b3e513666c052ecf591
DIST coverage-7.9.2.tar.gz 813556 BLAKE2B 6ed57a0011f7d05634c2a5c1e023f9ccfbb40d9a4bdd9011f2eaf03b658468a18df2044417f15108ec6429b6b62c63cd6a73e31904c0266137a4c6e65557207f SHA512 33ace642aada4b0ff5a72c3df628fe60fcc8b5f586f4851bfecc2ffa237cf019cbd78413c133aa8454e168b8895bfbc1363b722cf072eaf90979935b1982662c
diff --git a/dev-python/coverage/coverage-7.11.0.ebuild b/dev-python/coverage/coverage-7.11.0.ebuild
new file mode 100644
index 000000000000..fa0e0a269ba6
--- /dev/null
+++ b/dev-python/coverage/coverage-7.11.0.ebuild
@@ -0,0 +1,110 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYPI_VERIFY_REPO=https://github.com/nedbat/coveragepy
+PYTHON_COMPAT=( python3_{10..14} )
+PYTHON_REQ_USE="threads(+),sqlite(+)"
+
+inherit distutils-r1 multiprocessing pypi
+
+DESCRIPTION="Code coverage measurement for Python"
+HOMEPAGE="
+ https://coverage.readthedocs.io/en/latest/
+ https://github.com/nedbat/coveragepy/
+ https://pypi.org/project/coverage/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
+IUSE="+native-extensions"
+
+BDEPEND="
+ test? (
+ >=dev-python/unittest-mixins-1.4[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( hypothesis pytest-{rerunfailures,xdist} )
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_compile() {
+ if ! use native-extensions; then
+ local -x COVERAGE_DISABLE_EXTENSION=1
+ fi
+
+ distutils-r1_python_compile
+}
+
+test_tracer() {
+ local -x COVERAGE_CORE=${1}
+ einfo " Testing with the ${COVERAGE_CORE} core ..."
+ epytest -o addopts= "${@:2}" tests
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # broken because of pytest plugins explicity loaded
+ tests/test_debug.py::ShortStackTest::test_short_stack{,_skip}
+ # these expect specific availability of C extension matching
+ # COVERAGE_CORE (which breaks testing pytracer on CPython)
+ tests/test_cmdline.py::CmdLineStdoutTest::test_version
+ tests/test_debug.py::DebugTraceTest::test_debug_sys_ctracer
+ # mismatch of expected concurrency in error message
+ # TODO: report upstream?
+ tests/test_concurrency.py::ConcurrencyTest::test_greenlet
+ tests/test_concurrency.py::ConcurrencyTest::test_greenlet_simple_code
+ # packaging tests, fragile to setuptools version
+ tests/test_setup.py
+ # looks like a difference in exit status reporting?
+ # https://github.com/nedbat/coveragepy/issues/2008
+ tests/test_process.py::ProcessTest::test_save_signal_usr1
+ )
+ local EPYTEST_IGNORE=(
+ # pip these days insists on fetching build deps from Internet
+ tests/test_venv.py
+ )
+
+ "${EPYTHON}" igor.py zip_mods || die
+
+ local -x COVERAGE_TESTING=True
+ # TODO: figure out why they can't be imported inside test env
+ local -x COVERAGE_NO_CONTRACTS=1
+
+ local jobs=${EPYTEST_JOBS:-$(makeopts_jobs)}
+ local xdist_args=()
+ if [[ ${jobs} -gt 1 ]]; then
+ # required upstream to avoid cross-test conflicts
+ xdist_args+=( --dist=loadgroup )
+ fi
+
+ local prev_opt=$(shopt -p nullglob)
+ shopt -s nullglob
+ local c_ext=( "${BUILD_DIR}/install$(python_get_sitedir)"/coverage/*.so )
+ ${prev_opt}
+
+ if [[ -n ${c_ext} ]]; then
+ cp "${c_ext}" coverage/ || die
+ test_tracer ctrace "${xdist_args[@]}"
+ fi
+
+ test_tracer pytrace "${xdist_args[@]}"
+
+ case ${EPYTHON} in
+ *3.11)
+ ;;
+ *)
+ # available since Python 3.12
+ test_tracer sysmon "${xdist_args[@]}"
+ ;;
+ esac
+
+ if [[ -n ${c_ext} ]]; then
+ rm coverage/*.so || die
+ fi
+}
diff --git a/dev-python/humanize/Manifest b/dev-python/humanize/Manifest
index f37841bfce51..cb186c668814 100644
--- a/dev-python/humanize/Manifest
+++ b/dev-python/humanize/Manifest
@@ -1,2 +1,4 @@
DIST humanize-4.12.3.tar.gz 80514 BLAKE2B 23faa42db0005376509c7b756613ee139a0ddb2038d61be90e35ba85cc61bd47dda32edbd61e98ad8192cd29863b7a97b211c7192e9ba1cf3f7df4cea1959fc9 SHA512 530ea137f0176e1765eabf9adca353fb1616e3701f6e618822cffa70f731f59854dc629f17188edbb9dc82f37b80e643e87508ea0ef8c51ec889e5ad0c0c1dfe
DIST humanize-4.13.0.tar.gz 81884 BLAKE2B 9c149c537e6cca5b21add970b3ec00124ad814cbb8c09dc9e4094bb1ba62031de80a81a5690e10ea8d08986925e1401ffd2d0f0df3c0eba49ebad7d68301b30c SHA512 9992907a55cd691060ec9f0cdd630830d3f5aa219b0afa521c05cdcdf34ad52858f1848eb8a0521bc00e1b4f2f95f35dfcf17c528f83071ed5281e9c04be711e
+DIST humanize-4.14.0.tar.gz 82939 BLAKE2B 370df0ff2a518eb0931957ff468d2977f6f063f2497afd38608fdfb9596411a2bb5063cffc81f313280782db1994753266d6581ffe9d40df005a2a6d7ed50785 SHA512 af2b5247a4c87748e53228c181905e500f4607dcafb7dfafffef94b57eae639c3e6b96e8f8cc137611ffa98d27da2fd2479748a9c2caaaff26c1a56fc1639d91
+DIST humanize-4.14.0.tar.gz.provenance 9459 BLAKE2B 4542cd3c8afb921a185e0a750426c5f925f2cb1f108c39eb7294954005594e4d7d56e812e5ca813c9dd307c86539739980a7c2d026789a94bc25c77dcc962423 SHA512 90fed28bf27bd7a3835d4e005c80cc5e9576d34ddc4f12c23bd270444783e311cb11976ff2a2fd17d0d58f7f6f22b6dfb96c05098cd469b9402af96acbc8f45a
diff --git a/dev-python/humanize/humanize-4.14.0.ebuild b/dev-python/humanize/humanize-4.14.0.ebuild
new file mode 100644
index 000000000000..558713fe9963
--- /dev/null
+++ b/dev-python/humanize/humanize-4.14.0.ebuild
@@ -0,0 +1,30 @@
+# 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/python-humanize/humanize
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Common humanization utilities"
+HOMEPAGE="
+ https://github.com/python-humanize/humanize/
+ https://pypi.org/project/humanize/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+BDEPEND="
+ dev-python/hatch-vcs[${PYTHON_USEDEP}]
+ test? (
+ dev-python/freezegun[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
diff --git a/dev-python/hypothesis/Manifest b/dev-python/hypothesis/Manifest
index 4120ffea133c..5aa50296f7ba 100644
--- a/dev-python/hypothesis/Manifest
+++ b/dev-python/hypothesis/Manifest
@@ -6,3 +6,4 @@ DIST hypothesis-6.140.0.gh.tar.gz 9624664 BLAKE2B 9600322c753095501d64595030dc2a
DIST hypothesis-6.140.2.gh.tar.gz 9625203 BLAKE2B f9ca33c1ad7522ab0250e7b453aba0d4c5ae0322e478d6199e26a084b75f6a43358fb2e3b2344bf1f9fd44f8707d554b159705e26f26eced97ad0d475687b1cf SHA512 13024dfc4a633fb973e4846122bfc1e25ff45fc7c4b5e2696c6efc548d827c82a253662586cd79aaae94f6d81e4b00bd5c41cca71f0c7546296fed0e4ba4780e
DIST hypothesis-6.140.3.gh.tar.gz 9625658 BLAKE2B 4316d4aa5f4b2b2a476c6d978d0934450b95f8260efefe6b8d2b2551af504ba2bbff761ac89bdd60fa1b7cc35b6d746c1f24419b56548aa33476960157ec078e SHA512 49be610c4c0af443a9c29262e04649fa4d3a810c386ccc4f570aac82f0289bab34718ae09e80bf10bb91654104b0d57c829d6b4facb8a22da09bfb921de15762
DIST hypothesis-6.141.0.gh.tar.gz 9626287 BLAKE2B 0bf4fcc59f7212a4ba78e052527eda19937d31bc22d311a72ee1fb934bf28fd2b1d292438e1dcd3177457b17337f6bfa8d06ee275f47cd1ee129e68833ef5f97 SHA512 f1b9125669e163c98f9c95767129d149bdd357db5adba66bb6867feffb14ab26395d1494bdd437ff18ef41e798ecda04952050b570ce9ff2e487387ca7d8d79d
+DIST hypothesis-6.141.1.gh.tar.gz 9626528 BLAKE2B f7a45ec59649a616cec57f4ceb4d956a4a3c5bf7bdf264873b5244720118160b6b80309336fd58ca6714e6ba70aa9592f5e68eea4f20cd127840bbadb43d68fe SHA512 efec8874ca2f492f067156b18486deb3930b319d69f04decb99de1c01bd3b9cbcd086243b5be5620711486d94b127043a7311019adaa6b10b597f3d079aecb36
diff --git a/dev-python/hypothesis/hypothesis-6.141.1.ebuild b/dev-python/hypothesis/hypothesis-6.141.1.ebuild
new file mode 100644
index 000000000000..69da4112ef36
--- /dev/null
+++ b/dev-python/hypothesis/hypothesis-6.141.1.ebuild
@@ -0,0 +1,125 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+CLI_COMPAT=( python3_{11..13} )
+PYTHON_COMPAT=( python3_{10..14} )
+PYTHON_REQ_USE="threads(+),sqlite"
+
+inherit distutils-r1 optfeature
+
+TAG=hypothesis-python-${PV}
+MY_P=hypothesis-${TAG}
+DESCRIPTION="A library for property based testing"
+HOMEPAGE="
+ https://github.com/HypothesisWorks/hypothesis/
+ https://pypi.org/project/hypothesis/
+"
+SRC_URI="
+ https://github.com/HypothesisWorks/hypothesis/archive/${TAG}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+S="${WORKDIR}/${MY_P}/hypothesis-python"
+
+LICENSE="MPL-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="cli"
+
+RDEPEND="
+ >=dev-python/attrs-22.2.0[${PYTHON_USEDEP}]
+ >=dev-python/sortedcontainers-2.1.0[${PYTHON_USEDEP}]
+ cli? (
+ $(python_gen_cond_dep '
+ dev-python/black[${PYTHON_USEDEP}]
+ dev-python/click[${PYTHON_USEDEP}]
+ ' "${CLI_COMPAT[@]}")
+ )
+"
+BDEPEND="
+ test? (
+ dev-python/pexpect[${PYTHON_USEDEP}]
+ >=dev-python/pytest-8[${PYTHON_USEDEP}]
+ )
+"
+PDEPEND="
+ dev-python/hypothesis-gentoo[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGIN_LOAD_VIA_ENV=1
+EPYTEST_PLUGINS=( "${PN}" pytest-xdist )
+EPYTEST_RERUNS=5
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_test() {
+ # NB: paths need to be relative to pytest.ini,
+ # i.e. start with hypothesis-python/
+ local EPYTEST_DESELECT=()
+ case ${EPYTHON} in
+ python3.13t)
+ EPYTEST_DESELECT+=(
+ # TODO: missing warning
+ 'hypothesis-python/tests/cover/test_random_module.py::test_passing_referenced_instance_within_function_scope_warns'
+ )
+ ;;
+ python3.14*)
+ EPYTEST_DESELECT+=(
+ 'hypothesis-python/tests/cover/test_compat.py::test_resolve_fwd_refs[Foo-Union]'
+ 'hypothesis-python/tests/cover/test_lookup.py::test_builds_suggests_from_type[Union]'
+ hypothesis-python/tests/cover/test_attrs_inference.py::test_attrs_inference_builds
+ hypothesis-python/tests/cover/test_lookup.py::test_bytestring_not_treated_as_generic_sequence
+ hypothesis-python/tests/cover/test_lookup.py::test_issue_4194_regression
+ hypothesis-python/tests/cover/test_lookup.py::test_resolves_forwardrefs_to_builtin_types
+ hypothesis-python/tests/cover/test_lookup.py::test_specialised_collection_types
+ hypothesis-python/tests/cover/test_lookup_py37.py::test_resolving_standard_collection_as_generic
+ hypothesis-python/tests/cover/test_lookup_py37.py::test_resolving_standard_container_as_generic
+ hypothesis-python/tests/cover/test_lookup_py37.py::test_resolving_standard_contextmanager_as_generic
+ hypothesis-python/tests/cover/test_lookup_py37.py::test_resolving_standard_iterable_as_generic
+ hypothesis-python/tests/cover/test_lookup_py37.py::test_resolving_standard_reversible_as_generic
+ hypothesis-python/tests/cover/test_lookup_py37.py::test_resolving_standard_sequence_as_generic
+ hypothesis-python/tests/cover/test_random_module.py::test_evil_prng_registration_nonsense
+ hypothesis-python/tests/cover/test_random_module.py::test_passing_referenced_instance_within_function_scope_warns
+ hypothesis-python/tests/cover/test_random_module.py::test_register_random_within_nested_function_scope
+ hypothesis-python/tests/cover/test_random_module.py::test_registering_a_Random_is_idempotent
+ hypothesis-python/tests/cover/test_type_lookup_forward_ref.py::test_bound_missing_dot_access_forward_ref
+ hypothesis-python/tests/cover/test_type_lookup_forward_ref.py::test_bound_missing_forward_ref
+ hypothesis-python/tests/cover/test_type_lookup_forward_ref.py::test_bound_type_checking_only_forward_ref_wrong_type
+ hypothesis-python/tests/cover/test_type_lookup_forward_ref.py::test_bound_type_cheking_only_forward_ref
+ )
+ ;;
+ esac
+
+ local -x HYPOTHESIS_NO_PLUGINS=1
+ epytest -o filterwarnings= tests/{cover,pytest,quality}
+}
+
+src_install() {
+ local HAD_CLI=
+
+ distutils-r1_src_install
+
+ if [[ ! ${HAD_CLI} ]]; then
+ rm -r "${ED}/usr/bin" || die
+ fi
+}
+
+python_install() {
+ distutils-r1_python_install
+ if use cli && has "${EPYTHON}" "${CLI_COMPAT[@]/_/.}"; then
+ HAD_CLI=1
+ else
+ rm -r "${D}$(python_get_scriptdir)" || die
+ fi
+}
+
+pkg_postinst() {
+ optfeature "datetime support" dev-python/pytz
+ optfeature "dateutil support" dev-python/python-dateutil
+ optfeature "numpy support" dev-python/numpy
+ optfeature "django support" dev-python/django dev-python/pytz
+ optfeature "pandas support" dev-python/pandas
+ optfeature "pytest support" dev-python/pytest
+}
diff --git a/dev-python/inline-snapshot/Manifest b/dev-python/inline-snapshot/Manifest
index 33feea618aa9..473a62cde521 100644
--- a/dev-python/inline-snapshot/Manifest
+++ b/dev-python/inline-snapshot/Manifest
@@ -4,3 +4,5 @@ DIST inline_snapshot-0.29.2.tar.gz 2596750 BLAKE2B 7aa549af79a6b807dac628a5d7e6e
DIST inline_snapshot-0.29.3.tar.gz 2596900 BLAKE2B de126916e4413245848d467042dd6cbc79e6d43225204a2df8cb96dae0dffcc822b9e26c3024fed45ea82e90c4ef5db60b6162f073df86d4d978f388685f644f SHA512 d0a6538d1fd192e149aeb68435c2b2e2b56d2ecaba776d43d2ccebb566ab15b32ff57aacfbeaa0d941d54e4a6c1146b514f36742777ccd9636db016ed98e288b
DIST inline_snapshot-0.29.4.tar.gz 2598478 BLAKE2B e9dea3721042b4cee764cc9ea79111dbbf68edc274e2b9ad30d570378b180ff0e3c3d42a914168d879b5757eb429cbd0ea1f8368bb64405ee010cb2a35063d54 SHA512 ce7e8ba83e348d1d078dc1c5d50c86b894b62cbc2c474559ec1460b73d1542aa977f0d6d6487cb3c50f17102d05808e9b579c8e051c8a6e33376a078d04e2f04
DIST inline_snapshot-0.29.4.tar.gz.provenance 9499 BLAKE2B b54184f05942c3b965fffd5cabbaa140b63e9478397bce6d4ba4e6875cb75d3349bc0743fbb05d70e13a6ab0cf85d1909b3169a5c9f4bb82b294fd9463a54d30 SHA512 d3512cb09708b241ab5a8e13f4561ac02ebd565f5c9cab858fd3ba39b805fc53e46f1758cf9a27806d2965bf0bb082f2a0151b7cd2e3d7dadd4d16d13e11accb
+DIST inline_snapshot-0.30.0.tar.gz 2598970 BLAKE2B 41d4fef8d3c27037d69b1ab1b411040af2d2a90755996488605323526614811ce5321db9231c9ff8095ab75ed778a71363b4f9a47c54b7479c5d0fe9a1ed4ce2 SHA512 2eb143bd2f1c73bf831a5ad3213958c0f98ea4603dd4315ed51233334923f27c106c8bf0f4c78ed0279c2cdd3dbae8326ccd05dd9ad991375a8f0e6497e9c941
+DIST inline_snapshot-0.30.0.tar.gz.provenance 9291 BLAKE2B e5297037e80ec97cea84895d1aca6faa6398be2b5344dbc384f3846a1fd6545f3599a3c05d0eea0c15dc12d9e0d31fc7af0ebdf1720775a2ebcecd1af6b276a3 SHA512 de61f68d54ea64d7dfa491d04d835077ddf6f8f360124fd86f19f18fa00af5adf38d05e33adf1da58b78a2c72747dfda23ae1dbf03e16c6bad240c1e09a08039
diff --git a/dev-python/inline-snapshot/inline-snapshot-0.30.0.ebuild b/dev-python/inline-snapshot/inline-snapshot-0.30.0.ebuild
new file mode 100644
index 000000000000..0a032b3e9337
--- /dev/null
+++ b/dev-python/inline-snapshot/inline-snapshot-0.30.0.ebuild
@@ -0,0 +1,62 @@
+# Copyright 2024-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/15r10nk/inline-snapshot
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Create and update inline snapshots in your Python tests"
+HOMEPAGE="
+ https://15r10nk.github.io/inline-snapshot/
+ https://github.com/15r10nk/inline-snapshot/
+ https://pypi.org/project/inline-snapshot/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/asttokens-2.0.5[${PYTHON_USEDEP}]
+ >=dev-python/executing-2.2.0[${PYTHON_USEDEP}]
+ >=dev-python/pytest-8.3.4[${PYTHON_USEDEP}]
+ >=dev-python/rich-13.7.1[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/attrs[${PYTHON_USEDEP}]
+ >=dev-python/black-23.3.0[${PYTHON_USEDEP}]
+ >=dev-python/dirty-equals-0.7.0[${PYTHON_USEDEP}]
+ >=dev-python/hypothesis-6.75.5[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/mypy[${PYTHON_USEDEP}]
+ ' 'python*')
+ >=dev-python/pydantic-2[${PYTHON_USEDEP}]
+ >=dev-python/pytest-freezer-0.4.8[${PYTHON_USEDEP}]
+ >=dev-python/pytest-mock-3.14.0[${PYTHON_USEDEP}]
+ >=dev-python/pytest-subtests-0.11.0[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGIN_LOAD_VIA_ENV=1
+EPYTEST_PLUGINS=( "${PN}" pytest-{freezer,mock,subtests,xdist} )
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # requires pyright
+ 'tests/test_typing.py::test_typing_args[pyright]'
+ 'tests/test_typing.py::test_typing_call[pyright]'
+ # TODO
+ tests/test_formating.py::test_format_command_fail
+ )
+
+ local -x COLUMNS=80
+ local -x PYTHONPATH=${S}/src
+ epytest
+}
diff --git a/dev-python/langdetect/Manifest b/dev-python/langdetect/Manifest
index d12ab8aeaca8..a11d7c268c91 100644
--- a/dev-python/langdetect/Manifest
+++ b/dev-python/langdetect/Manifest
@@ -1,3 +1 @@
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
new file mode 100644
index 000000000000..637368d2f237
--- /dev/null
+++ b/dev-python/langdetect/files/langdetect-1.0.9-explicit-config.patch
@@ -0,0 +1,13 @@
+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 271137de443d..7100f5f39dd8 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 Gentoo Authors
+# Copyright 2022-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -19,4 +19,6 @@ 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 020e07f2a3dd..c0f74ac187e2 100644
--- a/dev-python/langdetect/metadata.xml
+++ b/dev-python/langdetect/metadata.xml
@@ -2,11 +2,9 @@
<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
- <email>marcin.deranek@slonko.net</email>
- <name>Marcin Deranek</name>
+ <email>pastalian46@gmail.com</email>
+ <name>Takuya Wakazono</name>
</maintainer>
- <upstream>
- <bugs-to>https://github.com/Mimino666/langdetect/issues</bugs-to>
- </upstream>
- <origin>slonko-overlay</origin>
+
+ <origin>gentoo-guru-overlay</origin>
</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/mkdocs-material/Manifest b/dev-python/mkdocs-material/Manifest
index 42d272decc56..84157d59d332 100644
--- a/dev-python/mkdocs-material/Manifest
+++ b/dev-python/mkdocs-material/Manifest
@@ -1,2 +1,3 @@
DIST mkdocs-material-9.6.20.gh.tar.gz 14933529 BLAKE2B bb4bd67e3d29d3528406bfd21f34614b8aa11b442714711c96589afbb3f758a90eaefa7a4784c0ab4d5c6befbb4e1d1625c702237242b488a0c7fc63be367c44 SHA512 2336ede01937aff3bc47117deb96423d2c115430a77343f3de3668898d47240e6d06286b76d9342ac31eac5369cdc9b7f4bf80cbf3a5b49c9dec76c6a547aca3
DIST mkdocs-material-9.6.21.gh.tar.gz 14941581 BLAKE2B cfb1182279ec2a5ac7fbb6970b9f6724893f17b529d2857d0cf8dfa4d0527c3527a49235cb29a636dc5110ca57279206904f94c36012d14156f4b055f0a6857c SHA512 5cc2f0da266627b901788ecccd759bff535bfed83086fcfe73da92dbc0789c1c77286ae37fcfb07385bc7fdebbd1770e709cf1ee2746e11f36325add14fa97ed
+DIST mkdocs-material-9.6.22.gh.tar.gz 14941613 BLAKE2B bc7a76f70d3813dc3a7881703335fa94ff19ca24aca1a69e6b5800aefc6f62d26b4c912f652dfdf045ec11e9623a743c5a2058118d987a9fdf693b337428be09 SHA512 e516fb0400edbc1f59befb43d81245baa97d6e95b3538e19e53845816dc4b13833907df910a10dbab93fcf8df600bccd4fff099cc01f762767882d8d5655ae47
diff --git a/dev-python/mkdocs-material/mkdocs-material-9.6.22.ebuild b/dev-python/mkdocs-material/mkdocs-material-9.6.22.ebuild
new file mode 100644
index 000000000000..13045bd1c123
--- /dev/null
+++ b/dev-python/mkdocs-material/mkdocs-material-9.6.22.ebuild
@@ -0,0 +1,73 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{10..14} )
+
+DOCS_BUILDER="mkdocs"
+DOCS_DEPEND="
+ dev-python/mkdocs-material-extensions
+ dev-python/mkdocs-minify-plugin
+ dev-python/mkdocs-redirects
+"
+
+inherit distutils-r1 docs
+
+DESCRIPTION="A Material Design theme for MkDocs"
+HOMEPAGE="
+ https://github.com/squidfunk/mkdocs-material/
+ https://pypi.org/project/mkdocs-material/
+"
+SRC_URI="
+ https://github.com/squidfunk/${PN}/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+# bundled icons
+LICENSE+=" Apache-2.0 CC0-1.0 CC-BY-4.0 MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86"
+IUSE="social"
+
+RDEPEND="
+ >=dev-python/babel-2.10.3[${PYTHON_USEDEP}]
+ >=dev-python/colorama-0.4[${PYTHON_USEDEP}]
+ >=dev-python/jinja2-3.0.2[${PYTHON_USEDEP}]
+ >=dev-python/lxml-4.6[${PYTHON_USEDEP}]
+ >=dev-python/markdown-3.2[${PYTHON_USEDEP}]
+ >=dev-python/mkdocs-1.5.3[${PYTHON_USEDEP}]
+ >=dev-python/paginate-0.5.6[${PYTHON_USEDEP}]
+ >=dev-python/pygments-2.16[${PYTHON_USEDEP}]
+ >=dev-python/pymdown-extensions-10.2[${PYTHON_USEDEP}]
+ >=dev-python/readtime-2.0[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ >=dev-python/regex-2022.4.24[${PYTHON_USEDEP}]
+ ' 'python*')
+ >=dev-python/requests-2.26[${PYTHON_USEDEP}]
+ social? (
+ >=dev-python/pillow-10.2[${PYTHON_USEDEP}]
+ >=media-gfx/cairosvg-2.5[${PYTHON_USEDEP}]
+ )
+"
+BDEPEND="
+ >=dev-python/trove-classifiers-2023.10.18[${PYTHON_USEDEP}]
+"
+# mkdocs-material-extensions depends on mkdocs-material creating a circular dep
+PDEPEND="
+ >=dev-python/mkdocs-material-extensions-1.2[${PYTHON_USEDEP}]
+"
+
+PATCHES=(
+ # simplify pyproject to remove extra deps for metadata
+ "${FILESDIR}/${PN}-8.5.7-simplify-build.patch"
+ # import backrefs only when used (i.e. never)
+ "${FILESDIR}/${PN}-9.6.7-backrefs.patch"
+)
+
+src_prepare() {
+ distutils-r1_src_prepare
+ echo "__version__ = '${PV}'" > gentoo_version.py || die
+}
diff --git a/dev-python/numpy/Manifest b/dev-python/numpy/Manifest
index 18f38419a41b..1ff253e65f07 100644
--- a/dev-python/numpy/Manifest
+++ b/dev-python/numpy/Manifest
@@ -3,3 +3,5 @@ DIST numpy-2.2.6.tar.gz 20276440 BLAKE2B 597ebbc72b2b3901bba4e0946f4f63ff13baf3b
DIST numpy-2.3.1.tar.gz 20390372 BLAKE2B a52f39f8b7e4cf75bed3bbf32b92be7d118c7bab0b3cdbb1428b24daf71d4813641ade390bb20848156fc0ead3768383f272b755d130fb36348859b8c435c954 SHA512 aedb917cc6d8fcb923edb5b32e8b84bddb31fcf0159cfbda88b7ea9a5bc9e0ef58f27391746c6e9140777daf928c3e9de2a73758555130e5c00725d7082f7c2a
DIST numpy-2.3.2.tar.gz 20489306 BLAKE2B 66a683a62daf3971c01a484d6e8c56e592744b93ec2648b61246d9969b02c62256153fb7c643002d7f82ebf1bfd5c9f34c14449b9daf85007e6cb854e97852dd SHA512 8f315a681704f1a18712828b5b9d5cd602576230fb08ff00c293ce129656faa49c9e01a446989dbd4d678166975432b531915e4838be66655ead1f0fc05be861
DIST numpy-2.3.3.tar.gz 20576648 BLAKE2B 285c3ea4852618c9a7af339f117b12e06c736a765c6b97437ac8b2c0c02085126a89cc8d6d9e0e6f7d5ebb69d63a972c1619bf6c407197882e01c7cddfb8d79b SHA512 5555f68d75342054c240695a7a7aaaaec09c45e04965b4100732a7f8f49f53a203ec438e35c12040481d6ee9f4649e43c83ac96fdc08526cdcf93463b9fe7bd9
+DIST numpy-2.3.4.tar.gz 20582187 BLAKE2B 268754c3e50049a9a3c8a9d5bc3159a7bf635bf62ceacfd46c51cd860dbcbad6bbe790f13ea9f2ba8292e0ea3eedb4d597e4a97060cba57cd5daa263b2fe2a31 SHA512 62d1b2be15e8b23487d384438bbffa26c1bd25ee7b800f4f7cbe3cff3f7d196329efdfdd08e66acc557cea050cc125437ca621cd84a9d06aab497060ab36949a
+DIST numpy-2.3.4.tar.gz.provenance 9933 BLAKE2B f25013995927114ba965e6297725d3d0cfdf70a2080e90c05b7297c8451b1cfe6a03bf81dc9cfb678e64ec4eaf0ec7fd3892fdf2ebb75ddb052bbf451b44870f SHA512 1689825964ca90f5af3ff2493df889b61b8ec4ca6e36b8c8ab1fede5ddac8f2606109c9434163dde92e9a6f0b0f7f2c328ffb322dc8f19b69b5de4a1c5a35cd7
diff --git a/dev-python/numpy/numpy-2.3.4.ebuild b/dev-python/numpy/numpy-2.3.4.ebuild
new file mode 100644
index 000000000000..e92bbccc5868
--- /dev/null
+++ b/dev-python/numpy/numpy-2.3.4.ebuild
@@ -0,0 +1,358 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=meson-python
+PYPI_VERIFY_REPO=https://github.com/numpy/numpy-release
+PYTHON_COMPAT=( python3_{10..14} )
+PYTHON_REQ_USE="threads(+)"
+FORTRAN_NEEDED=lapack
+
+inherit distutils-r1 flag-o-matic fortran-2 pypi
+
+DESCRIPTION="Fast array and numerical python library"
+HOMEPAGE="
+ https://numpy.org/
+ https://github.com/numpy/numpy/
+ https://pypi.org/project/numpy/
+"
+
+LICENSE="BSD"
+SLOT="0/2"
+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 +cpudetection index64 +lapack"
+
+# upstream-flag[:gentoo-flag]
+ARM_FLAGS=( neon{,-fp16} vfpv4 asimd{,hp,dp,fhm} sve )
+PPC_FLAGS=( vsx vsx2 vsx3 vsx4 )
+X86_FLAGS=(
+ sse{,2,3,4_1,4_2} ssse3 popcnt avx{,2} xop fma{3,4}
+ f16c avx512{f,cd,pf,er,dq,bw,vl,ifma,vbmi}
+ avx512_{vpopcntdq,4vnniw,4fmaps,vbmi2,bitalg,fp16,vnni}
+)
+IUSE+="
+ ${ARM_FLAGS[*]/#/cpu_flags_arm_}
+ ${PPC_FLAGS[*]/#/cpu_flags_ppc_}
+ ${X86_FLAGS[*]/#/cpu_flags_x86_}
+"
+
+RDEPEND="
+ lapack? (
+ >=virtual/cblas-3.8[index64(-)?]
+ >=virtual/lapack-3.8[index64(-)?]
+ )
+"
+BDEPEND="
+ ${RDEPEND}
+ >=dev-build/meson-1.5.2
+ >=dev-python/cython-3.0.6[${PYTHON_USEDEP}]
+ lapack? (
+ virtual/pkgconfig
+ )
+ test? (
+ $(python_gen_cond_dep '
+ >=dev-python/cffi-1.14.0[${PYTHON_USEDEP}]
+ ' 'python*')
+ dev-python/charset-normalizer[${PYTHON_USEDEP}]
+ >=dev-python/pytz-2019.3[${PYTHON_USEDEP}]
+ )
+"
+
+QA_CONFIG_IMPL_DECL_SKIP=(
+ # https://bugs.gentoo.org/925367
+ vrndq_f32
+)
+
+EPYTEST_PLUGINS=( hypothesis pytest-timeout )
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+PATCHES=(
+ # https://github.com/numpy/numpy/pull/29459
+ "${FILESDIR}"/${PN}-2.3.2-no-detect.patch
+ # https://github.com/numpy/numpy/pull/29579
+ "${FILESDIR}"/${PN}-2.3.2-arm-asimddp.patch
+)
+
+has_all_x86() {
+ local flag
+ for flag; do
+ if ! use "cpu_flags_x86_${flag}"; then
+ return 1
+ fi
+ done
+ return 0
+}
+
+python_configure_all() {
+ local cpu_baseline=()
+ local map flag
+ case ${ARCH} in
+ arm)
+ # every flag implies the previous one
+ for map in NEON:neon NEON_FP16:neon-fp16 NEON_VFPV4:vfpv4; do
+ if ! use "cpu_flags_arm_${map#*:}"; then
+ break
+ fi
+ cpu_baseline+=( "${map%:*}" )
+ done
+ ;&
+ arm64)
+ # on 32-bit ARM, ASIMD implies all NEON* flags
+ # on 64-bit ARM, they are all linked together
+ if use arm64 ||
+ [[ ${cpu_baseline[@]} && ${cpu_baseline[-1]} == NEON_VFPV4 ]]
+ then
+ cpu_baseline+=( $(usev cpu_flags_arm_asimd ASIMD) )
+ fi
+
+ # these two imply ASIMD
+ if [[ ${cpu_baseline[@]} && ${cpu_baseline[-1]} == ASIMD ]]; then
+ for flag in dp hp; do
+ cpu_baseline+=(
+ $(usev "cpu_flags_arm_asimd${flag}" "ASIMD${flag^^}")
+ )
+ done
+ fi
+
+ # these two imply ASIMDHP
+ if [[ ${cpu_baseline[@]} && ${cpu_baseline[-1]} == ASIMDHP ]]; then
+ for flag in asimdfhm sve; do
+ cpu_baseline+=(
+ $(usev "cpu_flags_arm_${flag}" "${flag^^}")
+ )
+ done
+ fi
+ ;;
+ ppc64)
+ # every flag implies the previous one
+ for flag in '' 2 3 4; do
+ if ! use "cpu_flags_ppc_vsx${flags}"; then
+ break
+ fi
+ cpu_baseline+=( "VSX${flag}" )
+ done
+ ;;
+ amd64|x86)
+ # every flag implies the previous one
+ for flag in sse{,2,3} ssse3 sse4_1 popcnt sse4_2 avx; do
+ if ! use "cpu_flags_x86_${flag}"; then
+ break
+ fi
+ flag=${flag/_}
+ cpu_baseline+=( "${flag^^}" )
+ done
+
+ # these imply AVX
+ if [[ ${cpu_baseline[@]} && ${cpu_baseline[-1]} == AVX ]]; then
+ for flag in xop fma4 f16c; do
+ if use "cpu_flags_x86_${flag}"; then
+ cpu_baseline+=( "${flag^^}" )
+ fi
+ done
+ fi
+
+ # another chain started on implying F16C
+ if [[ ${cpu_baseline[@]} && ${cpu_baseline[-1]} == F16C ]]; then
+ for flag in fma3 avx2 avx512f avx512cd; do
+ if ! use "cpu_flags_x86_${flag}"; then
+ break
+ fi
+ cpu_baseline+=( "${flag^^}" )
+ done
+ fi
+
+ if [[ ${cpu_baseline[@]} && ${cpu_baseline[-1]} == AVX512CD ]]; then
+ # upstream combines multiple instructions into per-CPU sets
+ local -A avx512_mapping=(
+ [AVX512_KNL]="avx512pf avx512er"
+ [AVX512_KNM]="avx512_vpopcntdq avx512_4vnniw avx512_4fmaps"
+ [AVX512_SKX]="avx512dq avx512bw avx512vl"
+ [AVX512_CLX]="avx512_vnni"
+ [AVX512_CNL]="avx512ifma avx512vbmi"
+ [AVX512_ICL]="avx512_vbmi2 avx512_bitalg"
+ [AVX512_SPR]="avx512_fp16"
+ )
+
+ # 1. AVX512CD -> AVX512_KNL -> AVX512_KNM
+ if has_all_x86 ${avx512_mapping[AVX512_KNL]}; then
+ cpu_baseline+=( AVX512_KNL )
+ if has_all_x86 ${avx512_mapping[AVX512_KNM]}; then
+ cpu_baseline+=( AVX512_KNM )
+ fi
+ fi
+ # 2. AVX512CD -> AVX512_SKX -> [AVX512_CLX, AVX512_CNL]
+ if has_all_x86 ${avx512_mapping[AVX512_SKX]}; then
+ cpu_baseline+=( AVX512_SKX )
+ if has_all_x86 ${avx512_mapping[AVX512_CLX]}; then
+ cpu_baseline+=( AVX512_CLX )
+ fi
+ if has_all_x86 ${avx512_mapping[AVX512_CNL]}; then
+ cpu_baseline+=( AVX512_CNL )
+ fi
+ fi
+ # 3. [AVX512_CLX, AVX512_CNL] -> AVX512_ICL -> AVX512_SPR
+ if [[ ${cpu_baseline[-1]} == AVX512_CNL &&
+ ${cpu_baseline[-2]} == AVX512_CLX ]]
+ then
+ if has_all_x86 ${avx512_mapping[AVX512_ICL]}; then
+ cpu_baseline+=( AVX512_ICL )
+ if has_all_x86 ${avx512_mapping[AVX512_SPR]}; then
+ cpu_baseline+=( AVX512_SPR )
+ fi
+ fi
+ fi
+ fi
+ ;;
+ *)
+ cpu_baseline=MIN
+ ;;
+ esac
+
+ DISTUTILS_ARGS=(
+ -Dallow-noblas=$(usex !lapack true false)
+ -Duse-ilp64=$(usex index64 true false)
+ -Dblas=$(usev lapack $(usex index64 cblas64 cblas))
+ -Dlapack=$(usev lapack $(usex index64 lapack64 lapack))
+ -Dcpu-baseline="${cpu_baseline[*]}"
+ -Dcpu-baseline-detect=disabled
+ # '-XOP -FMA4' is upstream default, since these are deprecated
+ -Dcpu-dispatch="$(usev cpudetection 'MAX -XOP -FMA4')"
+ )
+
+ # bug #922457
+ filter-lto
+ # https://github.com/numpy/numpy/issues/25004
+ append-flags -fno-strict-aliasing
+}
+
+python_test() {
+ # We run tests in parallel, so avoid having n^2 threads in lapack
+ # tests.
+ local -x BLIS_NUM_THREADS=1
+ local -x MKL_NUM_THREADS=1
+ local -x OMP_NUM_THREADS=1
+ local -x OPENBLAS_NUM_THREADS=1
+
+ # don't run tests that require more than 2 GiB of RAM (per process)
+ local -x NPY_AVAILABLE_MEM="2 GiB"
+
+ local EPYTEST_DESELECT=(
+ # Very disk-and-memory-hungry
+ numpy/lib/tests/test_io.py::TestSavezLoad::test_closing_fid
+ numpy/lib/tests/test_io.py::TestSavezLoad::test_closing_zipfile_after_load
+
+ # Precision problems
+ numpy/_core/tests/test_umath_accuracy.py::TestAccuracy::test_validate_transcendentals
+
+ numpy/typing/tests/test_typing.py
+
+ # Flaky, reruns don't help
+ numpy/f2py/tests/test_crackfortran.py
+ numpy/f2py/tests/test_f2py2e.py::test_gh22819_cli
+ numpy/f2py/tests/test_data.py::TestData{,F77}::test_crackedlines
+ )
+
+ if [[ $(uname -m) == armv8l ]]; then
+ # Degenerate case of arm32 chroot on arm64, bug #774108
+ EPYTEST_DESELECT+=(
+ numpy/_core/tests/test_cpu_features.py::Test_ARM_Features::test_features
+ )
+ fi
+
+ case ${ARCH} in
+ arm)
+ EPYTEST_DESELECT+=(
+ # TODO: warnings
+ numpy/_core/tests/test_umath.py::TestSpecialFloats::test_unary_spurious_fpexception
+
+ # TODO
+ numpy/_core/tests/test_function_base.py::TestLinspace::test_denormal_numbers
+ numpy/f2py/tests/test_kind.py::TestKind::test_real
+ numpy/f2py/tests/test_kind.py::TestKind::test_quad_precision
+
+ # require too much memory
+ 'numpy/_core/tests/test_multiarray.py::TestDot::test_huge_vectordot[complex128]'
+ 'numpy/_core/tests/test_multiarray.py::TestDot::test_huge_vectordot[float64]'
+ )
+ ;;
+ hppa)
+ EPYTEST_DESELECT+=(
+ # https://bugs.gentoo.org/942689
+ "numpy/_core/tests/test_dtype.py::TestBuiltin::test_dtype[int]"
+ "numpy/_core/tests/test_dtype.py::TestBuiltin::test_dtype[float]"
+ "numpy/_core/tests/test_dtype.py::TestBuiltin::test_dtype_bytes_str_equivalence[datetime64]"
+ "numpy/_core/tests/test_dtype.py::TestBuiltin::test_dtype_bytes_str_equivalence[timedelta64]"
+ "numpy/_core/tests/test_dtype.py::TestBuiltin::test_dtype_bytes_str_equivalence[<f]"
+ "numpy/_core/tests/test_dtype.py::TestPickling::test_pickle_dtype[dt28]"
+ numpy/f2py/tests/test_kind.py::TestKind::test_real
+ numpy/f2py/tests/test_kind.py::TestKind::test_quad_precision
+ numpy/tests/test_ctypeslib.py::TestAsArray::test_reference_cycles
+ numpy/tests/test_ctypeslib.py::TestAsArray::test_segmentation_fault
+ numpy/tests/test_ctypeslib.py::TestAsCtypesType::test_scalar
+ numpy/tests/test_ctypeslib.py::TestAsCtypesType::test_subarray
+ numpy/tests/test_ctypeslib.py::TestAsCtypesType::test_structure
+ numpy/tests/test_ctypeslib.py::TestAsCtypesType::test_structure_aligned
+ numpy/tests/test_ctypeslib.py::TestAsCtypesType::test_union
+ numpy/tests/test_ctypeslib.py::TestAsCtypesType::test_padded_union
+ )
+ ;;
+ ppc|x86)
+ EPYTEST_DESELECT+=(
+ # require too much memory
+ 'numpy/_core/tests/test_multiarray.py::TestDot::test_huge_vectordot[complex128]'
+ 'numpy/_core/tests/test_multiarray.py::TestDot::test_huge_vectordot[float64]'
+ )
+ ;;
+ esac
+
+ if [[ ${CHOST} == powerpc64le-* ]]; then
+ EPYTEST_DESELECT+=(
+ # long double thingy
+ numpy/_core/tests/test_scalarprint.py::TestRealScalars::test_ppc64_ibm_double_double128
+ )
+ fi
+
+ if use big-endian; then
+ EPYTEST_DESELECT+=(
+ # ppc64 and sparc
+ numpy/linalg/tests/test_linalg.py::TestDet::test_generalized_sq_cases
+ numpy/linalg/tests/test_linalg.py::TestDet::test_sq_cases
+ "numpy/f2py/tests/test_return_character.py::TestFReturnCharacter::test_all_f77[s1]"
+ "numpy/f2py/tests/test_return_character.py::TestFReturnCharacter::test_all_f77[t1]"
+ "numpy/f2py/tests/test_return_character.py::TestFReturnCharacter::test_all_f90[s1]"
+ "numpy/f2py/tests/test_return_character.py::TestFReturnCharacter::test_all_f90[t1]"
+ )
+ fi
+
+ if ! has_version -b "~${CATEGORY}/${P}[${PYTHON_USEDEP}]" ; then
+ # depends on importing numpy.random from system namespace
+ EPYTEST_DESELECT+=(
+ 'numpy/random/tests/test_extending.py::test_cython'
+ )
+ fi
+
+ if has_version ">=dev-python/setuptools-74[${PYTHON_USEDEP}]"; then
+ # msvccompiler removal
+ EPYTEST_DESELECT+=(
+ numpy/tests/test_public_api.py::test_all_modules_are_expected_2
+ numpy/tests/test_public_api.py::test_api_importable
+ )
+ EPYTEST_IGNORE+=(
+ numpy/distutils/tests/test_mingw32ccompiler.py
+ numpy/distutils/tests/test_system_info.py
+ )
+ fi
+
+ cd "${BUILD_DIR}/install$(python_get_sitedir)" || die
+ epytest
+}
+
+python_install_all() {
+ local DOCS=( LICENSE.txt README.md THANKS.txt )
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/patiencediff/Manifest b/dev-python/patiencediff/Manifest
index a024d07a4ff8..3a13afbe50b0 100644
--- a/dev-python/patiencediff/Manifest
+++ b/dev-python/patiencediff/Manifest
@@ -1 +1,22 @@
+DIST autocfg-1.5.0.crate 18729 BLAKE2B 27580e39b366c6fca02c9db09997b6415c409f12068f1249184268bf96fd85ba659e25ec730f99e10caf452f96c486f3d7442bf09c4552b5f39519b21d6f88cc SHA512 f279856f234d39d369623576acf9546a1ca24d7fe449f36d4fb93ea75a7efaf2c4015b9616a69bbbed358c5e5882e16b045352f046aa4c049b3d13b1e8257b08
+DIST heck-0.5.0.crate 11517 BLAKE2B 5365ec43b2239a76b33a174f1a4292ece4147f9d382a68c6c60db78fdc8bad0afb1d51a65bcb25e96675372faa4ea37c318265030b0546ba51942f7c929e1835 SHA512 f044fc9c3d22466629fd8f772ec0555350fd611c0cfadca51d99a3d2f10e155f77c1091916c8a95a6b9b499f366c2e99a5fbf45b010f988bfb9b2501bf9f6a76
+DIST indoc-2.0.6.crate 17164 BLAKE2B 1a6cff95bc12ea885ef36b935bf4f1c7870d65be0ff31ffc67dcab904fa80215c1254c1803c5d0c5686252addfad3512e9e1ec79d3edcba026a879f4706926d1 SHA512 e2ea2e5c8226c802bbe0631c1a99d2edd088cbafbf978b2a7b71c7c7f47754c6d4653f466e286441b61cc46def1c7f7a02d4785caab93a61dd785211dba7d1a9
+DIST libc-0.2.177.crate 792045 BLAKE2B ecea1ade26b0faa9cb5fb025e237f3a59dfb562e7b3de3682b42a41038b1d436e83b42b53158c1fc1cc4b1cc64ab55ba1497e869ae850a677c089fcce9138912 SHA512 9d737091dba80244137987d06a52ffcd44a968c96b59ae9af9cfa40c38cb9675d023f6324fbf25c436ce1b9592ebf26248f85b0a7c97ee02360ca624b0efb3e0
+DIST memoffset-0.9.1.crate 9032 BLAKE2B 0aab55fe084134bb599c52d77c96400db40949b1013e7037747ada4fcec8dc4a124b6f3755f04b36e057eb2fb4a6bd6f07d6eebcf166f8a71405ef434d802fbf SHA512 3a236c0f481e36973b9f805e454c2efe4dd375e6b4ee406b57145136c70d5fbf4e1183d563ebf3b5fbde7363bbf5f08f0d88e507aae5bda4cc75664ecd0e33aa
+DIST once_cell-1.21.3.crate 34534 BLAKE2B 3578aaef305cad2fdffdc40c392775a3540bfab3f3aeafd22466d9507bf8346b9fcc200929d48525b051070c0aaa423ecbcaa12868b34dca007991effb224166 SHA512 32a87506c6f4598f3ca2c88556014ef2093d5db9a08602335e847caa537a866492fa74c894e7e1da2e4289a1d3dbffcb90a9e37a4a1453203832f434b8206990
+DIST patiencediff-0.2.1.crate 21717 BLAKE2B 839dab29b4a5f830df1edc2eb9b46373e8adf6a2f2474b3cb7622899e5cad4de9d19d2b6ace3e6b44d3772a934c3469c85cdd9d2bb31d138f8a28edcd52e7ab3 SHA512 500b3f42a6fd936a3a2fa6b65f5ea0f6b8e37f50be5f002dd2ae76d2138765e45547a6aac68586ded2d5970609e5c2238ce0f5b2fb5b7396e7ca8914f0c1c2c1
DIST patiencediff-0.2.15.tar.gz 27483 BLAKE2B 34b2303be6c65975d9e2f93b089853883db91d7b0570784814e25f74a964427757ad0342db40c8ed02310e0243e51e42edeb1c2787377feff3280c3bd8c5ca80 SHA512 d0cecf461075e3965db16624978b260660bd3444e83fc6121d3efebb96d31b323b7b61fc9e65a4a0098a95284a342a2f321b92f2073c0264cdb1f4b05771938d
+DIST patiencediff-0.2.18.tar.gz 24521 BLAKE2B 6b0fd39874b2fc95ab0b964471a129fac3e80be979a3683a14672508ed9e3ec74c2c7e805796e8f33bc7f43bcc2ee3b8dadadaa4c6482d23d261f362ff0e573a SHA512 9eaddfb4533bb213f982b83c4d82fc9235d32b587820af9b1575395ce8b53bb05818b16cb9e721eb41880ffa4cf614f420332aeb2c2823f4fe78372fa629c2e7
+DIST patiencediff-0.2.18.tar.gz.provenance 9668 BLAKE2B ba3581f670a4718310effdb9d12e8ed1c064add4d1f39ae2dd67538171bf1a6c76fbbc91f64d2ac04d962a2314046777263e17df473c99e21dc33470971c5438 SHA512 4eb8229d71937b66217601385891ebe7b3703e6547f49b3efffc5cf5e2841055917f942551314587d8b921541b4a2820d5be046c25e40d387a5dfe16fbd40d0c
+DIST portable-atomic-1.11.1.crate 185506 BLAKE2B 953bb1f2059dc1d891305eb89945f1f6a172fa50972725aee499de72b5dd9b4ad8ccefe4e891183ff8e6b64f4d1bb45ec33b06e0f5af34c940f817b290f746d9 SHA512 4c037ae0b4aef43077bdbf803389bc078d963f20d023e2e1d339a54f67fa9b27c174e7c1b6eca8881ecf301e30c431632d2c0dcedfb5b19552892fac0f81e2e1
+DIST proc-macro2-1.0.101.crate 53886 BLAKE2B db566c4fb6a197e0aa45cc074310853eaa24ceeafe9fb91f2014ba47cf6b1cbc34e4e9391456c946587540c8e270e1a37f5195cf03bd15ea5d4f171bba9772db SHA512 3171c807d24371da2931f9c706fb3129bb9bf3ac40418e5d14cfc372baf96e5fee9ede72091163858e3ba0b4f88594efa1031b0bb7128ca68e7b847dead6856c
+DIST pyo3-0.26.0.crate 1151579 BLAKE2B bcc8236785502928bf4a0b7a320e0a8f3d6140c562de4351a52d015aaebb8dd6b4d68fe607c8ea13ec66941c8f01d2c18c4249adfacb521355d4bf158667f3a3 SHA512 e073a4d893f88aa0301ef0ead78048137515edd93c490e6dccbc301ff65a208534c65c1d216b04639d4b1ec1e4b69bc87bd34974e5d0659134c28dcce589c194
+DIST pyo3-build-config-0.26.0.crate 34309 BLAKE2B 5ea8b51da2f425674cd3bfcc1090ffdd08da01d2161dc66b08995c20cc859422f9f84077c545e5a0580182910aeb9dbba97838915148a82b86948d1cca3c8722 SHA512 a982d0a0baa4af58c2cef7c0c4b2671e3f559ca7f30586eda9fbd05e842efa2bfea0089ddbc729225b848871f6a25f85e86576e1dff519192ba289cd92c6aa8b
+DIST pyo3-ffi-0.26.0.crate 78247 BLAKE2B 65f1c399bc763bf8afc36ccac27d28242ebcccebd08ab8d9b3165ca5c9abb10f76e76fe5a250aa1e0cdc1d1e8a613160660f07bc0dbc2812675acb9dfc8e89c2 SHA512 91c2ae828e997dee5e48d839794727e94576228e9329c358a3bc77a59f8f37fa0ae6c2579229782b3f46ab90725844ce9194b9de4d3849d824adf1d40743bf7e
+DIST pyo3-macros-0.26.0.crate 8906 BLAKE2B 60eef72d27b5bc922b75f71ae24bb6f380288cb3a619bf2940b0de47b27e86cce0ffdb1fbdc9c0540d3f15c9df4884497aa1e6efec0f1579ac722b414818a428 SHA512 07bcddba0926c3dff7629da3260f9a38593fbb337b6a68d55c223f5944d912885e5319cd635ae1785026fed4adea1fcc19695ae83aca5bea127c5a8868fd2c43
+DIST pyo3-macros-backend-0.26.0.crate 81809 BLAKE2B 73885035855daf00b001e97e0a5ebe09412d212c8f01aa4db6638ef09990bf1bccbacf2e5a7e6ec21929bb1c2beba06587ecdb6ee954eda9e9c51c6c276cea95 SHA512 4146011a8ef18ecaa44b425eebe6e5e1370945063b98aaa83452e57b66aefbf5d483367b1d4d44aa5091303c4ba7f568c6428ecec0cfa6c90ba41631d4e99367
+DIST quote-1.0.41.crate 31408 BLAKE2B 9d496e0878fc329ac9492ecbd470e762bd807ec8ca4e17a856b4d1c776351434778f519977137a67b8c143ee60b20774c09768d480cff51b22f2cfcb364a20d9 SHA512 64374d70eb29f7d7e02e535ba383586d93f68a9b6464c79840fa6c42a1ac47be7ba14e415a40e158f845e486ed33d5c564c882913780d296360b30a56301ff7e
+DIST syn-2.0.106.crate 301514 BLAKE2B 6b28b30ee067c23dc4bd1b38365d14c1700245c974e785173965b0822301966d642b36bdda25210d61f17a99fc71eb81e29a56c89d1649773908bae32778fb1f SHA512 e07e1058770fa3f1039eaf335340cefb597c0dd11bb90fec9fa777ca5815d0e0bb1711bb4db52cac77e205dd68fbe2bce0e1aa9895c2a52a1ea6d7758d13424c
+DIST target-lexicon-0.13.3.crate 28498 BLAKE2B 397315667737abde41949081f8377f704c3a1105790162249a9f0c08b60f012e67d66550e9063d900ac98f5191d13c5ed23d1a8045f99373e7a673a3cfc029e7 SHA512 23422df6edb2a8cb0a9f048864faf76ccb27d6e97fbed7b208b77206941b196f155896a0381150e387142e976439a0a296dcf4cbb4df6bc0e11c65f97f979443
+DIST unicode-ident-1.0.19.crate 47480 BLAKE2B d1b9d26833fcd1f3a8498abe2f4ba4202e4547315e48aa927c0f6e4a760c6c7000ff0c18d0cf45af362323c42843d745958c1b0419835f39e13dbc1559487026 SHA512 b17fcf6bffdb4745e0b1bf4983a0dcc4c84f8b4e2c2c618eefbbeae83f94ec75df87b55f9e2dede8c3b4c6e22107fcfc589475c0cbc2c58dfb8630db8d362183
+DIST unindent-0.2.4.crate 7422 BLAKE2B 2e7870cd4f78240dbb1e5fb9c0f9b55c57bb40242fe668f105a0e862f1d6300e31efbffe0cdff676a5f96a8d19dfb148f88bfef1cd8a710556d777fd0f4ee37f SHA512 58bd4fd20a0b0a7200e0ea3ea70553cea135a5a8f7a2fb178520c41228f435becce4b9981019b7c73a17df87a2ee9b2a47c4cec29a3011bfe848d48b2473761b
diff --git a/dev-python/patiencediff/patiencediff-0.2.18.ebuild b/dev-python/patiencediff/patiencediff-0.2.18.ebuild
new file mode 100644
index 000000000000..328cc15f34fa
--- /dev/null
+++ b/dev-python/patiencediff/patiencediff-0.2.18.ebuild
@@ -0,0 +1,71 @@
+# Copyright 2021-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYPI_VERIFY_REPO=https://github.com/breezy-team/patiencediff
+PYTHON_COMPAT=( python3_{10..14} )
+
+CRATES="
+ autocfg@1.5.0
+ heck@0.5.0
+ indoc@2.0.6
+ libc@0.2.177
+ memoffset@0.9.1
+ once_cell@1.21.3
+ patiencediff@0.2.1
+ portable-atomic@1.11.1
+ proc-macro2@1.0.101
+ 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
+ quote@1.0.41
+ syn@2.0.106
+ target-lexicon@0.13.3
+ unicode-ident@1.0.19
+ unindent@0.2.4
+"
+
+inherit cargo distutils-r1 pypi
+
+DESCRIPTION="Python implementation of the patiencediff algorithm"
+HOMEPAGE="
+ https://github.com/breezy-team/patiencediff/
+ https://pypi.org/project/patiencediff/
+"
+SRC_URI+="
+ ${CARGO_CRATE_URIS}
+"
+
+LICENSE="GPL-2+"
+# Dependent crate licenses
+LICENSE+=" Apache-2.0-with-LLVM-exceptions GPL-2+ MIT Unicode-3.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+BDEPEND="
+ dev-python/setuptools-rust[${PYTHON_USEDEP}]
+"
+
+distutils_enable_tests unittest
+
+QA_FLAGS_IGNORED="usr/lib.*/py.*/site-packages/patiencediff/_patiencediff_rs.*.so"
+
+src_unpack() {
+ pypi_src_unpack
+ cargo_src_unpack
+}
+
+src_configure() {
+ # makes extension builds fatal
+ export CIBUILDWHEEL=1
+}
+
+python_test() {
+ cd "${BUILD_DIR}/install$(python_get_sitedir)" || die
+ eunittest
+}
diff --git a/dev-python/pbs-installer/Manifest b/dev-python/pbs-installer/Manifest
index 2b2ce0d48a12..256a376c93c6 100644
--- a/dev-python/pbs-installer/Manifest
+++ b/dev-python/pbs-installer/Manifest
@@ -6,3 +6,5 @@ DIST pbs-installer-2025.10.07.gh.tar.gz 94098 BLAKE2B af4bc8cd06f65f591f7f681d57
DIST pbs-installer-2025.10.10.gh.tar.gz 96641 BLAKE2B baa508106956df9a5305a15d1e202e2b3fbb9ff82d1e25d0d34798eb233fdfa2a67e2e6777081487ab7a6e5757eb22ba39ddac7a31eaaf83137aef476e5c1166 SHA512 d8d9403b592b536ca1bc7dc73efe30e9de961e4e9711e6f39afb4c4c6485a26377fd3ec63f22a382ded5ffcef6334b7c8f5ba52a5ef6f229d3c5e82d7488aaf9
DIST pbs_installer-2025.10.10.tar.gz 62929 BLAKE2B db9d10f819a93ed8bebaa409f847a2bd4fd052d1582a0746f0a0fda3db69c710c8350df541a55a3ac9c8041c8c5c0a37bae7ba40fe57125b0ad36555e8472799 SHA512 545582365be4b167c7087977e0b706bd6db31742551fcfcefecb0b8fbcf992838ced9315a24a8f5034a29b1cf65b232c7b46c5dca31c14079d64dbf227684a22
DIST pbs_installer-2025.10.10.tar.gz.provenance 9417 BLAKE2B fab923988b1175ad6db5ed1a4e32dd487d755fbbc359cbbd50186cd1c282fed2a658962b055256e98cd74170a90b32e591c31aab8ea31e9e677dc59f546a2171 SHA512 d78ddcd590364ed15b8a2b1cc97fa0edc560248c76f226e698a8a6f1257e288441eba6f5d331d25c63f3b2158f026570df773294060b11724124330ddb17838e
+DIST pbs_installer-2025.10.14.tar.gz 63626 BLAKE2B 043053c36750378cde810222ba00b56ff3440939310d77133366bbe9651c8a931850b85271b1fba57ee647ebdfa2df832666bd7d680c8a23952248bd19ed73c6 SHA512 9383b40b159bfe5b3ff41d5791ca61b7f880f42e0dd302195766026449c012e55d3561ae433cc7b859def152203387768aa2a399d00a970e9651a2ea3a0a128d
+DIST pbs_installer-2025.10.14.tar.gz.provenance 9758 BLAKE2B 04771a558d84fdafdd67ce9e441cd34446cffc18a7ff51f9ffc0e3b34f73545cf0ce5e98684ee341aa41bc43c598ae172b8fdc16da95998cced8ef04e25a4442 SHA512 86c1c8109dc21719c571f8f94f5b197c1a4385945b5575f3af77ae287a181bc00e8754eac7d630e507207f27d56ff88eecc301a0568a945d3a2f50f84937f581
diff --git a/dev-python/pbs-installer/pbs-installer-2025.10.14.ebuild b/dev-python/pbs-installer/pbs-installer-2025.10.14.ebuild
new file mode 100644
index 000000000000..ba26c68ac2a0
--- /dev/null
+++ b/dev-python/pbs-installer/pbs-installer-2025.10.14.ebuild
@@ -0,0 +1,31 @@
+# Copyright 2024-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=pdm-backend
+PYPI_VERIFY_REPO=https://github.com/frostming/pbs-installer
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Installer for Python Build Standalone"
+HOMEPAGE="
+ https://pypi.org/project/pbs-installer/
+ https://github.com/frostming/pbs-installer/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+# httpx is needed to download builds
+# zstandard is needed to install them
+RDEPEND="
+ <dev-python/httpx-1[${PYTHON_USEDEP}]
+ >=dev-python/httpx-0.27.0[${PYTHON_USEDEP}]
+ >=dev-python/zstandard-0.21.0[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=( pytest-import-check )
+distutils_enable_tests import-check
diff --git a/dev-python/pillow/Manifest b/dev-python/pillow/Manifest
index 09ccbd135851..af5b38e2111a 100644
--- a/dev-python/pillow/Manifest
+++ b/dev-python/pillow/Manifest
@@ -1,4 +1,3 @@
-DIST pillow-11.2.1.gh.tar.gz 47086538 BLAKE2B 306c3f4292681caea75835dc972229854e12260190f7e7b63ad5292091fcbb28a16fe102c9b2359fe72b99ad97821fa37715f5934bfe79a983efa81b07abf2a4 SHA512 4b5eee712b6cedf175e251ca29bb6e6dda27491585d343ef71ed416819e91510c4add6be50fe1151ab5f178f4686968de111beff4143a978b7a32519293a5725
DIST pillow-11.3.0.gh.tar.gz 47173056 BLAKE2B 1260c7025e6013c50782024756a0c891d3735bd7d4c1c9d0a89d9eb1c94bd2f762369086f7269d487100e8a0e2678a73012bf29172697c1a1a18e58f9019a9bd SHA512 7d97e623bd41da94dd89a66dc600cea016d0a4f33fbf036175768ea96b2031c1968acf4fc3d9b2835ce93f9533838a9ce68a6579a7397f4aeccafb6032adb3db
+DIST pillow-12.0.0.gh.tar.gz 47078314 BLAKE2B 14540f6b016004de56e5736f66f23999ebc2683c4be5053631fd6890502d7416d05e9ef858460fec4473d873893303b51f251ed3b50facb11616211b0629e79c SHA512 816237bf65b65a8f7ec941db6ea07814af602efe6f214e2a253b1d0b6b9dbbe9895a9822c6de67af40bd507e658b8c088707440f689d5fd237985f4ee0f7bfc2
DIST pillow-test-images-7077675d2cda485d63de4aefe0fefbf6f655c5a0.gh.tar.gz 57430276 BLAKE2B 6e8dcde60832004f5a0ea0e14024fdcd0b08cf0e225f27e39b7c2058582d6d5efe7fcaccb5bd28754affa6fe4125735fb4beeaa2075e6aceea0a998ebc0747fe SHA512 795f015c9b73a8c941fb5cd880b1ab36b24d38612db53367ab0e6c05dd1cdbfd47034decb7e36d7de940eeea1582d644ca7bee3b131577578692569c2c60c32b
-DIST pillow-test-images-716bdc4adaf97601e5b9a31c9be25f8975381ee1.gh.tar.gz 57416881 BLAKE2B 8ea5fff2231567f957fc911120c1b50610722477da99559639317e4513e4bc4e73b8b49368a6d95c6938333f0c48db7672c3713eaef70494f7896dadd07cc42d SHA512 b00009be0f5ca85ec0c761fa780f0e650c1877b456b9a9426a4d2300a0c5654358495299e129ded411fccb641e4add7e460bcb3ca7be055f3b207407ccefb33c
diff --git a/dev-python/pillow/files/pillow-11.2.1-py314.patch b/dev-python/pillow/files/pillow-11.2.1-py314.patch
deleted file mode 100644
index b9fe40d47046..000000000000
--- a/dev-python/pillow/files/pillow-11.2.1-py314.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-https://github.com/python-pillow/Pillow/pull/8948
-https://github.com/python-pillow/Pillow/commit/3c71559804e661a5f727e2007a5be51f26d9af27
-
-From c7193f74fc5ce1a0fe1742a0845165024be45ef5 Mon Sep 17 00:00:00 2001
-From: Andrew Murray <radarhere@users.noreply.github.com>
-Date: Thu, 8 May 2025 20:10:34 +1000
-Subject: [PATCH 1/3] Updated error message
-
----
- Tests/test_image_resample.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Tests/test_image_resample.py b/Tests/test_image_resample.py
-index ce6209c0da4..73b25ed51b2 100644
---- a/Tests/test_image_resample.py
-+++ b/Tests/test_image_resample.py
-@@ -462,7 +462,7 @@ def test_wrong_arguments(self, resample: Image.Resampling) -> None:
- im.resize((32, 32), resample, (20, 20, 20, 100))
- im.resize((32, 32), resample, (20, 20, 100, 20))
-
-- with pytest.raises(TypeError, match="must be sequence of length 4"):
-+ with pytest.raises(TypeError, match="must be (sequence|tuple) of length 4"):
- im.resize((32, 32), resample, (im.width, im.height)) # type: ignore[arg-type]
-
- with pytest.raises(ValueError, match="can't be negative"):
-
-From 215069af5ddec6f4d3b92b8bc7554a10e2efb669 Mon Sep 17 00:00:00 2001
-From: Andrew Murray <radarhere@users.noreply.github.com>
-Date: Thu, 8 May 2025 22:13:13 +1000
-Subject: [PATCH 3/3] Added support for Python 3.14
-
----
- setup.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/setup.py b/setup.py
-index 5ecd6b8160a..5d41e27d981 100644
---- a/setup.py
-+++ b/setup.py
-@@ -46,7 +46,7 @@ def get_version() -> str:
- ZLIB_ROOT = None
- FUZZING_BUILD = "LIB_FUZZING_ENGINE" in os.environ
-
--if sys.platform == "win32" and sys.version_info >= (3, 14):
-+if sys.platform == "win32" and sys.version_info >= (3, 15):
- import atexit
-
- atexit.register(
-
diff --git a/dev-python/pillow/pillow-11.2.1.ebuild b/dev-python/pillow/pillow-12.0.0.ebuild
index 8a95ca3fff96..d4406744a448 100644
--- a/dev-python/pillow/pillow-11.2.1.ebuild
+++ b/dev-python/pillow/pillow-12.0.0.ebuild
@@ -15,7 +15,7 @@ MY_PN=Pillow
MY_P=${MY_PN}-${PV}
# upstream always fetches from main
-TEST_IMAGE_COMMIT="716bdc4adaf97601e5b9a31c9be25f8975381ee1"
+TEST_IMAGE_COMMIT="7077675d2cda485d63de4aefe0fefbf6f655c5a0"
DESCRIPTION="Python Imaging Library (fork)"
HOMEPAGE="
@@ -35,7 +35,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="HPND"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~x64-macos"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~x64-macos"
IUSE="avif examples imagequant +jpeg jpeg2k lcms test tiff tk truetype webp xcb zlib"
REQUIRED_USE="test? ( jpeg jpeg2k lcms tiff truetype )"
RESTRICT="!test? ( test )"
@@ -60,13 +60,13 @@ RDEPEND="
dev-python/olefile[${PYTHON_USEDEP}]
"
BDEPEND="
+ dev-python/pybind11[${PYTHON_USEDEP}]
>=dev-python/setuptools-77[${PYTHON_USEDEP}]
dev-python/wheel[${PYTHON_USEDEP}]
virtual/pkgconfig
test? (
dev-python/defusedxml[${PYTHON_USEDEP}]
dev-python/packaging[${PYTHON_USEDEP}]
- dev-python/pytest-timeout[${PYTHON_USEDEP}]
|| (
media-gfx/imagemagick[png]
media-gfx/graphicsmagick[png]
@@ -74,6 +74,7 @@ BDEPEND="
)
"
+EPYTEST_PLUGINS=( pytest-timeout )
EPYTEST_XDIST=1
distutils_enable_tests pytest
@@ -81,8 +82,6 @@ src_prepare() {
local PATCHES=(
# https://github.com/python-pillow/pillow/pull/7634
"${FILESDIR}/${PN}-10.2.0-cross.patch"
- # https://github.com/python-pillow/Pillow/pull/8948
- "${FILESDIR}/${PN}-11.2.1-py314.patch"
)
distutils-r1_src_prepare
@@ -150,9 +149,9 @@ python_test() {
esac
"${EPYTHON}" selftest.py --installed || die "selftest failed with ${EPYTHON}"
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
# leak tests are fragile and broken under xdist
- epytest -k "not leak" -p timeout || die "Tests failed with ${EPYTHON}"
+ # nonfatal implied by xvfb
+ nonfatal epytest -k "not leak" || die "Tests failed with ${EPYTHON}"
}
python_install() {
diff --git a/dev-python/pyghmi/Manifest b/dev-python/pyghmi/Manifest
index 26d1c93c3fce..6b0d6a55782e 100644
--- a/dev-python/pyghmi/Manifest
+++ b/dev-python/pyghmi/Manifest
@@ -1,3 +1,2 @@
-DIST pyghmi-1.6.2.tar.gz 277107 BLAKE2B 41d6f5301675407b96bd3c6f612b1baab9066cf945053ff47f930161794c5bd7848a279a349ec7494cd2f85731e077a4414c8b6507c0b8c418a0554e467a8376 SHA512 b37d92fdb83e44b5ca14119134cf57345fcd8eea9fb667099339d248fb197f09e0ee1404cf68d87583813b1e1ef049f8ee5d896bd00723a991c006839fd76607
-DIST pyghmi-1.6.3.tar.gz 277404 BLAKE2B 1b3572e0be87de18a3ed066defbea9475c621fbb8d3cd2e96dd255ec3b79c1498a226c3e0a5454cec5b8b3469ccf00af34c0a2c9111f67709d0619b8f4d12326 SHA512 9acb9e06d2acada93550065db877311cc361da8bdb11b3f3048b88e59c37abe8a93b666e057e53c705df1df45f3f928561f6789175d85c83943c2150e337b8db
DIST pyghmi-1.6.5.tar.gz 277990 BLAKE2B 5e989a78762153614605dce7a9d4028854add8cfdab5cdf6a69d3c2bc1905324f119c84e57d24ca5699033b5db0102ae19d493ec348690c746477df044e030f9 SHA512 7c506f249564f7f5ff1f247e843314017f4a6925c706901c7fae8b4d90bbb997d03b8fcd4191af1c1001e881499c9727daf003f204017453d018d001d01ac041
+DIST pyghmi-1.6.6.tar.gz 280557 BLAKE2B da746222d0f281c899e9e7ef4458294e538eefe9036f51f81afd342e12a3b0fe8f650eb14aed5fab13c2ddb7e5a39567f0e72f48c35aae4cd1c4959e8426aa18 SHA512 0d3269e90467315c9767cae158bd1b6f89870337325cf7541e62b755adac2c7c263d9b6cef681f66747ddd80bbfdbb5338b85a16a2157a7ec74dd51ace076464
diff --git a/dev-python/pyghmi/pyghmi-1.6.3.ebuild b/dev-python/pyghmi/pyghmi-1.6.3.ebuild
deleted file mode 100644
index 9946b26c54e4..000000000000
--- a/dev-python/pyghmi/pyghmi-1.6.3.ebuild
+++ /dev/null
@@ -1,33 +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} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="A pure python implementation of IPMI protocol"
-HOMEPAGE="
- https://opendev.org/x/pyghmi/
- https://pypi.org/project/pyghmi/
-"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~x86"
-
-RDEPEND="
- >=dev-python/cryptography-2.1[${PYTHON_USEDEP}]
- dev-python/pbr[${PYTHON_USEDEP}]
- >=dev-python/python-dateutil-2.8.1[${PYTHON_USEDEP}]
- >=dev-python/six-1.10.0[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- >=dev-python/oslotest-3.2.0[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_tests unittest
diff --git a/dev-python/pyghmi/pyghmi-1.6.2.ebuild b/dev-python/pyghmi/pyghmi-1.6.6.ebuild
index 9946b26c54e4..9946b26c54e4 100644
--- a/dev-python/pyghmi/pyghmi-1.6.2.ebuild
+++ b/dev-python/pyghmi/pyghmi-1.6.6.ebuild
diff --git a/dev-python/pylint/Manifest b/dev-python/pylint/Manifest
index 2cf8f9e259dd..574be6f73a78 100644
--- a/dev-python/pylint/Manifest
+++ b/dev-python/pylint/Manifest
@@ -1,3 +1,4 @@
DIST pylint-3.3.8.gh.tar.gz 1460704 BLAKE2B 9444f6f98278b300744de27796afc366a53a295f101f22dab454dd0c4eb1a755954d06a71d42effb5139c7d4f3821421bf0734602c2ff0ecd520e5bb8edf44cf SHA512 be796582d8b7ffac2c1ec8be6f4c40422ad4353ccc83a43f31d149cb124ee7a29294ea81457cd173be85be37d94c0472c7599cb2b002b7188cfa3c70185c4e98
DIST pylint-3.3.9.gh.tar.gz 1462472 BLAKE2B b32fcb6c0d910d74c157717aa7c6d43d8edb13aad93e48543a974ce4461f38062acd8033ff390e614bf1388ebe78de004698669d082f51861421667529c71b2b SHA512 c775cfc20540e189f5e11a15eec58687dc6c7fce4e0d75f3c984977404c758d3c6903f176f057234585e6fe2dd36f40ed0e70703d228b99ae465a03d2ccebf19
DIST pylint-4.0.0.gh.tar.gz 1506202 BLAKE2B 4a934202c6dba64e91e011c081d91d2812df720171e1f49e4e5440a8d6f8f17a431df6483f86bd25a593d85e171f8ce1cf936c3f2171c4817733f1067cc6324c SHA512 b6a92bb88d212aef142c686da53443300d9191fc61cd423082d3fb4760ff30ee8639354ec32a121a73c57cf917b7928d6982cfe02c2bdf0dac296593a1837eed
+DIST pylint-4.0.1.gh.tar.gz 1506598 BLAKE2B 942368eb242b7992b1bf2ecef059c248f713ce985f453ccd95df7af63a86295b7a1e3b386fcd14c9d442a927e0d41fea6a3a2b97362d2e28df7600992899c0f2 SHA512 120bbf8d5e2379f60625de6186819969cd9fde6745e451084f652bdadd908bf7894689997969eee15842a002fd4775af88bb6810ec84f50f3e275511da00ece2
diff --git a/dev-python/pylint/pylint-4.0.1.ebuild b/dev-python/pylint/pylint-4.0.1.ebuild
new file mode 100644
index 000000000000..550c8cddbe0c
--- /dev/null
+++ b/dev-python/pylint/pylint-4.0.1.ebuild
@@ -0,0 +1,85 @@
+# 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="threads(+)"
+
+inherit distutils-r1
+
+MY_P=${P/_beta/b}
+DESCRIPTION="Python code static checker"
+HOMEPAGE="
+ https://pypi.org/project/pylint/
+ https://github.com/pylint-dev/pylint/
+"
+SRC_URI="
+ https://github.com/pylint-dev/pylint/archive/v${PV/_beta/b}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="examples"
+
+RDEPEND="
+ <dev-python/astroid-4.1[${PYTHON_USEDEP}]
+ >=dev-python/astroid-4.0.1[${PYTHON_USEDEP}]
+ >=dev-python/dill-0.3.7[${PYTHON_USEDEP}]
+ >=dev-python/isort-5.14[${PYTHON_USEDEP}]
+ <dev-python/isort-8[${PYTHON_USEDEP}]
+ >=dev-python/mccabe-0.6[${PYTHON_USEDEP}]
+ <dev-python/mccabe-0.8[${PYTHON_USEDEP}]
+ >=dev-python/platformdirs-2.2.0[${PYTHON_USEDEP}]
+ >=dev-python/tomlkit-0.10.1[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ $(python_gen_cond_dep '
+ >=dev-python/gitpython-3[${PYTHON_USEDEP}]
+ ' 'python*' )
+ >=dev-python/pytest-8.3[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.12[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-timeout )
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # TODO
+ 'tests/test_functional.py::test_functional[dataclass_with_field]'
+ 'tests/test_functional.py::test_functional[no_name_in_module]'
+ 'tests/test_functional.py::test_functional[shadowed_import]'
+ 'tests/test_functional.py::test_functional[use_yield_from]'
+ )
+ local EPYTEST_IGNORE=(
+ # No need to run the benchmarks
+ tests/benchmark/test_baseline_benchmarks.py
+ )
+
+ if ! has_version "dev-python/gitpython[${PYTHON_USEDEP}]"; then
+ EPYTEST_IGNORE+=(
+ tests/profile/test_profile_against_externals.py
+ tests/testutils/_primer/test_package_to_lint.py
+ tests/testutils/_primer/test_primer.py
+ )
+ fi
+
+ epytest
+}
+
+python_install_all() {
+ if use examples ; then
+ docompress -x "/usr/share/doc/${PF}/examples"
+ docinto examples
+ dodoc -r examples/.
+ fi
+
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/pyproject-fmt/Manifest b/dev-python/pyproject-fmt/Manifest
index 8faf315e8721..cbdfd68c220b 100644
--- a/dev-python/pyproject-fmt/Manifest
+++ b/dev-python/pyproject-fmt/Manifest
@@ -69,6 +69,7 @@ DIST pyo3-macros-0.26.0.crate 8906 BLAKE2B 60eef72d27b5bc922b75f71ae24bb6f380288
DIST pyo3-macros-backend-0.25.0.crate 75089 BLAKE2B ea4d87e16616782c60f46f97d87a002ea2873a2ab6f7335da68bab32d636988fa30834c946943d4c56c6e5992c78ba6dc2cf8b613c2a402218599ef3e7a6c5be SHA512 dc2e567a09e746893d7cea57aa456124df31b1e3cb25f5b1fabdc97cd2ae73eea1d57aa642268bdbef3dc1ba0e383893d1b5dfd9cf1f3e818f77b9fc0ef2c486
DIST pyo3-macros-backend-0.26.0.crate 81809 BLAKE2B 73885035855daf00b001e97e0a5ebe09412d212c8f01aa4db6638ef09990bf1bccbacf2e5a7e6ec21929bb1c2beba06587ecdb6ee954eda9e9c51c6c276cea95 SHA512 4146011a8ef18ecaa44b425eebe6e5e1370945063b98aaa83452e57b66aefbf5d483367b1d4d44aa5091303c4ba7f568c6428ecec0cfa6c90ba41631d4e99367
DIST pyproject_fmt-2.10.0.tar.gz 45764 BLAKE2B 488f5115681de9015a9e22834e4ecf407720707fd532da7ed8122740e3071d433e9542b919391a4a04fc2ea31f17c07996db25b91ff210832a84ce630ce6bf1d SHA512 d966ba619fa8f7e8e28666ea9c2ee24f75b239af85ba37ebf269552296dcf93beedd64c40756aa11b07036e609709dca5b4268f8b061c4ff0a0f8da43f30c064
+DIST pyproject_fmt-2.11.0.tar.gz 46894 BLAKE2B 66a289b54d5ebfccd4dc978e38a2532670e290ec730dd4d611540383fa59b74b30d440375f7c5e6457bf28f5726fd2ad3594cb3baa6afd9f687e5f750b7813bd SHA512 7ba73ad4445249c02359a534c1cac83130b6d7633223ef3466072253ae184fd80d484eb8a0be61c94f313652fa80badeecb4af5baa9aadf209d19d804a47b2e7
DIST pyproject_fmt-2.6.0.tar.gz 43484 BLAKE2B 06091446129ef75ad4b41249d4ef9f89965007dfd48bfbdad581fe295021fef06297fc4944f413f353aabf290fb695d09e2878a340129f853c2594a21865f40c SHA512 cfd8a1dcf149895adeced72dcd7036b6f18498f05f55c8148234c95f52868276e4cf1fa1453353ecc311c478321903a577f6056b756b469f52210d9ba3016bfc
DIST pyproject_fmt-2.7.0.tar.gz 45559 BLAKE2B 9d7defa66c7bbb0399476cf3303e0bfd3cfcfb312c8a11d50cbfd6ab0eff2163b2e35fec2eb9467a729a218386526f5b1e307fc7e9d306c33dd9f35939a5fd06 SHA512 3fa88282b4ef28031d2f1b6c2891bb84cc6a1631875938b6a0268a8cd13e37cf04379e2ac29182ae86afdb86d3eb2d81c3da7fe1d23a1fe8ec278a1f16eb5cd9
DIST pyproject_fmt-2.9.0.tar.gz 45704 BLAKE2B 80ba12a6fc90ad9baffe00f7b0ad3380a520bd9db54c0192021be9d92c65f1fdedb73ae5f2f18835bd7f5fe4120ba7504cf3fbeb8f0795236adc378399e89b06 SHA512 a55b869589d127c488469408cb0e8837d7ecf7e9b73f39d22953a050828cdaa1ce66d61088dd7148168ddb989150a0b560f7a622ca6ee78b29c2e00d1483e535
diff --git a/dev-python/pyproject-fmt/pyproject-fmt-2.11.0.ebuild b/dev-python/pyproject-fmt/pyproject-fmt-2.11.0.ebuild
new file mode 100644
index 000000000000..9af79a880240
--- /dev/null
+++ b/dev-python/pyproject-fmt/pyproject-fmt-2.11.0.ebuild
@@ -0,0 +1,150 @@
+# Copyright 2022-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=maturin
+PYTHON_COMPAT=( python3_{10..14} )
+
+RUST_MIN_VER="1.77.0"
+CRATES="
+ ahash@0.8.12
+ aho-corasick@1.1.3
+ any_ascii@0.1.7
+ arc-swap@1.7.1
+ autocfg@1.4.0
+ beef@0.5.2
+ bitflags@2.9.1
+ bstr@1.12.0
+ cfg-if@1.0.0
+ countme@3.0.1
+ deranged@0.4.0
+ either@1.15.0
+ equivalent@1.0.2
+ fnv@1.0.7
+ futures-core@0.3.31
+ futures-macro@0.3.31
+ futures-task@0.3.31
+ futures-timer@3.0.3
+ futures-util@0.3.31
+ getrandom@0.3.3
+ glob@0.3.2
+ globset@0.4.16
+ hashbrown@0.14.5
+ hashbrown@0.15.3
+ heck@0.5.0
+ indexmap@2.9.0
+ indoc@2.0.6
+ itertools@0.10.5
+ itoa@1.0.15
+ lexical-sort@0.3.1
+ libc@0.2.172
+ log@0.4.27
+ logos-derive@0.12.1
+ logos@0.12.1
+ memchr@2.7.4
+ memoffset@0.9.1
+ num-conv@0.1.0
+ once_cell@1.21.3
+ pin-project-lite@0.2.16
+ pin-utils@0.1.0
+ portable-atomic@1.11.0
+ powerfmt@0.2.0
+ proc-macro-crate@3.3.0
+ proc-macro2@1.0.95
+ 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
+ quote@1.0.40
+ r-efi@5.2.0
+ regex-automata@0.4.9
+ regex-syntax@0.6.29
+ regex-syntax@0.8.5
+ regex@1.11.1
+ relative-path@1.9.3
+ rowan@0.15.16
+ rstest@0.26.1
+ rstest_macros@0.26.1
+ rustc-hash@1.1.0
+ rustc_version@0.4.1
+ ryu@1.0.20
+ semver@1.0.26
+ serde@1.0.219
+ serde_derive@1.0.219
+ serde_json@1.0.140
+ slab@0.4.9
+ syn@1.0.109
+ syn@2.0.101
+ taplo@0.14.0
+ target-lexicon@0.13.2
+ text-size@1.1.1
+ thiserror-impl@1.0.69
+ thiserror@1.0.69
+ time-core@0.1.4
+ time-macros@0.2.22
+ time@0.3.41
+ toml_datetime@0.6.9
+ toml_edit@0.22.26
+ tracing-attributes@0.1.28
+ tracing-core@0.1.33
+ tracing@0.1.41
+ unicode-ident@1.0.18
+ unindent@0.2.4
+ version_check@0.9.5
+ wasi@0.14.2+wasi-0.2.4
+ winnow@0.7.10
+ wit-bindgen-rt@0.39.0
+ zerocopy-derive@0.8.25
+ zerocopy@0.8.25
+"
+
+inherit cargo distutils-r1 pypi
+
+DESCRIPTION="Format your pyproject.toml file"
+HOMEPAGE="
+ https://github.com/tox-dev/pyproject-fmt/
+ https://pypi.org/project/pyproject-fmt/
+"
+SRC_URI+="
+ ${CARGO_CRATE_URIS}
+"
+
+LICENSE="MIT"
+# Dependent crate licenses
+LICENSE+="
+ Apache-2.0-with-LLVM-exceptions ISC MIT Unicode-3.0
+ || ( Apache-2.0 Boost-1.0 )
+"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ ~dev-python/toml-fmt-common-1.0.1[${PYTHON_USEDEP}]
+"
+# tox is called as a subprocess, to get targets from tox.ini
+BDEPEND="
+ dev-python/hatch-vcs[${PYTHON_USEDEP}]
+ test? (
+ dev-python/tox
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-mock )
+distutils_enable_tests pytest
+
+QA_FLAGS_IGNORED="usr/lib/py.*/site-packages/pyproject_fmt/_lib.*.so"
+
+src_prepare() {
+ distutils-r1_src_prepare
+ sed -i -e '/strip/d' pyproject.toml || die
+}
+
+python_test_all() {
+ # default features cause linking errors because they make pyo3
+ # wrongly assume it's compiling a Python extension
+ # https://github.com/tox-dev/toml-fmt/issues/23
+ cargo_src_test --no-default-features
+}
diff --git a/dev-python/sphinx-autodoc-typehints/Manifest b/dev-python/sphinx-autodoc-typehints/Manifest
index 6ee4b5e4d5b7..a5193731f9df 100644
--- a/dev-python/sphinx-autodoc-typehints/Manifest
+++ b/dev-python/sphinx-autodoc-typehints/Manifest
@@ -1,3 +1,5 @@
DIST sphinx_autodoc_typehints-3.2.0.tar.gz 36724 BLAKE2B fccbb551c0aa9bb7b242185fa2f8255e64736c97f9ed476dab95cb25f0e95dc385f384ca4bd4f69ac42a48c2022053c86091c01937d48f023cebac3f0faff86d SHA512 110b4ec94e748e13916eda39b9f66af9823467b688df2f522b7dd5004a9534977cb72b8f4b2b0ed7f651df69e18a12e57c0f13e1c55d62baf7c1f2241880b133
DIST sphinx_autodoc_typehints-3.4.0.tar.gz 37526 BLAKE2B 1eaaa8323282c35bdd95d28b61768bdb64f2db741b5fe4e62c8ec5174a0de3523e897de1214c005540b277f80ab5a9fc5f32e4bb22071193c1e9ca7d0b5a4063 SHA512 fca36b7094ed1f1c831d9958e6601d680fee5a9d86dd9ed8f098c8c221d3bc2fc369c1ab998090a0bffca9ac51fa44005c78abf54e07d137c1ae1fdca8bca756
DIST sphinx_autodoc_typehints-3.5.1.tar.gz 37620 BLAKE2B a126f98214b4578494e016bf6f42f687f90683bdd86aa48cb50ceeeeee7e28f550040faa624a0a1e7a145cd91ca53e88d032a647de220bedc471af2f8c426a20 SHA512 22c5a6e2e4bd63ac2f292f73357de5eb908a0576e1f5ec47b9d720fa0b25e324dac44ef3d34d61312b97dfa2405c3553ccaf91ec7d9b4d5de0537aa5680e2782
+DIST sphinx_autodoc_typehints-3.5.2.tar.gz 37839 BLAKE2B 6eccf336927e2f1ff1f3f6049901e60217779423268c24367d0f33f993e6ec7249888f8481d1da04a899a92fcff038dffcb08c4f8effce2587d0eec95e6b7940 SHA512 7fe9bd391cf76ed3a0cab4283c0c70017cafe74d8b8870c874dfdda781e13b80f3b5102341aeeb94c26ce13c971a411d872480cb17c89e2fdb70a628246a6ab9
+DIST sphinx_autodoc_typehints-3.5.2.tar.gz.provenance 9747 BLAKE2B 20b3c0973ab0d9a7f9a7882fb71493dc8a44f0275b29b18fd1dfccd2613264cdd33ccc057e53623290b5d25b0d5f34cb7bbd71597add3be963f7a5c277faf1bd SHA512 7164949ba9b937ff57ab0ef472939db2b056426e8afe8a10abb66712efa691a0ebeada9c32be63b94ed208006bd0ee6fd135f66cbe84e279d5596b769e9d1805
diff --git a/dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-3.5.2.ebuild b/dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-3.5.2.ebuild
new file mode 100644
index 000000000000..71e3c875e6cc
--- /dev/null
+++ b/dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-3.5.2.ebuild
@@ -0,0 +1,41 @@
+# 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/tox-dev/sphinx-autodoc-typehints
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Type hints support for the Sphinx autodoc extension"
+HOMEPAGE="
+ https://github.com/tox-dev/sphinx-autodoc-typehints/
+ https://pypi.org/project/sphinx-autodoc-typehints/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/sphinx-8.2.0[${PYTHON_USEDEP}]
+"
+# skipping optional test dep on dev-python/nptyping as that package
+# is horribly broken and on its way out
+BDEPEND="
+ dev-python/hatch-vcs[${PYTHON_USEDEP}]
+ test? (
+ >=dev-python/sphobjinv-2.3.1[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.5[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # Internet
+ tests/test_sphinx_autodoc_typehints.py::test_format_annotation
+)
diff --git a/dev-python/unearth/Manifest b/dev-python/unearth/Manifest
index 6e6566e030c7..f04ce65cfbf7 100644
--- a/dev-python/unearth/Manifest
+++ b/dev-python/unearth/Manifest
@@ -2,3 +2,5 @@ DIST unearth-0.17.5.tar.gz 284542 BLAKE2B 091813721c1d2218a75cf47c5cf07a818e9f21
DIST unearth-0.17.5.tar.gz.provenance 9059 BLAKE2B 05dd9970903e4c87fdb2b1ece357ad309dce351b7d461ce9409e34a333576fe3c230afcc675997272015c5f25f390f54fa1b6ec19249edd12c2938d5f1674379 SHA512 ffbc09e43ecbdf3260157226e9d1b1a39bed90e20c6b9542ab5531ef853d3c1d3a1ef6a671f3dbfaeb90aec62432d85af266c1b55327e4d690155e85fb6d25d5
DIST unearth-0.18.0.tar.gz 285062 BLAKE2B abd76a0c697566157fca2dcce3b2957b821b335470cb1742040b8188054f50d23411cb5196604d1c1ef39a0119974408a683e8dca675fe9cb9b67af18e2d37ef SHA512 196c91fa146b0a02cfcf3cf75846e41aa422cf9866847f2575eedb6f45e4a4b451f55e1f8104ac424c384a7e11c6601b4df655ed5db6d48b44b020f96b38df98
DIST unearth-0.18.0.tar.gz.provenance 9156 BLAKE2B 8c2536d8af2f31a7248b432f6317fbe01314b8a2d61d9a004af905e66ca7af108a6bfdae8e87ab6018e933d123e98185140a30385fd536341b9d98725d4830ec SHA512 9452c562af79fe633619ec61e3b85cef3f82ae9360244dcf320d197945b783f290b2d41d1bd725d02575fc99e2123cc4670512ee1db142f993e38919b4401c66
+DIST unearth-0.18.1.tar.gz 285044 BLAKE2B 492d3bdd4eb56a007c9fa8efa095e6f6f4ab6c10099923de69ec90543d4cfbb8b5581716976d652ab0fe3be93d98e78fc200ad53ee143270892dc558b5f7be40 SHA512 0e48b0830eedea887fad992c7a4209b95f59e26da96775dfe40e143d808f58a2cf8dc6f0e97b950659802f99b180f353731527fbfd7061fb3bda46a0f36214c5
+DIST unearth-0.18.1.tar.gz.provenance 9219 BLAKE2B 1142df01d1b06245b78ca8aa1cf100a7270f86b635edab92c5e1f7030b6e285af02d93d8884b28acd29574dac9026adfe7f652db9b0cff973efb3a5b9d20c03c SHA512 9790c25b42c153faebc8e7ea15b4b54696df650173b1453a1ec583f9a03c4eea2c640b18a812c457d06bbe0be69250bfd67ed687c5486f0b8c0b5e794c1d3a14
diff --git a/dev-python/unearth/unearth-0.18.1.ebuild b/dev-python/unearth/unearth-0.18.1.ebuild
new file mode 100644
index 000000000000..edd0fbab7bd2
--- /dev/null
+++ b/dev-python/unearth/unearth-0.18.1.ebuild
@@ -0,0 +1,37 @@
+# Copyright 2023-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=pdm-backend
+PYPI_VERIFY_REPO=https://github.com/frostming/unearth
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A utility to fetch and download python packages"
+HOMEPAGE="
+ https://pypi.org/project/unearth/
+ https://github.com/frostming/unearth/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+
+RDEPEND="
+ dev-python/packaging[${PYTHON_USEDEP}]
+ <dev-python/httpx-1[${PYTHON_USEDEP}]
+ >=dev-python/httpx-0.27.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/flask[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/requests-wsgi-adapter[${PYTHON_USEDEP}]
+ dev-python/trustme[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-{httpserver,mock} )
+distutils_enable_tests pytest
diff --git a/dev-python/uv-build/Manifest b/dev-python/uv-build/Manifest
index c7d4a8d34451..e64b71e860fc 100644
--- a/dev-python/uv-build/Manifest
+++ b/dev-python/uv-build/Manifest
@@ -11,3 +11,4 @@ DIST uv_build-0.8.6.tar.gz 318772 BLAKE2B faf4f36b32cf308d3c70d52b84bd135d108db4
DIST uv_build-0.9.0.tar.gz 332461 BLAKE2B 422c100a5eec0d8973e676be25cdee06c2cfb7e5be1509a4dc1eeb60293633a8e541396125f884809af0e6b5f5135b7841bee7951207d0052a354c61aa5eca4a SHA512 2eaac5ab194e222bd12d569611fc3c1f1238f90f0fc634b529bed004979b8782db506f110563995ad1df0d960246d5db85260f772db62098ece178325ed6f5b0
DIST uv_build-0.9.1.tar.gz 332775 BLAKE2B 29808da2a83560a3d75d233dd5671a93b532881366dac9fc7963cf8a85b2c84cd8085b7ec9f6275adf1bef75c81700f39ea36f0d713f1ab0a028d9365cd231da SHA512 4dfb14ece44d6f8ed8a9381306d69161e6acea58800c12299af051ede93274869591b482f64023ae4b2f525e5f91b579dbcfef688279f8551988bd563df64944
DIST uv_build-0.9.2.tar.gz 332728 BLAKE2B b2f6d546cfddf19f53ec10d144ed4f46dcf60f28a85271877742f19668056277fbff51838fc56c6dba7a2dca52524bf07895d264937c7a100913908c82cb87f3 SHA512 71321eb3485b1056b0a152c82765932379ca9f33de19ad4dcaa760e34d1217558fb3367724a9f1ee99324d9fc828445a80969e20536bc192b4715a02c37663d6
+DIST uv_build-0.9.3.tar.gz 332769 BLAKE2B 8e813d289d59d2bf8ad4eaffaeb1c8525acaa36215ff9d8e1088ec4fd2ba6d7ac971251c144748805950c0934c24e9c141a860e5ef7332e71d049080852817f1 SHA512 bc1231a3aaaf77b80404281675241b8a27a328100128ec12160f29b574c1f6505a021d18bb5d8a4a23017d73cb8804d6bca5b1c8f27deba823d248744a231cc8
diff --git a/dev-python/uv-build/uv-build-0.9.3.ebuild b/dev-python/uv-build/uv-build-0.9.3.ebuild
new file mode 100644
index 000000000000..500741a7f540
--- /dev/null
+++ b/dev-python/uv-build/uv-build-0.9.3.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"
+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 2ca18d2bae8e..3a6b4221a3fe 100644
--- a/dev-python/uv/Manifest
+++ b/dev-python/uv/Manifest
@@ -25,3 +25,5 @@ DIST uv-0.9.0.gh.tar.gz 4724344 BLAKE2B 43a8c9d46cb374aa2c6b3f021c2b8f7c38bbadde
DIST uv-0.9.1-crates.tar.xz 46038732 BLAKE2B 83f7e8b0649341354e24e20d530640ac4bd07759bcf764526faff034e39e63f9a4efcaf4dec3c8b06dc93f86f9a767f07118332373a3adf4983abb9a7f9ee944 SHA512 27ebecd20669a5e45c8dcb770daed7e7ec4f985d871d73dc7a3378882ced3e704c02153a66a8351a5706514c9ae0174ab6c25c269a2aa2ec376834799073b87a
DIST uv-0.9.1.gh.tar.gz 4729329 BLAKE2B f859b68ca6d4da3df30cf4f17a7741e17da029195d1caade5017a599ef1227ea8824ff95aef0fa4669c2532440cefa5b05a528c9767728fcb4a8c05f13b4de37 SHA512 82ebac748368b08fcb9841c28de0a86f11510518c73f8c062bc6e960cdfa2da0a612ce24599893cc5072c46a31dabffd1358b803f16ed78ffd31b83694a99212
DIST uv-0.9.2.gh.tar.gz 4737210 BLAKE2B f2f74fa8015aa05073f317a96abf0e8b1177d16401a5e42c279cd7edc2c992b392cb2be953ae9d1f43279577d313e7104359851ce4b8b695d5c3915d1abbeede SHA512 197cbb4503fbd353b6f2f28db8d0a2a47040f15829164b1fc6827a8772f6ab354b502852b41f2217b824febada7c8c8e5287dec2f9b1dcc94c42cb9adab35f23
+DIST uv-0.9.3-crates.tar.xz 46057388 BLAKE2B 1fb8f46cdbebed4877d68a32e03932d3c7a5b552a455e4976feabbcb71280e3573a346fdab8e60a481e132367a9da671b44d30937534d992961a07154bcd55b8 SHA512 7331be26b967dedb2de3c873bbce0e7583ea21cc1cf6f09522c3c6539f50dd2df2fef6e59fce1d977b53d7568bcab2beef6e14df4730fcb77d6d10d989ecfb0e
+DIST uv-0.9.3.gh.tar.gz 4746738 BLAKE2B 9a1e40dab76aeb3d1378ecc373470ceba6eaf69d1a40bcfff66530857af88f2609d2e13c433142a9cdfcea97d7eab36d6b86f9673270f8b101ab9f4b3a4720de SHA512 1557b620c089c8871e5c3f9507c96a8aaf4f81cf6d3b8fe7b83fd170fcd9cd7eb2d404d6ee0cde92e4ec298817a0cb329bbfc0217525a1bd3745783bf909c56e
diff --git a/dev-python/uv/uv-0.9.3.ebuild b/dev-python/uv/uv-0.9.3.ebuild
new file mode 100644
index 000000000000..d134fbe8f1aa
--- /dev/null
+++ b/dev-python/uv/uv-0.9.3.ebuild
@@ -0,0 +1,183 @@
+# Copyright 2024-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+CRATES="
+"
+RUST_MIN_VER="1.88.0"
+
+declare -A GIT_CRATES=(
+ [async_zip]='https://github.com/astral-sh/rs-async-zip;285e48742b74ab109887d62e1ae79e7c15fd4878;rs-async-zip-%commit%'
+ [pubgrub]='https://github.com/astral-sh/pubgrub;d8efd77673c9a90792da9da31b6c0da7ea8a324b;pubgrub-%commit%'
+ [reqwest-middleware]='https://github.com/astral-sh/reqwest-middleware;7650ed76215a962a96d94a79be71c27bffde7ab2;reqwest-middleware-%commit%/reqwest-middleware'
+ [reqwest-retry]='https://github.com/astral-sh/reqwest-middleware;7650ed76215a962a96d94a79be71c27bffde7ab2;reqwest-middleware-%commit%/reqwest-retry'
+ [tl]='https://github.com/astral-sh/tl;6e25b2ee2513d75385101a8ff9f591ef51f314ec;tl-%commit%'
+ [version-ranges]='https://github.com/astral-sh/pubgrub;d8efd77673c9a90792da9da31b6c0da7ea8a324b;pubgrub-%commit%/version-ranges'
+)
+
+inherit cargo check-reqs
+
+CRATE_PV=0.9.3
+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
+
+ # replace upstream crate substitution with our crate substitution, sigh
+ local pkg
+ for pkg in reqwest-middleware reqwest-retry; do
+ local dep=$(grep "^${pkg}" "${ECARGO_HOME}"/config.toml || die)
+ sed -i -e "/\[patch\.crates-io\]/,\$s;^${pkg}.*$;${dep};" Cargo.toml || die
+ done
+
+ # 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
+}