summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/blessed/Manifest2
-rw-r--r--dev-python/blessed/blessed-1.52.0.ebuild (renamed from dev-python/blessed/blessed-1.49.0.ebuild)2
-rw-r--r--dev-python/blurb/Manifest4
-rw-r--r--dev-python/blurb/blurb-2.3.0.ebuild (renamed from dev-python/blurb/blurb-2.1.0.ebuild)0
-rw-r--r--dev-python/django-auth-ldap/Manifest2
-rw-r--r--dev-python/django-auth-ldap/django-auth-ldap-5.4.0.ebuild44
-rw-r--r--dev-python/ensurepip-pip/Manifest1
-rw-r--r--dev-python/ensurepip-pip/ensurepip-pip-26.2.2.ebuild181
-rw-r--r--dev-python/ensurepip-setuptools/Manifest1
-rw-r--r--dev-python/ensurepip-setuptools/ensurepip-setuptools-84.2.1.ebuild130
-rw-r--r--dev-python/fastapi/Manifest1
-rw-r--r--dev-python/fastapi/fastapi-0.156.4.ebuild130
-rw-r--r--dev-python/jsonpath-ng/Manifest2
-rw-r--r--dev-python/jsonpath-ng/jsonpath-ng-1.12.0.ebuild42
-rw-r--r--dev-python/nox/Manifest2
-rw-r--r--dev-python/nox/nox-2026.10.20.ebuild (renamed from dev-python/nox/nox-2026.08.10.ebuild)0
-rw-r--r--dev-python/parse/Manifest1
-rw-r--r--dev-python/parse/parse-1.22.4.ebuild28
-rw-r--r--dev-python/patiencediff/Manifest16
-rw-r--r--dev-python/patiencediff/patiencediff-1.0.2.ebuild (renamed from dev-python/patiencediff/patiencediff-1.0.0.ebuild)24
-rw-r--r--dev-python/pip/Manifest1
-rw-r--r--dev-python/pip/pip-26.2.2.ebuild196
-rw-r--r--dev-python/pycares/Manifest1
-rw-r--r--dev-python/pycares/pycares-5.2.1.ebuild48
-rw-r--r--dev-python/pydantic-settings/Manifest2
-rw-r--r--dev-python/pydantic-settings/pydantic-settings-2.16.1.ebuild40
-rw-r--r--dev-python/pyrate-limiter/Manifest4
-rw-r--r--dev-python/pyrate-limiter/pyrate-limiter-4.5.1.ebuild (renamed from dev-python/pyrate-limiter/pyrate-limiter-4.4.0.ebuild)4
-rw-r--r--dev-python/python-gammu/Manifest1
-rw-r--r--dev-python/python-gammu/python-gammu-3.5.1.ebuild59
-rw-r--r--dev-python/python-pkcs11/Manifest4
-rw-r--r--dev-python/python-pkcs11/python-pkcs11-0.10.1.ebuild (renamed from dev-python/python-pkcs11/python-pkcs11-0.9.5.ebuild)0
-rw-r--r--dev-python/python-utils/Manifest2
-rw-r--r--dev-python/python-utils/python-utils-4.1.4.ebuild43
-rw-r--r--dev-python/securesystemslib/Manifest6
-rw-r--r--dev-python/securesystemslib/securesystemslib-1.4.0.ebuild42
-rw-r--r--dev-python/securesystemslib/securesystemslib-1.6.0.ebuild (renamed from dev-python/securesystemslib/securesystemslib-1.5.0.ebuild)2
-rw-r--r--dev-python/setuptools/Manifest1
-rw-r--r--dev-python/setuptools/setuptools-84.2.1.ebuild124
-rw-r--r--dev-python/sigstore/Manifest2
-rw-r--r--dev-python/sigstore/sigstore-4.5.1.ebuild (renamed from dev-python/sigstore/sigstore-4.4.0-r1.ebuild)8
-rw-r--r--dev-python/sphinxcontrib-jsmath/Manifest1
-rw-r--r--dev-python/sphinxcontrib-jsmath/sphinxcontrib-jsmath-2.0.0.ebuild35
-rw-r--r--dev-python/sqlglot/Manifest2
-rw-r--r--dev-python/sqlglot/sqlglot-30.24.0.ebuild (renamed from dev-python/sqlglot/sqlglot-30.22.0.ebuild)0
-rw-r--r--dev-python/uv-build/Manifest1
-rw-r--r--dev-python/uv-build/uv-build-0.13.4.ebuild100
-rw-r--r--dev-python/uv/Manifest2
-rw-r--r--dev-python/uv/uv-0.13.4.ebuild156
-rw-r--r--dev-python/wcwidth/Manifest2
-rw-r--r--dev-python/wcwidth/wcwidth-0.9.3.ebuild (renamed from dev-python/wcwidth/wcwidth-0.8.3.ebuild)18
51 files changed, 1437 insertions, 83 deletions
diff --git a/dev-python/blessed/Manifest b/dev-python/blessed/Manifest
index 332a73d19518..0d195ccbe483 100644
--- a/dev-python/blessed/Manifest
+++ b/dev-python/blessed/Manifest
@@ -1,3 +1,3 @@
-DIST blessed-1.49.0.tar.gz 14055928 BLAKE2B ddc5793230d896f6851999c1f519178a026b38002e1149eae03d4ccabdcb56612e536f312d557896725cb88e8cd94bf16a743248d54351b5e324aa2e16a0915e SHA512 6a74f7b5ac374eb34f0d6558aec506e197dc9df809f4460f1d10ac5febf84e7f07afef62dc7423901a9cf3463a2872c87669c8e939d8bcc69213c64d093f00ce
DIST blessed-1.50.0.tar.gz 14062021 BLAKE2B a16609378d7b73de78ae07970119fa64a77c5dbe775d7edf62894b7cbbfbc9989fc0630b38398c8139a50ffcb40e579c3b9039dd7249b60ad526b9cb9e0065f2 SHA512 dc8d6805d04d8681b190c30481899e261aafa973129ce825c392142ea8b1e3dec476c7a9fe442d14cf9a712fe872dc0e14099047b787b5dc2349c586d6ca0e3c
DIST blessed-1.51.0.tar.gz 14069432 BLAKE2B d7ade8e3e040f1e218139659d4dc843f8e1f67f9d79a342ca4c7dff9e6a653521ebc7851a32364f3db9f93164f817aaebf99f9ee471719b28ccaa4f6c8c995a6 SHA512 f4e1cfd9d88c5fc6aadb86b56c03b302832770c01a2d456cf016f3115e0d09377e21cae95b02cadc132635318cfd9ec340cb8ace74c57ea4be40d937a987d56c
+DIST blessed-1.52.0.tar.gz 14069744 BLAKE2B 0467e1ecdc7dd626e793cd346ee5a7cf4be5ac08a4cdb9f01760697ce8165c3281f10ccc002fbdb844da005805407f08b47f00f6e41a4883f8c66375b7d7e70f SHA512 8da8bdc0b111d7cec8d065045e586cd0828cdf72ea796a46ed228b9c24b9a8c8ca86f78adc0885ba100ffa968556e599fb96d874f9f2055d232ffd73ceb0136e
diff --git a/dev-python/blessed/blessed-1.49.0.ebuild b/dev-python/blessed/blessed-1.52.0.ebuild
index 9fd01d486884..2d966eb57b93 100644
--- a/dev-python/blessed/blessed-1.49.0.ebuild
+++ b/dev-python/blessed/blessed-1.52.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 arm64 ~riscv x86"
+KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
RDEPEND="
>=dev-python/jinxed-2.1[${PYTHON_USEDEP}]
diff --git a/dev-python/blurb/Manifest b/dev-python/blurb/Manifest
index c68f725a6251..a8eeb5bcb0b8 100644
--- a/dev-python/blurb/Manifest
+++ b/dev-python/blurb/Manifest
@@ -1,4 +1,4 @@
-DIST blurb-2.1.0.tar.gz 28097 BLAKE2B 9ca21b64f994395de70f386e219600e714d3ef43e68db6153154ea126669c021097c3f81a19fd06bd3d52ec27d1f99730aa8c39a302573086e1accca74c365f8 SHA512 af7cdbb75f1c710f0a88cd3a410b6e80924239b6985c7650d5580ac27c54eca6cfcecc63d88c8c6362e2045758acfc962b97a76e5b4508f7974bd14b0ba0f39a
-DIST blurb-2.1.0.tar.gz.provenance 9408 BLAKE2B 472859864202f4150a59bf701b29d55b34c965a8540acde6271bc8d1bfeb0a94b04eea7a4f623bbe76669babc0987c4ba66ff9564576b66aa3b0acade99242c4 SHA512 6ef52687c06feddd40e0d6f57212fc1553c25068bf407d647445d9ec4790e264786f6a80cd5c9f3b22a42a6bb3e16e16f80379cf2a3994618b2da2c300dedafe
DIST blurb-2.2.0.tar.gz 28063 BLAKE2B 57cb6344b8dd4eb169eabc526d8ed074eddfa173867cd9a75a5b3f9dab153215a32d905ec8dcdbf08e6f1ff09cfd2c163813e9a87a23385370521acc7dd1729b SHA512 c3f6c0db26d380d5eb5246230e27c9f3702c72c945136d0f03111af6080cdda07c27f67e847e71c59d422f918d003065acea7bfeba122e32b86dd04e1eaf47bf
DIST blurb-2.2.0.tar.gz.provenance 9374 BLAKE2B e1eab67d74340f7663c7ef68eb5b3f1d40ac322aa50e05f57650c7702dde1439a77bd8b15f4643d8b2a6d6873a8b2f19c9edda5076053bed7b5f48b18a087102 SHA512 0d8da6ebee66c836998f27d424789f65f5caa83e923e645b410773f08d6e37b1544472a0fa90b81e05e5399fef9eeb996ff0e1b353408d2ce2057dbaf5bb77c1
+DIST blurb-2.3.0.tar.gz 31075 BLAKE2B 3b4e3a667641780d84bc7602d1cf17ce09c029a6324a679b3fe66cacc68eb8ebe8388ebe55761bb6d7098d91eb75bd55579425d57de3e012aeeca8f6467a2948 SHA512 9a620b4d4c4e0729ba1a9f5cce4316e29ae4989bd5f4deb545f71c1f45c810fe196617650d366d22f1af3bbba5a59d651701ed14cc4141dd6a3093130534db94
+DIST blurb-2.3.0.tar.gz.provenance 9719 BLAKE2B 99f9136ac92c3d962d466dd6efaf174658a502c7662082b2c5211a16646b7b2a94d4a184ff43fd99150504b0042e12c700e538ca4246d92de3081218addcbc93 SHA512 ec69ff3ebf8875be89a0787c1f9c6eee4c331a99fa835b37d58f4e5d0ecea1a8f048b00de7965d252fc7351e626d92a5f222a1c701645c1da223b4996e0e4c61
diff --git a/dev-python/blurb/blurb-2.1.0.ebuild b/dev-python/blurb/blurb-2.3.0.ebuild
index d633fc7040dd..d633fc7040dd 100644
--- a/dev-python/blurb/blurb-2.1.0.ebuild
+++ b/dev-python/blurb/blurb-2.3.0.ebuild
diff --git a/dev-python/django-auth-ldap/Manifest b/dev-python/django-auth-ldap/Manifest
index 43d8c9e65bbd..73c937ec0489 100644
--- a/dev-python/django-auth-ldap/Manifest
+++ b/dev-python/django-auth-ldap/Manifest
@@ -1,2 +1,4 @@
DIST django_auth_ldap-5.3.0.tar.gz 55272 BLAKE2B b7de6d7e94898168809561b5302712ff72e406c9b22f76bca7071cce6db311fafd63c4dc54ed0c4b61c175754342296a0e11803da1ff6d50cda45b2dab18d6f4 SHA512 00e122040c5ff4dc200256bb5b9186bd4e52edbe962129c2750144137beba1f77298c1aa1caa06318a65432a1ef8cb1340ea7d55082a8659bddef303d7a97e2b
DIST django_auth_ldap-5.3.0.tar.gz.provenance 9810 BLAKE2B 5432005a44133d45ec52e40aa78f8e7d56954fed5e385e43cb27c2be51b68892d90488fbdbe68ad8925851bc6e4a122d0f41782fc78d5a3bb3dfc6ed09ca9e62 SHA512 da82cc226af0de3e78917bb8f69ccb139355f40696937c49578f214717b28b377d7f0098805e7f07a1f2659510ec8251ba54b02dabe01dd4742d044a03f5f41f
+DIST django_auth_ldap-5.4.0.tar.gz 56416 BLAKE2B 670756f3e470bf78831860a6605987f9fc9e4d797aa27997836e5e57be511797602046a2a89b899386a561c31e0650a25ba8dec783b17e15ecf3596b72292ae0 SHA512 952228cb4cae34bea7a3edc0d187a17030568a2361e383692c17bc344170942194545840a2a8db420475968bd892dcffb3bc22f035c665f702a8c061a46f4b2c
+DIST django_auth_ldap-5.4.0.tar.gz.provenance 10008 BLAKE2B a2edbc475bebc1ef255626253da02f9d1e075cd78c6bb6d65c7678cd15d7c8c4dae8104ae206fc69ae014f1aa5300327c381e098070d81a6aefc337a805ea30a SHA512 30428850499af84b39bb61f30069c22832e9fbad51a8eda2d771c2f23701b58ec393381f5b05b229cee9e50bfbcf00e5d7cf433a83610bb9fe43e4208ccbb92a
diff --git a/dev-python/django-auth-ldap/django-auth-ldap-5.4.0.ebuild b/dev-python/django-auth-ldap/django-auth-ldap-5.4.0.ebuild
new file mode 100644
index 000000000000..6e8f7fd9f6b2
--- /dev/null
+++ b/dev-python/django-auth-ldap/django-auth-ldap-5.4.0.ebuild
@@ -0,0 +1,44 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_VERIFY_REPO=https://github.com/django-auth-ldap/django-auth-ldap
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Django LDAP authentication backend"
+HOMEPAGE="
+ https://github.com/django-auth-ldap/django-auth-ldap/
+ https://pypi.org/project/django-auth-ldap/
+"
+
+LICENSE="BSD-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-python/django-5.2[${PYTHON_USEDEP}]
+ >=dev-python/python-ldap-3.1[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ dev-python/setuptools-scm[${PYTHON_USEDEP}]
+ test? (
+ $(python_gen_impl_dep sqlite)
+ net-nds/openldap[-minimal]
+ )
+"
+
+distutils_enable_sphinx docs \
+ dev-python/sphinx-rtd-theme
+
+python_test() {
+ # for slapd and slapdtest
+ local -x SBIN=/usr/sbin:/usr/$(get_libdir)/openldap
+ "${EPYTHON}" -m django test -v 2 --settings tests.settings ||
+ die "Tests failed with ${EPYTHON}"
+}
diff --git a/dev-python/ensurepip-pip/Manifest b/dev-python/ensurepip-pip/Manifest
index 6a96866423bb..d0b8b25e59da 100644
--- a/dev-python/ensurepip-pip/Manifest
+++ b/dev-python/ensurepip-pip/Manifest
@@ -1,3 +1,4 @@
DIST flit_core-3.12.0-py3-none-any.whl 45594 BLAKE2B 7c6cb6eb03d45bbba27f27b3728881b57fe82dd38e03f884d3b7c46116eb2b9dd76f92bdaf7f594ef8ccbe12ec8f9a56424ff9e9fc7a839c4818a113fdf0c3d3 SHA512 790c12b1f43201e365fb3f8f2f0a54e1a578876799dfdf8bfeea679a25ea096bf62946d006618c1458ae6e37ce6d00998f37e9aba426d5ab80d32ef2d75da4e0
DIST pip-26.1.2.gh.tar.gz 9268753 BLAKE2B 8cbf0ecf25a2bdd148506ca0e2e778b9053759cf5fed3914b915454bd8810b1d7a27e3b2efb5fd29c4e6b189c7e8050f0da15ae6c259712446b5a35f44018ee0 SHA512 e29c98a7da5e329183b7eef86a66f9d6c3473051f64aa6e762714306148547eb0de4220824484071822a9a62bd01a62a09ab16bba4c26e4b847bfc2609728608
DIST pip-26.2.1.gh.tar.gz 9301563 BLAKE2B eb7b929de0e99c84c9b1257f1bf737f524eb6de01075d40b36519b082d8a49e107dbd0eded9a8bf737ce8f7d452c5e5cffb853b000d6ac2936b5b84dd607c770 SHA512 03a00bdc4387a4e7e4e54672e9198893500d279912ece4cd144f015c568c974ecc2c3c7bd6abf108df852302ddd49468ef0bc514ca4323ee037d754e2fbfaee0
+DIST pip-26.2.2.gh.tar.gz 9302280 BLAKE2B 862f37064e2a68be6ea672916fd02644928258547b1421fc5eecde442ac15242cf03d3b79f9a71fe6a8e9abc012ff7a9df74de27ce20197bf6876436a44fbb72 SHA512 b24050ef68595b4b1566614bb37908102b3ebaea5fefb33cbb30fde273c210750895a053ff58294f32450a6d09e4c92e555895362ced742a63cfea5720f2ea08
diff --git a/dev-python/ensurepip-pip/ensurepip-pip-26.2.2.ebuild b/dev-python/ensurepip-pip/ensurepip-pip-26.2.2.ebuild
new file mode 100644
index 000000000000..5987ad429465
--- /dev/null
+++ b/dev-python/ensurepip-pip/ensurepip-pip-26.2.2.ebuild
@@ -0,0 +1,181 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=flit-core
+# PYTHON_COMPAT is used only for testing
+PYTHON_COMPAT=( python3_{13..14} )
+PYTHON_REQ_USE="ssl(+),threads(+)"
+
+inherit distutils-r1 pypi
+
+FLIT_CORE_PV=3.12.0
+
+MY_P=${P#ensurepip-}
+DESCRIPTION="Shared pip wheel for ensurepip Python module"
+HOMEPAGE="
+ https://pip.pypa.io/en/stable/
+ https://pypi.org/project/pip/
+ https://github.com/pypa/pip/
+"
+SRC_URI="
+ https://github.com/pypa/pip/archive/${PV}.tar.gz -> ${MY_P}.gh.tar.gz
+ test? (
+ $(pypi_wheel_url flit-core "${FLIT_CORE_PV}")
+ )
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos ~x64-solaris"
+IUSE="test test-rust"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+ ${RDEPEND}
+ test? (
+ <dev-python/ensurepip-setuptools-80
+ dev-python/ensurepip-wheel
+ dev-python/freezegun[${PYTHON_USEDEP}]
+ dev-python/pretend[${PYTHON_USEDEP}]
+ dev-python/scripttest[${PYTHON_USEDEP}]
+ dev-python/virtualenv[${PYTHON_USEDEP}]
+ dev-python/werkzeug[${PYTHON_USEDEP}]
+ dev-python/wheel[${PYTHON_USEDEP}]
+ test-rust? (
+ dev-python/cryptography[${PYTHON_USEDEP}]
+ )
+ dev-vcs/git
+ )
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_RERUNS=5
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+declare -A VENDOR_LICENSES=(
+ [cachecontrol]=Apache-2.0
+ [certifi]=MPL-2.0
+ [distlib]=PSF-2
+ [distro]=Apache-2.0
+ [idna]=BSD
+ [msgpack]=Apache-2.0
+ [packaging]="|| ( Apache-2.0 MIT )"
+ [pkg_resources]=MIT
+ [platformdirs]=MIT
+ [pygments]=BSD-2
+ [pyproject_hooks]=MIT
+ [requests]=Apache-2.0
+ [resolvelib]=ISC
+ [rich]=MIT
+ [tomli]=MIT
+ [tomli_w]=MIT
+ [truststore]=MIT
+ [urllib3]=MIT
+)
+LICENSE+=" ${VENDOR_LICENSES[*]}"
+
+python_prepare_all() {
+ local PATCHES=(
+ # remove coverage & pytest-subket wheel expectation from test suite
+ # (from dev-python/pip)
+ "${FILESDIR}/pip-26.0-test-wheels.patch"
+ )
+
+ distutils-r1_python_prepare_all
+
+ if use test; then
+ local wheels=(
+ "${BROOT}"/usr/lib/python/ensurepip/{setuptools,wheel}-*.whl
+ "${DISTDIR}/$(pypi_wheel_name flit-core "${FLIT_CORE_PV}")"
+ )
+ mkdir tests/data/common_wheels/ || die
+ cp "${wheels[@]}" tests/data/common_wheels/ || die
+ fi
+
+ # Verify that we've covered licenses for all vendored packages
+ cd src/pip/_vendor || die
+ local packages=( */ )
+ local pkg missing=()
+ for pkg in "${packages[@]%/}"; do
+ if [[ ! -v "VENDOR_LICENSES[${pkg}]" ]]; then
+ missing+=( "${pkg}" )
+ else
+ unset "VENDOR_LICENSES[${pkg}]"
+ fi
+ done
+
+ if [[ ${missing[@]} || ${VENDOR_LICENSES[@]} ]]; then
+ [[ ${missing[@]} ]] &&
+ eerror "License missing for packages: ${missing[*]}"
+ [[ ${VENDOR_LICENSES[@]} ]] &&
+ eerror "Vendored packages removed: ${!VENDOR_LICENSES[*]}"
+ die "VENDOR_LICENSES outdated"
+ fi
+
+ local upstream_count=$(wc -l < vendor.txt || die)
+ if [[ ${#packages[@]} -ne ${upstream_count} ]]; then
+ eerror "VENDOR_LICENSES: ${#packages[@]}"
+ eerror "vendor.txt: ${upstream_count}"
+ die "Not all vendored packages matched"
+ fi
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ tests/functional/test_inspect.py::test_inspect_basic
+ # Internet
+ tests/functional/test_config_settings.py::test_backend_sees_config_via_sdist
+ tests/functional/test_install.py::test_double_install_fail
+ tests/functional/test_install.py::test_install_sdist_links
+ tests/functional/test_install_config.py::test_prompt_for_keyring_if_needed
+ tests/functional/test_lock.py::test_lock_archive
+ tests/functional/test_lock.py::test_lock_vcs
+ # broken by system site-packages use
+ tests/functional/test_freeze.py::test_freeze_with_setuptools
+ tests/functional/test_pip_runner_script.py::test_runner_work_in_environments_with_no_pip
+ tests/functional/test_uninstall.py::test_basic_uninstall_distutils
+ tests/unit/test_base_command.py::test_base_command_global_tempdir_cleanup
+ tests/unit/test_base_command.py::test_base_command_local_tempdir_cleanup
+ tests/unit/test_base_command.py::test_base_command_provides_tempdir_helpers
+ # require cmake wheel
+ tests/functional/test_build_env.py::test_build_env_can_still_access_python_tools_on_system_path
+ tests/functional/test_build_env.py::test_build_env_isolation[venv-inprocess]
+ tests/functional/test_build_env.py::test_build_env_isolation[venv-subprocess]
+ tests/functional/test_install_config.py::test_build_dependency_install_uses_same_keyring_as_root[legacy-isolation]
+ )
+ local EPYTEST_IGNORE=(
+ # from upstream options
+ src/pip/_vendor
+ tests/tests_cache
+ # requires proxy.py
+ tests/functional/test_proxy.py
+ )
+
+ if ! has_version "dev-python/cryptography[${PYTHON_USEDEP}]"; then
+ EPYTEST_DESELECT+=(
+ tests/functional/test_install.py::test_install_sends_client_cert
+ tests/functional/test_install_config.py::test_do_not_prompt_for_authentication
+ tests/functional/test_install_config.py::test_prompt_for_authentication
+ tests/functional/test_install_config.py::test_prompt_for_keyring_if_needed
+ )
+ fi
+
+ local -x PIP_DISABLE_PIP_VERSION_CHECK=1
+ # rerunfailures because test suite breaks if packages are installed
+ # in parallel
+ epytest -m "not network" -o addopts= -o tmp_path_retention_policy=all \
+ --use-venv
+}
+
+src_install() {
+ if [[ ${DISTUTILS_WHEEL_PATH} != *py3-none-any.whl ]]; then
+ die "Non-pure wheel produced?! ${DISTUTILS_WHEEL_PATH}"
+ fi
+ # TODO: compress it?
+ insinto /usr/lib/python/ensurepip
+ doins "${DISTUTILS_WHEEL_PATH}"
+}
diff --git a/dev-python/ensurepip-setuptools/Manifest b/dev-python/ensurepip-setuptools/Manifest
index 8995f30d0b22..aa3a8270e7b4 100644
--- a/dev-python/ensurepip-setuptools/Manifest
+++ b/dev-python/ensurepip-setuptools/Manifest
@@ -1,3 +1,4 @@
DIST setuptools-79.0.1-py3-none-any.whl 1256281 BLAKE2B 8ae51bdd1c0ccada116757c2bd765225fcf4bedc7ada18567ae12f09b6978cdbcddd4f635a39a5568b6d3ed4388e4f73af5c33a7060f2ac0d0907fc82d8fd74f SHA512 fef6cfc6f95a5bb7320f1680e1c665cb8d9a4e4227cde4d8aab8a50bed4bcf04320085b9d7d5343359f887008db5c5a861e57f3d08b7b0b2311a28adaeee6b4a
DIST setuptools-84.0.0.tar.gz 1168449 BLAKE2B b4dc28c42ea271dc2cac7f7218bec0819d043d52100df8c1ac7672092c2f45b62e731d18d76bc00a6392b60f8afb8c1f7e961050ee23b0e1c77bbd94e42481db SHA512 67721834362dd88c256cbd523413dbdcb99ca871bcc873ffa29c7667687973e1d5e15b0ea8ef4529711418b14d3d660771846877543001d4ab0fe8b4585ac9ad
DIST setuptools-84.2.0.tar.gz 1227656 BLAKE2B c6f89587af28b64029dfcc0a3a511e30abec3b60d00a272f699ff2df2032e0cdc04c546b9bac6a8928cf7a6cbcd3a3a856815ee18bcc178f05a53fcc59bee6eb SHA512 ac5c9daf5cf445a2bb220072efed426e0af38caa601d544389181a3f53bc39575cf0cf7aa69addca239eb8c8f51e3410cad0b9ff9c9787d0c4c6a54fbc3a256e
+DIST setuptools-84.2.1.tar.gz 1230289 BLAKE2B fcac5229c8764d97159934030e996a6791e508b363a13f8358471256f2a73168ff177a52fcda57be308ef1062b0e2b9e78fcc68616e12613c939e818b5208647 SHA512 9e4c9a9ec45c69abe6f8953b6c6490eb1ffe2aea9a666beab45bdd7d5e2acbb2dbfddf6d7797c01c3e5a47b10bee519c029587fb45000ebb5c5b72468498ef0b
diff --git a/dev-python/ensurepip-setuptools/ensurepip-setuptools-84.2.1.ebuild b/dev-python/ensurepip-setuptools/ensurepip-setuptools-84.2.1.ebuild
new file mode 100644
index 000000000000..ce9b184f5ef2
--- /dev/null
+++ b/dev-python/ensurepip-setuptools/ensurepip-setuptools-84.2.1.ebuild
@@ -0,0 +1,130 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=standalone
+PYPI_PN=${PN#ensurepip-}
+# PYTHON_COMPAT used only for testing
+PYTHON_COMPAT=( python3_{13..14} )
+PYTHON_REQ_USE="xml(+)"
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Shared setuptools wheel for ensurepip Python module"
+HOMEPAGE="
+ https://github.com/pypa/setuptools/
+ https://pypi.org/project/setuptools/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos ~x64-solaris"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+ ${RDEPEND}
+ test? (
+ >=dev-python/build-1.0.3[${PYTHON_USEDEP}]
+ >=dev-python/ini2toml-0.14[${PYTHON_USEDEP}]
+ >=dev-python/filelock-3.4.0[${PYTHON_USEDEP}]
+ >=dev-python/jaraco-envs-2.2[${PYTHON_USEDEP}]
+ >=dev-python/jaraco-path-3.7.2[${PYTHON_USEDEP}]
+ >=dev-python/jaraco-test-5.5[${PYTHON_USEDEP}]
+ dev-python/pip[${PYTHON_USEDEP}]
+ dev-python/pyproject-hooks[${PYTHON_USEDEP}]
+ >=dev-python/tomli-w-1.0.0[${PYTHON_USEDEP}]
+ >=dev-python/virtualenv-20[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-{home,subprocess,timeout} )
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+declare -A VENDOR_LICENSES=(
+ [autocommand]=LGPL-3
+ [backports.tarfile]=MIT
+ [importlib_metadata]=Apache-2.0
+ [jaraco_context]=MIT
+ [jaraco_functools]=MIT
+ [jaraco.text]=MIT
+ [more_itertools]=MIT
+ [packaging]="|| ( Apache-2.0 MIT )"
+ [platformdirs]=MIT
+ [tomli]=MIT
+ [wheel]=MIT
+ [zipp]=MIT
+)
+LICENSE+=" ${VENDOR_LICENSES[*]}"
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # Verify that we've covered licenses for all vendored packages
+ cd setuptools/_vendor || die
+ local packages=( *.dist-info )
+ local pkg missing=()
+ for pkg in "${packages[@]%%-*}"; do
+ if [[ ! -v "VENDOR_LICENSES[${pkg}]" ]]; then
+ missing+=( "${pkg}" )
+ else
+ unset "VENDOR_LICENSES[${pkg}]"
+ fi
+ done
+
+ if [[ ${missing[@]} || ${VENDOR_LICENSES[@]} ]]; then
+ [[ ${missing[@]} ]] &&
+ eerror "License missing for packages: ${missing[*]}"
+ [[ ${VENDOR_LICENSES[@]} ]] &&
+ eerror "Vendored packages removed: ${!VENDOR_LICENSES[*]}"
+ die "VENDOR_LICENSES outdated"
+ fi
+}
+
+python_compile() {
+ # If we're testing, install for all implementations.
+ # If we're not, just get one wheel built.
+ if use test || [[ -z ${DISTUTILS_WHEEL_PATH} ]]; then
+ distutils-r1_python_compile
+ fi
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # TODO
+ setuptools/tests/config/test_setupcfg.py::TestConfigurationReader::test_basic
+ setuptools/tests/config/test_setupcfg.py::TestConfigurationReader::test_ignore_errors
+ # TODO, probably some random package
+ setuptools/tests/config/test_setupcfg.py::TestOptions::test_cmdclass
+ # relies on -Werror
+ setuptools/_static.py::setuptools._static.Dict
+ setuptools/_static.py::setuptools._static.List
+ # Internet
+ setuptools/tests/test_namespaces.py::TestNamespaces::test_mixed_site_and_non_site
+ setuptools/tests/test_namespaces.py::TestNamespaces::test_namespace_package_installed_and_cwd
+ setuptools/tests/test_namespaces.py::TestNamespaces::test_packages_in_the_same_namespace_installed_and_cwd
+ setuptools/tests/test_namespaces.py::TestNamespaces::test_pkg_resources_import
+ # broken by warnings from setuptools-scm
+ setuptools/tests/config/test_apply_pyprojecttoml.py::TestPresetField::test_scripts_dont_require_dynamic_entry_points
+ # TODO
+ setuptools/tests/test_config_discovery.py::TestDiscoverPackagesAndPyModules::test_py_modules_when_wheel_dir_is_cwd
+ 'setuptools/tests/test_egg_info.py::TestEggInfo::test_requires[setup_requires_with_markers]'
+ # broken by scikit-build-core somehow
+ 'setuptools/tests/test_extern.py::test_distribution_picklable'
+ )
+
+ local -x PRE_BUILT_SETUPTOOLS_WHEEL=${DISTUTILS_WHEEL_PATH}
+ epytest -o tmp_path_retention_policy=all \
+ -m "not uses_network" setuptools
+}
+
+src_install() {
+ if [[ ${DISTUTILS_WHEEL_PATH} != *py3-none-any.whl ]]; then
+ die "Non-pure wheel produced?! ${DISTUTILS_WHEEL_PATH}"
+ fi
+ # TODO: compress it?
+ insinto /usr/lib/python/ensurepip
+ doins "${DISTUTILS_WHEEL_PATH}"
+}
diff --git a/dev-python/fastapi/Manifest b/dev-python/fastapi/Manifest
index 7e9ad727fe4f..b77ca9390610 100644
--- a/dev-python/fastapi/Manifest
+++ b/dev-python/fastapi/Manifest
@@ -1,3 +1,4 @@
DIST fastapi-0.143.3.tar.gz 469834 BLAKE2B 6384f8b551b38c1fc83779ef2a4a318e0cb4b01067e852e876b809d8dc8c2bf59dcbb109780337df3dd83b70ff61b30676fceb95745478439f580de2ad544c16 SHA512 f70e98e10e6d5d5b1db0fd6795179dff1bf7f737a0fee452732a49a22dca092efded647d27cf8fdb61b5eeba29311230fcca9d974ac258dc131d05080a134e7e
DIST fastapi-0.146.0.tar.gz 471622 BLAKE2B dc332799da2b2c3da0c0374bd4dba73d5189357664dbb4bdc34a0facb229fb13507835e8a04d829ef80eae1c1ea8e8657f73ba2d15c222d4a1119d5e2abd4e1e SHA512 bf7c8a7e137ac5541bc36e7cd0c0042ca02da6d8b7bd6bd5b7fea11578d69854bbfde980981a81735b5dc889611a3a21364be4c5388add324d1552550a2736cc
DIST fastapi-0.150.0.tar.gz 483799 BLAKE2B e3c7522a21be4a890abc9344a090e3d005791d318ea2a6616bb4dd39bace457c630cfd8d9c96df6166f98fe74e221e2d5912a904cc39a068428ab26a09bc0ca2 SHA512 926b2e6261725efb705ebb3a2048b36a9c18efc55598208c3de1541ce5de130d0c418cdb63d5be98ea20d1e7ec4959903308655f4154f40567ee00755bd1ce32
+DIST fastapi-0.156.4.tar.gz 500884 BLAKE2B b566123362fbd40001981e13d6df980956c8d2b58ffc494caa724eca4c6910cd5b7dd784a6191c90610e12ed8ac5ce69d9790b66b94338b02a1a96711b381ded SHA512 443976e73fd51878d6f6dc5d92fdecad0d7f31734eecbf5bbf64b32dd4281253ad2bb3f90cf3b5aa288ef4386b30aeddd509903c31204f7439657714ba35e5fc
diff --git a/dev-python/fastapi/fastapi-0.156.4.ebuild b/dev-python/fastapi/fastapi-0.156.4.ebuild
new file mode 100644
index 000000000000..1e1bf586041a
--- /dev/null
+++ b/dev-python/fastapi/fastapi-0.156.4.ebuild
@@ -0,0 +1,130 @@
+# Copyright 2025-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=pdm-backend
+PYTHON_COMPAT=( python3_{13..14} )
+#may be not stricly required
+PYTHON_REQ_USE="threads(+)"
+
+inherit distutils-r1 optfeature pypi
+
+DESCRIPTION="High performance framework, easy to learn, fast to code, ready for production"
+HOMEPAGE="
+ https://fastapi.tiangolo.com/
+ https://github.com/fastapi/fastapi/
+ https://pypi.org/project/fastapi/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+
+RDEPEND="
+ >=dev-python/annotated-doc-0.0.4[${PYTHON_USEDEP}]
+ >=dev-python/opentelemetry-api-1.44.0[${PYTHON_USEDEP}]
+ >=dev-python/pydantic-2.9.0[${PYTHON_USEDEP}]
+ >=dev-python/starlette-0.46.0[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.8.0[${PYTHON_USEDEP}]
+ >=dev-python/typing-inspection-0.4.2[${PYTHON_USEDEP}]
+"
+
+#FIXME: add missing deps
+BDEPEND="
+ test? (
+ dev-python/a2wsgi[${PYTHON_USEDEP}]
+ dev-python/dirty-equals[${PYTHON_USEDEP}]
+ dev-python/flask[${PYTHON_USEDEP}]
+ dev-python/httpx[${PYTHON_USEDEP}]
+ dev-python/httpx2[${PYTHON_USEDEP}]
+ dev-python/pydantic-settings[${PYTHON_USEDEP}]
+ dev-python/python-multipart[${PYTHON_USEDEP}]
+ dev-python/sqlalchemy[${PYTHON_USEDEP}]
+ dev-python/typer[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( anyio inline-snapshot pytest-timeout )
+# workaround broken toml config
+: ${EPYTEST_TIMEOUT:=30}
+# the test suite is flaky as hell
+EPYTEST_RERUNS=5
+# 3k tests+, so use xdist to speed them up
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+# There are some JSON response tests that will exercise orjson or ujson if they are available.
+# These are properly skipped if the optional dependencies are not installed at the cost of a little spam.
+python_test() {
+ local EPYTEST_IGNORE=(
+ # python/strawberry-graphql (in guru, test dep only)
+ tests/test_tutorial/test_graphql/test_tutorial001.py
+ # dev-python/sqlmodel (in guru, test dep only)
+ tests/test_tutorial/test_sql_databases/test_tutorial001.py
+ tests/test_tutorial/test_sql_databases/test_tutorial002.py
+ # dev-python/fastapi-cli (missing, test and optfeature)
+ tests/test_fastapi_cli.py
+ # dev-python/pwdlib (in guru, test dep only)
+ tests/test_tutorial/test_security/test_tutorial004.py
+ tests/test_tutorial/test_security/test_tutorial005.py
+ # Wants dev-python/multipart _just_ to complain that it's not the right multipart lib.
+ tests/test_multipart_installation.py
+ # scripts/tests use CliRunner.isolated_filesystem() removed in recent typer
+ scripts/tests
+ )
+ local EPYTEST_DESELECT=(
+ # Requires investigation - missing ./image.png test file (?)
+ tests/test_tutorial/test_additional_responses/test_tutorial004.py::test_path_operation_img
+ # Broken by brotli being available, also fragile to random ordering
+ tests/test_tutorial/test_header_param_models/test_tutorial001.py::test_header_param_model_invalid
+ tests/test_tutorial/test_header_param_models/test_tutorial003.py::test_header_param_model_invalid
+ tests/test_tutorial/test_header_param_models/test_tutorial003.py::test_header_param_model_no_underscore
+ # opentelemetry-*
+ tests/test_telemetry/test_background.py::test_background_task_integrations
+ tests/test_telemetry/test_data.py::test_request_objects_are_not_exported
+ tests/test_telemetry/test_environment_integrations.py
+ tests/test_telemetry/test_integrations.py::test_current_contrib
+ tests/test_telemetry/test_integrations.py::test_current_logfire
+ tests/test_telemetry/test_integrations.py::test_current_sentry
+ tests/test_telemetry/test_integrations.py::test_inactive_sentry_does_not_disable_native
+ tests/test_telemetry/test_integrations.py::test_logfire_global_provider_without_fastapi_instrumentor
+ tests/test_telemetry/test_native_integrations.py
+ tests/test_telemetry/test_runtime.py::test_concurrent_provider_owner_wins
+ tests/test_telemetry/test_runtime.py::test_environment_export_initializes_after_fork
+ tests/test_telemetry/test_runtime.py::test_failed_registration_closes_new_exporter
+ tests/test_telemetry/test_runtime.py::test_real_otlp_exception_export_without_traces_or_metrics
+ tests/test_telemetry/test_runtime.py::test_real_otlp_export_and_repeated_lifespans
+ tests/test_telemetry/test_runtime.py::test_registration_provider_prefers_public_metric_reader
+ tests/test_telemetry/test_runtime.py::test_unsupported_provider_warns_without_preventing_startup
+ # TODO
+ tests/test_dependency_contextmanager.py::test_{a,}sync_state
+ tests/test_dependency_contextmanager.py::test_{a,}sync_raise_other
+ # tutorial tests are flaky
+ tests/test_tutorial/
+ )
+ epytest
+}
+
+pkg_postinst() {
+ # not part of any upstream extra
+ optfeature "alternative JSON library" "dev-python/ujson" # orjson, too but it's deprecated
+
+ # pyproject.toml:project.optional-dependencies.standard
+ # Following optfeatures should be exposed, but missing deps
+ # optfeature "fastAPI CLI" "dev-python/fastapi-cli" - missing - depends on this package!
+ # optfeature "compressed file support" "dev-python/fastar" - missing
+ # optfeature "pydantic extra types support" "dev-python/pydantic-extra-types" - in guru
+ optfeature_header "standard extras"
+ optfeature "ASGI server support" "dev-python/uvicorn"
+ optfeature "email validation support" "dev-python/email-validator"
+ optfeature "TestClient for testing FastAPI applications" "dev-python/httpx"
+ optfeature "templating support" "dev-python/jinja2"
+ optfeature "multipart form data support" "dev-python/python-multipart"
+ optfeature "settings management support" "dev-python/pydantic-settings"
+
+ # pyproject.toml:project.optional-dependencies.all - includes all the above plus:
+ optfeature_header "all extras"
+ optfeature "session middleware support" "dev-python/itsdangerous"
+ optfeature "YAML support" "dev-python/pyyaml"
+}
diff --git a/dev-python/jsonpath-ng/Manifest b/dev-python/jsonpath-ng/Manifest
index 66d92c5e6f76..bafc2b18e3a0 100644
--- a/dev-python/jsonpath-ng/Manifest
+++ b/dev-python/jsonpath-ng/Manifest
@@ -2,6 +2,8 @@ DIST jsonpath_ng-1.10.1.tar.gz 87626 BLAKE2B 10a401c35d97b616f12ddfb855978115adf
DIST jsonpath_ng-1.10.1.tar.gz.provenance 9931 BLAKE2B 68d303044b6bafe2d1be9721006724defe86f2e124f9cfe79d974ae57f0d1a748777206122966c30af3fd00a068fa31bc46f1682399e403a06f02caf8971674d SHA512 cc6ac5c046a47241c2ca5217218447f3b88efb4fd6ddf1eadd4104642e86af8fa5aa1bacf1033185fb3a4ccc6bfc18eae64e2ca9ce6e31f5229e93639b30d103
DIST jsonpath_ng-1.11.0.tar.gz 94460 BLAKE2B a39a80a3a2578009accb07f998c9b0e6f10890c8c98477df8a9d1d7340f3d1d2869c4a7a57c72e9f9155c28df0349689cce55c4b4795ab88639ff656c0810411 SHA512 c92f0daeb492d9879546187c4140dbace4cccb16bc1921424408387971dc0b8dfe11a322455cc427d0aea1cf01438874996dad9eba1e6512be51ca302f1728a4
DIST jsonpath_ng-1.11.0.tar.gz.provenance 10162 BLAKE2B 540c03e1c53cbbb13add1158fda0e003cb3be66508be8e9caa109983a04d507df50c97a07b0b3c0dd02a8849e2e5dfac13ce7ed9967ef6dc8c446e809b4e7032 SHA512 cea2bd388f2967e8e551f860b0a846e55cb56e6f5cae41e73470505fe1a990f65c71d00d12b84c964dc5e783605e1ad8113d9e2d06ebb27c1af727cb1aa30f80
+DIST jsonpath_ng-1.12.0.tar.gz 103683 BLAKE2B 7a8cfa241ef094e8224cbbae82e87c6229a3e96a0d84ac2cadf7d24afc31719ffa4fa8140aac5ee261f3c3295e288df27bdef246499b10056639ea0e435502eb SHA512 e993ff209c63d5585faee94ae6c817ed3d2e4b3eeb09bc46c89a437d8a948369ce85b3a8288b6175e3f0bb7bbd29416862688a702a3ccdca0effd6d8ccf84c41
+DIST jsonpath_ng-1.12.0.tar.gz.provenance 9782 BLAKE2B 3525e2b7911a5fd02ffeffc8cff5bb9290ab0fb559aea060e002965d3ec9130d20009790098d8c0061739d21051a52006a791a4aed854a1793973227aa3c7f7b SHA512 c0191e5786f5347bdded0d2a191c8ecdba0773e4509a5cd25f75bd74bcec2094e48e45b648f0e07d6a68d884b455f412669c0a212f5669c241135108939a68da
DIST jsonpath_ng-1.8.0.tar.gz 74513 BLAKE2B f8ba3f19bd106c7246a115175515f0b1ef066954356e06f7b289b754eac05aa7c91f56d44d36e4c04765e0ab7a2fc01ed887ee4c08c3b1d17f54087e73a21ada SHA512 64bf0c98193aff8f390c18f53713fbb41da075f93369f1d81c38d22ac63a86d1e502f59a67aaf1d39d0dc8d1b482bd1f73cc8e1bdf54b68a43b8725d109c9b7f
DIST jsonpath_ng-1.9.0.tar.gz 78042 BLAKE2B 5fc11ee6847e16d9bd019d53a12345ebd3e5ee0f80a47c537468c139e57e0c3aaaafc3c446aa2731edea3daf14495b71416f78392529ea4775980e8019ad76c6 SHA512 c9c266e19cb279c1f0c0b7ae36f906baeb118bc7fa51909e36a23481fd1326b3ef79adc9904ee66315dcc1e96393a9e88330fd9a76f21d1c8962340d27c49cc9
DIST jsonpath_ng-1.9.1.tar.gz 78077 BLAKE2B b0585cd6afbc376a015e2cc3f6be910f1a51807d35de15df02b95c3755af6ba9c8e97e7c01ecb37bb4d8bfcef4b98a883cb4632b744ae6715acae99c3c1e1ce8 SHA512 1da84dd66bd69652532cb2e0216484b7fccf3b3a6ce5d8d363f21ae71d3f81ce82d3b72974a640cc812c495a105b28958c088fcfe6ba8dc03375499313daaa63
diff --git a/dev-python/jsonpath-ng/jsonpath-ng-1.12.0.ebuild b/dev-python/jsonpath-ng/jsonpath-ng-1.12.0.ebuild
new file mode 100644
index 000000000000..b78d8e57577b
--- /dev/null
+++ b/dev-python/jsonpath-ng/jsonpath-ng-1.12.0.ebuild
@@ -0,0 +1,42 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_VERIFY_REPO=https://github.com/jsonpath-ng/jsonpath-ng
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Python JSONPath Next-Generation"
+HOMEPAGE="
+ https://github.com/jsonpath-ng/jsonpath-ng/
+ https://pypi.org/project/jsonpath-ng/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ dev-python/ply[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=( hypothesis )
+distutils_enable_tests pytest
+
+EPYTEST_IGNORE=(
+ tests/benchmarks/
+ # flaky timing tests
+ tests/jsonpath/descendants/test_time_scaling.py
+)
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # unbundle ply (sigh)
+ rm -r src/jsonpath_ng/_ply || die
+ find -name '*.py' -exec \
+ sed -i -e 's:jsonpath_ng[.]_ply[.]:ply.:' {} + || die
+}
diff --git a/dev-python/nox/Manifest b/dev-python/nox/Manifest
index d1679061e2af..528b6f15a12f 100644
--- a/dev-python/nox/Manifest
+++ b/dev-python/nox/Manifest
@@ -1,2 +1,2 @@
-DIST nox-2026.08.10.gh.tar.gz 4076351 BLAKE2B 3167238fe7ec495c6bae8f1effde518e85dce9e55df22c47a1af09f7c1b55a2a65570532138604e791ae8cbc31cfd896110a4c7670864bba6f24bf044430d936 SHA512 ffe1053023e1fa48f115b3aeacf1c771ae8f12ff58217eeb304604f4702ac763317b572652094d2a7c76f3f5af5a6478bc0bcc870c8dc66e4af71f98358d05d9
DIST nox-2026.08.17.gh.tar.gz 4077021 BLAKE2B e65055d549d99224b014a1c8f0ed5882234bc4410c4ea2a18257dc52a5ab5058a06433791ac83ec48981292ca00dd68eea488c1230d77ad34e672a9ae443cf5a SHA512 5e5273dd7b1a8781d48adc91ef12c732982a03c52bc02a4005e25f44ad769b2124a38b36c8f4673fc2978fae51fe3788145e517b876272958cc851f496f26694
+DIST nox-2026.10.20.gh.tar.gz 4087491 BLAKE2B 78a35d496816f04f58862b98817742e75d5a9ca2f1b15d2ce4598a88b9e7044f02c522571ced4b90d7fa8571e5d6dc6bb885a41854aecff169ebaa1044e1c40d SHA512 3d8bb139e7580925a1c087f4342c51c549a757190c7ecc7d313d2cd590b579a2fde4d59526e2f106da228979c47c2c66640293556a9ff70b5d8c930fa4481f65
diff --git a/dev-python/nox/nox-2026.08.10.ebuild b/dev-python/nox/nox-2026.10.20.ebuild
index b06178bbc2e4..b06178bbc2e4 100644
--- a/dev-python/nox/nox-2026.08.10.ebuild
+++ b/dev-python/nox/nox-2026.10.20.ebuild
diff --git a/dev-python/parse/Manifest b/dev-python/parse/Manifest
index a78fc0eba08c..7eecb2f8423f 100644
--- a/dev-python/parse/Manifest
+++ b/dev-python/parse/Manifest
@@ -1,2 +1,3 @@
DIST parse-1.22.2.tar.gz 37675 BLAKE2B 5db3a9da69016fe6db06473c2301b690f7520babe22baedfe7957cb881e155cdf22321143dcb3742852afaac57556e6202a75d81d2d76e974632455162a3830f SHA512 6370c28c90cd452d094be43f5e745c474d700f069bcf631d4dcc77d9861633e6916e9699bfb00988a15221388c7a21a9c967f47de964567c8f7c09edd5958dc3
DIST parse-1.22.3.tar.gz 37944 BLAKE2B 3f602047c62d173d8f013a658646f9178ed5405efd6d4cb66c0a09d69851c84ee8b99c2e4a91675ce8c26cc5642d8cd3fb407b2e1f565c50fe2db4e53affca43 SHA512 fd79c50286a205549f158581487067ac1011cca84e5945c984da27cabf4d232dcf507a8985666bc25869a31e4d1a154ab18d7983d9eb6bfd0f5c0662b0a30abe
+DIST parse-1.22.4.tar.gz 40279 BLAKE2B 3bd7676f17ce38a2a52eca3681be584b042e98599dd22f90534c4ccfb0703ce20d2616000a9192a5470e2512119c536e66e1e28d6cea072a23a1ed8e73372646 SHA512 8797a8dd2e42dea731094e5af72cc265e71df8c8ab73b958b8520032598002de57067eaaaa4c6755b139b997f4e8752ef7c17b045bbe9c644e46b87eea5bd885
diff --git a/dev-python/parse/parse-1.22.4.ebuild b/dev-python/parse/parse-1.22.4.ebuild
new file mode 100644
index 000000000000..b535eb96f205
--- /dev/null
+++ b/dev-python/parse/parse-1.22.4.ebuild
@@ -0,0 +1,28 @@
+# Copyright 2021-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+inherit distutils-r1 pypi
+
+DESCRIPTION="Parse strings using a specification based on the Python format() syntax"
+HOMEPAGE="
+ https://github.com/r1chardj0n3s/parse/
+ https://pypi.org/project/parse/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # drop unnecssary extra pytest requirements
+ sed -i '/tool.pytest.ini_options/,/^$/d' pyproject.toml || die
+}
diff --git a/dev-python/patiencediff/Manifest b/dev-python/patiencediff/Manifest
index 789aac4b6919..2e6481aed400 100644
--- a/dev-python/patiencediff/Manifest
+++ b/dev-python/patiencediff/Manifest
@@ -1,20 +1,30 @@
DIST heck-0.5.0.crate 11517 BLAKE2B 5365ec43b2239a76b33a174f1a4292ece4147f9d382a68c6c60db78fdc8bad0afb1d51a65bcb25e96675372faa4ea37c318265030b0546ba51942f7c929e1835 SHA512 f044fc9c3d22466629fd8f772ec0555350fd611c0cfadca51d99a3d2f10e155f77c1091916c8a95a6b9b499f366c2e99a5fbf45b010f988bfb9b2501bf9f6a76
DIST libc-0.2.186.crate 821883 BLAKE2B ebe7aac5f8937a8064c64a0d4dc72e5fc794080e09b96c6d245bdec0fd9a19d49ab38e25306e22e47564764cf5dcde45855237cffc70230a143eca2626bd5c3c SHA512 6a58e671ec6811dff9a0d7d4db8f37d38bcbca9efff20dad4706190e5cdb77b426567754bcf0ef0f2d0c31d6506401f724f3ca500b9bed57bb8605b1141ed690
+DIST libc-0.2.191.crate 855401 BLAKE2B 04788709363e27f063bd30d2e568d27b8a217d2702ccc32c28ac0f82c5f786e534f053d9133aa086d2186c060724adf0bd2c6fdf705ac6cde563561ecaba4e94 SHA512 f90bff0e667425a6680514097c44ad99454dfe9d2bec02a72633e94f300a6e39cba0a7887a7124ee3c2235d41836faff706649fa86b9970df7a7f72a460ea964
DIST once_cell-1.21.4.crate 35010 BLAKE2B 9117ed1d478e626b7b7be2e3ff8b68a382b051112c7ca4425367bdae86977671f8b5c576131c82fb437740b6d98b72501f718f4172d39781decac2385e8fbd4d SHA512 af67669b0107f44268ba74c355200cb2ed1aab235a6989a8bc54323eb2c9a45677010f8672e7790edadd4c981e939436e0c3a099d33c06dce9c14fd5ede86155
-DIST patiencediff-0.2.1.crate 21717 BLAKE2B 839dab29b4a5f830df1edc2eb9b46373e8adf6a2f2474b3cb7622899e5cad4de9d19d2b6ace3e6b44d3772a934c3469c85cdd9d2bb31d138f8a28edcd52e7ab3 SHA512 500b3f42a6fd936a3a2fa6b65f5ea0f6b8e37f50be5f002dd2ae76d2138765e45547a6aac68586ded2d5970609e5c2238ce0f5b2fb5b7396e7ca8914f0c1c2c1
DIST patiencediff-0.3.0.crate 21921 BLAKE2B c0e705774dffcec9cb23996a164694c2d833afcc654816d16e6911eabb1db5d3a3f11f61f9cd72fdf1549341227923e9fd5a62b673ef16be2e80f053a14a4ecc SHA512 3ce6cc95c4eea6b84bb0618126f3234edd75090bcfc1bdf13e7e2e26d1a7478c03d82a0fe247d14febec9316e565d9525a161fab6448643d2411c30a85817e8d
-DIST patiencediff-1.0.0.tar.gz 24575 BLAKE2B 0dc4c27fbc4302e3f1b8eb4c09633b0dc877a4322f361fe71e8c728355bd7536b1f9efcabea3534a6ca690eae9811594e7e3b96bcb98a1fe20578612dd0ccdb4 SHA512 f1a5da1fc2d133e0168749ee4199a27e70912544fc3441015915b1979611e588ea910f9a44f76b17205b7136cf863261fa10a82ec29d93f7a102a743c61aed81
-DIST patiencediff-1.0.0.tar.gz.provenance 9909 BLAKE2B 0eb43459b98a91bdfc999328c7cacff200a3b9f552239df466faf82c1d5b9dab4dd5e006887ea8e104a6ef90afcec3a9316b00ba5c4afbba7c0ec2ae1bddd197 SHA512 168bd4d76461db66f504fc0c4dfa62ad2b5e52d46348fb5d0cd303e56c54260662c739b99f5f94d89ad3618a81787dad626d3dde07b75abae1e22507a8de3e50
DIST patiencediff-1.0.1.tar.gz 24596 BLAKE2B 0016918d0cf5deeb9c4623e9c1f18c2d8831262aa9ea6dbebee2ea038d773e262687c83a31b536627d5b8450073de023040f7f99705478cfad72b9f7b3b0a7ce SHA512 c054f9a586121337b2a0e3f7f940b7700cadc7417d44f57d6ddcc55994738113260b581860699c9b42d6befae81868a7f392b73b246bb57bddda568899dc2d50
DIST patiencediff-1.0.1.tar.gz.provenance 10081 BLAKE2B b533956fe6566fed23ba45c22cbf44a369707a583da7ef0d9ba0a1248eef08cdcb237af1fba042b23f375ed38681e40aa08054d0d66ed4cf55c9f661384b534f SHA512 b3ca1caa0bc547dbde6ccc060461abfa71dee8f3217d56ebe58e35bfbb58edfb221a5949e57c29a160b23857be886d196c19d8887fe4fde42d8e5d402aca48aa
+DIST patiencediff-1.0.2.tar.gz 25852 BLAKE2B c026bea838aeba697ba3e10f91bb8d69d72a0ef78f72b507b50d07d9435b4ba8e2715e9843fd507005df8b2e4d801fa4248e0fef0a195c33befc3b37b38badaa SHA512 0713a5cdf64fb38f56804c1d0d1cb56c2e48d97d8e970d690dd8c08887d17d4fabf38eff9a6a6703dcb353b947b803984e6c55a4295ea66bd74fccc8d37de767
+DIST patiencediff-1.0.2.tar.gz.provenance 10140 BLAKE2B 327f71328634b3d2b23eab93d6efd7659ac9b0b63db634a66344fe0ea19517a4d3eb3d633c2659ad502dc6bae1a51d78cbf1b8719045fc4ae4a8fbcff5c231b0 SHA512 ddcca4a7fe250e607ff393bf7bba97c5d1ee410cfe426d75a390052efd1904dc1616429a54b8470c2fd27d3a9c06a0411fdd137cd96d9feefedc37c0dab5fad4
DIST portable-atomic-1.13.1.crate 197001 BLAKE2B 6d0898c2a537a9bf204b7749cca5f5fddf280772b56eb7ce8fdd9cf7d71561137b26ef89f415c40277a1c89981333eef78e5bb4624515a294ba28fdaeb4c70ea SHA512 2a1b31ac9814af884640b3398ab824a9795c72d260527a0966b193113808cfbb3345d50cd1beaebb45863437c3d06c8706d34b26efecceefc649319a4bc274a3
+DIST portable-atomic-1.15.0.crate 202705 BLAKE2B bf956c2bf08953b0ae1384d5c1703edf12c4a9b9d1f035b49043f4fb5e0a1ad005263affaf02331a77f098471fe2da8eee7b16861c33df9ef0d76444c614e291 SHA512 257cd168d0362b7b1d5e6ed9032cde9b0ac6e69d90b7e27347c39702a5ea020159c271e37e8045cf10661170f9354638791cfc972587bff3cba01da137f5a2c0
DIST proc-macro2-1.0.106.crate 59765 BLAKE2B 87f95795621c4c992c370dc3a1240a2d5580e3362356525efe640f8f26ad0492b3c88755d575c080ff7db11376b0d82f31141bf6f86c895249b85e46c081220f SHA512 b726e2c92af434bfa88cd4f53c3fe6db647503567675fb439890dee3d15f5111137e3242b28d164114ce081c10acf3fd11950753ddb349190c87ee04e7d97744
+DIST proc-macro2-1.0.107.crate 59588 BLAKE2B 91df0c573e3e1f09c1aeedcad0381cf18186d72c3d50b077b1d232fbb67d1c87ed09f3c6dc515140041c2dab5ce7706042c8235b93099df7d1c962d4a3a99160 SHA512 c109d5509624a57156e0eae22a3aec89a1a163623e8b4e376a13d872a46e4bf6855ee3cd4428c07cdf5c22f2284b6ce755f9cc7e075480e4587ce4f2d40fa903
DIST pyo3-0.29.0.crate 1241253 BLAKE2B 29deb7fa70010bf3d7e9e93bbcd87c0b56c4ee7ef0c2e5956181d2fb5f06f4c9b3f28bd1ad280126c26c048808b91b847e1fb69ddd617ef9e9e5e004cf4e48ae SHA512 e6822400de53ebcef4a14c899dc065abae621a126483873139f5eb850877c94f4bccee3a183d4e2a69eadcd3c3b82b0a6f3e1053d926b103be572329607f2f67
+DIST pyo3-0.30.1.crate 1345706 BLAKE2B 42f28e632d23a90b6e1ec4eae54ee17c1c75312f3f53d896dcfc43e047f0fe72d94e33c793f47f108a5b3c98885bc78d978e347a68f771d710228c3e1d97ba9e SHA512 68799fc448f68b204d4825ce4e1a0b000febf18d968740fa9f94df9507b3a2697fb1c4b642d88ad1f1fb2b214fcd1b9a3a8089eccd8b0418c08b4ae69b7bfdec
DIST pyo3-build-config-0.29.0.crate 39616 BLAKE2B 7b62a5976b890db84e5256f3136185c2a9c3b7110782b5b0cdc314a5231fde30a853ddcd17af63b53488b3e8d5e310b01002b6f3c32cfeb1e5c3e168cd6460d7 SHA512 df77e8d7d5fe173749437ff6b90fa1703083377d515ab8a85dc77d9cac9c3fc331ede4b040f7e3694311ddb5adff577cf90c181a27c196ab93a4569e918fdea8
+DIST pyo3-build-config-0.30.1.crate 42996 BLAKE2B e49f6b13e5a4379f3a0db2c305a96cd0b19955f22b3fd08fba4373a1ec886847abf619beddb7fc111e99bc174b47211d9de68230db8ea03e12e534bb5ceab7bf SHA512 9801d582931f1d6b835792ffa04439310544b068c9f94f1329487328d43010646dd81233575a4338c44e7fe86714a579186c04ee07604b94f8af5066730eb699
DIST pyo3-ffi-0.29.0.crate 88184 BLAKE2B 5891af92a3bcba764c4701dcc0a99edbced010a5ac46df3217d004f5c3a368f18331733c6723bd49e522c6f7105455df13e2be0f07695ed5ce6ae71c15dec438 SHA512 baaf01d13ddc09316ba16b22e9ca15a67e5bda5b861ed7961c3393fd4692fc1c96952f81465d1dcb6531b9083f96c5630981b3d7802cb1ac2af67aafaffbec76
+DIST pyo3-ffi-0.30.1.crate 93717 BLAKE2B 383cac05d9e768c9059cfd5f714e30848c87584bfcb0b8e421805f2da9f3b5a9a3f27d467cf9432b0f41b68003f9141dfdfeb29cdb1248cc68b01072dc01ec34 SHA512 32945d4b6f08723ae1129810ac71e12f5dc9c5de3710cadedb91bba17cbcf21acbf269598241117b45dc36141d28e6d1a58f1c07957b8664de62e991f30c82e9
DIST pyo3-macros-0.29.0.crate 8915 BLAKE2B c12d23753d5aba7333183d4b41f16c8da1d4297a3ff86b3b150e9185c1978fc184ac198e566a41833292a8a78ab59446eafd5ef7169e5cb41493e7cbeaa68280 SHA512 fb6633ac76229d2e0ad88d51136a9318f03823b27c700a62cfbc957b4c834985e2f4c0cdaf5ea5e9993ec9e8ce3d63cd6b3fb823f2a042e65186adbed78da7c2
+DIST pyo3-macros-0.30.1.crate 9055 BLAKE2B f49eedcd8922df4e0b9b0e119a6b5d06be3afe3f0d6d3fcd332716aae593fffc8fea94b02a4de7410bd678f7ab0ffb499c3e11bc45f72c2d8fa4e41c400dca9b SHA512 26f3b4d1aa86da4a305b01d780ce7de3359d3bfeadcbdbb39b9803d0a7634cf3611dfd5a285d21e97d51f61a6c590fdef8ddda45ec9abe870575519e6bbb4f33
DIST pyo3-macros-backend-0.29.0.crate 91943 BLAKE2B 7c2977dd9c80f3dd1f5375b0c65492b46048ca02e6355ad746bc8430cf92eaf25c701f416469eb69724fde5220651b1095c09eb9e3ff860176f862d7c7287407 SHA512 13a7af3958c09969637827d97ab9bbc664c407dda9e4283afaf495757798cf6f84932468bc092160fa75211ce0aafe6efc657f3a390234d77a67362cfb31fe0f
+DIST pyo3-macros-backend-0.30.1.crate 97593 BLAKE2B 6ff2e6e445f40b15ab8347a13b4786359875d16621ada11c0b8a5fc0efca84e306f95c1f2d5e87431bbd6303ead0d80aa469e3c53e0cb4360d6ea9524e0c9eb7 SHA512 29f96ff877d55ea3141435a30b8482743590f2dfd3fd9d24291cba8c834148cc2e0790125c8c0c3af650bf1c9b5e521a1a2ff3874dfa58bb3673dc11876ddf89
DIST quote-1.0.45.crate 31564 BLAKE2B 1b2c2c3e6ebabfe10affa4c43ca0bfd1f52d8fd49e1df463e13e63a82de41272089c8e09e4c02e8a33cfee768ace26d4d42a50752de8fb5a776c59806139ad5d SHA512 df96ede01ebd0ed642b758bf1d0862d0e116fc2b3343e14edb657ce5438ccabe743dec4a0a40de4dee98c134d169af9aba459faadf9c7a832b26377e755d49b0
+DIST quote-1.0.47.crate 31622 BLAKE2B d912f17bdb5f2db29f5349e976e12da52db9d2197dd9900cb00e907d1e9b06ab177e9b020c1d53f6a6cd087e3a973aed5af63eac282da77792b2a6d6e1b35b07 SHA512 544f4324d425ae011905e0d1b52e367d4660bc34457b2f802af94e1def1e6c4e39ffba3beeb40d75753967d15b6dccce18fea273e7f3d46b63d5c89898d19441
DIST syn-2.0.117.crate 306011 BLAKE2B bbaec02c4322f522bdfc87caa4ce6fd1e09bbf8f4a102d9ed8728efacdd843a2750f616dce5b2d3a3e46bbb7d57439fbd10e328bc1d4a01e980986cd815798af SHA512 035c2e63542592b6a4058a2a82d4c2c1f5793f84fb1b04cbd393337a26fcf661a1f3bea439ce98a1fe943b1c4d36d2bda16df3bbc3fa6ca35e1548d530dc8416
+DIST syn-3.0.9.crate 313970 BLAKE2B 63ba393b429909b75de710e1da70bbf5b5d4ba76917786ae5ac165ad57806a02b54af3fb7eaa5213f1e59e086ddf6807f08d4e37de2fc4b0a7270a290850fa91 SHA512 94ff1cfd429e4ca9c3a72c7e7012c5ccac2178134d4fb82683601bf466094e6178dd5bbc558e973a7f03e890e4e08cf8622dba2a2898fdde608a33b244e42cc5
DIST target-lexicon-0.13.5.crate 26928 BLAKE2B f8c62cb91f68a635e6ce3fc254df9ce378b5e8f62c1147404c967484b9ed97fb33d7993b4671611db76566063e999d658d201f856f70196ec678d72cc758cf6d SHA512 956df27c01e1186c5356117ffd07810fc0b62fb919d5bfd215955ba85be00ef675212a3c0dc36679986be7b825442fec5c93c7643b7e1e19c04572e6463546fc
DIST unicode-ident-1.0.24.crate 49298 BLAKE2B 34ba2906a3ebc06f52a4ba77dff96a8f3fb977718d260886fa9e051c5830765641b65a63977110f3a79f31fa177b385f81b01d56c80f6a0324d36eae72e2ebf0 SHA512 7be712d8d0075ac9341790180e312f66264d3e0255c91b38df0951baa5e446dec24551bb2125a66a1cb9b6ca2f1ea37c0cc15fa3dd74f398ecf4d5302c7dc259
+DIST unicode-ident-1.0.27.crate 48807 BLAKE2B 2f756c8e8a8a4653e616e15c217d72a01af3e6538105c6cfbad6e89b1cf6bb5ba591855b5b7580989b44eef37279789a550331778ed924ee4906cd68dc8d2aa8 SHA512 c952d72be2eea9d70114072a1aabd17573ac672e23f3a549d2a2b6375d14215eb1f0a2dc00c89819eb40f26341a6e24c54cb7be1fe92494d9c01b5941ce25670
diff --git a/dev-python/patiencediff/patiencediff-1.0.0.ebuild b/dev-python/patiencediff/patiencediff-1.0.2.ebuild
index 852641dae8a1..a757c9146c7a 100644
--- a/dev-python/patiencediff/patiencediff-1.0.0.ebuild
+++ b/dev-python/patiencediff/patiencediff-1.0.2.ebuild
@@ -11,20 +11,20 @@ PYTHON_COMPAT=( python3_{13..14} )
RUST_MIN_VER="1.83.0"
CRATES="
heck@0.5.0
- libc@0.2.186
+ libc@0.2.191
once_cell@1.21.4
- patiencediff@0.2.1
- portable-atomic@1.13.1
- proc-macro2@1.0.106
- pyo3-build-config@0.29.0
- pyo3-ffi@0.29.0
- pyo3-macros-backend@0.29.0
- pyo3-macros@0.29.0
- pyo3@0.29.0
- quote@1.0.45
- syn@2.0.117
+ patiencediff@0.3.0
+ portable-atomic@1.15.0
+ proc-macro2@1.0.107
+ pyo3-build-config@0.30.1
+ pyo3-ffi@0.30.1
+ pyo3-macros-backend@0.30.1
+ pyo3-macros@0.30.1
+ pyo3@0.30.1
+ quote@1.0.47
+ syn@3.0.9
target-lexicon@0.13.5
- unicode-ident@1.0.24
+ unicode-ident@1.0.27
"
inherit cargo distutils-r1 pypi
diff --git a/dev-python/pip/Manifest b/dev-python/pip/Manifest
index 6a96866423bb..d0b8b25e59da 100644
--- a/dev-python/pip/Manifest
+++ b/dev-python/pip/Manifest
@@ -1,3 +1,4 @@
DIST flit_core-3.12.0-py3-none-any.whl 45594 BLAKE2B 7c6cb6eb03d45bbba27f27b3728881b57fe82dd38e03f884d3b7c46116eb2b9dd76f92bdaf7f594ef8ccbe12ec8f9a56424ff9e9fc7a839c4818a113fdf0c3d3 SHA512 790c12b1f43201e365fb3f8f2f0a54e1a578876799dfdf8bfeea679a25ea096bf62946d006618c1458ae6e37ce6d00998f37e9aba426d5ab80d32ef2d75da4e0
DIST pip-26.1.2.gh.tar.gz 9268753 BLAKE2B 8cbf0ecf25a2bdd148506ca0e2e778b9053759cf5fed3914b915454bd8810b1d7a27e3b2efb5fd29c4e6b189c7e8050f0da15ae6c259712446b5a35f44018ee0 SHA512 e29c98a7da5e329183b7eef86a66f9d6c3473051f64aa6e762714306148547eb0de4220824484071822a9a62bd01a62a09ab16bba4c26e4b847bfc2609728608
DIST pip-26.2.1.gh.tar.gz 9301563 BLAKE2B eb7b929de0e99c84c9b1257f1bf737f524eb6de01075d40b36519b082d8a49e107dbd0eded9a8bf737ce8f7d452c5e5cffb853b000d6ac2936b5b84dd607c770 SHA512 03a00bdc4387a4e7e4e54672e9198893500d279912ece4cd144f015c568c974ecc2c3c7bd6abf108df852302ddd49468ef0bc514ca4323ee037d754e2fbfaee0
+DIST pip-26.2.2.gh.tar.gz 9302280 BLAKE2B 862f37064e2a68be6ea672916fd02644928258547b1421fc5eecde442ac15242cf03d3b79f9a71fe6a8e9abc012ff7a9df74de27ce20197bf6876436a44fbb72 SHA512 b24050ef68595b4b1566614bb37908102b3ebaea5fefb33cbb30fde273c210750895a053ff58294f32450a6d09e4c92e555895362ced742a63cfea5720f2ea08
diff --git a/dev-python/pip/pip-26.2.2.ebuild b/dev-python/pip/pip-26.2.2.ebuild
new file mode 100644
index 000000000000..534c3cd3e7a2
--- /dev/null
+++ b/dev-python/pip/pip-26.2.2.ebuild
@@ -0,0 +1,196 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# please bump dev-python/ensurepip-pip along with this package!
+
+DISTUTILS_USE_PEP517=flit-core
+PYTHON_TESTED=( python3_{13..14} )
+PYTHON_COMPAT=( python3_{13..14} )
+PYTHON_REQ_USE="ssl(+),threads(+)"
+
+inherit distutils-r1 pypi shell-completion
+FLIT_CORE_PV=3.12.0
+
+DESCRIPTION="The PyPA recommended tool for installing Python packages"
+HOMEPAGE="
+ https://pip.pypa.io/en/stable/
+ https://pypi.org/project/pip/
+ https://github.com/pypa/pip/
+"
+SRC_URI="
+ https://github.com/pypa/pip/archive/${PV}.tar.gz -> ${P}.gh.tar.gz
+ test? (
+ $(pypi_wheel_url flit-core "${FLIT_CORE_PV}")
+ )
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="test test-rust"
+RESTRICT="!test? ( test )"
+
+# see src/pip/_vendor/vendor.txt
+RDEPEND="
+ >=dev-python/cachecontrol-0.14.3[${PYTHON_USEDEP}]
+ >=dev-python/dependency-groups-1.3.0[${PYTHON_USEDEP}]
+ >=dev-python/distlib-0.4.0[${PYTHON_USEDEP}]
+ >=dev-python/distro-1.9.0[${PYTHON_USEDEP}]
+ >=dev-python/msgpack-1.1.1[${PYTHON_USEDEP}]
+ >=dev-python/packaging-26.2[${PYTHON_USEDEP}]
+ >=dev-python/platformdirs-4.3.8[${PYTHON_USEDEP}]
+ >=dev-python/pyproject-hooks-1.2.0[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.33.1[${PYTHON_USEDEP}]
+ >=dev-python/rich-14.1.0[${PYTHON_USEDEP}]
+ >=dev-python/resolvelib-1.2.0[${PYTHON_USEDEP}]
+ >=dev-python/setuptools-70.3.0[${PYTHON_USEDEP}]
+ >=dev-python/tomli-w-1.2.0[${PYTHON_USEDEP}]
+ >=dev-python/truststore-0.10.1[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.13.2[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ ${RDEPEND}
+ test? (
+ $(python_gen_cond_dep '
+ dev-python/ensurepip-setuptools
+ dev-python/freezegun[${PYTHON_USEDEP}]
+ dev-python/pretend[${PYTHON_USEDEP}]
+ dev-python/pytest[${PYTHON_USEDEP}]
+ dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
+ dev-python/pytest-xdist[${PYTHON_USEDEP}]
+ dev-python/scripttest[${PYTHON_USEDEP}]
+ <dev-python/setuptools-80[${PYTHON_USEDEP}]
+ dev-python/virtualenv[${PYTHON_USEDEP}]
+ dev-python/werkzeug[${PYTHON_USEDEP}]
+ test-rust? (
+ dev-python/cryptography[${PYTHON_USEDEP}]
+ )
+ dev-vcs/git
+ ' "${PYTHON_TESTED[@]}")
+ )
+"
+
+python_prepare_all() {
+ local PATCHES=(
+ # prepare to unbundle dependencies and remove redundant test wheels
+ "${FILESDIR}/pip-26.2.1-unbundle.patch"
+ )
+
+ distutils-r1_python_prepare_all
+
+ # unbundle dependencies
+ rm -r src/pip/_vendor || die
+ find -name '*.py' -exec sed -i \
+ -e 's:from pip\._vendor import:import:g' \
+ -e 's:from pip\._vendor\.:from :g' \
+ {} + || die
+ sed -i -e '/_vendor.*\(COPYING\|LICENSE\)/d' pyproject.toml || die
+
+ if use test; then
+ local wheels=(
+ "${BROOT}"/usr/lib/python/ensurepip/setuptools-*.whl
+ "${DISTDIR}/$(pypi_wheel_name flit-core "${FLIT_CORE_PV}")"
+ )
+ mkdir tests/data/common_wheels/ || die
+ cp "${wheels[@]}" tests/data/common_wheels/ || die
+ fi
+}
+
+python_configure() {
+ if use test && has_version "dev-python/pip[${PYTHON_USEDEP}]"; then
+ "${EPYTHON}" -m pip check ||
+ die "${EPYTHON} -m pip check failed, tests will fail"
+ fi
+}
+
+python_compile_all() {
+ # 'pip completion' command embeds full $0 into completion script, which confuses
+ # 'complete' and causes QA warning when running as "${PYTHON} -m pip".
+ # This trick sets correct $0 while still calling just installed pip.
+ local pipcmd='if True:
+ import sys
+ sys.argv[0] = "pip"
+ __file__ = ""
+ from pip._internal.cli.main import main
+ sys.exit(main())
+ '
+ "${EPYTHON}" -c "${pipcmd}" completion --bash > completion.bash || die
+ "${EPYTHON}" -c "${pipcmd}" completion --zsh > completion.zsh || die
+}
+
+python_test() {
+ if ! has "${EPYTHON}" "${PYTHON_TESTED[@]/_/.}"; then
+ einfo "Skipping tests on ${EPYTHON}"
+ return 0
+ fi
+
+ local EPYTEST_DESELECT=(
+ tests/functional/test_inspect.py::test_inspect_basic
+ # Internet
+ tests/functional/test_config_settings.py::test_backend_sees_config_via_sdist
+ tests/functional/test_install.py::test_double_install_fail
+ tests/functional/test_install.py::test_install_sdist_links
+ tests/functional/test_install_config.py::test_prompt_for_keyring_if_needed
+ tests/functional/test_lock.py::test_lock_archive
+ tests/functional/test_lock.py::test_lock_vcs
+ # broken by system site-packages use
+ tests/functional/test_freeze.py::test_freeze_with_setuptools
+ tests/functional/test_install.py::test_install_subprocess_output_handling
+ tests/functional/test_pip_runner_script.py::test_runner_work_in_environments_with_no_pip
+ tests/functional/test_uninstall.py::test_basic_uninstall_distutils
+ tests/unit/test_base_command.py::test_base_command_global_tempdir_cleanup
+ tests/unit/test_base_command.py::test_base_command_local_tempdir_cleanup
+ tests/unit/test_base_command.py::test_base_command_provides_tempdir_helpers
+ # broken by unbundling
+ "tests/functional/test_debug.py::test_debug[vendored library versions:]"
+ tests/functional/test_debug.py::test_debug__library_versions
+ tests/functional/test_freeze.py::test_freeze_multiple_exclude_with_all
+ tests/functional/test_install.py::test_install_package_with_same_name_in_curdir
+ tests/functional/test_pep517.py::test_nested_builds
+ tests/functional/test_python_option.py::test_python_interpreter
+ tests/functional/test_uninstall.py::test_basic_uninstall
+ tests/functional/test_uninstall.py::test_uninstall_non_local_distutils
+ tests/functional/test_install.py::test_install_warns_on_unexpected_post_install_import
+ # TODO
+ tests/functional/test_build_env.py::test_build_env_can_still_access_python_tools_on_system_path
+ tests/functional/test_build_env.py::test_build_env_console_scripts_use_venv_python[subprocess]
+ tests/functional/test_build_env.py::test_build_env_isolation[venv-inprocess]
+ tests/functional/test_build_env.py::test_build_env_isolation[venv-subprocess]
+ tests/functional/test_build_env.py::test_build_env_requirements_check[venv]
+ tests/functional/test_self_update.py::test_self_update_editable
+ )
+ local EPYTEST_IGNORE=(
+ # from upstream options
+ tests/tests_cache
+ # requires proxy.py
+ tests/functional/test_proxy.py
+ )
+
+ if ! has_version "dev-python/cryptography[${PYTHON_USEDEP}]"; then
+ EPYTEST_DESELECT+=(
+ tests/functional/test_install.py::test_install_sends_client_cert
+ tests/functional/test_install_config.py::test_do_not_prompt_for_authentication
+ tests/functional/test_install_config.py::test_prompt_for_authentication
+ tests/functional/test_install_config.py::test_prompt_for_keyring_if_needed
+ )
+ fi
+
+ local -x PIP_DISABLE_PIP_VERSION_CHECK=1
+ local EPYTEST_PLUGINS=()
+ # rerunfailures because test suite breaks if packages are installed
+ # to system site-packages while it's running
+ local EPYTEST_RERUNS=5
+ local EPYTEST_XDIST=1
+ epytest -m "not network" -o addopts= -o tmp_path_retention_policy=all \
+ --use-venv
+}
+
+python_install_all() {
+ local DOCS=( AUTHORS.txt docs/html/**/*.rst )
+ distutils-r1_python_install_all
+
+ newbashcomp completion.bash pip
+ newzshcomp completion.zsh _pip
+}
diff --git a/dev-python/pycares/Manifest b/dev-python/pycares/Manifest
index f3c51e8ae3ca..aeac2c31fb42 100644
--- a/dev-python/pycares/Manifest
+++ b/dev-python/pycares/Manifest
@@ -1,3 +1,4 @@
DIST pycares-5.0.1.tar.gz 652222 BLAKE2B 29680da5ce1bfef6bd3fa6ad0d03cbbd4948cccf7d7d4deaa44960ccb33085b2ac3f8de7411239062e829cd8920fee84e7a5ce41e1e2d1da974aba10e1e60b33 SHA512 3cb23e36e9526b44398b1ffdf9223f0eec5f6e085b6276188329239d1e9a9ee173239691e39cbc9d7a4854a54e181bd200e2011bb3bf6741f79be81b46665348
DIST pycares-5.1.0.tar.gz 674882 BLAKE2B 670de260fe4d6a34d8fa20ffdf6ef21f6753adb0d2e37aacb04dfe1984a0f4112af4dd7f3eee1341c7b82d907ce123db5a892e4d095cc11e3f8aee9993ef2ad0 SHA512 858d50f4620d12fb9ad4a7c8dc6d150da8a7ac39c4618672c995e8a4fe685a30ad1723f419a99b8c2a71d915b3f7af54b0726819907c4a343239c2f5d754a642
DIST pycares-5.2.0.tar.gz 675045 BLAKE2B f03794a3dd6aad9e903d686529c8c846174a0f61056cd25df36fd15d6d9ebd2e289e966c1f99baab33d201f0c1f71bd15e4071366d07642dfecad50154ee3ac3 SHA512 4e7a7981c3c7c5c86fde5c8d8547a361beca1615626b5ad97f707b6b1a94f63e0bb07745232d13f4f4de9961b6ab06007c5bbc789ded8910fcf3bd333ac47728
+DIST pycares-5.2.1.tar.gz 723791 BLAKE2B 51322eda454c9b1a956edbbe57a55621addabd66c9f8a160844539ed8542879f29e0bf3e66c6c7dcde79bb1dd0b90eaf22163f9982e50c6a211b04a9fb088ef7 SHA512 4e7d6969525cea436798cd0e003eb0fe7cc649e827feffab1b51035ef4a65e78e094117d991c31c2a0716f239d14ce3a00a426d2394fa22d75864a564235698c
diff --git a/dev-python/pycares/pycares-5.2.1.ebuild b/dev-python/pycares/pycares-5.2.1.ebuild
new file mode 100644
index 000000000000..372158830647
--- /dev/null
+++ b/dev-python/pycares/pycares-5.2.1.ebuild
@@ -0,0 +1,48 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Python interface for c-ares"
+HOMEPAGE="
+ https://github.com/saghul/pycares/
+ https://pypi.org/project/pycares/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="test"
+# Tests fail with network-sandbox, since they try to resolve google.com
+PROPERTIES="test_network"
+RESTRICT="test"
+
+DEPEND="
+ net-dns/c-ares:=
+"
+BDEPEND="
+ dev-python/cffi[${PYTHON_USEDEP}]
+"
+RDEPEND="
+ dev-python/idna[${PYTHON_USEDEP}]
+ ${DEPEND}
+ ${BDEPEND}
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+export PYCARES_USE_SYSTEM_LIB=1
+
+EPYTEST_DESELECT=(
+ # https://github.com/saghul/pycares/issues/287
+ # looks like forgotten to update the expected class
+ tests/test_all.py::DNSTest::test_idna2008_encoding
+)
diff --git a/dev-python/pydantic-settings/Manifest b/dev-python/pydantic-settings/Manifest
index dede56afe0f8..1c45e0d073f1 100644
--- a/dev-python/pydantic-settings/Manifest
+++ b/dev-python/pydantic-settings/Manifest
@@ -2,3 +2,5 @@ DIST pydantic_settings-2.15.0.tar.gz 261253 BLAKE2B aa1157d8ec21ecde15039d47f42b
DIST pydantic_settings-2.15.0.tar.gz.provenance 10063 BLAKE2B c3641f3e2a7c3228432642986199e848da9fdea371e32de40c8ebd9dd0b3ba8ae27694c116fa04dedf8a37fb5a780d8a84777d848a4838d724a180ac66e94473 SHA512 a403278deca993c39e789b02ecc9e2493e1220f5e75c4324abddbcd4a0c9e9f2f7f8ed1aed36c3f5687a031789fe17fd2f5a6b0fbc8ec6f3641db3fe64f98255
DIST pydantic_settings-2.16.0.tar.gz 301031 BLAKE2B d29990234fb6dbdd314cad75eb27df29fbbf01efeb068bd1b31c58daefbb2e2a7789304b1decf2e6a3ec48fc068189663fef633775b6efbf1f0d19d60c4f68a4 SHA512 ab66b0d217d8b4a95ba1471da8d4732632394fb23e128f774b46bf53155af824a16a7bbbaff047a992aa4db36cce9a4026cde467b5bb25c610fd316837c77100
DIST pydantic_settings-2.16.0.tar.gz.provenance 9906 BLAKE2B 186a7fd34d1f5c2e1aedb0fe84abed1148742318f09c5e1ce3f0b6fa9d3d371766f9ceb5e1c9c34c80fb7212c483c4beafd17f3884a2c248e0d875a19e098d60 SHA512 36fe224d730e77b3dbf521b94149bfdb6fe74a94566f230b45bac3303da26163b2eef4dd21a90316df142067650df31df04bc9f85fc7a39033953fcec4a553e3
+DIST pydantic_settings-2.16.1.tar.gz 303436 BLAKE2B 254866be4654cbaf5fdb55b160d6794e13ccadd62d13298481c6c027ad090c083ce1f970591f4573acdf10a575ac03fbb79e3b8c0f19fb862d4c5861788eae05 SHA512 f6b164a995d5eff3746541f1721e9f47eb940e302f008a69b88dc3b4ab5475c24e4c0d3a40eb5e057ba0ca36907dddf6eee113a76e3e70b8df27005b739d30c8
+DIST pydantic_settings-2.16.1.tar.gz.provenance 10047 BLAKE2B 9b200587324c5503fb00bfcbce15b0d5668b66d36c18def94bf28a5d36f8fb3d330d9f9486fca8a2caf99b4a4f685d8f153f7fe89211f74bf96ddb4226558101 SHA512 b5c649a2b99a9f89200a29c5e4b9c9d9c51923925e0c80cb02de8eb83b6abb517107bbe82511bd3954559539f2c9c9cfb2e9cc6786aaa8dcaa72445fe3c0e763
diff --git a/dev-python/pydantic-settings/pydantic-settings-2.16.1.ebuild b/dev-python/pydantic-settings/pydantic-settings-2.16.1.ebuild
new file mode 100644
index 000000000000..1971884da040
--- /dev/null
+++ b/dev-python/pydantic-settings/pydantic-settings-2.16.1.ebuild
@@ -0,0 +1,40 @@
+# Copyright 2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYPI_VERIFY_REPO=https://github.com/pydantic/pydantic-settings
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Settings management using Pydantic"
+HOMEPAGE="
+ https://github.com/pydantic/pydantic-settings/
+ https://pypi.org/project/pydantic-settings/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
+
+RDEPEND="
+ >=dev-python/pydantic-2.7.0[${PYTHON_USEDEP}]
+ >=dev-python/python-dotenv-1.2.2[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.0.0[${PYTHON_USEDEP}]
+ >=dev-python/typing-inspection-0.4.0[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=( pytest-mock )
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # TODO; can't repro in venv
+ tests/test_precedence_and_merging.py::test_merging_preserves_earlier_values
+)
+
+EPYTEST_IGNORE=(
+ # require pytest-examples
+ tests/test_docs.py
+)
diff --git a/dev-python/pyrate-limiter/Manifest b/dev-python/pyrate-limiter/Manifest
index 726b8c8ea7b9..ee4a78a05943 100644
--- a/dev-python/pyrate-limiter/Manifest
+++ b/dev-python/pyrate-limiter/Manifest
@@ -1,4 +1,4 @@
-DIST pyrate_limiter-4.4.0.tar.gz 90955 BLAKE2B 1ba672f860f6cd7f537a6e0c67bdaa619c1ef4e3b0d074b0e6c6c2c6aa64471af9eb4f035a17393bd580fd2003060c65a5b51b0aab370cc059d63243d325f588 SHA512 e4b6d63ebaec949c154f117ab30d04e3b94cb4b771299a08ba8bad1bd92ed004ceb89c352c66914c9fb8ae29dbe33b8ef5103a74d174dc83398a45f733ac5f84
-DIST pyrate_limiter-4.4.0.tar.gz.provenance 9907 BLAKE2B 44623ed73e9c1d358712fc5df80a87952572a3a9c86dc7beb34d6a873aef69c802891ba5d541bb14ffc6a75346f387df34292103f34329b42f09b4d4fb8e06f0 SHA512 4904cb915dfc2120b53554620a7e033ee35e84ff61cd84433e01d28bb0edcd9c854d49dc19a765f5a20fb69555f70bfed8e8b0b2da874f07d38c8a6eae1084e4
DIST pyrate_limiter-4.5.0.tar.gz 123240 BLAKE2B 34df6cd1cd3418eab417a8004387e86d4a8a69040ca4b86b5792e5b142b3112a41398848bc6f8c593486d832663f29f36ed5d198470950cd27f9d4ec62ed3e7e SHA512 35ee3bef555260df68ad1881d64b72f7a51535e164abf640c133ac96c5caa4073b56a43edc30cdb982d1e322f9b01f6eccc8edbb6d94be84046be11a305074b7
DIST pyrate_limiter-4.5.0.tar.gz.provenance 9909 BLAKE2B 87f0804069814fb29851a7dd7e9ae2d79f72d820aae7e87487f807192213d871e01c7a9a83ecc4ea4cf702b3bf3bc9a76926f52b7109aceaf49c0e112d69b5b5 SHA512 af120195db71c1a7407238188319d9ce6acae15c9b59998f5aa6cfdf244d837ee10e79635ef9388b28e8811eb781018151ac3cc577fe587b78618e777f57ea55
+DIST pyrate_limiter-4.5.1.tar.gz 129966 BLAKE2B 713aaf1314a28d9fc44a3f693c72d1c0944cced559b12334c674b5c167fc0be32484e0e0d0cf8321f85cb0285bb8dc6f0d1f0a5e5dc78c897ef8c4b223a715b6 SHA512 3f0663ef99c347750ee1cc4e7a629d64b898b4dcf92760672e3cab3d7399430caf6ada1c4e5fb9f2af0fff4e60c9e1546878bd7ed8a34f9f297653fef9cd6140
+DIST pyrate_limiter-4.5.1.tar.gz.provenance 10028 BLAKE2B 4ddc49ab21420835d502926714ba006ff16e1154ba577112ac6d83b9356b582a325791d7594bd8869fee4145ff2b37535c3dacdcb4d2a8bbe4f829436df7e96e SHA512 b1ced56f02aa6202aa6353773a53cf6e5e378aba3293c2e31b069947f41e13dce8cf03418305634f26fab69f1a180d2b31904a6da5ed7d6b7c4d2abc7f8946c6
diff --git a/dev-python/pyrate-limiter/pyrate-limiter-4.4.0.ebuild b/dev-python/pyrate-limiter/pyrate-limiter-4.5.1.ebuild
index f9afcbb57539..bc734d16c191 100644
--- a/dev-python/pyrate-limiter/pyrate-limiter-4.4.0.ebuild
+++ b/dev-python/pyrate-limiter/pyrate-limiter-4.5.1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 ~arm64 ~x86"
+KEYWORDS="~amd64 ~arm64 ~x86"
RDEPEND="
dev-python/filelock[${PYTHON_USEDEP}]
@@ -41,6 +41,7 @@ EPYTEST_PLUGINS=( pytest-{asyncio,rerunfailures} )
EPYTEST_RERUNS=5
: "${EPYTEST_TIMEOUT:=60}"
EPYTEST_XDIST=1
+distutils_enable_tests pytest
distutils_enable_sphinx docs \
dev-python/sphinx-autodoc-typehints \
@@ -49,7 +50,6 @@ distutils_enable_sphinx docs \
dev-python/myst-parser \
dev-python/sphinxcontrib-apidoc \
dev-python/sphinxcontrib-mermaid
-distutils_enable_tests pytest
src_test() {
local redis_pid="${T}"/redis.pid
diff --git a/dev-python/python-gammu/Manifest b/dev-python/python-gammu/Manifest
index efb841727de0..7c639773dc7b 100644
--- a/dev-python/python-gammu/Manifest
+++ b/dev-python/python-gammu/Manifest
@@ -1,2 +1,3 @@
DIST python-gammu-3.4.1.gh.tar.gz 153695 BLAKE2B 7159b635266524c5b3c4f734e28ca81d676f3009c6244cfea4b7c2cd9a00de35c3144d7d21e3f3d5b8495abe14219d76b7f77afb1cf1738f3aa5202f7add86a6 SHA512 a74056bdf9b9ab84079a08dae62563fcee8045dabcb80505116feaaacaa98ddbd1101decee33ae90af8eb71b84df6c6470ff725efe321f19377fa46258e63ded
DIST python-gammu-3.5.0.gh.tar.gz 163017 BLAKE2B 0acc8ba0e3e3d1f7b59703f332f4a0b67b7c8a044c9fe8fb9db63c3fb4fa0bcf92263bbd5df58b28e2a89ce52c4064c33488ebfe4201f8736be185d9d0367ba1 SHA512 88b5171750a94057a42651f0f7b2df5417980104da558b1205c52e85a7886d900fd58c87f3ef44286d6f5234df38939c7709e15406332007d566dfd7343b11c0
+DIST python-gammu-3.5.1.gh.tar.gz 163243 BLAKE2B 1d246bb71ac9e6f0d1afebfd4288aea5651b069e15c95ef55e197bc9b72720e059cecfc969232a9e78bf241ba80e754c085d45e06759ce42200e186bd22ef81c SHA512 8df5eb962e40826992940a61a9e56a92ecdec125ecdf65bdbf786e68394d8e36955c92d82068ee0b3734ed0c7202bd2f36cf4226b18db86f394bb8d17534d145
diff --git a/dev-python/python-gammu/python-gammu-3.5.1.ebuild b/dev-python/python-gammu/python-gammu-3.5.1.ebuild
new file mode 100644
index 000000000000..c174431c91a2
--- /dev/null
+++ b/dev-python/python-gammu/python-gammu-3.5.1.ebuild
@@ -0,0 +1,59 @@
+# Copyright 2022-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="Python bindings for Gammu"
+HOMEPAGE="
+ https://wammu.eu/python-gammu/
+ https://github.com/gammu/python-gammu/
+ https://pypi.org/project/python-gammu/
+"
+SRC_URI="
+ https://github.com/gammu/python-gammu/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="examples test"
+RESTRICT="!test? ( test )"
+
+DEPEND="
+ >=app-mobilephone/gammu-1.44.1
+"
+RDEPEND="
+ ${DEPEND}
+"
+BDEPEND="
+ virtual/pkgconfig
+ test? (
+ $(python_gen_impl_dep sqlite)
+ app-mobilephone/gammu[dbi]
+ )
+"
+
+DOCS=( AUTHORS NEWS.rst README.rst )
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+python_test() {
+ rm -rf gammu || die
+ epytest
+}
+
+python_install_all() {
+ distutils-r1_python_install_all
+ if use examples; then
+ docompress -x /usr/share/doc/${P}/examples
+ dodoc -r examples
+ fi
+}
diff --git a/dev-python/python-pkcs11/Manifest b/dev-python/python-pkcs11/Manifest
index 1dad23e73363..feb72ee9575f 100644
--- a/dev-python/python-pkcs11/Manifest
+++ b/dev-python/python-pkcs11/Manifest
@@ -1,4 +1,4 @@
DIST python_pkcs11-0.10.0.tar.gz 207600 BLAKE2B e2011a9acb95b0db9e13e3e4493a4fa0591f04784763316ed54502305b5834122fb28ccac893781b2485ca474dade56ca2045b239746114fb24c2204f9ae10fd SHA512 3e60a087696ba6f2c09c4ffaf647421d0fc32cb5de2fce926a1788c9f91fa89867fad352ac00c4975c9fe06e3be557777b0224ebecd631eeea8c778a9bc7db6e
DIST python_pkcs11-0.10.0.tar.gz.provenance 9613 BLAKE2B d3a329b6a51a1fb502086830e34763c76a65a37fd6f2ffccb9ec6dbdfef1e03e445880d1fec504487e1ae0cddab353acad03c1602a64abb9b8b4aadc3214fe9c SHA512 7992d02968333a52cfb92a7c2a3ef7d21ddd4def15235287068d52d9f55d615cfd631d48c4af08a8383cb98aa47ebecfee77e8d0c8f96ffa72968af685dc1beb
-DIST python_pkcs11-0.9.5.tar.gz 194453 BLAKE2B 6f66073c81530e04254a70625a03070c483f222824fdea3dbfb5e8fc9799b3d475e67be5dde83f596d7ca0e658313b148bf3768111dbd8eee87e0549605b2ae1 SHA512 be9dc6b274cff71c2e2290768181c2cb91de7089ed27619144914ea44067f6746c1094b755b7a719f260a1e4c5f799c1844ebb3f5912c1fbcba77efa73f6eb73
-DIST python_pkcs11-0.9.5.tar.gz.provenance 9689 BLAKE2B 9945987fa757769bd75036420a4add670be7b0b9ac5f826338de5726a425e385b493a898ba58890310a34dbc052d1ba595da89d6416cc8dcb2161c595ba1733f SHA512 f37d60b1e6f2f51a3c5e34598ed3738aa6cea5da380719ddcc314422fb5a7ef7ce33c670e5edee19f987684767a02b61ac05e9d0b33871aad023be868f90640a
+DIST python_pkcs11-0.10.1.tar.gz 207635 BLAKE2B d71676a964e011ddf7a1dfc2db4e417844765f19e12534e03c6c5974095ef18fc4d8728b43c7cb6b7321ddb9d49679ad051c908f39e30998921267beb842e7f8 SHA512 23f99aa8d463c0998c6dbc9cae43953f7b5d0d8fd554099a475385d478e50f78adbae64c5f5bb49411ca0be1913d7df849da05e5ed42e0c42da09a77dd633076
+DIST python_pkcs11-0.10.1.tar.gz.provenance 9689 BLAKE2B 9f1c39f89f8741f50e509861e8c9346e32fc09430c1ef1a06e2cdcdb2bed18af0e282b0bbb4f327c25e036f487cf258a89aef146b44413518e509d1c13bf54df SHA512 339a9281a3fe9ba9c6eb88b13ec40b9041abdd2fac10bfe41e389b8cab83ba61983251ac3ce1971e5ed6bdb5cf2b5500c5b991da674a3b4fdae696b50e17dc96
diff --git a/dev-python/python-pkcs11/python-pkcs11-0.9.5.ebuild b/dev-python/python-pkcs11/python-pkcs11-0.10.1.ebuild
index 8dc002629cc9..8dc002629cc9 100644
--- a/dev-python/python-pkcs11/python-pkcs11-0.9.5.ebuild
+++ b/dev-python/python-pkcs11/python-pkcs11-0.10.1.ebuild
diff --git a/dev-python/python-utils/Manifest b/dev-python/python-utils/Manifest
index 558da6db40ba..e717cdea2aba 100644
--- a/dev-python/python-utils/Manifest
+++ b/dev-python/python-utils/Manifest
@@ -8,3 +8,5 @@ DIST python_utils-4.1.2.tar.gz 79647 BLAKE2B ef5df83d75ee7991832cb8b9a6273e94281
DIST python_utils-4.1.2.tar.gz.provenance 9629 BLAKE2B f73f96ad9f6b88446a83798e554afe1171d68308dab6df060ba69d43a01b9ada1c7d8a32acdf0713b2ae651a5b053d15ab1850695b2f4f8a98685cb9b9d099a7 SHA512 7e146619a3f0d83f39cb37b34a87145023ce29becbb4263855b8a83160393eac1f0789bd56632d3a3ce69be37ff610125dab07097d39949d416c7257ca058223
DIST python_utils-4.1.3.tar.gz 80215 BLAKE2B a1599bc07579805e3ba7a2e7b001cce0379564448a3422401dfcff4ecc83064cc0792659ef861f7c429c7ef2d5aa715dc4197907070e3650facffdb9cf43ac17 SHA512 8f2b8f04c30557425aff53963b273f20ff1fe93727b31936fa77c232a0686684ea94abdaff0614cf14c79d1719b59af1c3fa7f04a5c8127f036140a20decc242
DIST python_utils-4.1.3.tar.gz.provenance 9398 BLAKE2B 9196ab28b097c4a0b2352d03803667661509871201f4ceff3f1c216e7f9efd050da1ebbce7c83116a5903a6598ac07fcf8e7ca7d611e3d7a515ca5d428659a3c SHA512 7427a84db0337b48f9d497012620f227c0bab23b92a91c00b437bc68e1923ac171f60b6faec39c374fbb74111ba5f5e68d045e3196271549ecc0681e87560eb4
+DIST python_utils-4.1.4.tar.gz 80130 BLAKE2B 9ab469a656ede0fa8423db42e7699fbbd3d93a530ef030c225affe4c90a883882b19cd4f2a63214f687ae2828b39283c705afb17d0f9d7840dd543c1ecf34d05 SHA512 42867b6fcdde78da6f0e073a6095dff33cbcd8d6acc86c3fb7a4336297c866e5c9672dd9573d8d2f636e3f637757810a0d316689ed5b4dac60a2b8aca9700d5e
+DIST python_utils-4.1.4.tar.gz.provenance 9586 BLAKE2B 8309c282fe4835e82391aca7eedf5feef8e131bdbcff9e3def042961b56df68c3ca2d0141f87ad93239290d0b860569081a3a84af58f3350ac7eb778ce152e45 SHA512 54cbc11606f638a29177d8441e3700c1dcf18f5538d5a729b13b08330929e4157264f51faeb4712bfc82aeb59b36f5d4d4ccc9d3739d2f4e8e187d46b6d9d0b9
diff --git a/dev-python/python-utils/python-utils-4.1.4.ebuild b/dev-python/python-utils/python-utils-4.1.4.ebuild
new file mode 100644
index 000000000000..05d102d2521e
--- /dev/null
+++ b/dev-python/python-utils/python-utils-4.1.4.ebuild
@@ -0,0 +1,43 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=uv-build
+PYPI_VERIFY_REPO=https://github.com/wolph/python-utils
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Collection of small Python functions & classes"
+HOMEPAGE="
+ https://github.com/WoLpH/python-utils/
+ https://pypi.org/project/python-utils/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="
+ dev-python/typing-extensions[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=( pytest-asyncio )
+distutils_enable_tests pytest
+
+EPYTEST_IGNORE=(
+ docs
+ _python_utils_tests/test_logger.py
+ python_utils/loguru.py
+)
+
+EPYTEST_DESELECT=(
+ # fragile
+ _python_utils_tests/test_time.py::test_timeout_generator
+)
+
+python_prepare_all() {
+ sed -i -e '/--cov/d' pyproject.toml || die
+ distutils-r1_python_prepare_all
+}
diff --git a/dev-python/securesystemslib/Manifest b/dev-python/securesystemslib/Manifest
index fbb4fe2810c6..61230c69f69a 100644
--- a/dev-python/securesystemslib/Manifest
+++ b/dev-python/securesystemslib/Manifest
@@ -1,6 +1,4 @@
-DIST securesystemslib-1.4.0.tar.gz 934332 BLAKE2B 3e1ca3556da70e4c70041e902655e74a207ed43519a141d51d8b64cd1d57338bb63cfd659b50ac8e303fdb2abe7ccdab7e73613b170b6d03bf5adce8db630254 SHA512 b2d45e24f131f07392476beaad21587f506352c98c8ddb3f60cc52bffb6cd0f299be3edb28276f55703548392b8f23ed5155965b21df5500bdf100bfcd7406ad
-DIST securesystemslib-1.4.0.tar.gz.provenance 10069 BLAKE2B e63f55a768b84875fc28920e9db7a5b98096bca53d8bb4e83344e93ed1dc92fa9d89402952f433c8101f970f6362524326a6bec68339ac68deaeed8cc0f49c75 SHA512 a79fdfebc7e7c8732b4bab22ba58a26ad16d07b2412b942daca73e6ecfa92685e855073ea73ef1a1aa51b5136ced69a62ca2dadbc497a9298336680d3b2e90e9
-DIST securesystemslib-1.5.0.tar.gz 945978 BLAKE2B 0b60f6dba91c93c8dbe94fcbbf58ec07cd2f821c980366ecbcb073bf36c998ecad50b2e26b4d03cbca18e187b39b5f2b179521c3adb83065a98d6ed412513a87 SHA512 437303996bd36f3880061b0c5b5b33a994c5bd94b77117de78e25933586c46133cbff7aec260de8f387b142ca6557e679c6a18d59180ffacfc1938a0679a3eda
-DIST securesystemslib-1.5.0.tar.gz.provenance 9938 BLAKE2B c0d0240993dba23ae2de6481c87cbee39407c129e2c9fc9fdb0eba13db9ce3f526a3fc58d16e7263f2ba551da6fb8682f3f0fb0eda4583a6e26519329351ae6a SHA512 8242c8fc280f520494521495d9ed753aaa62faa64c5e36e0d11b7ff1784ac67bb667fcf9350d80c1ff7ccf3ef231db15572d45c3dc843f84408c40f96580b397
DIST securesystemslib-1.5.1.tar.gz 947087 BLAKE2B c99016cfcdf264b24160b7a5455207028ad3539b246969ed65ebfc868df583396e089d67e71bc6fbbb8b09195bde4f96681dcb6ed81cfc3a7d61a1d1b6c427e2 SHA512 90aa2a51fefac4fe05d7609459dac3c82a29589a627ca5e8055d85fd6145b92abb14796934b47fb3ecff96e1a495c06e6375b448cf13ef1f04ddfb3a3385d504
DIST securesystemslib-1.5.1.tar.gz.provenance 10169 BLAKE2B e132f65da0b33b91011ce1f0688b31aa81e1be35f4198653b64037c4cba8d8851eba9b40670d3d6611e5023df72d52326a3d17b4d43ca53cf5b2836e54609a14 SHA512 4a9a2a6ba4145424f08cb8e016b7328d2dcc281ff00a983da6007ab9648d523ece604ef1f10b27350accbd75c50f32c4507905731b7acaae98c70e92ac53776e
+DIST securesystemslib-1.6.0.tar.gz 950902 BLAKE2B 40d30628ee7a51f42381b95da9129429d3096812562501359814fa55931ca4c1b69076ed84ee9310942d7c8af532e5e73db44b5e4e97275f004051d457753f34 SHA512 0eb228431ed771480065659e8f75c36681adc1fded58c05e5a0409f7be4f7c58b2ad950d55a65a13e961c61d96f4085723355dcba0f057ebf5a22104050d6e7c
+DIST securesystemslib-1.6.0.tar.gz.provenance 10190 BLAKE2B 583da29aa49aa9e57255563b055bfeaad33e40bd5cfa1ef9274154c86c9b43ae84aa5bfb6d2ccac347a2660fe3a0e0812a6f6a3dc8ba6842ac34750fc770d0b3 SHA512 96398d1c2309f200b2c8f7a9564a407f7232071c29845483eac5e8f6706c7f784f2245e4ea4d3ab9a37e542f743a6561f9dbae3cf27a1048097d9588bde3fc5e
diff --git a/dev-python/securesystemslib/securesystemslib-1.4.0.ebuild b/dev-python/securesystemslib/securesystemslib-1.4.0.ebuild
deleted file mode 100644
index d992b4f0fe31..000000000000
--- a/dev-python/securesystemslib/securesystemslib-1.4.0.ebuild
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright 2024-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=hatchling
-PYPI_VERIFY_REPO=https://github.com/secure-systems-lab/securesystemslib
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Cryptographic routines for Secure Systems Lab projects at NYU"
-HOMEPAGE="
- https://github.com/secure-systems-lab/securesystemslib/
- https://pypi.org/project/securesystemslib/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="amd64 ~arm ~arm64 ~ppc ~ppc64 ~x86"
-
-RDEPEND="
- >=dev-python/cryptography-40.0.0[${PYTHON_USEDEP}]
-"
-
-EPYTEST_PLUGINS=()
-distutils_enable_tests pytest
-
-# TODO: unbundle https://github.com/pyca/ed25519 (wtf? not on PyPI?)
-
-python_test() {
- local EPYTEST_DESELECT=(
- # requires pyspx
- tests/test_signer.py::TestSphincs::test_sphincs
- )
- local EPYTEST_IGNORE=(
- # requires PyKCS11
- tests/test_hsm_signer.py
- )
-
- epytest tests
-}
diff --git a/dev-python/securesystemslib/securesystemslib-1.5.0.ebuild b/dev-python/securesystemslib/securesystemslib-1.6.0.ebuild
index cd15fa53a520..85f990a37fe9 100644
--- a/dev-python/securesystemslib/securesystemslib-1.5.0.ebuild
+++ b/dev-python/securesystemslib/securesystemslib-1.6.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 ~arm ~arm64 ~ppc ~ppc64 ~x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~x86"
RDEPEND="
>=dev-python/cryptography-48.0.0[${PYTHON_USEDEP}]
diff --git a/dev-python/setuptools/Manifest b/dev-python/setuptools/Manifest
index d34dc560b078..905607716c8b 100644
--- a/dev-python/setuptools/Manifest
+++ b/dev-python/setuptools/Manifest
@@ -1,3 +1,4 @@
DIST setuptools-79.0.1.tar.gz 1367909 BLAKE2B d495a22753400b3b0ef71423e2c9b5adaad1a065d1f9638b5da8161b29c453495701c3efaa3abd2482777e186ba992bd7b57090dfc711d9cdfdaa8254616a8ff SHA512 5b68d7cc775f4318e178f7d7f69c60a01b1abc607411e88c88e3507a08bd85eed241b915d4be5f3ada90df4b68718056c2ba032943c1f53fe68d171c7d728179
DIST setuptools-84.0.0.tar.gz 1168449 BLAKE2B b4dc28c42ea271dc2cac7f7218bec0819d043d52100df8c1ac7672092c2f45b62e731d18d76bc00a6392b60f8afb8c1f7e961050ee23b0e1c77bbd94e42481db SHA512 67721834362dd88c256cbd523413dbdcb99ca871bcc873ffa29c7667687973e1d5e15b0ea8ef4529711418b14d3d660771846877543001d4ab0fe8b4585ac9ad
DIST setuptools-84.2.0.tar.gz 1227656 BLAKE2B c6f89587af28b64029dfcc0a3a511e30abec3b60d00a272f699ff2df2032e0cdc04c546b9bac6a8928cf7a6cbcd3a3a856815ee18bcc178f05a53fcc59bee6eb SHA512 ac5c9daf5cf445a2bb220072efed426e0af38caa601d544389181a3f53bc39575cf0cf7aa69addca239eb8c8f51e3410cad0b9ff9c9787d0c4c6a54fbc3a256e
+DIST setuptools-84.2.1.tar.gz 1230289 BLAKE2B fcac5229c8764d97159934030e996a6791e508b363a13f8358471256f2a73168ff177a52fcda57be308ef1062b0e2b9e78fcc68616e12613c939e818b5208647 SHA512 9e4c9a9ec45c69abe6f8953b6c6490eb1ffe2aea9a666beab45bdd7d5e2acbb2dbfddf6d7797c01c3e5a47b10bee519c029587fb45000ebb5c5b72468498ef0b
diff --git a/dev-python/setuptools/setuptools-84.2.1.ebuild b/dev-python/setuptools/setuptools-84.2.1.ebuild
new file mode 100644
index 000000000000..6c0512ec12b4
--- /dev/null
+++ b/dev-python/setuptools/setuptools-84.2.1.ebuild
@@ -0,0 +1,124 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# please keep this ebuild at EAPI 8 -- sys-apps/portage dep
+EAPI=8
+
+# please bump dev-python/ensurepip-setuptools along with this package!
+
+DISTUTILS_USE_PEP517=standalone
+PYTHON_TESTED=( python3_{13..14} )
+PYTHON_COMPAT=( python3_{13..14} )
+PYTHON_REQ_USE="xml(+)"
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Collection of extensions to Distutils"
+HOMEPAGE="
+ https://github.com/pypa/setuptools/
+ https://pypi.org/project/setuptools/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos ~x64-solaris"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-python/jaraco-functools-4.4.0[${PYTHON_USEDEP}]
+ >=dev-python/jaraco-text-4.0.0[${PYTHON_USEDEP}]
+ >=dev-python/more-itertools-10.8.0[${PYTHON_USEDEP}]
+ >=dev-python/packaging-26.3[${PYTHON_USEDEP}]
+ >=dev-python/platformdirs-4.4.0[${PYTHON_USEDEP}]
+ >=dev-python/wheel-0.45.1[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ ${RDEPEND}
+ test? (
+ $(python_gen_cond_dep '
+ >=dev-python/build-1.0.3[${PYTHON_USEDEP}]
+ >=dev-python/ini2toml-0.14[${PYTHON_USEDEP}]
+ >=dev-python/filelock-3.4.0[${PYTHON_USEDEP}]
+ >=dev-python/jaraco-envs-2.2[${PYTHON_USEDEP}]
+ >=dev-python/jaraco-path-3.7.2[${PYTHON_USEDEP}]
+ >=dev-python/jaraco-test-5.5[${PYTHON_USEDEP}]
+ dev-python/pip[${PYTHON_USEDEP}]
+ dev-python/pyproject-hooks[${PYTHON_USEDEP}]
+ dev-python/pytest[${PYTHON_USEDEP}]
+ >=dev-python/pytest-home-0.5[${PYTHON_USEDEP}]
+ dev-python/pytest-subprocess[${PYTHON_USEDEP}]
+ dev-python/pytest-timeout[${PYTHON_USEDEP}]
+ dev-python/pytest-xdist[${PYTHON_USEDEP}]
+ >=dev-python/tomli-w-1.0.0[${PYTHON_USEDEP}]
+ >=dev-python/virtualenv-20[${PYTHON_USEDEP}]
+ ' "${PYTHON_TESTED[@]}")
+ )
+"
+# setuptools-scm is here because installing plugins apparently breaks stuff at
+# runtime, so let's pull it early. See bug #663324.
+#
+# trove-classifiers are optionally used in validation, if they are
+# installed. Since we really oughtn't block them, let's always enforce
+# the newest version for the time being to avoid errors.
+# https://github.com/pypa/setuptools/issues/4459
+PDEPEND="
+ dev-python/setuptools-scm[${PYTHON_USEDEP}]
+ >=dev-python/trove-classifiers-2024.10.16[${PYTHON_USEDEP}]
+"
+
+src_prepare() {
+ local PATCHES=(
+ # https://github.com/abravalheri/validate-pyproject/pull/221
+ "${FILESDIR}/setuptools-75.6.0-disable-trove-classifiers.patch"
+ )
+
+ distutils-r1_src_prepare
+
+ # remove bundled dependencies
+ rm -r */_vendor || die
+}
+
+python_test() {
+ if ! has "${EPYTHON}" "${PYTHON_TESTED[@]/_/.}"; then
+ return
+ fi
+
+ local EPYTEST_DESELECT=(
+ # broken by unbundling (e.g. installs self-wheel into venv)
+ setuptools/tests/config/test_apply_pyprojecttoml.py::TestMeta
+ setuptools/tests/test_distutils_adoption.py
+ setuptools/tests/test_editable_install.py
+ setuptools/tests/test_sdist.py::test_sanity_check_setuptools_own_sdist
+ setuptools/tests/test_setuptools.py::test_wheel_includes_vendored_metadata
+ setuptools/tests/test_virtualenv.py::test_no_missing_dependencies
+ setuptools/tests/config/test_setupcfg.py::TestOptions::test_entry_points
+ # TODO
+ setuptools/tests/config/test_setupcfg.py::TestConfigurationReader::test_basic
+ setuptools/tests/config/test_setupcfg.py::TestConfigurationReader::test_ignore_errors
+ # TODO, probably some random package
+ setuptools/tests/config/test_setupcfg.py::TestOptions::test_cmdclass
+ # relies on -Werror
+ setuptools/_static.py::setuptools._static.Dict
+ setuptools/_static.py::setuptools._static.List
+ # Internet
+ setuptools/tests/test_build_py.py::TestTypeInfoFiles::test_type_files_included_by_default
+ setuptools/tests/test_dist.py::test_dist_fetch_build_egg
+ setuptools/tests/test_namespaces.py::TestNamespaces::test_mixed_site_and_non_site
+ setuptools/tests/test_namespaces.py::TestNamespaces::test_namespace_package_installed_and_cwd
+ setuptools/tests/test_namespaces.py::TestNamespaces::test_packages_in_the_same_namespace_installed_and_cwd
+ setuptools/tests/test_namespaces.py::TestNamespaces::test_pkg_resources_import
+ # broken by warnings from setuptools-scm
+ setuptools/tests/config/test_apply_pyprojecttoml.py::TestPresetField::test_scripts_dont_require_dynamic_entry_points
+ # TODO
+ 'setuptools/tests/test_egg_info.py::TestEggInfo::test_requires[setup_requires_with_markers]'
+ # broken by scikit-build-core somehow
+ 'setuptools/tests/test_extern.py::test_distribution_picklable'
+ )
+
+ local EPYTEST_XDIST=1
+ local -x PRE_BUILT_SETUPTOOLS_WHEEL=${DISTUTILS_WHEEL_PATH}
+ local EPYTEST_PLUGINS=( pytest-{home,subprocess,timeout} )
+ epytest -o tmp_path_retention_policy=all \
+ -m "not uses_network" setuptools
+}
diff --git a/dev-python/sigstore/Manifest b/dev-python/sigstore/Manifest
index 201cadca3ccd..9fcad5a86074 100644
--- a/dev-python/sigstore/Manifest
+++ b/dev-python/sigstore/Manifest
@@ -1,2 +1,2 @@
-DIST sigstore-python-4.4.0.gh.tar.gz 416489 BLAKE2B 918bfb9fd7361eef97db6249c4984edc5c4e832d1103bef5f19a49e379178be7c36204436ce5df4232a6f36cc96a6931433a7d9604adadf071544e549bb42d96 SHA512 c79f484f997e3d1cbfee2891696a4bc5ec3c665a1887dc01269403a1de56fb1a09a2379325a4bbcb0250451dc6d52728d47c43ef6796fd2eeb7775f78511bbe0
DIST sigstore-python-4.5.0.gh.tar.gz 417593 BLAKE2B bbe75700ebb4e3a1336a15fde91c95fd18316c45c403ef2ec66c3cab2ca4473097e39629a70d4fd20b3f7ddba3d5a85714b187310bd7d0ba54429675d411ad1d SHA512 38fc8ace17cb753f80b81e7fbc3aa84a9d5f9765148fefeac5de177ea45e21b8e0afb9afd361ee7e3641deaed42b88d591b8eb63570f0324d619d15a777b45c9
+DIST sigstore-python-4.5.1.gh.tar.gz 422956 BLAKE2B 4a807cd56d451de80a12f28e9336326618a9ff1d22d45ac41575c592eaae7137c1099ef65804271f729fd9574c47d0e526e0823df78521a90d94ffe216ba893e SHA512 cbd690da7d95b217a830f7394869cd340db5088477ef0bf8b6fa64e0504843246146e66870ce097c676f0e0910596bf2c9130998679c91bd2b92e93ec42305eb
diff --git a/dev-python/sigstore/sigstore-4.4.0-r1.ebuild b/dev-python/sigstore/sigstore-4.5.1.ebuild
index cf9dff2f1302..d57f189b1063 100644
--- a/dev-python/sigstore/sigstore-4.4.0-r1.ebuild
+++ b/dev-python/sigstore/sigstore-4.5.1.ebuild
@@ -3,7 +3,7 @@
EAPI=8
-DISTUTILS_USE_PEP517=flit-core
+DISTUTILS_USE_PEP517=uv-build
PYTHON_COMPAT=( python3_{13..14} )
inherit distutils-r1
@@ -23,14 +23,12 @@ S=${WORKDIR}/${MY_P}
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="amd64 ~ppc ~ppc64 ~x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~x86"
RDEPEND="
- >=dev-python/cryptography-42[${PYTHON_USEDEP}]
+ >=dev-python/cryptography-47[${PYTHON_USEDEP}]
>=dev-python/id-1.1.0[${PYTHON_USEDEP}]
>=dev-python/platformdirs-4.2[${PYTHON_USEDEP}]
- >=dev-python/pyopenssl-23.0.0[${PYTHON_USEDEP}]
- >=dev-python/pyasn1-0.6[${PYTHON_USEDEP}]
>=dev-python/pydantic-2[${PYTHON_USEDEP}]
>=dev-python/pyjwt-2.1[${PYTHON_USEDEP}]
dev-python/requests[${PYTHON_USEDEP}]
diff --git a/dev-python/sphinxcontrib-jsmath/Manifest b/dev-python/sphinxcontrib-jsmath/Manifest
index de5ba9031a36..0a132d59c4b7 100644
--- a/dev-python/sphinxcontrib-jsmath/Manifest
+++ b/dev-python/sphinxcontrib-jsmath/Manifest
@@ -1 +1,2 @@
DIST sphinxcontrib-jsmath-1.0.1.tar.gz 5787 BLAKE2B 055ff298e11678d7d30975e4bef509ece0128be30ca0c5fd2be1323c2eb4fe92f861826ea5ddfcbd2d3e3a80535b374d2b1a13446c2604f3e448d5a8982b9881 SHA512 c1e6488f5c0ca4567c27ec7c597c9db321ac32ce354c4ad62fea534b2ae1c0acb183a921f46216bbc3891f14acfaac05ddf324b8fdaf99828df07bc91aa7e5c7
+DIST sphinxcontrib_jsmath-2.0.0.tar.gz 14511 BLAKE2B f96717d28571670d2f42e4d50bc2081955eeecc22c4f3b2d432fdade88f14703d4aa77fbbb74cbfb477ded27917c2bbd4adf8c0b008d7e304fc642ebe7ca15b0 SHA512 927410420c93171ae6b1bd6a8d40d6823cdab3e5caf788e3918bf185ee0da1df2ac6668212c8b6dad2778d920df9c03fc6966420b23968a6ab4aacbb05e3b4cb
diff --git a/dev-python/sphinxcontrib-jsmath/sphinxcontrib-jsmath-2.0.0.ebuild b/dev-python/sphinxcontrib-jsmath/sphinxcontrib-jsmath-2.0.0.ebuild
new file mode 100644
index 000000000000..2cb260318bc8
--- /dev/null
+++ b/dev-python/sphinxcontrib-jsmath/sphinxcontrib-jsmath-2.0.0.ebuild
@@ -0,0 +1,35 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=flit-core
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Sphinx extension which renders display math in HTML via JavaScript"
+HOMEPAGE="
+ https://www.sphinx-doc.org/
+ https://github.com/sphinx-doc/sphinxcontrib-jsmath/
+ https://pypi.org/project/sphinxcontrib-jsmath/
+"
+
+LICENSE="BSD-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos ~x64-solaris"
+
+PDEPEND="
+ >=dev-python/sphinx-5.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? ( ${PDEPEND} )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+python_test() {
+ cd "${T}" || die
+ epytest "${S}"/tests
+}
diff --git a/dev-python/sqlglot/Manifest b/dev-python/sqlglot/Manifest
index 955208ef979c..93f8ed5b8554 100644
--- a/dev-python/sqlglot/Manifest
+++ b/dev-python/sqlglot/Manifest
@@ -1,2 +1,2 @@
-DIST sqlglot-30.22.0.tar.gz 6088770 BLAKE2B bca7d80d5fde475419a4bae31dca2f1be4a4e5b90d2312d9c9b283bbb2927c013a0f849be17142860124b3f830e3adb4b7854c4a4a2ecb2ea1d961ed80145bd8 SHA512 40186858888fe174ec9371b78bd8f72fb04c371341f5ce746b10026feb59530c0477f7f9022edff37ef447e5cb9ef60cc9d20804aa69ddd8a88de9a68b8d0a0f
DIST sqlglot-30.23.0.tar.gz 6108071 BLAKE2B aa470c23542deb3793b208746e480cf642bc1aaea00c5f2a0049f0ad1401e6b50b492826a406a8d7f21607618db57edd9923ab11ad66ee457cc812903292e678 SHA512 dc4c43c751a1cfa2fd703e5d047d8b1ba5eb143996de6c235c165ad8c77180572946bb1ff59c4c4bdf8f441a3e3a08f81a07f147788e2134476214437867a6a2
+DIST sqlglot-30.24.0.tar.gz 6131857 BLAKE2B 0e63234e61a2970f42ec8764458a2b2d865fdfc735f15f6708daa9059b8114148c679f9e616ef86d2bc4b39065d52ce716a9a62aa898fa6609375733b2e1859a SHA512 0709c541cda6d610f5d68ca9638178b80bcff6e8727dfeadfabd5569e569762b9a24b8110a6bcff57a622f645bccd746811b1bf2235279f8b0e0dab42ef1cfed
diff --git a/dev-python/sqlglot/sqlglot-30.22.0.ebuild b/dev-python/sqlglot/sqlglot-30.24.0.ebuild
index 063fa5096326..063fa5096326 100644
--- a/dev-python/sqlglot/sqlglot-30.22.0.ebuild
+++ b/dev-python/sqlglot/sqlglot-30.24.0.ebuild
diff --git a/dev-python/uv-build/Manifest b/dev-python/uv-build/Manifest
index 4966413124b7..69bbc2faff51 100644
--- a/dev-python/uv-build/Manifest
+++ b/dev-python/uv-build/Manifest
@@ -7,3 +7,4 @@ DIST uv_build-0.12.7.tar.gz 418759 BLAKE2B 94aa33b2644f849a686d80d7f7d365ca84336
DIST uv_build-0.12.9.tar.gz 423446 BLAKE2B 8f32f7527633f5853a11a0f798a2aa075f9e96c2b34144f986a639dbd042bac7c5e33853287ef43273352a3ee84da852062c42daead1f188281295b635694177 SHA512 3aa6ea5b4e60218e7cbc3c5ed8ff7fbeeace36eb0d2c75627fb7a0ce7c060e8d6405378e9713f7164319cce55dc96b1a335ccb3032cfc7e9e60e99862295e79e
DIST uv_build-0.13.1.tar.gz 446632 BLAKE2B 543350d4a3d6ba53ea5d52f0f840245a6865f029a48f4f095d4d191b0ca502960526660f9255d60bb8e15b00c6daba9afbe7a8c19e61ca841fa5524a9b63c10b SHA512 42f4739a21e068af66b884a22f7fd57f278ebfe37a5561d5fdf95dc0c443456e5436a3ce49b26b96c70b7431c0422af37a33b529a0f6ab09e3ad108a9982350d
DIST uv_build-0.13.3.tar.gz 464136 BLAKE2B 4bcffe9228283c2c6388627d9ded292855c506aebb97efae931a6aecafdd1c5a680dc65a47651496409dde59c896e846b76f5abf4d67e2483d024f5cd93e9ffa SHA512 2fc5b9fe0e23172636b2fb927634619f5b93f1e1173ae2a8ea3ce14b4194bd2dba7bf6da6e46723c90a945a47273b8e67114398bc958e94f68bc4895af7a6574
+DIST uv_build-0.13.4.tar.gz 464427 BLAKE2B 899bd8d7628bc5a291a6f974e569484a61d1aff51745e004cb663167128470147f2dae454457e010fa495e9d9de19527e9185e90c88018e51b4352359ceca349 SHA512 2e74b38cd01468281f481fa3b1ea289e1d262986e97bf3bfd27812c08676825567c547144bc9ed090bede4eb8db3114e6e8330eeaf96a91602bdd5212ae76433
diff --git a/dev-python/uv-build/uv-build-0.13.4.ebuild b/dev-python/uv-build/uv-build-0.13.4.ebuild
new file mode 100644
index 000000000000..65d94f2051ae
--- /dev/null
+++ b/dev-python/uv-build/uv-build-0.13.4.ebuild
@@ -0,0 +1,100 @@
+# Copyright 2025-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# Maturin compiles uv-build executable for every impl, we do not want
+# that, so we use another backend. And since we use another backend,
+# why not dogfood it in the first place?
+DISTUTILS_USE_PEP517=standalone
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="PEP517 uv build backend"
+HOMEPAGE="
+ https://github.com/astral-sh/uv/
+ https://pypi.org/project/uv-build/
+"
+
+LICENSE="|| ( Apache-2.0 MIT )"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-python/uv-${PV}
+"
+BDEPEND="
+ test? (
+ app-arch/unzip
+ dev-python/build[${PYTHON_USEDEP}]
+ )
+"
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # use the executable from dev-python/uv instead of building
+ # a largely overlapping uv-build executable (at least for now)
+ sed -i -e '/USE_UV_EXECUTABLE/s:False:True:' python/uv_build/__init__.py || die
+
+ # replace the build-system section
+ sed -i -e '/\[build-system\]/,$d' pyproject.toml || die
+ cat >> pyproject.toml <<-EOF || die
+ [build-system]
+ requires = ["uv_build<9999"]
+ build-backend = "uv_build"
+ backend-path = ["src"]
+ EOF
+
+ # rename to make uv-build find it
+ mv python src || die
+}
+
+python_test() {
+ "${EPYTHON}" -m build -n || die "Self-build failed with ${EPYTHON}"
+
+ local zip_result=$(
+ unzip -t "dist/uv_build-${PV}-py3-none-any.whl" || die
+ )
+ local zip_expected="\
+Archive: dist/uv_build-${PV}-py3-none-any.whl
+ testing: uv_build/ OK
+ testing: uv_build/__init__.py OK
+ testing: uv_build/__main__.py OK
+ testing: uv_build/py.typed OK
+ testing: uv_build-${PV}.dist-info/ OK
+ testing: uv_build-${PV}.dist-info/WHEEL OK
+ testing: uv_build-${PV}.dist-info/METADATA OK
+ testing: uv_build-${PV}.dist-info/RECORD OK
+No errors detected in compressed data of dist/uv_build-${PV}-py3-none-any.whl.\
+"
+ if [[ ${zip_result} != ${zip_expected} ]]; then
+ eerror ".zip result:\n${zip_result}"
+ eerror ".zip expected:\n${zip_expected}"
+ die ".whl result mismatch"
+ fi
+
+ local tar_result=$(
+ tar -tf "dist/uv_build-${PV}.tar.gz" || die
+ )
+ local tar_expected="\
+uv_build-${PV}/PKG-INFO
+uv_build-${PV}/pyproject.toml
+uv_build-${PV}/pyproject.toml.orig
+uv_build-${PV}/
+uv_build-${PV}/README.md
+uv_build-${PV}/src
+uv_build-${PV}/src/uv_build
+uv_build-${PV}/src/uv_build/__init__.py
+uv_build-${PV}/src/uv_build/__main__.py
+uv_build-${PV}/src/uv_build/py.typed\
+"
+ if [[ ${tar_result} != ${tar_expected} ]]; then
+ eerror ".tar.gz result:\n${tar_result}"
+ eerror ".tar.gz expected:\n${tar_expected}"
+ die ".tar.gz result mismatch"
+ fi
+}
diff --git a/dev-python/uv/Manifest b/dev-python/uv/Manifest
index 944f72f4b4f6..c4a745b045b1 100644
--- a/dev-python/uv/Manifest
+++ b/dev-python/uv/Manifest
@@ -16,3 +16,5 @@ DIST uv-0.13.1-crates.tar.xz 44234800 BLAKE2B 78e734286467404e4289cff568565e1ef1
DIST uv-0.13.1.gh.tar.gz 8877918 BLAKE2B 43c1726bf6b277b57d154a0bba917cd6762c5dd3e4fbc5293c49372725e12b6980ef34fc44013c68a0956fa9bde368d3a6f45c4e658f27fe98506f22c987a7f2 SHA512 de0bf17d6ddc081e2b3904ed04aeb6ab7e9745880dd2cf78fd9f70e01241d28701246bb2db2b524c76549a0a53af899ad291dec7e957c6a96a344c285c1c4e29
DIST uv-0.13.3-crates.tar.xz 44006060 BLAKE2B f93beea37edc6642d352b1c497cdfbce32e2fc5d7606ebf648c9ad72b1c2a6bd000e9fe3f682794f54fa6c6968559351ddebe29ab4e1dbfc1555f401e0aa994f SHA512 d695cdc1090382cb559665e1c84f5d4f9cc7486437d0de2ac6c71669edc0bdbfa6181b617ca550b0f421ca33db7f308313b2527766f7435e4cf4f8481e769a77
DIST uv-0.13.3.gh.tar.gz 8927836 BLAKE2B f6795d91b43ae3ea8c43b07027f8436c730476355c3e354ed72e9cb92c90e5a9d7480e4c3de008fd9ee317e5c03b257c1e9d6938af48706b530caf5c637a85c7 SHA512 7c91b766ef394fcdf562457516cb6556d29b3a25f84a52f00afd23a4c9399b74a65dec701b13fee06996b77bcec895278683ce1dc967961abd2d46228b8d34cd
+DIST uv-0.13.4-crates.tar.xz 44003088 BLAKE2B 671f829d9f64a3f5aa2d1ec7e3f705eadb63529c43f65796a25ef0307f763ce4611f2ee41ee38ffeb19a2eac91d918129be4deb128c6a879c5bcd204862854ea SHA512 94d07b0fa8edbf6364366268be678055125e7baa854c8bc30aaf6721210fc63a1ef0dd5f07e0a511b2cd132f2fcf25690b6c2fa828b97b3893785ed18d40a51e
+DIST uv-0.13.4.gh.tar.gz 8930524 BLAKE2B 6db88a4d14037a65f0c2f1a5e98a1a3a6c0697300906af3f753d7ce87320b4086067abe13a60fd335d713f427fc1e2bda7a4917eb1d985daf03aa795672eb188 SHA512 06bc16f6e10b31cbdf1265623990cfe52bc0e040a53edd63b952807b340aec274d412ff7f17111e235596c7f054186fb7024abb0e563f43abb03309df7070f8a
diff --git a/dev-python/uv/uv-0.13.4.ebuild b/dev-python/uv/uv-0.13.4.ebuild
new file mode 100644
index 000000000000..f2ffd74bfde2
--- /dev/null
+++ b/dev-python/uv/uv-0.13.4.ebuild
@@ -0,0 +1,156 @@
+# Copyright 2024-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+CRATES="
+"
+RUST_MIN_VER="1.97.0"
+
+inherit cargo check-reqs
+
+CRATE_PV=${PV}
+DESCRIPTION="A Python package installer and resolver, written in Rust"
+HOMEPAGE="
+ https://github.com/astral-sh/uv/
+ https://pypi.org/project/uv/
+"
+# pypi sdist misses scripts/, needed for tests
+SRC_URI="
+ https://github.com/astral-sh/uv/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+ ${CARGO_CRATE_URIS}
+"
+if [[ ${PKGBUMPING} != ${PVR} ]]; then
+ SRC_URI+="
+ https://github.com/gentoo-crate-dist/uv/releases/download/${CRATE_PV}/uv-${CRATE_PV}-crates.tar.xz
+ "
+fi
+
+# most of the code
+LICENSE="|| ( Apache-2.0 MIT )"
+# crates/pep508-rs is || ( Apache-2.0 BSD-2 ) which is covered below
+# Dependent crate licenses
+LICENSE+="
+ 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 ~s390 ~x86"
+IUSE="test"
+RESTRICT="test"
+PROPERTIES="test_network"
+
+DEPEND="
+ app-arch/bzip2:=
+ app-arch/xz-utils:=
+ app-arch/zstd:=
+"
+RDEPEND="
+ ${DEPEND}
+"
+# git/curl: https://bugs.gentoo.org/984287
+BDEPEND="
+ virtual/pkgconfig
+ test? (
+ dev-lang/python:3.9
+ dev-lang/python:3.10
+ dev-lang/python:3.11
+ dev-lang/python:3.12
+ dev-lang/python:3.13
+ !!~dev-python/uv-0.5.0
+ || (
+ >=dev-vcs/git-2.57
+ <net-misc/curl-8.23
+ )
+ )
+"
+
+QA_FLAGS_IGNORED="usr/bin/.*"
+
+check_space() {
+ local CHECKREQS_DISK_BUILD=3G
+ use debug && CHECKREQS_DISK_BUILD=9G
+ check-reqs_pkg_setup
+}
+
+pkg_pretend() {
+ check_space
+}
+
+pkg_setup() {
+ check_space
+ rust_pkg_setup
+}
+
+src_prepare() {
+ default
+
+ # force thin lto, makes build much faster and less memory hungry
+ # (i.e. makes it possible to actually build uv on 32-bit PPC)
+ sed -i -e '/lto/s:fat:thin:' Cargo.toml || die
+
+ # enable system libraries where supported
+ export ZSTD_SYS_USE_PKG_CONFIG=1
+ # TODO: unbundle tikv-jemalloc-sys?
+
+ # remove unbundled sources, just in case
+ find "${ECARGO_VENDOR}"/zstd-sys-*/ -name '*.c' -delete || die
+}
+
+src_configure() {
+ local myfeatures=(
+ test-git
+ test-pypi
+ test-python
+ )
+
+ cargo_src_configure --no-default-features
+ # otherwise, rustc/llvm runs out of address space
+ use arm && export RUSTFLAGS="${RUSTFLAGS} -Copt-level=0"
+}
+
+src_compile() {
+ cd crates/uv || die
+ cargo_src_compile
+}
+
+src_test() {
+ cd crates/uv || die
+ cargo_src_test --no-fail-fast
+}
+
+src_install() {
+ dobin "$(cargo_target_dir)"/{uv,uvx}
+
+ insinto /etc/xdg/uv
+ newins - uv.toml <<-EOF || die
+ # These defaults match Fedora, see:
+ # https://src.fedoraproject.org/rpms/uv/pull-request/18
+
+ # By default ("automatic"), uv downloads missing Python versions
+ # automatically and keeps them in the user's home directory.
+ # Disable that to make downloading opt-in, and especially
+ # to avoid unnecessarily fetching custom Python when the distro
+ # package would be preferable. Python builds can still be
+ # downloaded manually via "uv python install".
+ #
+ # https://docs.astral.sh/uv/reference/settings/#python-downloads
+ python-downloads = "manual"
+
+ # By default ("managed"), uv always prefers self-installed
+ # Python versions over the system Python, independently
+ # of versions. Since we generally expect users to use that
+ # to install old Python versions not in ::gentoo anymore,
+ # this effectively means that uv would end up preferring very
+ # old Python versions over the newer ones that are provided
+ # by the system. Default to using the system versions to avoid
+ # this counter-intuitive behavior.
+ #
+ # https://docs.astral.sh/uv/reference/settings/#python-preference
+ python-preference = "system"
+ EOF
+}
diff --git a/dev-python/wcwidth/Manifest b/dev-python/wcwidth/Manifest
index 22f1f5cdceb4..4a9ff7b62921 100644
--- a/dev-python/wcwidth/Manifest
+++ b/dev-python/wcwidth/Manifest
@@ -1,4 +1,4 @@
-DIST wcwidth-0.8.3.tar.gz 1458450 BLAKE2B 19a6b8d3fcf0f1d59865860a8efaa7fa14b958ac24b79bc04f9a27988f8fde78497b3ed761e1a7f076a7ab992c71e1d45d088cbb19836d1f73abee6e2f81e5b8 SHA512 d5477dd2a1f6dc6e14dc0e5e34f08b8c78c008ee2390b670155bc163f2c67f1a58ffab2ed35bbe7434d4b4ebef0c91f02cdeae15337d380c28b94858c72692dd
DIST wcwidth-0.8.4.tar.gz 414609 BLAKE2B 492540a34734e65266211b1412a2b6150c8598e46db05ab099e954c57af2c351ff13df09c43f79c4627060ee86c6220014b0f087a5712f3fef10eff63dca1ddb SHA512 29b89f55efc308d1b1b9dd16ef7224964c7c02aa729e2bd6779b0fa56ac2eb89054c29087a4dd410d183294d06f6217451b1ca693b549483fb0b732edb3c6f70
DIST wcwidth-0.9.1.tar.gz 952410 BLAKE2B d98f75582df5e520676fe5d08b46af6546094455ba3d93d61ebfe07eb7edc10ad37eb35c3825f62d5e09c3b0b872cd15bb38fb8668b02e295debed14f9bb4350 SHA512 b367202fc2abf81a62547cd209658161805cd2eb5e4d42cb46367c0424045af67820bd134265eef8c648e8545e59bf5e74c8e96c516a794bd6e02896d72b9dc5
DIST wcwidth-0.9.2.tar.gz 955039 BLAKE2B 394c246203eb8d0d79ab6626ce138b2cb3269c928e2d49677cc63469bd492393be95aad569b02bca7aec13b45a811a524d45fab511164045bade41058142038e SHA512 e6ef4f6f89e6430d6f4179b09bf4866ac4d0b57b160b2f7dc8f1c810de19ce3f46b79a122ec0aa6f06ea0e29b9a6623aba3159ca2d5d763c512ec0268533307b
+DIST wcwidth-0.9.3.tar.gz 956320 BLAKE2B 4b0678f3a1fab19b3b1d85a0f8f5cfa5852046ed4d3422777904d29b844fe933e55505b13e23214853e01277d6c68789e030f26c618df147258b2bbf320aae3f SHA512 1b288ba6d920a9c9e0ce243def0e34193ef0f5b845ef4afbbf57769ea9793b7fb9f26a8a4a8018ac09cd4b2e3049e854f27870a8f2b6a38663e9149daef600b4
diff --git a/dev-python/wcwidth/wcwidth-0.8.3.ebuild b/dev-python/wcwidth/wcwidth-0.9.3.ebuild
index 5fac730da5ca..84dd9c3e323c 100644
--- a/dev-python/wcwidth/wcwidth-0.8.3.ebuild
+++ b/dev-python/wcwidth/wcwidth-0.9.3.ebuild
@@ -3,7 +3,8 @@
EAPI=8
-DISTUTILS_USE_PEP517=hatchling
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
PYTHON_COMPAT=( python3_{13..14} )
inherit distutils-r1 pypi
@@ -16,12 +17,25 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos"
+IUSE="+native-extensions"
EPYTEST_PLUGINS=()
distutils_enable_tests pytest
+src_configure() {
+ if ! use native-extensions; then
+ # do not build extension
+ export WCWIDTH_NO_EXTENSION=1
+ # test without extension
+ export WCWIDTH_PYTHON=1
+ fi
+ # make extension builds fatal
+ export CIBUILDWHEEL=1
+}
+
python_test() {
+ rm -rf wcwidth || die
epytest -o addopts=
}