summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
authorLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2025-10-05 07:03:55 +0000
committerLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2025-10-05 07:03:55 +0000
commit82e6bcd7a0ee6f9887a034913b623c47891728ce (patch)
tree32b0ceb7f223f159ab712703adffa58570c2624f /dev-python
parent5360c10fa69d24b86a57d0c28b364949c3f08128 (diff)
downloadbaldeagleos-repo-82e6bcd7a0ee6f9887a034913b623c47891728ce.tar.gz
baldeagleos-repo-82e6bcd7a0ee6f9887a034913b623c47891728ce.tar.xz
baldeagleos-repo-82e6bcd7a0ee6f9887a034913b623c47891728ce.zip
Adding metadata
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/aiohttp-socks/aiohttp-socks-0.10.1.ebuild8
-rw-r--r--dev-python/aiohttp-socks/files/aiohttp-socks-0.10.1-test.patch96
-rw-r--r--dev-python/audioread/audioread-3.0.1-r1.ebuild5
-rw-r--r--dev-python/audioread/audioread-3.0.1.ebuild42
-rw-r--r--dev-python/beartype/Manifest1
-rw-r--r--dev-python/beartype/beartype-0.22.2.ebuild39
-rw-r--r--dev-python/blurb/blurb-2.0.0.ebuild10
-rw-r--r--dev-python/cstruct/Manifest1
-rw-r--r--dev-python/cstruct/cstruct-6.0.ebuild29
-rw-r--r--dev-python/dbus-fast/Manifest2
-rw-r--r--dev-python/dbus-fast/dbus-fast-2.44.5.ebuild (renamed from dev-python/dbus-fast/dbus-fast-2.44.1.ebuild)8
-rw-r--r--dev-python/electrum-aionostr/electrum-aionostr-0.0.11.ebuild2
-rw-r--r--dev-python/electrum-ecc/electrum-ecc-0.0.5.ebuild2
-rw-r--r--dev-python/fritzconnection/Manifest1
-rw-r--r--dev-python/fritzconnection/fritzconnection-1.14.0.ebuild64
-rw-r--r--dev-python/fritzconnection/fritzconnection-1.15.0.ebuild18
-rw-r--r--dev-python/hypothesis/Manifest1
-rw-r--r--dev-python/hypothesis/hypothesis-6.140.3.ebuild125
-rw-r--r--dev-python/inline-snapshot/Manifest1
-rw-r--r--dev-python/inline-snapshot/inline-snapshot-0.29.3.ebuild61
-rw-r--r--dev-python/propcache/Manifest1
-rw-r--r--dev-python/propcache/propcache-0.4.0.ebuild54
-rw-r--r--dev-python/pydantic/Manifest1
-rw-r--r--dev-python/pydantic/pydantic-2.11.10.ebuild71
-rw-r--r--dev-python/pygithub/Manifest2
-rw-r--r--dev-python/pygithub/pygithub-2.6.1.ebuild44
-rw-r--r--dev-python/pygithub/pygithub-2.7.0.ebuild39
-rw-r--r--dev-python/pygithub/pygithub-2.8.1.ebuild2
-rw-r--r--dev-python/rich-click/Manifest1
-rw-r--r--dev-python/rich-click/rich-click-1.9.2.ebuild41
-rw-r--r--dev-python/uv-build/Manifest1
-rw-r--r--dev-python/uv-build/uv-build-0.8.23.ebuild99
-rw-r--r--dev-python/uv/Manifest2
-rw-r--r--dev-python/uv/uv-0.8.23.ebuild183
-rw-r--r--dev-python/zeroconf/Manifest2
-rw-r--r--dev-python/zeroconf/zeroconf-0.148.0.ebuild69
36 files changed, 870 insertions, 258 deletions
diff --git a/dev-python/aiohttp-socks/aiohttp-socks-0.10.1.ebuild b/dev-python/aiohttp-socks/aiohttp-socks-0.10.1.ebuild
index b796bbeba590..4915f48e9c47 100644
--- a/dev-python/aiohttp-socks/aiohttp-socks-0.10.1.ebuild
+++ b/dev-python/aiohttp-socks/aiohttp-socks-0.10.1.ebuild
@@ -28,7 +28,6 @@ RDEPEND="
"
BDEPEND="
test? (
- dev-python/pytest-asyncio[${PYTHON_USEDEP}]
dev-python/trustme[${PYTHON_USEDEP}]
dev-python/attrs[${PYTHON_USEDEP}]
dev-python/yarl[${PYTHON_USEDEP}]
@@ -37,4 +36,11 @@ BDEPEND="
)
"
+EPYTEST_PLUGINS=( pytest-asyncio )
distutils_enable_tests pytest
+
+PATCHES=(
+ # https://github.com/romis2012/aiohttp-socks/pull/53
+ # https://github.com/romis2012/aiohttp-socks/commit/0d8800233dc8aa7384abaf02ebf3543d3d2dea97
+ "${FILESDIR}/${P}-test.patch"
+)
diff --git a/dev-python/aiohttp-socks/files/aiohttp-socks-0.10.1-test.patch b/dev-python/aiohttp-socks/files/aiohttp-socks-0.10.1-test.patch
new file mode 100644
index 000000000000..fa9ae3963c62
--- /dev/null
+++ b/dev-python/aiohttp-socks/files/aiohttp-socks-0.10.1-test.patch
@@ -0,0 +1,96 @@
+From 2ef7cba5f8d47d059d666683e7dcf01af214596f Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
+Date: Sat, 4 Oct 2025 19:17:44 +0200
+Subject: [PATCH] Fix test compatibility with pytest-asyncio >= 1.0.0
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Replace the obsolete `event_loop` fixture with
+`asyncio.get_running_loop()`, to fix testing with newer versions
+of `pytest-asyncio`. This change is backwards compatible.
+
+Signed-off-by: Michał Górny <mgorny@gentoo.org>
+---
+ tests/test_connector.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tests/test_connector.py b/tests/test_connector.py
+index 988fc20..e24ef48 100644
+--- a/tests/test_connector.py
++++ b/tests/test_connector.py
+@@ -272,7 +272,6 @@ async def test_socks5_open_connection(url, rdns, target_ssl_context):
+ async def test_socks5_http_create_connection(
+ url: str,
+ rdns: bool,
+- event_loop: asyncio.AbstractEventLoop,
+ target_ssl_context: ssl.SSLContext,
+ ):
+ url = URL(url)
+@@ -281,6 +280,7 @@ async def test_socks5_http_create_connection(
+ if url.scheme == 'https':
+ ssl_context = target_ssl_context
+
++ event_loop = asyncio.get_running_loop()
+ reader = asyncio.StreamReader(loop=event_loop)
+ protocol = asyncio.StreamReaderProtocol(reader, loop=event_loop)
+
+From 0d8800233dc8aa7384abaf02ebf3543d3d2dea97 Mon Sep 17 00:00:00 2001
+From: Roman Snegirev <rsng@mail.ru>
+Date: Mon, 26 May 2025 13:14:40 +0300
+Subject: [PATCH] Fix tests, update README
+
+diff --git a/tests/test_connector.py b/tests/test_connector.py
+index 8692fe6..988fc20 100644
+--- a/tests/test_connector.py
++++ b/tests/test_connector.py
+@@ -35,6 +35,16 @@
+ )
+
+
++def is_proxy_connection_error(e: Exception):
++ return isinstance(e, ProxyConnectionError) or isinstance(
++ e.__cause__, ProxyConnectionError
++ )
++
++
++def is_proxy_timeout_error(e: Exception):
++ return isinstance(e, ProxyTimeoutError) or isinstance(e.__cause__, ProxyTimeoutError)
++
++
+ async def fetch(
+ connector: TCPConnector,
+ url: str,
+@@ -105,13 +115,15 @@ async def test_socks5_proxy_with_timeout(target_ssl_context):
+ async def test_socks5_proxy_with_proxy_connect_timeout(target_ssl_context):
+ connector = ProxyConnector.from_url(SOCKS5_IPV4_URL)
+ timeout = aiohttp.ClientTimeout(total=32, sock_connect=0.001)
+- with pytest.raises(ProxyTimeoutError):
++ # with pytest.raises(ProxyTimeoutError):
++ with pytest.raises(Exception) as exc_info:
+ await fetch(
+ connector=connector,
+ url=TEST_URL_IPV4,
+ timeout=timeout,
+ ssl_context=target_ssl_context,
+ )
++ assert is_proxy_timeout_error(exc_info.value)
+
+
+ @pytest.mark.asyncio
+@@ -123,12 +135,14 @@ async def test_socks5_proxy_with_invalid_proxy_port(unused_tcp_port, target_ssl_
+ username=LOGIN,
+ password=PASSWORD,
+ )
+- with pytest.raises(ProxyConnectionError):
++ # with pytest.raises(ProxyConnectionError):
++ with pytest.raises(Exception) as exc_info:
+ await fetch(
+ connector=connector,
+ url=TEST_URL_IPV4,
+ ssl_context=target_ssl_context,
+ )
++ assert is_proxy_connection_error(exc_info.value)
+
+
+ @pytest.mark.parametrize('url', (TEST_URL_IPV4, TEST_URL_IPV4_HTTPS))
diff --git a/dev-python/audioread/audioread-3.0.1-r1.ebuild b/dev-python/audioread/audioread-3.0.1-r1.ebuild
index ae92e63637ce..67fd64449216 100644
--- a/dev-python/audioread/audioread-3.0.1-r1.ebuild
+++ b/dev-python/audioread/audioread-3.0.1-r1.ebuild
@@ -4,7 +4,7 @@
EAPI=8
DISTUTILS_USE_PEP517=flit
-PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+PYTHON_COMPAT=( python3_{11..14} )
inherit distutils-r1 pypi
@@ -22,7 +22,7 @@ IUSE="ffmpeg gstreamer mad"
RDEPEND="
$(python_gen_cond_dep '
dev-python/audioop-lts[${PYTHON_USEDEP}]
- ' python3_13)
+ ' 3.13 3.14)
ffmpeg? (
media-video/ffmpeg
)
@@ -41,6 +41,7 @@ BDEPEND="
)
"
+EPYTEST_PLUGINS=()
distutils_enable_tests pytest
PATCHES=(
diff --git a/dev-python/audioread/audioread-3.0.1.ebuild b/dev-python/audioread/audioread-3.0.1.ebuild
deleted file mode 100644
index de4b5bd98d4b..000000000000
--- a/dev-python/audioread/audioread-3.0.1.ebuild
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=flit
-# py3.13: https://github.com/beetbox/audioread/issues/144
-PYTHON_COMPAT=( python3_{9,10,11,12,13} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Wrapper for audio file decoding using FFmpeg or GStreamer"
-HOMEPAGE="
- https://github.com/beetbox/audioread/
- https://pypi.org/project/audioread/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="amd64 arm64 ~x86"
-IUSE="ffmpeg gstreamer mad"
-
-RDEPEND="
- ffmpeg? (
- media-video/ffmpeg
- )
- gstreamer? (
- dev-python/pygobject:3[${PYTHON_USEDEP}]
- media-libs/gstreamer:1.0
- media-plugins/gst-plugins-meta:1.0
- )
- mad? (
- dev-python/pymad[${PYTHON_USEDEP}]
- )
-"
-BDEPEND="
- test? (
- dev-python/pymad[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_tests pytest
diff --git a/dev-python/beartype/Manifest b/dev-python/beartype/Manifest
index 032e002c02bf..67b2b87210ca 100644
--- a/dev-python/beartype/Manifest
+++ b/dev-python/beartype/Manifest
@@ -1 +1,2 @@
DIST beartype-0.21.0.tar.gz 1437066 BLAKE2B 10c08fc07a87257fc21a85c2ab8c1402044b383051e5ecc919812710f74d277cbe70653a02aeeafc1007da5716bcb78c2024b5debb66b84ab5cdf4c3901fabb4 SHA512 fd3026c15bc1e9fc3985f7c691ad9c4c55532e5148bd3f554f40b7b6a33189af07ce9174c197907b4cd57f41778a436644e6ad610eec942d94c01cabb295c19b
+DIST beartype-0.22.2.tar.gz 1574491 BLAKE2B 56242547bfdde274b91807f3be04e80ee6d76b05706406b7527c8fc201be78c5eb602157eb9642893ce36b27214b1c9f8f3bc624799584ed6d7b9aff3a98af6e SHA512 ef5f1568e5b2d0341b9598c138143f54e8eca987465ddb018f6b6d9eefa099b4f659c421e0bbe36b47fe2ca3bc2c13549e5321624d4d75f06d9250fae0fc869c
diff --git a/dev-python/beartype/beartype-0.22.2.ebuild b/dev-python/beartype/beartype-0.22.2.ebuild
new file mode 100644
index 000000000000..aaf3881c4056
--- /dev/null
+++ b/dev-python/beartype/beartype-0.22.2.ebuild
@@ -0,0 +1,39 @@
+# Copyright 2022-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Unbearably fast runtime type checking in pure Python"
+HOMEPAGE="
+ https://pypi.org/project/beartype/
+ https://github.com/beartype/beartype/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~riscv"
+
+BDEPEND="
+ test? (
+ dev-python/click[${PYTHON_USEDEP}]
+ dev-python/mypy[${PYTHON_USEDEP}]
+ dev-python/numpy[${PYTHON_USEDEP}]
+ dev-python/sqlalchemy[${PYTHON_USEDEP}]
+ dev-python/xarray[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # fragile performance test
+ beartype_test/a00_unit/a70_decor/test_decorwrapper.py::test_wrapper_fail_obj_large
+ # test for building docs, apparently broken too
+ beartype_test/a90_func/z90_lib/a00_sphinx
+)
diff --git a/dev-python/blurb/blurb-2.0.0.ebuild b/dev-python/blurb/blurb-2.0.0.ebuild
index 8c09be65c6b2..3755cf4203af 100644
--- a/dev-python/blurb/blurb-2.0.0.ebuild
+++ b/dev-python/blurb/blurb-2.0.0.ebuild
@@ -4,7 +4,7 @@
EAPI=8
DISTUTILS_USE_PEP517=hatchling
-PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+PYTHON_COMPAT=( python3_{11..14} )
inherit distutils-r1 pypi
@@ -18,11 +18,5 @@ LICENSE="BSD"
SLOT="0"
KEYWORDS="~amd64 ~arm64 ~x86"
-BDEPEND="
- test? (
- dev-python/pyfakefs[${PYTHON_USEDEP}]
- dev-python/time-machine[${PYTHON_USEDEP}]
- )
-"
-
+EPYTEST_PLUGINS=( pyfakefs time-machine )
distutils_enable_tests pytest
diff --git a/dev-python/cstruct/Manifest b/dev-python/cstruct/Manifest
index b949605cbb87..7fd259c8af90 100644
--- a/dev-python/cstruct/Manifest
+++ b/dev-python/cstruct/Manifest
@@ -1,2 +1 @@
-DIST python-cstruct-6.0.gh.tar.gz 40316 BLAKE2B 7dfc5c7515c08f18795dba886cfec64c4a86780b721738bd0377c85d62543bcb8ebdb854c4b1a24d0972f73435b92deb3ca6bbbf6324352d6f34ff582775477c SHA512 77ca6876cfc68e0c27a84eebcf3a356d3a9241cb68b7e912dbd9db29d17f074f115d983de6216a068d754506f301616ed0e7e9284023f7a27304e787beb7a547
DIST python-cstruct-6.1.gh.tar.gz 41085 BLAKE2B 6abf2eeca39f79018d81f2a7b047520f7a8c5eca5bc8aa1076e94106779473fb4c7dd6d8896a6bf0b9ea239db79c8b9778f1f856b95bf5e30367b44a7b2abc95 SHA512 402ad4367f1f0e519d9b6206ced6780b96eb732191d64f182b4d98461eb2bee6dcad25078ef4a9d0a94b3bf52ea577d2e30fb1a0b5205bb25e1521f52f8df1de
diff --git a/dev-python/cstruct/cstruct-6.0.ebuild b/dev-python/cstruct/cstruct-6.0.ebuild
deleted file mode 100644
index 56979994cb87..000000000000
--- a/dev-python/cstruct/cstruct-6.0.ebuild
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{9,10,11,12,13} )
-
-inherit distutils-r1
-
-MY_P=python-cstruct-${PV}
-DESCRIPTION="C-style structs for Python"
-HOMEPAGE="
- https://github.com/andreax79/python-cstruct/
- https://pypi.org/project/cstruct/
-"
-SRC_URI="
- https://github.com/andreax79/python-cstruct/archive/v${PV}.tar.gz
- -> ${MY_P}.gh.tar.gz
-"
-S=${WORKDIR}/${MY_P}
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~amd64 ~x86"
-
-DOCS=( README.md )
-
-distutils_enable_tests pytest
diff --git a/dev-python/dbus-fast/Manifest b/dev-python/dbus-fast/Manifest
index a9c9e11645bf..53413e5c24b3 100644
--- a/dev-python/dbus-fast/Manifest
+++ b/dev-python/dbus-fast/Manifest
@@ -1,2 +1,2 @@
-DIST dbus-fast-2.44.1.gh.tar.gz 202745 BLAKE2B 36fb2c1d1243ff376485b8fba783aab4917675d7277d28c71819fdcf0360cffa93c50fa4b71657897e17e0e5dec446e4965c4acc526bbb0528389fdf54a937ab SHA512 8db8d0748b09ffbe3040f3fae8938236dd23a326a0f0995868319c74152db4968ffa6b43f8efd950f8dbc4e850c17ffb7d474bc3f429935680f76a3e96bfd522
DIST dbus-fast-2.44.3.gh.tar.gz 203381 BLAKE2B ce98728ab1182ffebba71be077e9714df4712b77e0440eb43e7728601c0c20d6bb78338b4798438afe98a15da6ced26ee3d3743121b6340336ea0bac0e1eba23 SHA512 955231acef70154973ec1968c9bde95be726caa6d218b8a9857e8e837261088fb209dbdede0ed7e6e416c842ee886012ee9437c5166f53103d2400b23cd05f43
+DIST dbus-fast-2.44.5.gh.tar.gz 205159 BLAKE2B 4c5529ec4255106a37df493864dca3d5be20c76ebfe019382ee3b1e1bf7248121ab4100102655530464df64eb5d04551fdf396e993782b390f7b84a62889a6a4 SHA512 5d458687db282a0974d994a262234c12287ae3b93fc6e060a302046289943f542ca3953c0cc6ab158a413159e6f3764e616d1b7d1deebaeee9897790cbd13dc5
diff --git a/dev-python/dbus-fast/dbus-fast-2.44.1.ebuild b/dev-python/dbus-fast/dbus-fast-2.44.5.ebuild
index c24342636412..1ab3c5d3ca76 100644
--- a/dev-python/dbus-fast/dbus-fast-2.44.1.ebuild
+++ b/dev-python/dbus-fast/dbus-fast-2.44.5.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 ~riscv"
+KEYWORDS="~amd64 ~riscv"
BDEPEND="
>=dev-python/cython-3[${PYTHON_USEDEP}]
@@ -29,11 +29,10 @@ BDEPEND="
test? (
>=dev-python/pycairo-1.21.0[${PYTHON_USEDEP}]
>=dev-python/pygobject-3.50[${PYTHON_USEDEP}]
- >=dev-python/pytest-asyncio-0.19[${PYTHON_USEDEP}]
- >=dev-python/pytest-timeout-2.1.0[${PYTHON_USEDEP}]
)
"
+EPYTEST_PLUGINS=( pytest-{asyncio,timeout} )
distutils_enable_tests pytest
export REQUIRE_CYTHON=1
@@ -58,6 +57,5 @@ python_test() {
tests/benchmarks
)
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
- nonfatal epytest -o addopts= -p asyncio || die
+ nonfatal epytest -o addopts= || die
}
diff --git a/dev-python/electrum-aionostr/electrum-aionostr-0.0.11.ebuild b/dev-python/electrum-aionostr/electrum-aionostr-0.0.11.ebuild
index 9b532904d6cf..68f9c8b6b761 100644
--- a/dev-python/electrum-aionostr/electrum-aionostr-0.0.11.ebuild
+++ b/dev-python/electrum-aionostr/electrum-aionostr-0.0.11.ebuild
@@ -15,7 +15,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="amd64 ~x86"
+KEYWORDS="amd64 x86"
RDEPEND="
>=dev-python/click-8.2[${PYTHON_USEDEP}]
diff --git a/dev-python/electrum-ecc/electrum-ecc-0.0.5.ebuild b/dev-python/electrum-ecc/electrum-ecc-0.0.5.ebuild
index d362b5f96cd3..cb9701964da6 100644
--- a/dev-python/electrum-ecc/electrum-ecc-0.0.5.ebuild
+++ b/dev-python/electrum-ecc/electrum-ecc-0.0.5.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 ~x86"
+KEYWORDS="amd64 x86"
# check ecc_fast.py for supported SOVERSIONS
RDEPEND="
diff --git a/dev-python/fritzconnection/Manifest b/dev-python/fritzconnection/Manifest
index 56f2d06dd87a..d17cf01c24fc 100644
--- a/dev-python/fritzconnection/Manifest
+++ b/dev-python/fritzconnection/Manifest
@@ -1,2 +1 @@
-DIST fritzconnection-1.14.0.gh.tar.gz 165234 BLAKE2B 8a9350ad632eef353d08acd19560ffaed5d0cbfb073881f8892242b6616e1b830c84c7e9236280068278bac459a43f53c140a2f4d474ce9787a064530a8531b0 SHA512 99d002365d425ce459a3cfe9bbf48680639ccb1ef1cea65870a39e684c712abb8be16d10dad2c1a529c8b27c7b15dd9dad4a9eff38c975b1d8ff2fb15af72aa3
DIST fritzconnection-1.15.0.gh.tar.gz 167546 BLAKE2B 203ff8e0e3211ebe4cf9486096434cb30e19af01b21b2f0b8a4513bc27145f87d2b73d1849bfcf6079d2b89a63d5c85c9ad290bf3e09f2c9605bc8d60e178c9e SHA512 12743d0071d388b1bc2213401d84b25182e867977a82fcfc6b4086a73fee4dcc6c9c1d948b96060c8c0c8989f3a374299b406913d5f7a7bc98448d74423e225b
diff --git a/dev-python/fritzconnection/fritzconnection-1.14.0.ebuild b/dev-python/fritzconnection/fritzconnection-1.14.0.ebuild
deleted file mode 100644
index a252a2620934..000000000000
--- a/dev-python/fritzconnection/fritzconnection-1.14.0.ebuild
+++ /dev/null
@@ -1,64 +0,0 @@
-# Copyright 2022-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{9,10,11,12,13} )
-
-inherit distutils-r1
-
-DESCRIPTION="Lib/tool to communicate with AVM FRITZ! devices using TR-064 protocol over UPnP"
-HOMEPAGE="
- https://github.com/kbr/fritzconnection/
- https://pypi.org/project/fritzconnection/
-"
-
-LICENSE="MIT"
-SLOT="0"
-IUSE="qrcode"
-
-if [[ "${PV}" == "9999" ]]; then
- EGIT_REPO_URI="https://github.com/kbr/fritzconnection"
- inherit git-r3
-else
- SRC_URI="
- https://github.com/kbr/fritzconnection/archive/${PV}.tar.gz
- -> ${P}.gh.tar.gz
- "
- KEYWORDS="~amd64 ~arm64 ~x86"
-fi
-
-RDEPEND="
- >=dev-python/requests-2.22[${PYTHON_USEDEP}]
- qrcode? (
- dev-python/segno[${PYTHON_USEDEP}]
- )
-"
-BDEPEND="
- test? (
- dev-python/pytest-mock[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_tests pytest
-
-python_test() {
- local EPYTEST_DESELECT=(
- # flaky (relies on time.sleep(0.01) magically being sufficient)
- fritzconnection/tests/test_fritzmonitor.py::test_terminate_thread_on_failed_reconnection
- )
-
- if has_version "dev-python/segno[${PYTHON_USEDEP}]"; then
- EPYTEST_DESELECT+=(
- # requires "QR Code detection" support in media-libs/opencv
- # https://bugs.gentoo.org/917121
- fritzconnection/tests/test_fritzwlan.py::test_get_wifi_qr_code
- fritzconnection/tests/test_fritzwlan.py::test_helper_functions
- fritzconnection/tests/test_fritzwlan.py::test_tools
- )
- fi
-
- # "routertest" marks tests against live hardware
- epytest -m "not routertest"
-}
diff --git a/dev-python/fritzconnection/fritzconnection-1.15.0.ebuild b/dev-python/fritzconnection/fritzconnection-1.15.0.ebuild
index b45c88756527..7c5e812e2f40 100644
--- a/dev-python/fritzconnection/fritzconnection-1.15.0.ebuild
+++ b/dev-python/fritzconnection/fritzconnection-1.15.0.ebuild
@@ -4,7 +4,7 @@
EAPI=8
DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+PYTHON_COMPAT=( python3_{11..14} )
inherit distutils-r1
@@ -35,12 +35,8 @@ RDEPEND="
dev-python/segno[${PYTHON_USEDEP}]
)
"
-BDEPEND="
- test? (
- dev-python/pytest-mock[${PYTHON_USEDEP}]
- )
-"
+EPYTEST_PLUGINS=( pytest-mock )
distutils_enable_tests pytest
python_test() {
@@ -49,16 +45,6 @@ python_test() {
fritzconnection/tests/test_fritzmonitor.py::test_terminate_thread_on_failed_reconnection
)
- if has_version "dev-python/segno[${PYTHON_USEDEP}]"; then
- EPYTEST_DESELECT+=(
- # requires "QR Code detection" support in media-libs/opencv
- # https://bugs.gentoo.org/917121
- fritzconnection/tests/test_fritzwlan.py::test_get_wifi_qr_code
- fritzconnection/tests/test_fritzwlan.py::test_helper_functions
- fritzconnection/tests/test_fritzwlan.py::test_tools
- )
- fi
-
# "routertest" marks tests against live hardware
epytest -m "not routertest"
}
diff --git a/dev-python/hypothesis/Manifest b/dev-python/hypothesis/Manifest
index 3988f171e7dc..92ed2d048daf 100644
--- a/dev-python/hypothesis/Manifest
+++ b/dev-python/hypothesis/Manifest
@@ -4,3 +4,4 @@ DIST hypothesis-6.138.17.gh.tar.gz 9622806 BLAKE2B ab53606527145ef5a33cdcf177115
DIST hypothesis-6.139.2.gh.tar.gz 9623909 BLAKE2B 2b509474e06169191087932a47a0564fc5babf0f1e2acddd4f95d7d411befea444a80c7d7fea9c8582fb6ddc8153388a52a7a29d917f4f5ea8c142c8345e9036 SHA512 ffd797bc2ed6591fd67b2639665c606c1814a7ee2cca1b1f4272ef505a3ad83883988feb2dc32e4a92813c540dd485594d2c332e945ad7f58b9eb276af733869
DIST hypothesis-6.140.0.gh.tar.gz 9624664 BLAKE2B 9600322c753095501d64595030dc2a97aa929909b26625d2995bf2f9c89a0dc0ce99e682c41fe176be880c80f4134329b4366bff984a140f9e3da91689396858 SHA512 9a2c04a2846412dc7ece19702c64dab4e3db6734ca176af7e462e5479c1b6bf316e5c736e147c69b2a183f424618dbb24b388ae967af0cbaf433eab413dfdd78
DIST hypothesis-6.140.2.gh.tar.gz 9625203 BLAKE2B f9ca33c1ad7522ab0250e7b453aba0d4c5ae0322e478d6199e26a084b75f6a43358fb2e3b2344bf1f9fd44f8707d554b159705e26f26eced97ad0d475687b1cf SHA512 13024dfc4a633fb973e4846122bfc1e25ff45fc7c4b5e2696c6efc548d827c82a253662586cd79aaae94f6d81e4b00bd5c41cca71f0c7546296fed0e4ba4780e
+DIST hypothesis-6.140.3.gh.tar.gz 9625658 BLAKE2B 4316d4aa5f4b2b2a476c6d978d0934450b95f8260efefe6b8d2b2551af504ba2bbff761ac89bdd60fa1b7cc35b6d746c1f24419b56548aa33476960157ec078e SHA512 49be610c4c0af443a9c29262e04649fa4d3a810c386ccc4f570aac82f0289bab34718ae09e80bf10bb91654104b0d57c829d6b4facb8a22da09bfb921de15762
diff --git a/dev-python/hypothesis/hypothesis-6.140.3.ebuild b/dev-python/hypothesis/hypothesis-6.140.3.ebuild
new file mode 100644
index 000000000000..7a7443937da6
--- /dev/null
+++ b/dev-python/hypothesis/hypothesis-6.140.3.ebuild
@@ -0,0 +1,125 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+CLI_COMPAT=( python3_{11..13} )
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+PYTHON_REQ_USE="threads(+),sqlite"
+
+inherit distutils-r1 optfeature
+
+TAG=hypothesis-python-${PV}
+MY_P=hypothesis-${TAG}
+DESCRIPTION="A library for property based testing"
+HOMEPAGE="
+ https://github.com/HypothesisWorks/hypothesis/
+ https://pypi.org/project/hypothesis/
+"
+SRC_URI="
+ https://github.com/HypothesisWorks/hypothesis/archive/${TAG}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+S="${WORKDIR}/${MY_P}/hypothesis-python"
+
+LICENSE="MPL-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="cli"
+
+RDEPEND="
+ >=dev-python/attrs-22.2.0[${PYTHON_USEDEP}]
+ >=dev-python/sortedcontainers-2.1.0[${PYTHON_USEDEP}]
+ cli? (
+ $(python_gen_cond_dep '
+ dev-python/black[${PYTHON_USEDEP}]
+ dev-python/click[${PYTHON_USEDEP}]
+ ' "${CLI_COMPAT[@]}")
+ )
+"
+BDEPEND="
+ test? (
+ dev-python/pexpect[${PYTHON_USEDEP}]
+ >=dev-python/pytest-8[${PYTHON_USEDEP}]
+ )
+"
+PDEPEND="
+ dev-python/hypothesis-gentoo[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGIN_LOAD_VIA_ENV=1
+EPYTEST_PLUGINS=( "${PN}" pytest-xdist )
+EPYTEST_RERUNS=5
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_test() {
+ # NB: paths need to be relative to pytest.ini,
+ # i.e. start with hypothesis-python/
+ local EPYTEST_DESELECT=()
+ case ${EPYTHON} in
+ python3.13t)
+ EPYTEST_DESELECT+=(
+ # TODO: missing warning
+ 'hypothesis-python/tests/cover/test_random_module.py::test_passing_referenced_instance_within_function_scope_warns'
+ )
+ ;;
+ python3.14*)
+ EPYTEST_DESELECT+=(
+ 'hypothesis-python/tests/cover/test_compat.py::test_resolve_fwd_refs[Foo-Union]'
+ 'hypothesis-python/tests/cover/test_lookup.py::test_builds_suggests_from_type[Union]'
+ hypothesis-python/tests/cover/test_attrs_inference.py::test_attrs_inference_builds
+ hypothesis-python/tests/cover/test_lookup.py::test_bytestring_not_treated_as_generic_sequence
+ hypothesis-python/tests/cover/test_lookup.py::test_issue_4194_regression
+ hypothesis-python/tests/cover/test_lookup.py::test_resolves_forwardrefs_to_builtin_types
+ hypothesis-python/tests/cover/test_lookup.py::test_specialised_collection_types
+ hypothesis-python/tests/cover/test_lookup_py37.py::test_resolving_standard_collection_as_generic
+ hypothesis-python/tests/cover/test_lookup_py37.py::test_resolving_standard_container_as_generic
+ hypothesis-python/tests/cover/test_lookup_py37.py::test_resolving_standard_contextmanager_as_generic
+ hypothesis-python/tests/cover/test_lookup_py37.py::test_resolving_standard_iterable_as_generic
+ hypothesis-python/tests/cover/test_lookup_py37.py::test_resolving_standard_reversible_as_generic
+ hypothesis-python/tests/cover/test_lookup_py37.py::test_resolving_standard_sequence_as_generic
+ hypothesis-python/tests/cover/test_random_module.py::test_evil_prng_registration_nonsense
+ hypothesis-python/tests/cover/test_random_module.py::test_passing_referenced_instance_within_function_scope_warns
+ hypothesis-python/tests/cover/test_random_module.py::test_register_random_within_nested_function_scope
+ hypothesis-python/tests/cover/test_random_module.py::test_registering_a_Random_is_idempotent
+ hypothesis-python/tests/cover/test_type_lookup_forward_ref.py::test_bound_missing_dot_access_forward_ref
+ hypothesis-python/tests/cover/test_type_lookup_forward_ref.py::test_bound_missing_forward_ref
+ hypothesis-python/tests/cover/test_type_lookup_forward_ref.py::test_bound_type_checking_only_forward_ref_wrong_type
+ hypothesis-python/tests/cover/test_type_lookup_forward_ref.py::test_bound_type_cheking_only_forward_ref
+ )
+ ;;
+ esac
+
+ local -x HYPOTHESIS_NO_PLUGINS=1
+ epytest -o filterwarnings= tests/{cover,pytest,quality}
+}
+
+src_install() {
+ local HAD_CLI=
+
+ distutils-r1_src_install
+
+ if [[ ! ${HAD_CLI} ]]; then
+ rm -r "${ED}/usr/bin" || die
+ fi
+}
+
+python_install() {
+ distutils-r1_python_install
+ if use cli && has "${EPYTHON}" "${CLI_COMPAT[@]/_/.}"; then
+ HAD_CLI=1
+ else
+ rm -r "${D}$(python_get_scriptdir)" || die
+ fi
+}
+
+pkg_postinst() {
+ optfeature "datetime support" dev-python/pytz
+ optfeature "dateutil support" dev-python/python-dateutil
+ optfeature "numpy support" dev-python/numpy
+ optfeature "django support" dev-python/django dev-python/pytz
+ optfeature "pandas support" dev-python/pandas
+ optfeature "pytest support" dev-python/pytest
+}
diff --git a/dev-python/inline-snapshot/Manifest b/dev-python/inline-snapshot/Manifest
index 3b3bf51cec23..707af69a87c8 100644
--- a/dev-python/inline-snapshot/Manifest
+++ b/dev-python/inline-snapshot/Manifest
@@ -1,3 +1,4 @@
DIST inline_snapshot-0.28.0.tar.gz 348554 BLAKE2B 2c475505ee76bc79e04f7b5cd5f3ca09f53858a45f31cbd14c8357c3739a13e96b52a815fd8ee94050b72ce45cc347ecc6512ef008081f20da57efddfd7a59df SHA512 144b7987800485ddcfb03f5ed70eb86fa8cdcd0eef6c1fd17d5be05ffb8c3e2cb3b5c86b9701b1dfb126a07a3146801bd9fd97aedaeda50e368e88d243b2beef
DIST inline_snapshot-0.29.1.tar.gz 350236 BLAKE2B 331d81993a2f06ecc9ec609587e0dfb28c3f8525e5faab09b5962f3cb5bcdf9e442d9908f0039715258bf9b3c0876ab1148738e909f065c04844a9e86e7ad1a3 SHA512 760cdaa4794742753efba8c47c60ecbd08bf2cac61753c3971506a12a81f991fbe3c250aaadba65c7856987de8048a5d6cb432d8909515517faa4621d71b32c4
DIST inline_snapshot-0.29.2.tar.gz 2596750 BLAKE2B 7aa549af79a6b807dac628a5d7e6ed4e0c9a8b01739db68f843af47b0ca7056d18193fb9fde2f820be7521a3288ae2c16894d07011841ac548e259d83d256427 SHA512 c2197ff1681601d19793d3db0cc577dc26c494398a85a5e08712ecd8208c74d099d7669e66cbde3b1789626331c0eb7fb3d883de31d84ad2eef5bc1d8fa5b771
+DIST inline_snapshot-0.29.3.tar.gz 2596900 BLAKE2B de126916e4413245848d467042dd6cbc79e6d43225204a2df8cb96dae0dffcc822b9e26c3024fed45ea82e90c4ef5db60b6162f073df86d4d978f388685f644f SHA512 d0a6538d1fd192e149aeb68435c2b2e2b56d2ecaba776d43d2ccebb566ab15b32ff57aacfbeaa0d941d54e4a6c1146b514f36742777ccd9636db016ed98e288b
diff --git a/dev-python/inline-snapshot/inline-snapshot-0.29.3.ebuild b/dev-python/inline-snapshot/inline-snapshot-0.29.3.ebuild
new file mode 100644
index 000000000000..dd22ca843ec0
--- /dev/null
+++ b/dev-python/inline-snapshot/inline-snapshot-0.29.3.ebuild
@@ -0,0 +1,61 @@
+# Copyright 2024-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Create and update inline snapshots in your Python tests"
+HOMEPAGE="
+ https://15r10nk.github.io/inline-snapshot/
+ https://github.com/15r10nk/inline-snapshot/
+ https://pypi.org/project/inline-snapshot/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/asttokens-2.0.5[${PYTHON_USEDEP}]
+ >=dev-python/executing-2.2.0[${PYTHON_USEDEP}]
+ >=dev-python/pytest-8.3.4[${PYTHON_USEDEP}]
+ >=dev-python/rich-13.7.1[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/attrs[${PYTHON_USEDEP}]
+ >=dev-python/black-23.3.0[${PYTHON_USEDEP}]
+ >=dev-python/dirty-equals-0.7.0[${PYTHON_USEDEP}]
+ >=dev-python/hypothesis-6.75.5[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/mypy[${PYTHON_USEDEP}]
+ ' 'python*')
+ >=dev-python/pydantic-2[${PYTHON_USEDEP}]
+ >=dev-python/pytest-freezer-0.4.8[${PYTHON_USEDEP}]
+ >=dev-python/pytest-mock-3.14.0[${PYTHON_USEDEP}]
+ >=dev-python/pytest-subtests-0.11.0[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGIN_LOAD_VIA_ENV=1
+EPYTEST_PLUGINS=( "${PN}" pytest-{freezer,mock,subtests,xdist} )
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # requires pyright
+ 'tests/test_typing.py::test_typing_args[pyright]'
+ 'tests/test_typing.py::test_typing_call[pyright]'
+ # TODO
+ tests/test_formating.py::test_format_command_fail
+ )
+
+ local -x COLUMNS=80
+ local -x PYTHONPATH=${S}/src
+ epytest
+}
diff --git a/dev-python/propcache/Manifest b/dev-python/propcache/Manifest
index 244adc493b1b..183fcc20abe1 100644
--- a/dev-python/propcache/Manifest
+++ b/dev-python/propcache/Manifest
@@ -1 +1,2 @@
DIST propcache-0.3.2.tar.gz 44139 BLAKE2B ace9070dbfceb08fcef26f01f9aab291982a3f99f1f035fb113d539a613eeeb2b69b36b197c21d733b0a4b5d73cc22180aa6aca9f3a220dbd3cd471dc57d0ee4 SHA512 d85a89dd1d34936578eb05a869e0ec07679d477c716aa047bbda00688a2926fd8a1f712c9ddec3de38faa49762941120df12ebe88dc36278f20d84ee796b91fe
+DIST propcache-0.4.0.tar.gz 45187 BLAKE2B 59d7311251420adb5da60842756ebf889d428f1a551488d9d580c0db74ad2b50389085a075852d12255175ce6736f4becfffef8d28046bb94aff51f9942d4a45 SHA512 883ba1851c8248e49ea1c4b697c06e12754d980c6ff9765350b124ed914385ce70bd061616db35a7fcb235957ac1cecad132ec51fac20e59e90c4cd65306085b
diff --git a/dev-python/propcache/propcache-0.4.0.ebuild b/dev-python/propcache/propcache-0.4.0.ebuild
new file mode 100644
index 000000000000..c1aabf98d9c8
--- /dev/null
+++ b/dev-python/propcache/propcache-0.4.0.ebuild
@@ -0,0 +1,54 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=standalone
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Yet another URL library"
+HOMEPAGE="
+ https://github.com/aio-libs/propcache/
+ https://pypi.org/project/propcache/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="+native-extensions"
+
+BDEPEND="
+ native-extensions? (
+ dev-python/cython[${PYTHON_USEDEP}]
+ )
+ dev-python/expandvars[${PYTHON_USEDEP}]
+ dev-python/setuptools[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+python_compile() {
+ local -x PROPCACHE_NO_EXTENSIONS=0
+ if ! use native-extensions || [[ ${EPYTHON} != python* ]]; then
+ PROPCACHE_NO_EXTENSIONS=1
+ fi
+ distutils-r1_python_compile
+}
+
+python_test() {
+ local EPYTEST_IGNORE=(
+ tests/test_benchmarks.py
+ )
+
+ local opts=()
+ if ! use native-extensions || [[ ${EPYTHON} != python* ]]; then
+ opts+=( --no-c-extensions )
+ fi
+
+ rm -rf propcache || die
+ epytest -o addopts= "${opts[@]}"
+}
diff --git a/dev-python/pydantic/Manifest b/dev-python/pydantic/Manifest
index d4d129e99603..e08fdccfb407 100644
--- a/dev-python/pydantic/Manifest
+++ b/dev-python/pydantic/Manifest
@@ -1,3 +1,4 @@
+DIST pydantic-2.11.10.tar.gz 788494 BLAKE2B 0fad8fa9baf40869df8ccb2715dc314ff64f7c21c20328be6b8c7387f4efbab92e681bc11660cdb321e12b462e1cd908bd0ae4c9c91b1d9a9ee6b072512badc7 SHA512 7bebff22b441bf0708457ed6b93909b4e2faaa7ff168323646bc61722fddc4497ceff8fc1759b9237a57a223f08c8ef450a0c9e062cee54e97c6ebc5f396b59a
DIST pydantic-2.11.7.tar.gz 788350 BLAKE2B 4767f593beb649fe3139f3b22e3814a9f56793494dc17428cf70952451e9112d03b275c0af979f0f0159b25deae2e2794bfdb1392e2c3499220ad3cd67945414 SHA512 54ee1a49d5a429cad31928425c197139ae3cce004d8f3530835ce39897be9afa6aea35e639af1d6290bace7148e1369ce66840e26bced329bc2e7d93b3dad6e5
DIST pydantic-2.11.8.tar.gz 788452 BLAKE2B 91c967ddf3f6ad6ec3713e1503e35d43adffc3160d9a4df2710db4ccab4c313ef8009de379473f7438d3f0ce716408b924963974d381bf27232aafb5afb960b1 SHA512 f06b821d84cecc6b1b9f364d35ae67cd79fd25dc356922d4af4418ad77dacc57ba327febc7fd33dee5cf070f8e9018ee3362c8f0aa8a5802a6af2ff327018254
DIST pydantic-2.11.9.tar.gz 788495 BLAKE2B d22e4aef09d65c30829dfb31d161c82511cc8e1a1b57dde08008462f42a23e4653979ff0578ab571314538d1267b8628bb4ab0eb4fe9af59ed2023c83f33a530 SHA512 32bcaf1de12d2df2344222389c8deefb88432886449ad52b420b4ff760b7b882522d416996fdea4d44a6cf4d24f96b2aec55d003e9772e28b2cacd654eed64fb
diff --git a/dev-python/pydantic/pydantic-2.11.10.ebuild b/dev-python/pydantic/pydantic-2.11.10.ebuild
new file mode 100644
index 000000000000..40fd6d6d2fb1
--- /dev/null
+++ b/dev-python/pydantic/pydantic-2.11.10.ebuild
@@ -0,0 +1,71 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+# py3.14: https://github.com/pydantic/pydantic/issues/11613
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Data parsing and validation using Python type hints"
+HOMEPAGE="
+ https://github.com/pydantic/pydantic/
+ https://pypi.org/project/pydantic/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/annotated-types-0.6.0[${PYTHON_USEDEP}]
+ ~dev-python/pydantic-core-2.33.2[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.12.2[${PYTHON_USEDEP}]
+ >=dev-python/typing-inspection-0.4.0[${PYTHON_USEDEP}]
+ dev-python/tzdata[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ >=dev-python/hatch-fancy-pypi-readme-22.5.0[${PYTHON_USEDEP}]
+ test? (
+ $(python_gen_cond_dep '
+ dev-python/cloudpickle[${PYTHON_USEDEP}]
+ ' 'python3*')
+ dev-python/dirty-equals[${PYTHON_USEDEP}]
+ >=dev-python/email-validator-2.0.0[${PYTHON_USEDEP}]
+ >=dev-python/faker-18.13.0[${PYTHON_USEDEP}]
+ >=dev-python/jsonschema-4.23.0[${PYTHON_USEDEP}]
+ dev-python/pytz[${PYTHON_USEDEP}]
+ dev-python/rich[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-mock )
+distutils_enable_tests pytest
+
+src_prepare() {
+ sed -i -e '/benchmark/d' pyproject.toml || die
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # -Werror, sigh
+ tests/test_types_typeddict.py::test_readonly_qualifier_warning
+ )
+ local EPYTEST_IGNORE=(
+ # require pytest-examples
+ tests/test_docs.py
+ # benchmarks
+ tests/benchmarks
+ )
+
+ if ! has_version "dev-python/cloudpickle[${PYTHON_USEDEP}]"; then
+ EPYTEST_IGNORE+=(
+ tests/test_pickle.py
+ )
+ fi
+
+ epytest
+}
diff --git a/dev-python/pygithub/Manifest b/dev-python/pygithub/Manifest
index 4d14f348f2de..6522c1481b66 100644
--- a/dev-python/pygithub/Manifest
+++ b/dev-python/pygithub/Manifest
@@ -1,3 +1 @@
-DIST pygithub-2.6.1.tar.gz 3659473 BLAKE2B b76acfe675de3a50dac235ec656e9bef01073aa470812af60ff1d1a3863b9b3c29ff85c05da5aa2b64ee722ad024be2e0e4c1109ddd1d0eb9b3f69c035a63a90 SHA512 884791ebab23bb98d2006592621a4fb2e207a63f2953a590ab653974c3e41c5a95aa5448468763d50125c2b378aaddb304e1b1f9824b9ed4360628f8b79ce6db
-DIST pygithub-2.7.0.tar.gz 3707928 BLAKE2B 9b256c33c7c909ed687950d1b5389bebee949be781822ae5cfc772d45095a5b677128eb4e98c2902fc5a36e615d97c8310c1f130ac88a70f83659644f68b9fee SHA512 b0d43f526e1c2cbdbec96793c0495ba80ad0c408c0afe384a3dad6760440a10fa4dd9991a344d5be24be1d071b357880f710167c41db371506341cd17388b3fa
DIST pygithub-2.8.1.tar.gz 2246994 BLAKE2B 6d54d87abdf20d4068efaff9117e005d970f2d60d52bc3d9d985ef4616004e09c72f27c870b89f506246af7cb9a73c5b9f1b2853e5f980f8f59e6e1f99e2594c SHA512 87724ebb922fe35867a23a56c59cc6fc56fd2a4c24129ebfdd06683797aa8398e68379b42a6fb73ebb0dae5e2e403cf9fb518c5738f156e40a76bea6661c2192
diff --git a/dev-python/pygithub/pygithub-2.6.1.ebuild b/dev-python/pygithub/pygithub-2.6.1.ebuild
deleted file mode 100644
index b044d555f8bb..000000000000
--- a/dev-python/pygithub/pygithub-2.6.1.ebuild
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYPI_PN=PyGithub
-PYTHON_COMPAT=( python3_{9,10,11,12,13} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Python library to access the Github API v3"
-HOMEPAGE="
- https://github.com/PyGithub/PyGithub/
- https://pypi.org/project/PyGithub/
-"
-
-LICENSE="LGPL-3+"
-SLOT="0"
-KEYWORDS="amd64 arm64 x86"
-
-# cryptography via pyjwt[crypto]
-RDEPEND="
- dev-python/cryptography[${PYTHON_USEDEP}]
- dev-python/deprecated[${PYTHON_USEDEP}]
- >=dev-python/pyjwt-2.4.0[${PYTHON_USEDEP}]
- >=dev-python/pynacl-1.4.0[${PYTHON_USEDEP}]
- >=dev-python/requests-2.14.0[${PYTHON_USEDEP}]
- >=dev-python/typing-extensions-4.0.0[${PYTHON_USEDEP}]
-"
-BDEPEND="
- dev-python/setuptools-scm[${PYTHON_USEDEP}]
- test? (
- dev-python/responses[${PYTHON_USEDEP}]
- >=dev-python/pytest-subtests-0.11.0[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_tests pytest
-
-python_test() {
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
- epytest
-}
diff --git a/dev-python/pygithub/pygithub-2.7.0.ebuild b/dev-python/pygithub/pygithub-2.7.0.ebuild
deleted file mode 100644
index 1f1e8af0e93a..000000000000
--- a/dev-python/pygithub/pygithub-2.7.0.ebuild
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYPI_PN=PyGithub
-PYTHON_COMPAT=( python3_{11..14} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Python library to access the Github API v3"
-HOMEPAGE="
- https://github.com/PyGithub/PyGithub/
- https://pypi.org/project/PyGithub/
-"
-
-LICENSE="LGPL-3+"
-SLOT="0"
-KEYWORDS="amd64 arm64 x86"
-
-# cryptography via pyjwt[crypto]
-RDEPEND="
- dev-python/cryptography[${PYTHON_USEDEP}]
- >=dev-python/pyjwt-2.4.0[${PYTHON_USEDEP}]
- >=dev-python/pynacl-1.4.0[${PYTHON_USEDEP}]
- >=dev-python/requests-2.14.0[${PYTHON_USEDEP}]
- >=dev-python/typing-extensions-4.5.0[${PYTHON_USEDEP}]
-"
-BDEPEND="
- dev-python/setuptools-scm[${PYTHON_USEDEP}]
- test? (
- dev-python/responses[${PYTHON_USEDEP}]
- >=dev-python/pytest-subtests-0.11.0[${PYTHON_USEDEP}]
- )
-"
-
-EPYTEST_PLUGINS=()
-distutils_enable_tests pytest
diff --git a/dev-python/pygithub/pygithub-2.8.1.ebuild b/dev-python/pygithub/pygithub-2.8.1.ebuild
index 9e0cc3d38e61..3432bb2a3538 100644
--- a/dev-python/pygithub/pygithub-2.8.1.ebuild
+++ b/dev-python/pygithub/pygithub-2.8.1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="LGPL-3+"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~x86"
+KEYWORDS="amd64 arm64 x86"
# cryptography via pyjwt[crypto]
RDEPEND="
diff --git a/dev-python/rich-click/Manifest b/dev-python/rich-click/Manifest
index 262afc1e37a6..4e245a5d4de0 100644
--- a/dev-python/rich-click/Manifest
+++ b/dev-python/rich-click/Manifest
@@ -1,2 +1,3 @@
DIST rich-click-1.8.9.gh.tar.gz 8142387 BLAKE2B de7aa54989747d47c2d147cec8235c4619a90b5a536266dbf2f499f704c3671bb4697bbcb23b0d0827caaf52d65dd29157f01918d29abc9c469fdd6c84af0c84 SHA512 6655ee3ac54fdae5a1221ef2ceaae35aa2ed8381c29f9808bb852d0790426a90d1fcb1a82faa61a22112946b988f891fc76dc3976ae756702458c547d7014745
DIST rich-click-1.9.1.gh.tar.gz 8522706 BLAKE2B 51568fb38662585569032b0e2b1cf2c0d7e20d21402cbd571fb51d61f69d96589e5a3fe983266dcd5245b020d83d50422c86ef1af1d10833f04677abc2afb359 SHA512 f1de1dadc261aa38b017752a77d8bd63fb2c74ef01d744d3557a6fae9372731e51b7c5805a34cb4f323fffaa7a990ed19ac035d1c5e3c4984c3a2e8b6c9e6e7c
+DIST rich-click-1.9.2.gh.tar.gz 8523167 BLAKE2B 85b24d86996919f8a1dbc68c5c73b0446d5b54dbe4b6709054a79c6fa640d1b87b0cab41e67fa37dacd525efa8b0898f2b3d380beee8942a26496d440f86aedf SHA512 36775ca1e172320f5923076230d6bbd954ae63f668b2c4f89caa7412a91bb2f68ca09686280cd13bd9a488ac20e0eb50dd942efdcc82c196c3d650ca32958387
diff --git a/dev-python/rich-click/rich-click-1.9.2.ebuild b/dev-python/rich-click/rich-click-1.9.2.ebuild
new file mode 100644
index 000000000000..5932335545b0
--- /dev/null
+++ b/dev-python/rich-click/rich-click-1.9.2.ebuild
@@ -0,0 +1,41 @@
+# Copyright 2024-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+inherit distutils-r1
+
+DESCRIPTION="Format click help output nicely with rich"
+HOMEPAGE="
+ https://pypi.org/project/rich-click/
+ https://github.com/ewels/rich-click/
+"
+SRC_URI="
+ https://github.com/ewels/${PN}/archive/refs/tags/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64"
+
+RDEPEND="
+ >=dev-python/click-8[${PYTHON_USEDEP}]
+ >=dev-python/rich-12[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ >=dev-python/packaging-25[${PYTHON_USEDEP}]
+ >=dev-python/typer-0.15[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( inline-snapshot )
+distutils_enable_tests pytest
+
+python_test() {
+ epytest -o addopts=
+}
diff --git a/dev-python/uv-build/Manifest b/dev-python/uv-build/Manifest
index 8e8dde22a749..45668b049a2b 100644
--- a/dev-python/uv-build/Manifest
+++ b/dev-python/uv-build/Manifest
@@ -5,4 +5,5 @@ DIST uv_build-0.8.18.tar.gz 330099 BLAKE2B 7a9a144aeae7ab2d9f458d10c2b8786f4d5e2
DIST uv_build-0.8.19.tar.gz 331154 BLAKE2B 45d594ced0dd59efc9efdb48c2c412d8e619b7fb1b2dbe74e172bae736d35c9ac920763479ba78d7ff60f0f5dddeb75b15b1dbadcf15d10e7c28c17e92971c83 SHA512 91b7b31c5d42b59869b7fe282ee4a5410512a756df90ea68d46015aef950e21c1a61218b75e3d5f9b38cd84b84e99ee0b314943e85344fb00978885ab11e9483
DIST uv_build-0.8.20.tar.gz 331116 BLAKE2B 0089f4c645a0ddcbf9661c67108f10b72bfe0ab26f096f1176d24f51f88c2ef1f1947329274dbbe367dfe4d1f6d0066a66befbc37ceb184d27609702745b2fa4 SHA512 d13b53e71ea1805fc9530045e52300ce6a06a1d77f41d8f3ab47d0ac1d459d22ce3b5323cf4543a6fb251543821d367c24aeba108fea09de651f84fb78149804
DIST uv_build-0.8.22.tar.gz 332850 BLAKE2B c3c48c77ecbe53a66f48077143e49ec61af92583618934abb11ef492e29a81759300f3bf7f01ae5cbc986dc1cc77568fd7f30607868f5d8d6dca237379ea7b2d SHA512 eb08f61551bdb4a79ff8978e2008ba160731c477d8e71a6a92266425640e7e053f44970ac6d8119e80b03cda803081ef81758885d5af7d88f9efef818f820340
+DIST uv_build-0.8.23.tar.gz 332290 BLAKE2B 06b569c7ce774476e3e24eb0e4cf8f9f30d590f084df02b88172b19dbe374338003fd912e5ce845a91bc6f4871991d4cd34c551a39a615dc2ecebaf6780726a2 SHA512 3cc9bb53e60e09c7450630f09042ba07bbb61c1ad2731566e57a1d9e157b68a882d53a66bb8b088101c48eb89b4411a55eb96c0969a18c325db79a37e02dba9c
DIST uv_build-0.8.6.tar.gz 318772 BLAKE2B faf4f36b32cf308d3c70d52b84bd135d108db4018bc4c7eadf193448e422fe8b0deb1cf68f7264413152697708f9a15748a017d0ece151c19c1677916b3727b9 SHA512 da83c3ba7f2daa1c39a8bac5b18635eff4afc93460ea23b770518ebaf44bef573654e272c117e257f4126124c71a5b661f2751ff36be792c03ee28f257d1eddc
diff --git a/dev-python/uv-build/uv-build-0.8.23.ebuild b/dev-python/uv-build/uv-build-0.8.23.ebuild
new file mode 100644
index 000000000000..d75c0bd44a9f
--- /dev/null
+++ b/dev-python/uv-build/uv-build-0.8.23.ebuild
@@ -0,0 +1,99 @@
+# Copyright 2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# Maturin compiles uv-build executable for every impl, we do not want
+# that, so we use another backend. And since we use another backend,
+# why not dogfood it in the first place?
+DISTUTILS_USE_PEP517=standalone
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+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 ~arm64 ~ppc ~ppc64 ~riscv"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-python/uv-${PV}
+"
+BDEPEND="
+ test? (
+ app-arch/unzip
+ dev-python/build[${PYTHON_USEDEP}]
+ )
+"
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # use the executable from dev-python/uv instead of building
+ # a largely overlapping uv-build executable (at least for now)
+ sed -i -e '/USE_UV_EXECUTABLE/s:False:True:' python/uv_build/__init__.py || die
+
+ # replace the build-system section
+ sed -i -e '/\[build-system\]/,$d' pyproject.toml || die
+ cat >> pyproject.toml <<-EOF || die
+ [build-system]
+ requires = ["uv_build<9999"]
+ build-backend = "uv_build"
+ backend-path = ["src"]
+ EOF
+
+ # rename to make uv-build find it
+ mv python src || die
+}
+
+python_test() {
+ "${EPYTHON}" -m build -n || die "Self-build failed with ${EPYTHON}"
+
+ local zip_result=$(
+ unzip -t "dist/uv_build-${PV}-py3-none-any.whl" || die
+ )
+ local zip_expected="\
+Archive: dist/uv_build-${PV}-py3-none-any.whl
+ testing: uv_build/ OK
+ testing: uv_build/__init__.py OK
+ testing: uv_build/__main__.py OK
+ testing: uv_build/py.typed OK
+ testing: uv_build-${PV}.dist-info/ OK
+ testing: uv_build-${PV}.dist-info/WHEEL OK
+ testing: uv_build-${PV}.dist-info/METADATA OK
+ testing: uv_build-${PV}.dist-info/RECORD OK
+No errors detected in compressed data of dist/uv_build-${PV}-py3-none-any.whl.\
+"
+ if [[ ${zip_result} != ${zip_expected} ]]; then
+ eerror ".zip result:\n${zip_result}"
+ eerror ".zip expected:\n${zip_expected}"
+ die ".whl result mismatch"
+ fi
+
+ local tar_result=$(
+ tar -tf "dist/uv_build-${PV}.tar.gz" || die
+ )
+ local tar_expected="\
+uv_build-${PV}/PKG-INFO
+uv_build-${PV}/
+uv_build-${PV}/README.md
+uv_build-${PV}/pyproject.toml
+uv_build-${PV}/src
+uv_build-${PV}/src/uv_build
+uv_build-${PV}/src/uv_build/__init__.py
+uv_build-${PV}/src/uv_build/__main__.py
+uv_build-${PV}/src/uv_build/py.typed\
+"
+ if [[ ${tar_result} != ${tar_expected} ]]; then
+ eerror ".tar.gz result:\n${tar_result}"
+ eerror ".tar.gz expected:\n${tar_expected}"
+ die ".tar.gz result mismatch"
+ fi
+}
diff --git a/dev-python/uv/Manifest b/dev-python/uv/Manifest
index ff867350784f..4a45e5800090 100644
--- a/dev-python/uv/Manifest
+++ b/dev-python/uv/Manifest
@@ -16,5 +16,7 @@ DIST uv-0.8.20-crates.tar.xz 45310716 BLAKE2B 4fe01bda1fe2c879742433bfedbc459fb9
DIST uv-0.8.20.gh.tar.gz 4702175 BLAKE2B ffb1898d1acd59fe9befd2ae2842d133619b9d9ec2e114b5332848b0155ebc065589951363df167f1b2e8dc48fe103fd97da8542a5e1a551d6938635fcb628c5 SHA512 80e6566b8152b5f2eff8f1f8991ed4f62465670aa5a179dc055fa8395968581369ebd9289000b934c28e395b39185ea18d705066016ea969abbbe42985064668
DIST uv-0.8.22-crates.tar.xz 45793452 BLAKE2B ff9678899b1fd3a3d5cc34599ea1631dddd64485cb65506d066db7c960798b1e5bf36ef007fc54ba262d4496f4c87301a51cfc70a854ab3d00b20dbcb68ff1c2 SHA512 6e144acea42db2fd8e3922bb23d42be4fb82706a44a6da66c7bb47d360a53ea90f0b073f23893095a3893a0ca61ea053eee6d878b87bf3664abd601e38c1ec2c
DIST uv-0.8.22.gh.tar.gz 4707422 BLAKE2B f205c01e46f2e638c125f2ce3e97fdcb761e9fdc9993b8cddcb41dc1ccda1785d013c6c30992760f1a0929d1a0bfe30711325e55f9051fb3eb731c284ecfb693 SHA512 625d5bf4a824ed785f819fded89f980e50d7a393a537b8ac4f75f3c1985d51e57e8e982960441029e526ffa09a63781262567c336615444309ffef300d90e1dd
+DIST uv-0.8.23-crates.tar.xz 45766372 BLAKE2B 2637a9fe79fb647b74c8666b4574a94a98873e3d82d192fd941ad4e8cade231ff8251830dc6273a4355abc03cc8ac231d96125bef786f54b665068a13d5454a3 SHA512 df4b95502004d2bdec5ec3ee40e6ee8fef9b1744e4cf6c8944cff533f65a7edc4f9fa4988d768f85fbaf025b1dd2d2bb24bab903d7673247fad86741afa646f9
+DIST uv-0.8.23.gh.tar.gz 4713451 BLAKE2B 0315ebd13331e1b48a469e6bb0e470db75c0d9d3ed6349d3318a533494dc716789386e5ebae3141b2d7fe5d41987f97f9cc9273b2800409bd6ececb2aa25dc6b SHA512 b8fc563ee0bf69fbd809e140b28657e9cbc93233ae7d04cf8b852b3aa3be2ea636c5ae24649ea36cc5e95e6089a4c5400dcf088327a71225b7677b9622e315a7
DIST uv-0.8.6-crates.tar.xz 46208952 BLAKE2B f9557a45fbfaa9d6006f935629130960b5d414cd185d7fbdb1415e7f3875568d07ade946a0b606712e9e2e06e7964bb0fb8318e02e78609899a852ed073b87a6 SHA512 c79fa70a6a670dc2d80efbf0b51942806b2b16ab7b4c63983ab634453ab32142322302bd68ab80f5bcfee08138bca8d04a7d152c76ca5d94bfc40255cab8477b
DIST uv-0.8.6.gh.tar.gz 4255911 BLAKE2B 198ed83cb487f25a35957959bca32f98b8f5343712a7a9bbf3f817f189f1ec9c7903fa2e64ec65c9b3e18a469506c942ebb0ca50b39a353dc7e82228386fb69c SHA512 d164488e967364d254bab989933a5faf27c52c91da1bdeb6f3419fce335dfac5d4ea6cd717cac6b05fee9f85605cf21930c3d37119c49a98cb13c53d51ea996d
diff --git a/dev-python/uv/uv-0.8.23.ebuild b/dev-python/uv/uv-0.8.23.ebuild
new file mode 100644
index 000000000000..5c9e7094598b
--- /dev/null
+++ b/dev-python/uv/uv-0.8.23.ebuild
@@ -0,0 +1,183 @@
+# Copyright 2024-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+CRATES="
+"
+RUST_MIN_VER="1.88.0"
+
+declare -A GIT_CRATES=(
+ [async_zip]='https://github.com/astral-sh/rs-async-zip;285e48742b74ab109887d62e1ae79e7c15fd4878;rs-async-zip-%commit%'
+ [pubgrub]='https://github.com/astral-sh/pubgrub;d8efd77673c9a90792da9da31b6c0da7ea8a324b;pubgrub-%commit%'
+ [reqwest-middleware]='https://github.com/astral-sh/reqwest-middleware;7650ed76215a962a96d94a79be71c27bffde7ab2;reqwest-middleware-%commit%/reqwest-middleware'
+ [reqwest-retry]='https://github.com/astral-sh/reqwest-middleware;7650ed76215a962a96d94a79be71c27bffde7ab2;reqwest-middleware-%commit%/reqwest-retry'
+ [tl]='https://github.com/astral-sh/tl;6e25b2ee2513d75385101a8ff9f591ef51f314ec;tl-%commit%'
+ [version-ranges]='https://github.com/astral-sh/pubgrub;d8efd77673c9a90792da9da31b6c0da7ea8a324b;pubgrub-%commit%/version-ranges'
+)
+
+inherit cargo check-reqs
+
+CRATE_PV=${PV}
+DESCRIPTION="A Python package installer and resolver, written in Rust"
+HOMEPAGE="
+ https://github.com/astral-sh/uv/
+ https://pypi.org/project/uv/
+"
+# pypi sdist misses scripts/, needed for tests
+SRC_URI="
+ https://github.com/astral-sh/uv/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+ ${CARGO_CRATE_URIS}
+"
+if [[ ${PKGBUMPING} != ${PVR} ]]; then
+ SRC_URI+="
+ https://github.com/gentoo-crate-dist/uv/releases/download/${CRATE_PV}/uv-${CRATE_PV}-crates.tar.xz
+ "
+fi
+
+# most of the code
+LICENSE="|| ( Apache-2.0 MIT )"
+# crates/pep508-rs is || ( Apache-2.0 BSD-2 ) which is covered below
+# Dependent crate licenses
+LICENSE+="
+ 0BSD Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD-2 BSD CC0-1.0
+ CDLA-Permissive-2.0 ISC MIT MPL-2.0 Unicode-3.0 Unicode-DFS-2016
+ ZLIB
+"
+# ring crate
+LICENSE+=" openssl"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
+IUSE="test"
+RESTRICT="test"
+PROPERTIES="test_network"
+
+DEPEND="
+ app-arch/bzip2:=
+ app-arch/xz-utils:=
+ app-arch/zstd:=
+"
+RDEPEND="
+ ${DEPEND}
+"
+BDEPEND="
+ test? (
+ dev-lang/python:3.9
+ dev-lang/python:3.10
+ dev-lang/python:3.11
+ dev-lang/python:3.12
+ dev-lang/python:3.13
+ !!~dev-python/uv-0.5.0
+ )
+"
+
+QA_FLAGS_IGNORED="usr/bin/.*"
+
+check_space() {
+ local CHECKREQS_DISK_BUILD=3G
+ use debug && CHECKREQS_DISK_BUILD=9G
+ check-reqs_pkg_setup
+}
+
+pkg_pretend() {
+ check_space
+}
+
+pkg_setup() {
+ check_space
+ rust_pkg_setup
+}
+
+src_prepare() {
+ default
+
+ # replace upstream crate substitution with our crate substitution, sigh
+ local pkg
+ for pkg in reqwest-middleware reqwest-retry; do
+ local dep=$(grep "^${pkg}" "${ECARGO_HOME}"/config.toml || die)
+ sed -i -e "/\[patch\.crates-io\]/,\$s;^${pkg}.*$;${dep};" Cargo.toml || die
+ done
+
+ # force thin lto, makes build much faster and less memory hungry
+ # (i.e. makes it possible to actually build uv on 32-bit PPC)
+ sed -i -e '/lto/s:fat:thin:' Cargo.toml || die
+
+ # enable system libraries where supported
+ export ZSTD_SYS_USE_PKG_CONFIG=1
+ # TODO: unbundle libz-ng-sys, tikv-jemalloc-sys?
+
+ # remove unbundled sources, just in case
+ find "${ECARGO_VENDOR}"/{bzip2,lzma,zstd}-sys-*/ -name '*.c' -delete || die
+
+ # bzip2-sys requires a pkg-config file
+ # https://github.com/alexcrichton/bzip2-rs/issues/104
+ mkdir "${T}/pkg-config" || die
+ export PKG_CONFIG_PATH=${T}/pkg-config${PKG_CONFIG_PATH+:${PKG_CONFIG_PATH}}
+ cat >> "${T}/pkg-config/bzip2.pc" <<-EOF || die
+ Name: bzip2
+ Version: 9999
+ Description:
+ Libs: -lbz2
+ EOF
+}
+
+src_configure() {
+ local myfeatures=(
+ git
+ pypi
+ python
+ )
+
+ cargo_src_configure --no-default-features
+}
+
+src_compile() {
+ cd crates/uv || die
+ cargo_src_compile
+}
+
+src_test() {
+ # work around https://github.com/astral-sh/uv/issues/4376
+ local -x PATH=${BROOT}/usr/lib/python-exec/python3.12:${PATH}
+ local -x COLUMNS=100
+ local -x PYTHONDONTWRITEBYTECODE=
+ # fix tests failing because of our config
+ local -x XDG_CONFIG_DIRS=${T}
+
+ cd crates/uv || die
+ cargo_src_test --no-fail-fast
+}
+
+src_install() {
+ cd crates/uv || die
+ cargo_src_install
+
+ insinto /etc/xdg/uv
+ newins - uv.toml <<-EOF || die
+ # These defaults match Fedora, see:
+ # https://src.fedoraproject.org/rpms/uv/pull-request/18
+
+ # By default ("automatic"), uv downloads missing Python versions
+ # automatically and keeps them in the user's home directory.
+ # Disable that to make downloading opt-in, and especially
+ # to avoid unnecessarily fetching custom Python when the distro
+ # package would be preferable. Python builds can still be
+ # downloaded manually via "uv python install".
+ #
+ # https://docs.astral.sh/uv/reference/settings/#python-downloads
+ python-downloads = "manual"
+
+ # By default ("managed"), uv always prefers self-installed
+ # Python versions over the system Python, independently
+ # of versions. Since we generally expect users to use that
+ # to install old Python versions not in ::gentoo anymore,
+ # this effectively means that uv would end up preferring very
+ # old Python versions over the newer ones that are provided
+ # by the system. Default to using the system versions to avoid
+ # this counter-intuitive behavior.
+ #
+ # https://docs.astral.sh/uv/reference/settings/#python-preference
+ python-preference = "system"
+ EOF
+}
diff --git a/dev-python/zeroconf/Manifest b/dev-python/zeroconf/Manifest
index a13b611ef03e..8f6b6224957f 100644
--- a/dev-python/zeroconf/Manifest
+++ b/dev-python/zeroconf/Manifest
@@ -1,3 +1,5 @@
DIST zeroconf-0.147.0.tar.gz 163958 BLAKE2B a706012207fc7b1b2a74dddb29729de1180f6025dfd19c59d06494fe62a66127231c96b3df49d10d55fb8b3d09bec78959092bd1b6cd68a4d6ea5c553a98579d SHA512 930902ea04f030bb557b9c2788c7c369d6f65c92b214bb094955e66868187ce8c8341b5a67382df2ddc42b769701b553bdb3b89871557bc9f2cc681fbe1ccc07
DIST zeroconf-0.147.2.tar.gz 164391 BLAKE2B 8d8d273c4ea768b25834481b4cc3b245cd92cf9a04da723fbfe245fb7b516f39e44467edfb2be924e5a26b765f159e35b78da0c3aa8118082e4f4c10fc9929bb SHA512 ee327e3d53ab75f316a2ebaaed42be52395d9f4d4252b90dead6dea59234d0cbf5769efbef35aaef8056b40e9c637506a822977635b716f49be0c594badb506a
DIST zeroconf-0.147.2.tar.gz.provenance 9593 BLAKE2B 4b97498d0e6014f18248fd3de3a608c376556ee3e1b99aa1012097ab84240f7c495f011a510c007600c535187c32937a6b161251aa0721dba3bc784fcb981239 SHA512 29c9659cd6185a55c3c824fa2d275b7f2f30b4913c477f1dfe9d6a1ac9a2a346a281bcc48baba8e2fb8d0e00925d1470f0e9101456b8af8a95b752cb8f1e8f99
+DIST zeroconf-0.148.0.tar.gz 164447 BLAKE2B 7ef17f3b028dc19fba09e6566f7a123114cf6e738c9237a4169a76748e01c817769e28185e6649b47ceb8cc4ae30156ce72eac6c42949efa6d7b672b18fe9461 SHA512 d3b88b9a3e86db172f78534c11677166b05ec770924d926258972f18edf2f3e2149abbcf8984e7b53b606866742fdda2b50839cdb0f69e429b58eb1813d20539
+DIST zeroconf-0.148.0.tar.gz.provenance 9736 BLAKE2B 6d55cd6ff39ed897e499ada05f1c1fe069a621229bfd4c01852d7e655519390357c655a70f2099d9fa1f69429e03950c6dbb2e8bb9d7c552a35bfb70c8233050 SHA512 64886abc8f42435f7d75ddbda25a2690fd7a43c8c1576f0f02ff4e46879f2298c013dfcdb4731ad274e9b4fb5a884b57504f8e6ebf3963f17931e583bd22b4a8
diff --git a/dev-python/zeroconf/zeroconf-0.148.0.ebuild b/dev-python/zeroconf/zeroconf-0.148.0.ebuild
new file mode 100644
index 000000000000..5253bee3bcf2
--- /dev/null
+++ b/dev-python/zeroconf/zeroconf-0.148.0.ebuild
@@ -0,0 +1,69 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=poetry
+PYPI_VERIFY_REPO=https://github.com/python-zeroconf/python-zeroconf
+PYTHON_COMPAT=( python3_{11..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Pure Python Multicast DNS Service Discovery Library (Bonjour/Avahi compatible)"
+HOMEPAGE="
+ https://github.com/python-zeroconf/python-zeroconf/
+ https://pypi.org/project/zeroconf/
+"
+
+LICENSE="LGPL-2.1+"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86 ~amd64-linux ~x86-linux"
+IUSE="+native-extensions"
+
+RDEPEND="
+ >=dev-python/ifaddr-0.1.7[${PYTHON_USEDEP}]
+"
+# the build system uses custom build script that uses distutils to build
+# C extensions, sigh
+BDEPEND="
+ native-extensions? (
+ >=dev-python/cython-3.0.8[${PYTHON_USEDEP}]
+ )
+ >=dev-python/setuptools-65.6.3[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=( pytest-asyncio )
+distutils_enable_tests pytest
+
+python_compile() {
+ if use native-extensions; then
+ local -x REQUIRE_CYTHON=1
+ else
+ local -x SKIP_CYTHON=1
+ fi
+
+ distutils-r1_python_compile
+}
+
+python_test() {
+ local -x SKIP_IPV6=1
+ local EPYTEST_DESELECT=(
+ # network
+ tests/test_core.py::Framework::test_close_multiple_times
+ tests/test_core.py::Framework::test_launch_and_close
+ tests/test_core.py::Framework::test_launch_and_close_context_manager
+
+ # fragile to timeouts (?)
+ tests/services/test_browser.py::test_service_browser_expire_callbacks
+ tests/utils/test_asyncio.py::test_run_coro_with_timeout
+
+ # randomly broken by a leftover thread?
+ tests/test_circular_imports.py::test_circular_imports
+ )
+ local EPYTEST_IGNORE=(
+ tests/benchmarks
+ )
+
+ epytest -o addopts=
+}