summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
authorLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2024-07-24 18:35:08 +0000
committerLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2024-07-24 18:35:08 +0000
commitbaf8c6e80dc6cba501563da7a4b310134a76a65e (patch)
tree84f4ed9b92ddad768436305a6732d235e5b40ee0 /dev-python
parent167d7fd4abfaf9ec8eab3063904e4b30c161dccd (diff)
downloadbaldeagleos-repo-baf8c6e80dc6cba501563da7a4b310134a76a65e.tar.gz
baldeagleos-repo-baf8c6e80dc6cba501563da7a4b310134a76a65e.tar.xz
baldeagleos-repo-baf8c6e80dc6cba501563da7a4b310134a76a65e.zip
Adding metadata
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/Nuitka/Manifest1
-rw-r--r--dev-python/Nuitka/Nuitka-2.4.2.ebuild52
-rw-r--r--dev-python/PyQt6/PyQt6-6.7.0.ebuild2
-rw-r--r--dev-python/PyQt6/PyQt6-6.7.1-r1.ebuild (renamed from dev-python/PyQt6/PyQt6-6.7.1.ebuild)2
-rw-r--r--dev-python/aiodns/aiodns-3.2.0.ebuild2
-rw-r--r--dev-python/aiohttp/Manifest1
-rw-r--r--dev-python/aiohttp/aiohttp-3.10.0_beta1.ebuild110
-rw-r--r--dev-python/boto3/Manifest1
-rw-r--r--dev-python/boto3/boto3-1.34.147.ebuild53
-rw-r--r--dev-python/botocore/Manifest1
-rw-r--r--dev-python/botocore/botocore-1.34.147.ebuild76
-rw-r--r--dev-python/braintree/Manifest1
-rw-r--r--dev-python/braintree/braintree-4.29.0.ebuild39
-rw-r--r--dev-python/croniter/Manifest1
-rw-r--r--dev-python/croniter/croniter-3.0.0.ebuild31
-rw-r--r--dev-python/django-otp/Manifest4
-rw-r--r--dev-python/django-otp/django-otp-1.3.0.ebuild43
-rw-r--r--dev-python/django-otp/django-otp-1.4.1.ebuild43
-rw-r--r--dev-python/django-otp/django-otp-1.5.1.ebuild (renamed from dev-python/django-otp/django-otp-1.4.0.ebuild)7
-rw-r--r--dev-python/hidapi/Manifest1
-rw-r--r--dev-python/hidapi/hidapi-0.14.0_p2.ebuild43
-rw-r--r--dev-python/huawei-lte-api/Manifest1
-rw-r--r--dev-python/huawei-lte-api/huawei-lte-api-1.8.1.ebuild40
-rw-r--r--dev-python/importlib-metadata/Manifest1
-rw-r--r--dev-python/importlib-metadata/importlib-metadata-8.1.0.ebuild51
-rw-r--r--dev-python/langdetect/Manifest2
-rw-r--r--dev-python/langdetect/files/langdetect-1.0.9-explicit-config.patch13
-rw-r--r--dev-python/langdetect/langdetect-1.0.9.ebuild4
-rw-r--r--dev-python/langdetect/metadata.xml10
-rw-r--r--dev-python/mkdocs-material/Manifest1
-rw-r--r--dev-python/mkdocs-material/mkdocs-material-9.5.30.ebuild67
-rw-r--r--dev-python/pikepdf/Manifest1
-rw-r--r--dev-python/pikepdf/pikepdf-9.1.0.ebuild74
-rw-r--r--dev-python/plotly/Manifest1
-rw-r--r--dev-python/plotly/files/plotly-5.23.0-numpy-2.patch87
-rw-r--r--dev-python/plotly/plotly-5.23.0.ebuild116
-rw-r--r--dev-python/pycares/pycares-4.4.0.ebuild2
-rw-r--r--dev-python/pygdbmi/pygdbmi-0.11.0.0.ebuild2
-rw-r--r--dev-python/pyspnego/Manifest1
-rw-r--r--dev-python/pyspnego/pyspnego-0.11.1.ebuild38
-rw-r--r--dev-python/pytest-import-check/pytest-import-check-0.0.4.ebuild2
-rw-r--r--dev-python/pytest-reserial/Manifest1
-rw-r--r--dev-python/pytest-reserial/pytest-reserial-0.4.2.ebuild26
-rw-r--r--dev-python/pytest-subprocess/Manifest2
-rw-r--r--dev-python/pytest-subprocess/pytest-subprocess-1.5.1.ebuild51
-rw-r--r--dev-python/pytest-subprocess/pytest-subprocess-1.5.2.ebuild44
-rw-r--r--dev-python/pytools/Manifest1
-rw-r--r--dev-python/pytools/pytools-2024.1.11.ebuild33
-rw-r--r--dev-python/selenium/Manifest2
-rw-r--r--dev-python/selenium/selenium-4.23.1-r1.ebuild135
-rw-r--r--dev-python/selenium/selenium-4.23.1.ebuild83
-rw-r--r--dev-python/sentry-sdk/Manifest1
-rw-r--r--dev-python/sentry-sdk/sentry-sdk-2.11.0.ebuild128
-rw-r--r--dev-python/sphinx-autoapi/Manifest1
-rw-r--r--dev-python/sphinx-autoapi/sphinx-autoapi-3.2.1.ebuild50
-rw-r--r--dev-python/starlette/Manifest1
-rw-r--r--dev-python/starlette/starlette-0.38.1.ebuild61
-rw-r--r--dev-python/tifffile/Manifest1
-rw-r--r--dev-python/tifffile/tifffile-2024.7.24.ebuild47
-rw-r--r--dev-python/types-docutils/Manifest1
-rw-r--r--dev-python/types-docutils/types-docutils-0.21.0.20240724.ebuild17
-rw-r--r--dev-python/types-setuptools/Manifest1
-rw-r--r--dev-python/types-setuptools/types-setuptools-71.1.0.20240724.ebuild17
-rw-r--r--dev-python/uv/Manifest2
-rw-r--r--dev-python/uv/uv-0.2.28.ebuild109
65 files changed, 1689 insertions, 154 deletions
diff --git a/dev-python/Nuitka/Manifest b/dev-python/Nuitka/Manifest
index 9489d200ad4c..2fdd15af7305 100644
--- a/dev-python/Nuitka/Manifest
+++ b/dev-python/Nuitka/Manifest
@@ -1,2 +1,3 @@
DIST Nuitka-2.4.1.tar.gz 3717378 BLAKE2B bcbfb41bd2fad4a72a7d6aa8122b28ab3f35cdb815f92a5cb9037443533f1689c1efdbb84feba7f63441fc86e9f4432fdff8167008d916fb18c8206dff5f7013 SHA512 48f8ae2701ccdf5353c4c15c1bbc99166427515a90518eb99d2063d39705d11ed37eaa4238a77054a42ee45a1408a39fb008b58ac9817821e2ec2c00f4cc7916
+DIST Nuitka-2.4.2.tar.gz 3718310 BLAKE2B 266b26d8882f189ac5ec28a921a1ac8a30bc42d1ea870c3ebfba59c9c259ff246035143a13c204cb7ca4c59a457b1ece5e74bc3e7aab02546705d502cce35902 SHA512 23d2f8cea7765d8f6b5d785d2381d36c9f9b7a158d25680339f93667104af680ed0a186450c0697153e19b44e1dc77f338cb6f42db33fbc71815d675b0be75a8
DIST Nuitka-2.4.tar.gz 3718936 BLAKE2B 385a2bb2bbaa971277d7812f53d5a141a9643b0886e46e90fc3f5f8e3cb991801414ce6215a075ffe7998a99a65d534d2af16f9c4adc6c48fd8dee428461563a SHA512 c622434f48bea3d651c4720f8d22f23ec1ba680f9b58c66772a229ca1dc671a6c702d34503d4f16588008300e8e7e32a73dd51b56da1de8edbb33fde62be6053
diff --git a/dev-python/Nuitka/Nuitka-2.4.2.ebuild b/dev-python/Nuitka/Nuitka-2.4.2.ebuild
new file mode 100644
index 000000000000..35ccf652e8e3
--- /dev/null
+++ b/dev-python/Nuitka/Nuitka-2.4.2.ebuild
@@ -0,0 +1,52 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_NO_NORMALIZE=1
+PYTHON_COMPAT=( python3_{8,9,10,11,12} )
+
+inherit distutils-r1 flag-o-matic optfeature pypi
+
+DESCRIPTION="Python to native compiler"
+HOMEPAGE="
+ https://nuitka.net/
+ https://github.com/Nuitka/Nuitka/
+ https://pypi.org/project/Nuitka/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~loong ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ dev-build/scons[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ ${RDEPEND}
+ test? ( dev-util/ccache )
+"
+
+distutils-r1_src_prepare() {
+ # remove vendored version of SCons that is Python2 only
+ # this should be removed when upstream removes support for Python2
+ rm -vR "nuitka/build/inline_copy/lib/scons-2.3.2/SCons" || die
+ eapply_user
+}
+
+python_install() {
+ distutils-r1_python_install
+ doman doc/nuitka.1 doc/nuitka-run.1
+}
+
+python_test() {
+ append-ldflags -Wl,--no-warn-search-mismatch
+ ./tests/basics/run_all.py search || die
+}
+
+pkg_postinst() {
+ optfeature "support for stand-alone executables" dev-util/patchelf
+}
diff --git a/dev-python/PyQt6/PyQt6-6.7.0.ebuild b/dev-python/PyQt6/PyQt6-6.7.0.ebuild
index 6443386baeef..73e1638c62db 100644
--- a/dev-python/PyQt6/PyQt6-6.7.0.ebuild
+++ b/dev-python/PyQt6/PyQt6-6.7.0.ebuild
@@ -47,8 +47,10 @@ REQUIRED_USE="
"
# may use qt private symbols wrt qtbase's :=
+# non-trivially broken with Qt6.8 wrt upper bound, waiting for PyQt6-6.8.0
DEPEND="
>=dev-qt/qtbase-${QT_PV}=[dbus?,gles2-only=,gui?,network?,opengl?,sql?,ssl=,widgets?,xml?]
+ <dev-qt/qtbase-6.8
bluetooth? ( >=dev-qt/qtconnectivity-${QT_PV}[bluetooth] )
dbus? (
dev-python/dbus-python[${PYTHON_USEDEP}]
diff --git a/dev-python/PyQt6/PyQt6-6.7.1.ebuild b/dev-python/PyQt6/PyQt6-6.7.1-r1.ebuild
index 953ac9c851bf..3c748c407345 100644
--- a/dev-python/PyQt6/PyQt6-6.7.1.ebuild
+++ b/dev-python/PyQt6/PyQt6-6.7.1-r1.ebuild
@@ -47,8 +47,10 @@ REQUIRED_USE="
"
# may use qt private symbols wrt qtbase's :=
+# non-trivially broken with Qt6.8 wrt upper bound, waiting for PyQt6-6.8.0
DEPEND="
>=dev-qt/qtbase-${QT_PV}=[dbus?,gles2-only=,gui?,network?,opengl?,sql?,ssl=,widgets?,xml?]
+ <dev-qt/qtbase-6.8
bluetooth? ( >=dev-qt/qtconnectivity-${QT_PV}[bluetooth] )
dbus? (
dev-python/dbus-python[${PYTHON_USEDEP}]
diff --git a/dev-python/aiodns/aiodns-3.2.0.ebuild b/dev-python/aiodns/aiodns-3.2.0.ebuild
index 4001442ef553..6845030e1261 100644
--- a/dev-python/aiodns/aiodns-3.2.0.ebuild
+++ b/dev-python/aiodns/aiodns-3.2.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 ~arm64 ~riscv ~x86"
+KEYWORDS="amd64 ~arm64 ~riscv ~sparc ~x86"
# Tests fail with network-sandbox, since they try to resolve google.com
PROPERTIES="test_network"
diff --git a/dev-python/aiohttp/Manifest b/dev-python/aiohttp/Manifest
index 687f3cba9168..6c4460177310 100644
--- a/dev-python/aiohttp/Manifest
+++ b/dev-python/aiohttp/Manifest
@@ -1 +1,2 @@
+DIST aiohttp-3.10.0b1.tar.gz 7515855 BLAKE2B af9ad5ffe826f08d26ab5eaf205e1cad348dde4ee22a994ce006e2bd1031d488d5f5a9621016db59127d83845055115bda186a22ae6d607d22ec171051bcdee3 SHA512 66630c508c4dba6f0cee644181006cce0b4cc4e2a25a2304088ec4f4e9497e36bb0624a62174efb4794c112a603146b2a18c5160b7da6e8b3681aec2fde47c84
DIST aiohttp-3.9.5.tar.gz 7504841 BLAKE2B f051ee88d45952219f72d542f1c6d0cc33c699c6c5fb5dbe3bc054ee4d0e03121b219c8c8524fd1236a8b878329b0997b8afe07d6c66074102d4a2052a8738ff SHA512 da11468a2f131275593395b052700a99cf79055a32d48327dca0f58547ad30add8cd0a375dbd831e2f06fe7a739183251e4ad69c16f3d141799bbed45a8a5dc4
diff --git a/dev-python/aiohttp/aiohttp-3.10.0_beta1.ebuild b/dev-python/aiohttp/aiohttp-3.10.0_beta1.ebuild
new file mode 100644
index 000000000000..b48b3bebe19f
--- /dev/null
+++ b/dev-python/aiohttp/aiohttp-3.10.0_beta1.ebuild
@@ -0,0 +1,110 @@
+# Copyright 1999-2024 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_{8,9,10,11,12} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="HTTP client/server for asyncio"
+HOMEPAGE="
+ https://github.com/aio-libs/aiohttp/
+ https://pypi.org/project/aiohttp/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~riscv ~sparc ~x86"
+IUSE="test-rust"
+
+RDEPEND="
+ >=dev-python/aiodns-3.2.0[${PYTHON_USEDEP}]
+ >=dev-python/aiohappyeyeballs-2.3.0[${PYTHON_USEDEP}]
+ >=dev-python/aiosignal-1.1.2[${PYTHON_USEDEP}]
+ >=dev-python/attrs-17.3.0[${PYTHON_USEDEP}]
+ dev-python/brotlicffi[${PYTHON_USEDEP}]
+ >=dev-python/frozenlist-1.1.1[${PYTHON_USEDEP}]
+ >=dev-python/multidict-4.5.0[${PYTHON_USEDEP}]
+ >=dev-python/yarl-1.0[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ <dev-python/async-timeout-5[${PYTHON_USEDEP}]
+ >=dev-python/async-timeout-4.0[${PYTHON_USEDEP}]
+ ' 3.10)
+"
+BDEPEND="
+ dev-python/cython[${PYTHON_USEDEP}]
+ test? (
+ dev-python/freezegun[${PYTHON_USEDEP}]
+ www-servers/gunicorn[${PYTHON_USEDEP}]
+ dev-python/pytest-mock[${PYTHON_USEDEP}]
+ dev-python/pytest-xdist[${PYTHON_USEDEP}]
+ dev-python/re-assert[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/time-machine[${PYTHON_USEDEP}]
+ ' 'python3*')
+ test-rust? (
+ dev-python/trustme[${PYTHON_USEDEP}]
+ )
+ )
+"
+
+DOCS=( CHANGES.rst CONTRIBUTORS.txt README.rst )
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ # increase the timeout a little
+ sed -e '/abs=/s/0.001/0.01/' -i tests/test_helpers.py || die
+ # xfail_strict fails on py3.10
+ sed -i -e '/--cov/d' -e '/xfail_strict/d' setup.cfg || die
+ sed -i -e 's:-Werror::' Makefile || die
+
+ distutils-r1_src_prepare
+}
+
+python_configure_all() {
+ # workaround missing files
+ mkdir tools || die
+ > requirements/cython.txt || die
+ > tools/gen.py || die
+ chmod +x tools/gen.py || die
+ # force rehashing first
+ emake requirements/.hash/cython.txt.hash
+ > .update-pip || die
+ > .install-cython || die
+ emake cythonize
+}
+
+python_test() {
+ local EPYTEST_IGNORE=(
+ # proxy is not packaged
+ tests/test_proxy_functional.py
+ # python_on_whales is not packaged
+ tests/autobahn/test_autobahn.py
+ )
+
+ local EPYTEST_DESELECT=(
+ # Internet
+ tests/test_client_session.py::test_client_session_timeout_zero
+ # broken by irrelevant deprecation warnings
+ tests/test_circular_imports.py::test_no_warnings
+ )
+
+ case ${EPYTHON} in
+ pypy3)
+ # upstream unconditionally blocks building C extensions
+ # on PyPy3 but the test suite needs an explicit switch,
+ # sigh
+ local -x AIOHTTP_NO_EXTENSIONS=1
+ ;;
+ esac
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ local -x PYTEST_PLUGINS=pytest_mock,xdist.plugin
+ rm -rf aiohttp || die
+ epytest -m "not internal and not dev_mode"
+}
diff --git a/dev-python/boto3/Manifest b/dev-python/boto3/Manifest
index 09c3101c93ad..f65f37251ae7 100644
--- a/dev-python/boto3/Manifest
+++ b/dev-python/boto3/Manifest
@@ -2,3 +2,4 @@ DIST boto3-1.34.140.gh.tar.gz 828290 BLAKE2B 129c0f791ddc07f90d2b9ae2972839a0bca
DIST boto3-1.34.144.gh.tar.gz 840506 BLAKE2B 7fccc6ae45dec6411995795dc7dd180cec51b79f93362a221d7709f35ece2652390219d51507130fcfcedf82f0d2fa89461c112027b7d8040f84f2f907518b30 SHA512 4da24e40cb8beafd975cf21de0e548b167de59e1b47b4b005f4320d2c4cd60e0c5b72378ecdb1b21ec789b4b943df4856128890d865e0fb974a34563871a2078
DIST boto3-1.34.145.gh.tar.gz 841776 BLAKE2B e93a6c4d634c2df22ed27e58c2abe0a6cc835364b4a93c73c8c221ba39b63b89c5f3ddbf210eb90a451c9b6650061f08a173395f1fb3cd4abe8fde90347b4c63 SHA512 ebd85e3068d1ad332b2ed4c2ad45c022fadb090f8aacdcd72c0d515f91b218201afd69750281b68c909dbf2ab35bef3a39412a616f5b134780f15c0cc9854123
DIST boto3-1.34.146.gh.tar.gz 842332 BLAKE2B 1e718ca3ae9c59f8528a8e944d1a1e596a595c6ae0d1c7ec83aa47a429f03fe14f9a173772590dc1134fe64bfa471a2cfcf729db107bb19a80fa15b8d13f804a SHA512 ec1fc0bc4aa528a9f93e5ec9ce2b582b6c7c79967097f39c4eb9895486569f2953235867b7f88a593040fd614a37e05fd9d91db107e28106b6d6ff0ea1b5a0c9
+DIST boto3-1.34.147.gh.tar.gz 842874 BLAKE2B 22363cdc4acce00cce16a78a30c0121b0046f309ea9bda21a45880bf5abd19a8177ee7376393b85b3283a8a6ea27931bea21a2f97a4c59d087a4a2aff45dfc6f SHA512 90eda840237b3e968913800de4978ce6bafe3393d7076af4eacfd0851d09358859d5025daacf789b47f984a29d1036af9620f6cac9f12639a041a964ad840aee
diff --git a/dev-python/boto3/boto3-1.34.147.ebuild b/dev-python/boto3/boto3-1.34.147.ebuild
new file mode 100644
index 000000000000..509842b2699d
--- /dev/null
+++ b/dev-python/boto3/boto3-1.34.147.ebuild
@@ -0,0 +1,53 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{8,9,10,11,12} )
+
+inherit distutils-r1
+
+DESCRIPTION="The AWS SDK for Python"
+HOMEPAGE="
+ https://github.com/boto/boto3/
+ https://pypi.org/project/boto3/
+"
+SRC_URI="
+ https://github.com/boto/boto3/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux"
+
+RDEPEND="
+ >=dev-python/botocore-${PV}[${PYTHON_USEDEP}]
+ >=dev-python/jmespath-0.7.1[${PYTHON_USEDEP}]
+ >=dev-python/s3transfer-0.10.0[${PYTHON_USEDEP}]
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ # don't lock versions to narrow ranges
+ sed -e '/botocore/ d' \
+ -e '/jmespath/ d' \
+ -e '/s3transfer/ d' \
+ -i setup.py || die
+
+ # do not rely on bundled deps in botocore (sic!)
+ find -name '*.py' -exec sed -i \
+ -e 's:from botocore[.]vendored import:import:' \
+ -e 's:from botocore[.]vendored[.]:from :' \
+ {} + || die
+
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest tests/{functional,unit}
+}
diff --git a/dev-python/botocore/Manifest b/dev-python/botocore/Manifest
index 85028f0f29bc..9af5fc75d6fd 100644
--- a/dev-python/botocore/Manifest
+++ b/dev-python/botocore/Manifest
@@ -2,3 +2,4 @@ DIST botocore-1.34.140.gh.tar.gz 13156596 BLAKE2B 4a264fe767c35dcc65ddbe1eb29529
DIST botocore-1.34.144.gh.tar.gz 13221134 BLAKE2B 9b688a781ad80f294c147ce4aacc31b59ad90369722a256b934610790682fbe54fcc18bded66d3151c24335dafdcc2eecaa293a30f6715aa69ded57efacd6540 SHA512 92d96253eb62b0425d3763cd9df7f5e944e780c5694b6bad03aa1671b65a5a786b54cad037479f2e227b86b2dd33da1a10db1da1ede857378a9f9783405bb288
DIST botocore-1.34.145.gh.tar.gz 13230154 BLAKE2B ebcf6acdd7ab01bca4032eaa9bc94fd72807edb3b0ce7cdc7addc4bed9a3500627b95d95e69c3027ecb384e65d95c0955e71a0e3262d89e3e8d49eefc37e9aaf SHA512 96042253f2f5ec74b258327c3c4eb322a8ed534ac8ed78f38a5aafb3a97ce832bfe5184090a2dadd41e30b75bf35c463d8d80c3de72a46410656d62076469650
DIST botocore-1.34.146.gh.tar.gz 13225796 BLAKE2B e59b6192e4fe3e7d0305b43f869049a864909211a3a507a64bca662988c5d982c98f911e272f7928032c7a5b313b7538bd4eaac5f4a43071b5add58c07252c49 SHA512 3032c453bcaac696dfae811880a5ff036ef0f0cd47450d6509aa9f7cd45e6fab043819f73544c4de1b44e59c5e0e8d388c3e99ff9b180912a209d6c1903d737f
+DIST botocore-1.34.147.gh.tar.gz 13233174 BLAKE2B dfb8ad5f0f98bb69805cd9d229545125e0da0b7f57cea070d9c2c10ef7afdfb47deb2c9477fb0e97459b2eff31f959f57137ef210230291ea6b2d5c5b08e0252 SHA512 f0ffd3b350333cf62a1eacce0ea2c3e2a96f1d497b57cb419a539867709aceae6af615af24245659b186a8ad5c18a4f57708241b78ff077258768d8b72562ea0
diff --git a/dev-python/botocore/botocore-1.34.147.ebuild b/dev-python/botocore/botocore-1.34.147.ebuild
new file mode 100644
index 000000000000..64a61a30c80b
--- /dev/null
+++ b/dev-python/botocore/botocore-1.34.147.ebuild
@@ -0,0 +1,76 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{8,9,10,11,12} )
+
+inherit distutils-r1
+
+DESCRIPTION="Low-level, data-driven core of boto 3"
+HOMEPAGE="
+ https://github.com/boto/botocore/
+ https://pypi.org/project/botocore/
+"
+SRC_URI="
+ https://github.com/boto/botocore/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux"
+
+RDEPEND="
+ <dev-python/jmespath-2[${PYTHON_USEDEP}]
+ dev-python/python-dateutil[${PYTHON_USEDEP}]
+ >=dev-python/urllib3-1.25.4[${PYTHON_USEDEP}]
+"
+# unbundled packages
+RDEPEND+="
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/six[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/jsonschema[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ # unpin deps
+ sed -i -e "s:>=.*':':" setup.py || die
+
+ # unbundle deps
+ rm -r botocore/vendored || die
+ find -name '*.py' -exec sed -i \
+ -e 's:from botocore[.]vendored import:import:' \
+ -e 's:from botocore[.]vendored[.]:from :' \
+ {} + || die
+
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # rely on bundled six
+ tests/functional/test_six_imports.py::test_no_bare_six_imports
+ tests/functional/test_six_threading.py::test_six_thread_safety
+ )
+
+ case ${EPYTHON} in
+ python3.13)
+ EPYTEST_DESELECT+=(
+ # memory use tests, probably fragile
+ tests/functional/leak/test_resource_leaks.py::TestDoesNotLeakMemory
+ )
+ ;;
+ esac
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest tests/{functional,unit}
+}
diff --git a/dev-python/braintree/Manifest b/dev-python/braintree/Manifest
index 2d376638c749..382461784c1b 100644
--- a/dev-python/braintree/Manifest
+++ b/dev-python/braintree/Manifest
@@ -1 +1,2 @@
DIST braintree_python-4.28.0.gh.tar.gz 227282 BLAKE2B cb811005eaecb380befa99a2721f421e1a1d43417afd2ab243cc83654b2823d50d40c8780a2406c415ec54d683925d45a4900e227a3fed2d6192db80bef92a4a SHA512 872195ed3183e248f6b9127ddcbfe62f5305141806f2af31cf62425d4a76184d8ef7eab5a346818db6fdcbbc01a03979662b379fe8f7f17571d84b127dc0e3f1
+DIST braintree_python-4.29.0.gh.tar.gz 229814 BLAKE2B d4d33aaa8073ec129d4ed791912ebf1ff6ed5c602ec9c91917d493dd0060e59dcc9ae830f2efc9c009036b64bb0f55b3f4476c6c6bf91c6076c8fec9de9c042f SHA512 da2e8daba61c0a9cf76929e5edcb05859f7072e9c13b9bc97556fd370a9f7fbd396513505d3e93617132bfbbb95c6f8cfa4343072e7c16ecdcd30d8c59a7dbff
diff --git a/dev-python/braintree/braintree-4.29.0.ebuild b/dev-python/braintree/braintree-4.29.0.ebuild
new file mode 100644
index 000000000000..fd990de4bc10
--- /dev/null
+++ b/dev-python/braintree/braintree-4.29.0.ebuild
@@ -0,0 +1,39 @@
+# Copyright 2020-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{8,9,10,11,12} )
+
+inherit distutils-r1
+
+MY_P=braintree_python-${PV}
+DESCRIPTION="Braintree Python Library"
+HOMEPAGE="
+ https://developer.paypal.com/braintree/docs/reference/overview/
+ https://github.com/braintree/braintree_python/
+ https://pypi.org/project/braintree/
+"
+# no tests in sdist, as of 4.19.0
+SRC_URI="
+ https://github.com/braintree/braintree_python/archive/${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ >=dev-python/requests-0.11.0[${PYTHON_USEDEP}]
+"
+
+DOCS=( README.md )
+
+distutils_enable_tests unittest
+
+python_test() {
+ eunittest tests/unit
+}
diff --git a/dev-python/croniter/Manifest b/dev-python/croniter/Manifest
index f5aa072eb2ac..56272f7075a9 100644
--- a/dev-python/croniter/Manifest
+++ b/dev-python/croniter/Manifest
@@ -1,2 +1,3 @@
DIST croniter-2.0.5.tar.gz 47450 BLAKE2B fe7260cea5ec477cc39660af98a11b933182c08d66d696edece1b88d3b3212f3cdc82d4c750a83d9ceb03cd7d7d90ec139bcf6e737f2a2d791412f5a562b7819 SHA512 a61d98182754773e8a556d01ca1926452a392e55285ae3654a8cadce12418e665c6cadd2cdffa4a4091c341c8f0cb3180e473b6e91c928c5309a4d376c5e3560
DIST croniter-2.0.7.tar.gz 49655 BLAKE2B e3c8c8e4ce87fdbf1ed9a993069b0b27ea07192315f7d81237989b8c2c2d36e965a95f09b32dd219b6dd0a2c2bd8db253bdff81e30f192057bc509990fc32f9f SHA512 9aeb10930ce9709794dc85c873098161881334f15edb722d2cbb5314f618c61c2842191111066ed904927d9ee37bc38dc14d2a6f156c57188ad3ab57a81a8de1
+DIST croniter-3.0.0.tar.gz 52232 BLAKE2B 4f424e1063c2af7a0f3f74cecdf41322515bef86fa2fa7ce3d0d2649344561ad28cf6e4cadba1df22f4707418902eb368d5e64a896b72c05bf47d5f19f1a46a7 SHA512 1d41caa62c876288e3b0cd3bf04b2fcea28d2dd7dc314cc427e8a1b5fb89a63d4ab02e333c8a70b311297b9c8f8306660b8e0e794b0c092a830d25f9aae6ad12
diff --git a/dev-python/croniter/croniter-3.0.0.ebuild b/dev-python/croniter/croniter-3.0.0.ebuild
new file mode 100644
index 000000000000..3b0cef363bb5
--- /dev/null
+++ b/dev-python/croniter/croniter-3.0.0.ebuild
@@ -0,0 +1,31 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{8,9,10,11,12} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Python module to provide iteration for datetime object"
+HOMEPAGE="
+ https://github.com/kiorky/croniter/
+ https://pypi.org/project/croniter/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+
+RDEPEND="
+ dev-python/python-dateutil[${PYTHON_USEDEP}]
+ dev-python/pytz[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/tzlocal[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
diff --git a/dev-python/django-otp/Manifest b/dev-python/django-otp/Manifest
index 4dbbb8db1ab7..80ea52fe5025 100644
--- a/dev-python/django-otp/Manifest
+++ b/dev-python/django-otp/Manifest
@@ -1,4 +1,2 @@
-DIST django_otp-1.3.0.tar.gz 69013 BLAKE2B 4b6143bb8863e6c151df954a3c4ac4ecca770b1f396dd291e8634e8ad5e0755514111dac02307120e74abacf04bc681503a973bba067817c80bcffc8c462c592 SHA512 ef63c5db096ce7d1b10d6b2a99ab6db46b779d4221f509452921fcbf338decbd5c799aec7476587a03b34288ef3f5ff1964dee72105b65f04a22cbd53d445fa4
-DIST django_otp-1.4.0.tar.gz 71690 BLAKE2B 61144122ab6dec438dcc3136e8856b4d66c598e811f1fdd21e5ba77a907ae5bda88fd543a1c87a165d9ba30ce2bcd7415b04d598719ecb46f2f3ddc15a342aa0 SHA512 df4a11d3cb6a55e2506815b81c7e8cc3e9c272afd8d1d9ba94fd1336467b177ea3eb1e89129c3c727d7ce74ce159e5d153a22e0be2d3d638c8357653b22dba56
-DIST django_otp-1.4.1.tar.gz 71847 BLAKE2B 49764cd1957ab2a6644780c1c6a0947b20bb4a0c1ca286907122a8b47f937aca8d1d2e480f7a309b546ac503cb0c3b1ea3e03532e7d6c38fe8db1606406eda71 SHA512 bb041a6ecd93dbad4f83d6593dfbc2f4768e1a3e68df332a61ed9ce483a8ec7090179a6865b128d02a2fc5ba2b42cd63dc16595a7b98e2728733fc274d506b1a
DIST django_otp-1.5.0.tar.gz 72265 BLAKE2B e2a687a287b5e7b4f5c9370b280bd60b5e9cd62ff6fea4187988acc703ce5cc61f4ee094026c07391343983d87d9c0cb1ff4fa51d10a3e7a4d8da4da182fcb4b SHA512 0169804992b155dfa88fbc0d695091f3f03225f28a104c595e7790f174ff3f4943280b7a3dbb3d4c263cc1bad0ea0370e4749d8d0b1df1e3675881365fc15dfe
+DIST django_otp-1.5.1.tar.gz 73275 BLAKE2B 45a4691a1d9aad6416c28d6aa7b7850890bff19385bb7283019272c836e6cd83c55ba590e57e335131a99e98a17bf49c2418fe69a132b91a182e43c0a33cf863 SHA512 4d2af0a009fe945e136d91404bfa3977783ac681126ffeaa7ebfaacd85764afa07a568284ed1ba9d2c81ef472490df98585e78a1a36c81212b7363362db10f93
diff --git a/dev-python/django-otp/django-otp-1.3.0.ebuild b/dev-python/django-otp/django-otp-1.3.0.ebuild
deleted file mode 100644
index 3c597778d36a..000000000000
--- a/dev-python/django-otp/django-otp-1.3.0.ebuild
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright 1999-2023 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=hatchling
-PYTHON_COMPAT=( python3_{8,9,10,11,12} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Django framework adding two-factor authentication using one-time passwords"
-HOMEPAGE="
- https://github.com/django-otp/django-otp/
- https://pypi.org/project/django-otp/
-"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="~amd64 ~x86"
-IUSE="test"
-RESTRICT="!test? ( test )"
-
-RDEPEND="
- >=dev-python/django-3.2[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- $(python_gen_impl_dep sqlite)
- dev-python/freezegun[${PYTHON_USEDEP}]
- dev-python/qrcode[${PYTHON_USEDEP}]
- $(python_gen_cond_dep '
- dev-python/tomli[${PYTHON_USEDEP}]
- ' 3.9 3.10)
- ${RDEPEND}
- )
-"
-
-python_test() {
- local -x PYTHONPATH=test:${PYTHONPATH}
- local -x DJANGO_SETTINGS_MODULE=test_project.settings
- "${EPYTHON}" -m django test -v 2 django_otp ||
- die "Tests fail with ${EPYTHON}"
-}
diff --git a/dev-python/django-otp/django-otp-1.4.1.ebuild b/dev-python/django-otp/django-otp-1.4.1.ebuild
deleted file mode 100644
index abcade6e9261..000000000000
--- a/dev-python/django-otp/django-otp-1.4.1.ebuild
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=hatchling
-PYTHON_COMPAT=( python3_{8,9,10,11,12} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Django framework adding two-factor authentication using one-time passwords"
-HOMEPAGE="
- https://github.com/django-otp/django-otp/
- https://pypi.org/project/django-otp/
-"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="~amd64 ~x86"
-IUSE="test"
-RESTRICT="!test? ( test )"
-
-RDEPEND="
- >=dev-python/django-3.2[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- $(python_gen_impl_dep sqlite)
- dev-python/freezegun[${PYTHON_USEDEP}]
- dev-python/qrcode[${PYTHON_USEDEP}]
- $(python_gen_cond_dep '
- dev-python/tomli[${PYTHON_USEDEP}]
- ' 3.9 3.10)
- ${RDEPEND}
- )
-"
-
-python_test() {
- local -x PYTHONPATH=test:${PYTHONPATH}
- local -x DJANGO_SETTINGS_MODULE=test_project.settings
- "${EPYTHON}" -m django test -v 2 django_otp ||
- die "Tests fail with ${EPYTHON}"
-}
diff --git a/dev-python/django-otp/django-otp-1.4.0.ebuild b/dev-python/django-otp/django-otp-1.5.1.ebuild
index abcade6e9261..10a9804b2740 100644
--- a/dev-python/django-otp/django-otp-1.4.0.ebuild
+++ b/dev-python/django-otp/django-otp-1.5.1.ebuild
@@ -27,10 +27,13 @@ BDEPEND="
test? (
$(python_gen_impl_dep sqlite)
dev-python/freezegun[${PYTHON_USEDEP}]
- dev-python/qrcode[${PYTHON_USEDEP}]
+ || (
+ dev-python/qrcode[${PYTHON_USEDEP}]
+ dev-python/segno[${PYTHON_USEDEP}]
+ )
$(python_gen_cond_dep '
dev-python/tomli[${PYTHON_USEDEP}]
- ' 3.9 3.10)
+ ' 3.10)
${RDEPEND}
)
"
diff --git a/dev-python/hidapi/Manifest b/dev-python/hidapi/Manifest
index 4413e92216a1..b4e2a1bfbf3d 100644
--- a/dev-python/hidapi/Manifest
+++ b/dev-python/hidapi/Manifest
@@ -1 +1,2 @@
+DIST hidapi-0.14.0.post2.tar.gz 172542 BLAKE2B 7f9028b913a3fcbe893ecbe73210ef465ce08cd12f807c234964550756a56aacc9a2a32c237e86d3028d5116dccabf67ee85cfaa4d806ef63357d57a8e65cddf SHA512 ae1bc66a42b6dbeae0913a62909d24ef11801f6709cef6a33fb9f888a985782b64452dea2f79caee5aa7c6a49cab7af9ff5717cee4fe52fe6137096332180bd4
DIST hidapi-0.14.0.tar.gz 143052 BLAKE2B ebf3fb9608b1f18d9fa24aaa4bca7b2e5cbbbbcbdb6a33da41456f614d0cace556231bb8eb17c21e2a79a5292970cb37f7a46fb6cd1e82efb0a646cf8a942d2a SHA512 228fac22621e36a3108cefd418937a7ed0153e334e19999e947aad341a753d614877cd3f7add90d78037ebe9c7b3f6cbc42973a8e680188da14928311d317b17
diff --git a/dev-python/hidapi/hidapi-0.14.0_p2.ebuild b/dev-python/hidapi/hidapi-0.14.0_p2.ebuild
new file mode 100644
index 000000000000..f2271d359d15
--- /dev/null
+++ b/dev-python/hidapi/hidapi-0.14.0_p2.ebuild
@@ -0,0 +1,43 @@
+# Copyright 2022-2024 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_{8,9,10,11,12} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A Cython interface to HIDAPI library"
+HOMEPAGE="
+ https://github.com/trezor/cython-hidapi/
+ https://pypi.org/project/hidapi/
+"
+
+LICENSE="|| ( BSD GPL-3 )"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86"
+
+DEPEND="
+ >=dev-libs/hidapi-$(ver_cut 1-3)
+"
+RDEPEND="
+ ${DEPEND}
+"
+BDEPEND="
+ dev-python/cython[${PYTHON_USEDEP}]
+ virtual/pkgconfig
+"
+
+distutils_enable_tests pytest
+
+python_configure_all() {
+ DISTUTILS_ARGS=(
+ --with-system-hidapi
+ )
+}
+
+python_test() {
+ epytest tests.py
+}
diff --git a/dev-python/huawei-lte-api/Manifest b/dev-python/huawei-lte-api/Manifest
index 3b09e3c2c902..78eaa5f3bb82 100644
--- a/dev-python/huawei-lte-api/Manifest
+++ b/dev-python/huawei-lte-api/Manifest
@@ -1,2 +1 @@
-DIST huawei-lte-api-1.8.1.gh.tar.gz 40698 BLAKE2B 61e2e6399b106e7efe68ed50d0d3e17ca4b243d62c2b4d00215141931f806ef09c7bee826e50b2b37f7bc8cdb663912019470932a1aa491e0ca582f4ea7baa8d SHA512 704c9f18db74aaa544888c761a934e9886460ce5e1848e1e221ed05cedf1357a0bcce758d2afe126dfd39739d7819520a5fc82a19315647f38f058fbe60d0511
DIST huawei-lte-api-1.9.3.gh.tar.gz 41344 BLAKE2B 3812c2dd5404320eb24bbe6e1e5819effad06641e96289ac279e5fe96add8880d837bf6770816f1bdce553cbf1aad73d370377c7f0713428d6ac46906d88602c SHA512 4f5f00dd416b017422753940ae69a1c24b424692fdf9e6ea29073035d381b5434462b022ebe44bf4d911eafe07f9ff57b8d349bf7140e0f33daba6384a73cd24
diff --git a/dev-python/huawei-lte-api/huawei-lte-api-1.8.1.ebuild b/dev-python/huawei-lte-api/huawei-lte-api-1.8.1.ebuild
deleted file mode 100644
index 42420d67fe25..000000000000
--- a/dev-python/huawei-lte-api/huawei-lte-api-1.8.1.ebuild
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{8,9,10,11,12} pypy3 )
-
-inherit distutils-r1
-
-DESCRIPTION="API For huawei LAN/WAN LTE Modems"
-HOMEPAGE="
- https://github.com/Salamek/huawei-lte-api/
- https://pypi.org/project/huawei-lte-api/
-"
-SRC_URI="
- https://github.com/Salamek/${PN}/archive/${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~amd64"
-
-RDEPEND="
- dev-python/pycryptodome[${PYTHON_USEDEP}]
- dev-python/requests[${PYTHON_USEDEP}]
- dev-python/xmltodict[${PYTHON_USEDEP}]
-"
-
-python_prepare_all() {
- # make cryptodome-friendly
- sed -i -e 's:pycryptodomex:pycryptodome:' setup.py || die
- find -name '*.py' -exec \
- sed -i -e 's:Cryptodome:Crypto:g' {} + || die
-
- distutils-r1_python_prepare_all
-}
-
-distutils_enable_tests pytest
diff --git a/dev-python/importlib-metadata/Manifest b/dev-python/importlib-metadata/Manifest
index fccb02850bd9..05309042f261 100644
--- a/dev-python/importlib-metadata/Manifest
+++ b/dev-python/importlib-metadata/Manifest
@@ -1,2 +1,3 @@
DIST importlib_metadata-7.1.0.tar.gz 52120 BLAKE2B a43a1f0724b3197f51c055d36d31700d67b3bcae849fd648c7cd1ac158a410fdf05a27f2c7003a30e566f86ec5dcbf7cf386ebe4e0ed0a1ce2e89e280ab9e1d3 SHA512 e75db6da03c251acc690ceef6ab2b668acfcf5499032cff370a574b31a5fd7afcbf9756bc20e44e6e649767c1609c7ebb40203aa6406ec5341f27fba886d208e
DIST importlib_metadata-8.0.0.tar.gz 52667 BLAKE2B 5ca77157938dcced0c32a526e760a2d29bae5c34fa5a8f5711f3746278a9843ca85d82405eafe18821b5f7956bf75cdb2b619db903be8de96d60462b4af7fb62 SHA512 07245e6ba3f47ecc7ff4201b2dd24e6970317fe7ef0a39d74a66de180269f480c09e12601738c7c11e720a2e7c78347871ff83700c7f796a01fb1a12c8e46ff6
+DIST importlib_metadata-8.1.0.tar.gz 53881 BLAKE2B b441a78e12b1f2f360deeed5d54d2694d97994881ee18a5e7c2790c96d25b433385fe20b38b70b075ced138853ac242792e098105f53c40d7f749864d06c511f SHA512 98a5f72eab0871b55a394de5e18ab74c225515620eed62ee0273de2c23607566af7a449ffc4b3900f8d0fd8e6eb7bd2a893666c1b459f9f07b700319a7236ac0
diff --git a/dev-python/importlib-metadata/importlib-metadata-8.1.0.ebuild b/dev-python/importlib-metadata/importlib-metadata-8.1.0.ebuild
new file mode 100644
index 000000000000..ce9e2dc50049
--- /dev/null
+++ b/dev-python/importlib-metadata/importlib-metadata-8.1.0.ebuild
@@ -0,0 +1,51 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# please keep this ebuild at EAPI 8 -- sys-apps/portage dep
+EAPI=8
+
+DISTUTILS_USE_PEP517=flit
+# NB: this package extends beyond built-in importlib stuff in py3.8+
+# new entry_point API not yet included in cpython release
+PYTHON_COMPAT=( python3_{8,9,10,11,12} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Read metadata from Python packages"
+HOMEPAGE="
+ https://github.com/python/importlib_metadata/
+ https://pypi.org/project/importlib-metadata/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"
+
+RDEPEND="
+ dev-python/zipp[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ >=dev-python/jaraco-test-5.4[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ dev-python/pyfakefs[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests unittest
+
+src_configure() {
+ grep -q 'build-backend = "setuptools' pyproject.toml ||
+ die "Upstream changed build-backend, recheck"
+ # write a custom pyproject.toml to ease setuptools bootstrap
+ cat > pyproject.toml <<-EOF || die
+ [build-system]
+ requires = ["flit_core >=3.2,<4"]
+ build-backend = "flit_core.buildapi"
+
+ [project]
+ name = "importlib_metadata"
+ version = "${PV}"
+ description = "Read metadata from Python packages"
+ EOF
+}
diff --git a/dev-python/langdetect/Manifest b/dev-python/langdetect/Manifest
index a11d7c268c91..37a64204a00a 100644
--- a/dev-python/langdetect/Manifest
+++ b/dev-python/langdetect/Manifest
@@ -1 +1,3 @@
DIST langdetect-1.0.9.tar.gz 981474 BLAKE2B ea8a9c3f16a2987c080742473bff4f2c1503f53fb3c2b40b0b1d6212bb6133ea22dce7864ffcfb8968c3a46b157d45cb3e2cf6f84bdbed0266cc716a853b032c SHA512 7558d674c47b080c79e43a00a25d2c7f77188cf60bea2cecb3bebb803d75e1aa42b43c74bd26ea1b541f4cb927421908882cbec01a91f0913984217e71ccc8db
+EBUILD langdetect-1.0.9.ebuild 494 BLAKE2B 9b3521c5721afa49a58e0c35267f7d82bb56bd7e1d6d3152be0d36cd220180a526cb20b90b1113fbf0fff4a512137570f0b3bcf864498b7b7cc00403cb61ca27 SHA512 16d311400bf84a5f04e15f3da4b68b2810e4b005009f4d03dc8a487176dfc294403c976c412c83dcfa8084a49ef7b7d5389b43fb2ba446ce107ce4595e3558c6
+MISC metadata.xml 457 BLAKE2B 630128a3e982b6d60cc7b9f74c79fcb5ee47a71a02c73a50af9da8cedb6fad8e20a7f74b881e5b25c6483b92c9edbd56552cd38b2d9cbfa8b3eb4530facea969 SHA512 674f4f5cd809c6c77bc14e0f5687fa972bef14bdfa0b3343c5d66b7163eef1906eb87d060c8288732f825de71dce291ad0b841a5f2f0dd230f957b5687e45d45
diff --git a/dev-python/langdetect/files/langdetect-1.0.9-explicit-config.patch b/dev-python/langdetect/files/langdetect-1.0.9-explicit-config.patch
deleted file mode 100644
index 637368d2f237..000000000000
--- a/dev-python/langdetect/files/langdetect-1.0.9-explicit-config.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Fix "Package 'langdetect.profiles' is absent from the `packages` configuration."
-
---- a/setup.py
-+++ b/setup.py
-@@ -18,7 +18,7 @@ setup(
- author_email='michal.danilak@gmail.com',
- url='https://github.com/Mimino666/langdetect',
- keywords='language detection library',
-- packages=['langdetect', 'langdetect.utils', 'langdetect.tests'],
-+ packages=['langdetect', 'langdetect.utils', 'langdetect.tests', 'langdetect.profiles'],
- include_package_data=True,
- install_requires=['six'],
- license='MIT',
diff --git a/dev-python/langdetect/langdetect-1.0.9.ebuild b/dev-python/langdetect/langdetect-1.0.9.ebuild
index 630fe63c6f53..c09b7356f549 100644
--- a/dev-python/langdetect/langdetect-1.0.9.ebuild
+++ b/dev-python/langdetect/langdetect-1.0.9.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2022-2024 Gentoo Authors
+# Copyright 2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -19,6 +19,4 @@ KEYWORDS="~amd64"
RDEPEND="dev-python/six[${PYTHON_USEDEP}]"
-PATCHES=( "${FILESDIR}/${P}-explicit-config.patch" )
-
distutils_enable_tests unittest
diff --git a/dev-python/langdetect/metadata.xml b/dev-python/langdetect/metadata.xml
index 736a1167c898..020e07f2a3dd 100644
--- a/dev-python/langdetect/metadata.xml
+++ b/dev-python/langdetect/metadata.xml
@@ -1,6 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
<pkgmetadata>
-
- <origin>gentoo-guru-overlay</origin>
+ <maintainer type="person">
+ <email>marcin.deranek@slonko.net</email>
+ <name>Marcin Deranek</name>
+ </maintainer>
+ <upstream>
+ <bugs-to>https://github.com/Mimino666/langdetect/issues</bugs-to>
+ </upstream>
+ <origin>slonko-overlay</origin>
</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/mkdocs-material/Manifest b/dev-python/mkdocs-material/Manifest
index 0e43f8994940..68bad461c5cd 100644
--- a/dev-python/mkdocs-material/Manifest
+++ b/dev-python/mkdocs-material/Manifest
@@ -1,2 +1,3 @@
DIST mkdocs-material-9.5.28.gh.tar.gz 14934242 BLAKE2B 6f45fe353569623cb8c77f43cf372a5f62a48812b40aba5351c86cd941dee3e19f9af31ada73188bc3e8b5426a11041a10611761e7b5a12d7ffbcf64aa081b6d SHA512 34e3dc512c1d9a19406afb49aae38e7e4e2689cec6a9418b90271eff7ae1c4bc820e7ff51c6fa20639dda6d51ca1b70b97da0e4e3795b6cee1fb9bf756df6a68
DIST mkdocs-material-9.5.29.gh.tar.gz 14923128 BLAKE2B 646f58cab9d58d15f73e1b38bf165a819d70f3ebb39a75190fd03dc5baa04e92a0b73174c8ca9420602aabec00a4d1b51dadf2b8df57694365826d9b35387d14 SHA512 12b3c48c55f1fe32a6387cc18d9c102de8c1dc8a45ee28089236702ff0d0e7a3abb1032e4bdab206e45c24201f92a4c7aa8de10556d3034e953d2f57508398e6
+DIST mkdocs-material-9.5.30.gh.tar.gz 14925913 BLAKE2B 291d9302e8c49724e31493176ad72f6ad7926f167ff1e761087b83158f6689cf081ab0155eeff29985ae5f4ca5bdf36e988515e128c86506fb742ff7e3105a14 SHA512 67afb9b558368922aaf585f797b054b7a1eb32d47653212723fa57fc6f6f52e540fadf0d90fdb9e1043e5f60e2210fe9225746caf53451163700ad0319caf522
diff --git a/dev-python/mkdocs-material/mkdocs-material-9.5.30.ebuild b/dev-python/mkdocs-material/mkdocs-material-9.5.30.ebuild
new file mode 100644
index 000000000000..eec1908ef846
--- /dev/null
+++ b/dev-python/mkdocs-material/mkdocs-material-9.5.30.ebuild
@@ -0,0 +1,67 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{8,9,10,11,12} )
+
+DOCS_BUILDER="mkdocs"
+DOCS_DEPEND="
+ dev-python/mkdocs-material-extensions
+ dev-python/mkdocs-minify-plugin
+ dev-python/mkdocs-redirects
+"
+
+inherit distutils-r1 docs
+
+DESCRIPTION="A Material Design theme for MkDocs"
+HOMEPAGE="
+ https://github.com/squidfunk/mkdocs-material/
+ https://pypi.org/project/mkdocs-material/
+"
+SRC_URI="
+ https://github.com/squidfunk/${PN}/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86"
+IUSE="social"
+
+RDEPEND="
+ >=dev-python/Babel-2.10.3[${PYTHON_USEDEP}]
+ >=dev-python/colorama-0.4[${PYTHON_USEDEP}]
+ >=dev-python/jinja-3.0.2[${PYTHON_USEDEP}]
+ >=dev-python/lxml-4.6[${PYTHON_USEDEP}]
+ >=dev-python/markdown-3.2[${PYTHON_USEDEP}]
+ >=dev-python/mkdocs-1.5.3[${PYTHON_USEDEP}]
+ >=dev-python/paginate-0.5.6[${PYTHON_USEDEP}]
+ >=dev-python/pygments-2.16[${PYTHON_USEDEP}]
+ >=dev-python/pymdown-extensions-10.2[${PYTHON_USEDEP}]
+ >=dev-python/readtime-2.0[${PYTHON_USEDEP}]
+ >=dev-python/regex-2022.4.24[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.26[${PYTHON_USEDEP}]
+ social? (
+ >=dev-python/pillow-10.2[${PYTHON_USEDEP}]
+ >=media-gfx/cairosvg-2.5[${PYTHON_USEDEP}]
+ )
+"
+BDEPEND="
+ >=dev-python/trove-classifiers-2023.10.18[${PYTHON_USEDEP}]
+"
+# mkdocs-material-extensions depends on mkdocs-material creating a circular dep
+PDEPEND="
+ >=dev-python/mkdocs-material-extensions-1.2[${PYTHON_USEDEP}]
+"
+
+PATCHES=(
+ # simplify pyproject to remove extra deps for metadata
+ "${FILESDIR}/${PN}-8.5.7-simplify-build.patch"
+)
+
+src_prepare() {
+ echo "__version__ = '${PV}'" > gentoo_version.py || die
+ distutils-r1_src_prepare
+}
diff --git a/dev-python/pikepdf/Manifest b/dev-python/pikepdf/Manifest
index e9702a644e0b..e120c95fd541 100644
--- a/dev-python/pikepdf/Manifest
+++ b/dev-python/pikepdf/Manifest
@@ -3,3 +3,4 @@ DIST pikepdf-8.14.0.tar.gz 2870612 BLAKE2B be0fd5a8d48fccc7695c45acc28cbda825252
DIST pikepdf-8.15.1.tar.gz 2870723 BLAKE2B 958bb2a417e2f1c9e5e4448b47cdadffb10e82841cc8173503881a86e92e85c05f800a8ad6936f32ee53e6f7a8cd62ee9e28e251de1f32a7cdce055139ec5fa3 SHA512 ae6b0b8bdf7e395943caf503f1d498861bd2719185e6382a522b8c0d4e38413a1b070e912367852bc5735d29b8453d05c57ff384ede825830722470445a534f6
DIST pikepdf-8.4.1.tar.gz 2853305 BLAKE2B 2298514159db17ba49b8e2fa2407d60de50273bea111ece704251d99193bdc4c8ed77f624237a49c3f4f129e3b14ac4ddd1006cf3024bcbf822bc5523e0fee35 SHA512 6989e8a3888f612e453ec1ea8425c0ca35ccfee19ae5e8c32df136ebc3fbb7728d9fe5beaacb4e392a20c9037a1009fc8f8d53d73634427fb0df9103626e34fa
DIST pikepdf-9.0.0.tar.gz 2868331 BLAKE2B 6735938fd2c0e8bb6a5fb40896350a2caa2ee20f8982010574a4e682c8ff19d01bc6773d30f78e2d4a5d58496de9dfa8fe9584f1c954205ed4832753addbd373 SHA512 15248d523cebdfbfcd7a5f8b6144b7dc8371612bd77ba3847af1ce626b5d87780911346d3c61bfe7cef545a19f1863c1a4048b35ace56f2cb62dcb962272829d
+DIST pikepdf-9.1.0.tar.gz 2869103 BLAKE2B 39750e280caa2393b69a5c3c841afa9cbb0d5701a20ae9ca4e9a57088cae47e2dd33ca8b605b0b096df131b578a4cdc71eb8696d12b2817426b35a8b13668460 SHA512 0fbf1ca151b6a234cd23a5148c9e8e4e033c5da5c935b4786fe6167555da7016c55b124dd2f9e8dc414c9782829f38412227820229a8459cc9dbe03220620fae
diff --git a/dev-python/pikepdf/pikepdf-9.1.0.ebuild b/dev-python/pikepdf/pikepdf-9.1.0.ebuild
new file mode 100644
index 000000000000..c7127610dbe9
--- /dev/null
+++ b/dev-python/pikepdf/pikepdf-9.1.0.ebuild
@@ -0,0 +1,74 @@
+# Copyright 1999-2024 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_{8,9,10,11,12} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Python library to work with pdf files based on qpdf"
+HOMEPAGE="
+ https://github.com/pikepdf/pikepdf/
+ https://pypi.org/project/pikepdf/
+"
+
+LICENSE="MPL-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="big-endian"
+
+# Check QPDF_MIN_VERSION in pyproject.toml on bumps, as well as
+# https://qpdf.readthedocs.io/en/stable/release-notes.html.
+DEPEND="
+ >=app-text/qpdf-11.5.0:0=
+"
+RDEPEND="
+ ${DEPEND}
+ dev-python/deprecated[${PYTHON_USEDEP}]
+ >=dev-python/lxml-4.0[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ >=dev-python/pillow-10.0.1[lcms,${PYTHON_USEDEP}]
+"
+BDEPEND="
+ >=dev-python/pybind11-2.10.1[${PYTHON_USEDEP}]
+ >=dev-python/setuptools-scm-7.0.5[${PYTHON_USEDEP}]
+ test? (
+ >=dev-python/attrs-20.2.0[${PYTHON_USEDEP}]
+ >=dev-python/hypothesis-6.36[${PYTHON_USEDEP}]
+ >=dev-python/numpy-1.21.0[${PYTHON_USEDEP}]
+ >=dev-python/pillow-5.0.0[${PYTHON_USEDEP},jpeg,lcms,tiff]
+ >=dev-python/psutil-5.9[${PYTHON_USEDEP}]
+ >=dev-python/pytest-timeout-2.1.0[${PYTHON_USEDEP}]
+ >=dev-python/python-dateutil-2.8.1[${PYTHON_USEDEP}]
+ !big-endian? (
+ >=dev-python/python-xmp-toolkit-2.0.1[${PYTHON_USEDEP}]
+ )
+ $(python_gen_cond_dep '
+ dev-python/tomli[${PYTHON_USEDEP}]
+ ' 3.10)
+ media-libs/tiff[zlib]
+ )
+"
+
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ sed -e '/-n auto/d' -i pyproject.toml || die
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # fragile to system load
+ tests/test_image_access.py::test_random_image
+ tests/test_image_access.py::test_image_save_compare
+ tests/test_image_access.py::test_palette_nonrgb
+ )
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest -p timeout
+}
diff --git a/dev-python/plotly/Manifest b/dev-python/plotly/Manifest
index f83885927120..efb1a343ee68 100644
--- a/dev-python/plotly/Manifest
+++ b/dev-python/plotly/Manifest
@@ -1 +1,2 @@
DIST plotly.py-5.22.0.gh.tar.gz 31113116 BLAKE2B 67c0ad0d29b9b5041d1e310336a859c11399cced422f51d9f0906f61474868858f6f62da0172bec3e48f38eb5d1f7c68b497b6014b64f8cf48ef510a41f639ee SHA512 447072a78a5914aea5546edc6c51ea36475d12fd7e4b9f845ebe8396fb531c9b7ba942b6b5f9680f897acd9e2aefb8c09d08aadf106a78531faa8995d5ac218e
+DIST plotly.py-5.23.0.gh.tar.gz 31606651 BLAKE2B f34d1df464cac49ab834674be8815b97535d8f59e4263d8f68d82f2c2c52976a26b13fe9275f4a90fe0c0848449807dcd8342c0e5309d4b39d61b39cb31d8db5 SHA512 96573bf5952b29a75d2c87029c1041f05d08f4f891d63d5999372d64c211abc5982308dcfbf7590981cd0666ae84ccbee8c9a22e8e2b97571fc8c6a4e634cdbc
diff --git a/dev-python/plotly/files/plotly-5.23.0-numpy-2.patch b/dev-python/plotly/files/plotly-5.23.0-numpy-2.patch
new file mode 100644
index 000000000000..6941369978e8
--- /dev/null
+++ b/dev-python/plotly/files/plotly-5.23.0-numpy-2.patch
@@ -0,0 +1,87 @@
+From 99df182e9171e9b9e81811447f37ace05acc9272 Mon Sep 17 00:00:00 2001
+From: Ben Greiner <code@bnavigator.de>
+Date: Sun, 2 Jun 2024 16:43:06 +0200
+Subject: [PATCH 1/3] Remove np.nan and np.inf aliases no longer present in
+ numpy2
+
+---
+ .../tests/test_optional/test_utils/test_utils.py | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/plotly/tests/test_optional/test_utils/test_utils.py b/plotly/tests/test_optional/test_utils/test_utils.py
+index cf32e1bdff..d7d982e635 100644
+--- a/plotly/tests/test_optional/test_utils/test_utils.py
++++ b/plotly/tests/test_optional/test_utils/test_utils.py
+@@ -34,7 +34,7 @@
+
+ ## JSON encoding
+ numeric_list = [1, 2, 3]
+-np_list = np.array([1, 2, 3, np.NaN, np.NAN, np.Inf, dt(2014, 1, 5)])
++np_list = np.array([1, 2, 3, np.nan, np.inf, dt(2014, 1, 5)])
+ mixed_list = [
+ 1,
+ "A",
+@@ -45,7 +45,7 @@
+ dt_list = [dt(2014, 1, 5), dt(2014, 1, 5, 1, 1, 1), dt(2014, 1, 5, 1, 1, 1, 1)]
+
+ df = pd.DataFrame(
+- columns=["col 1"], data=[1, 2, 3, dt(2014, 1, 5), pd.NaT, np.NaN, np.Inf]
++ columns=["col 1"], data=[1, 2, 3, dt(2014, 1, 5), pd.NaT, np.nan, np.inf]
+ )
+
+ rng = pd.date_range("1/1/2011", periods=2, freq="H")
+@@ -184,7 +184,7 @@ def test_figure_json_encoding(self):
+
+ assert (
+ js1 == '{"type": "scatter3d", "x": [1, 2, 3], '
+- '"y": [1, 2, 3, null, null, null, "2014-01-05T00:00:00"], '
++ '"y": [1, 2, 3, null, null, "2014-01-05T00:00:00"], '
+ '"z": [1, "A", "2014-01-05T00:00:00", '
+ '"2014-01-05T01:01:01", "2014-01-05T01:01:01.000001"]}'
+ )
+@@ -195,9 +195,9 @@ def test_figure_json_encoding(self):
+ _json.dumps(figure, cls=utils.PlotlyJSONEncoder, sort_keys=True)
+
+ # Test data wasn't mutated
+- np_array = np.array([1, 2, 3, np.NaN, np.NAN, np.Inf, dt(2014, 1, 5)])
++ np_array = np.array([1, 2, 3, np.nan, np.inf, dt(2014, 1, 5)])
+ for k in range(len(np_array)):
+- if k in [3, 4]:
++ if k == 3:
+ # check NaN
+ assert np.isnan(np_list[k]) and np.isnan(np_array[k])
+ else:
+@@ -237,7 +237,7 @@ def test_pandas_json_encoding(self):
+ # Test that data wasn't mutated
+ assert_series_equal(
+ df["col 1"],
+- pd.Series([1, 2, 3, dt(2014, 1, 5), pd.NaT, np.NaN, np.Inf], name="col 1"),
++ pd.Series([1, 2, 3, dt(2014, 1, 5), pd.NaT, np.nan, np.inf], name="col 1"),
+ )
+
+ j2 = _json.dumps(df.index, cls=utils.PlotlyJSONEncoder)
+
+From 23b50d9df805349674e11949459976fb338b3d76 Mon Sep 17 00:00:00 2001
+From: Ben Greiner <code@bnavigator.de>
+Date: Sun, 2 Jun 2024 16:48:34 +0200
+Subject: [PATCH 2/3] Avoid putting 255 into int8 due to new numpy 2 type
+ promotion rules
+
+---
+ .../plotly/plotly/tests/test_optional/test_px/test_imshow.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/plotly/tests/test_optional/test_px/test_imshow.py b/plotly/tests/test_optional/test_px/test_imshow.py
+index c2e863c846..d8f9ad98c7 100644
+--- a/plotly/tests/test_optional/test_px/test_imshow.py
++++ b/plotly/tests/test_optional/test_px/test_imshow.py
+@@ -341,7 +341,7 @@ def test_imshow_source_dtype_zmax(dtype, contrast_rescaling):
+ assert (
+ np.abs(
+ np.max(decode_image_string(fig.data[0].source))
+- - 255 * img.max() / np.iinfo(dtype).max
++ - np.int64(255) * img.max() / np.iinfo(dtype).max
+ )
+ < 1
+ )
+
diff --git a/dev-python/plotly/plotly-5.23.0.ebuild b/dev-python/plotly/plotly-5.23.0.ebuild
new file mode 100644
index 000000000000..926e1edb9718
--- /dev/null
+++ b/dev-python/plotly/plotly-5.23.0.ebuild
@@ -0,0 +1,116 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{8,9,10,11,12} )
+DISTUTILS_USE_PEP517=setuptools
+
+inherit distutils-r1
+
+MY_P=plotly.py-${PV}
+DESCRIPTION="Browser-based graphing library for Python"
+HOMEPAGE="
+ https://plotly.com/python/
+ https://github.com/plotly/plotly.py/
+ https://pypi.org/project/plotly/
+"
+SRC_URI="
+ https://github.com/plotly/plotly.py/archive/refs/tags/v${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S="${WORKDIR}/${MY_P}/packages/python/plotly"
+# The tests are not included in the PyPI tarball, to use the GitHub tarball
+# we have to skip npm, which means that the resulting install will
+# unfortunately lack the jupyterlab extension.
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+
+RDEPEND="
+ dev-python/packaging[${PYTHON_USEDEP}]
+ >=dev-python/tenacity-6.2.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/ipykernel[${PYTHON_USEDEP}]
+ dev-python/ipython[${PYTHON_USEDEP}]
+ dev-python/ipywidgets[${PYTHON_USEDEP}]
+ dev-python/jupyter[${PYTHON_USEDEP}]
+ dev-python/jupyterlab[${PYTHON_USEDEP}]
+ dev-python/matplotlib[${PYTHON_USEDEP}]
+ dev-python/numpy[${PYTHON_USEDEP}]
+ dev-python/pandas[${PYTHON_USEDEP}]
+ dev-python/pillow[${PYTHON_USEDEP}]
+ dev-python/psutil[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/pytz[${PYTHON_USEDEP}]
+ dev-python/scipy[${PYTHON_USEDEP}]
+ dev-python/shapely[${PYTHON_USEDEP}]
+ dev-python/statsmodels[${PYTHON_USEDEP}]
+ dev-python/xarray[${PYTHON_USEDEP}]
+ dev-python/scikit-image[${PYTHON_USEDEP}]
+ )
+"
+
+# There are sphinx docs but we are missing a bunch of dependencies.
+# distutils_enable_sphinx ../../../doc/apidoc
+distutils_enable_tests pytest
+
+# README ends up a broken symlink
+DOCS=()
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-5.8.0-fix-versioneer-import.patch
+ # https://github.com/plotly/plotly.py/pull/4622
+ "${FILESDIR}/${P}-numpy-2.patch"
+)
+
+python_prepare_all() {
+ # Do not try to fetch stuff with npm
+ export SKIP_NPM=1
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ local EPYTEST_IGNORE=(
+ # kaleido not packaged
+ plotly/tests/test_optional/test_kaleido
+
+ # plotly-orca not packaged
+ plotly/tests/test_orca
+ )
+
+ local EPYTEST_DESELECT=(
+ # kaleido not packaged
+ plotly/tests/test_orca/test_to_image.py::test_bytesio
+
+ # fails in non-isolated env
+ test_init/test_dependencies_not_imported.py::test_dependencies_not_imported
+ test_init/test_lazy_imports.py::test_lazy_imports
+
+ # Minor matplotlib incompatibility
+ plotly/matplotlylib/mplexporter/tests/test_basic.py::test_legend_dots
+ plotly/matplotlylib/mplexporter/tests/test_utils.py::test_linestyle
+
+ # TODO
+ plotly/tests/test_io/test_to_from_plotly_json.py::test_sanitize_json
+
+ # two subtests that require 'vaex' and 'polars' respectively
+ plotly/tests/test_optional/test_px/test_px_input.py::test_build_df_from_vaex_and_polars
+ plotly/tests/test_optional/test_px/test_px_input.py::test_build_df_with_hover_data_from_vaex_and_polars
+
+ # the usual recursion problem
+ plotly/tests/test_optional/test_utils/test_utils.py::test_masked_constants_example
+ )
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest
+}
+
+python_install_all() {
+ distutils-r1_python_install_all
+
+ mv "${ED}"/{usr/etc,etc} || die
+}
diff --git a/dev-python/pycares/pycares-4.4.0.ebuild b/dev-python/pycares/pycares-4.4.0.ebuild
index d86503f061bf..bb20f7db20da 100644
--- a/dev-python/pycares/pycares-4.4.0.ebuild
+++ b/dev-python/pycares/pycares-4.4.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 ~arm64 ~riscv ~x86"
+KEYWORDS="amd64 ~arm64 ~riscv ~sparc ~x86"
IUSE="test"
# Tests fail with network-sandbox, since they try to resolve google.com
PROPERTIES="test_network"
diff --git a/dev-python/pygdbmi/pygdbmi-0.11.0.0.ebuild b/dev-python/pygdbmi/pygdbmi-0.11.0.0.ebuild
index b0d17036505b..44e4a52a15fa 100644
--- a/dev-python/pygdbmi/pygdbmi-0.11.0.0.ebuild
+++ b/dev-python/pygdbmi/pygdbmi-0.11.0.0.ebuild
@@ -22,7 +22,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+KEYWORDS="amd64 arm64 ~riscv ~x86"
RDEPEND="
>=dev-debug/gdb-9.6
diff --git a/dev-python/pyspnego/Manifest b/dev-python/pyspnego/Manifest
index 2afd86dc2801..389a19d6cfc8 100644
--- a/dev-python/pyspnego/Manifest
+++ b/dev-python/pyspnego/Manifest
@@ -1 +1,2 @@
DIST pyspnego-0.11.0.tar.gz 225609 BLAKE2B 580ba1eb5a36af973af5acd6421ea373597961fe35e8f32c1cdd7938f550e0e20307a540405182761181927ebb69822dd289170ffe5110a8b49bfc4cc4f99f01 SHA512 7717dfbca4cd40f71f6aa436ed3f23f4cfd77c50569af90dd2f4b337cf46b485b8046fc5b2ded6a77c54af2ef3fca28e085616e900e25d8830b3600cbd3e44b5
+DIST pyspnego-0.11.1.tar.gz 225697 BLAKE2B fae4a4873bb7d84076c3703398f7dbb8ce27712804430290232239fef06e9c5b3a30ef397e82f109d6b4dcc61682cdb87d6469c5a1d323818dd16194fcc3b2df SHA512 3fac72600e162aed20d888727d74f67a7f1ae44aa000e0290c25e66a86d37bf2afb0718b36084926316149cb5157affe8beac65507b4d6e924d810c9aa6d86dc
diff --git a/dev-python/pyspnego/pyspnego-0.11.1.ebuild b/dev-python/pyspnego/pyspnego-0.11.1.ebuild
new file mode 100644
index 000000000000..18171f5ebe2d
--- /dev/null
+++ b/dev-python/pyspnego/pyspnego-0.11.1.ebuild
@@ -0,0 +1,38 @@
+# Copyright 2021-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{8,9,10,11,12} )
+
+inherit distutils-r1 optfeature pypi
+
+DESCRIPTION="Library to handle SPNEGO and CredSSP authentication"
+HOMEPAGE="
+ https://github.com/jborean93/pyspnego/
+ https://pypi.org/project/pyspnego/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86"
+
+RDEPEND="
+ dev-python/cryptography[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/gssapi[${PYTHON_USEDEP}]
+ >=dev-python/krb5-0.3.0[${PYTHON_USEDEP}]
+ dev-python/pytest-mock[${PYTHON_USEDEP}]
+ dev-python/ruamel-yaml[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+pkg_postinst() {
+ optfeature "Kerberos authentication" "dev-python/gssapi >=dev-python/krb5-0.3.0"
+ optfeature "YAML output support" "dev-python/ruamel-yaml"
+}
diff --git a/dev-python/pytest-import-check/pytest-import-check-0.0.4.ebuild b/dev-python/pytest-import-check/pytest-import-check-0.0.4.ebuild
index 7173ee71217d..44902770b8c7 100644
--- a/dev-python/pytest-import-check/pytest-import-check-0.0.4.ebuild
+++ b/dev-python/pytest-import-check/pytest-import-check-0.0.4.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="GPL-2+"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
RDEPEND="
>=dev-python/pytest-8.1[${PYTHON_USEDEP}]
diff --git a/dev-python/pytest-reserial/Manifest b/dev-python/pytest-reserial/Manifest
index 0d0a4af0c659..6e222b761d17 100644
--- a/dev-python/pytest-reserial/Manifest
+++ b/dev-python/pytest-reserial/Manifest
@@ -1 +1,2 @@
DIST pytest_reserial-0.4.1.tar.gz 11687 BLAKE2B 68c54b8e89c25d41fcb99f715a6008f71f55ad9e3101b37a90bb3b944fac473dd66392d08bcbe464af942fae58d9406492a65a3d61b547bef33d446b46d69f6a SHA512 1ac92258b3fdfeb9aca95b105c7a8ea21891f2609c591e7aa07ed8cc3d9b17f48eb7ec7d3d53524b564d5572ca679d897b8b06107fc4c370f3ed3cd2125cdfdf
+DIST pytest_reserial-0.4.2.tar.gz 12374 BLAKE2B 4f0d89bef2f4f99f2a9d9ef1ac5c46e31817ed4c91b78bd41f2670a89dd87dd642a1c80f0574957c24467cb77cebb9f0de27e540b47e0f70933cd6cf4a933ac7 SHA512 e3b9a82feee58c6808bb0491bf6c92f6ee0e1f83b3fafb676a4eac4ed03c90e29ead8d93ed275a83a7f2de3148aa55ba27f6dc6266c2e308e7085794d88a0ffa
diff --git a/dev-python/pytest-reserial/pytest-reserial-0.4.2.ebuild b/dev-python/pytest-reserial/pytest-reserial-0.4.2.ebuild
new file mode 100644
index 000000000000..2c8ad48baa64
--- /dev/null
+++ b/dev-python/pytest-reserial/pytest-reserial-0.4.2.ebuild
@@ -0,0 +1,26 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=flit
+PYTHON_COMPAT=( python3_{8,9,10,11,12} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Pytest plugin for recording and replaying serial port traffic during tests"
+HOMEPAGE="
+ https://pypi.org/project/pytest-reserial/
+ https://github.com/bessman/pytest-reserial/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+
+RDEPEND="
+ dev-python/pyserial[${PYTHON_USEDEP}]
+ dev-python/pytest[${PYTHON_USEDEP}]
+"
+
+distutils_enable_tests pytest
diff --git a/dev-python/pytest-subprocess/Manifest b/dev-python/pytest-subprocess/Manifest
index 50d817de0d37..2cef4ce5fd6b 100644
--- a/dev-python/pytest-subprocess/Manifest
+++ b/dev-python/pytest-subprocess/Manifest
@@ -1 +1,3 @@
DIST pytest-subprocess-1.5.0.gh.tar.gz 34771 BLAKE2B b76ab9234ff2ec437ef9679c2e8af6cdc545189c7fd9f832f68c5cad094c80250c5fe1fd6e0da54d7a8c09da30a66f7f097da66f03d169e149186b49e2b72b56 SHA512 8489993cc396d41d127927ab46a43120528dbcb9641e7be03777689af127df29fe618eee3a815e96a0353cc02117dc1af22800d748476c4fe2b76c2246229f08
+DIST pytest-subprocess-1.5.1.gh.tar.gz 35269 BLAKE2B a614376eb25b0e58fe438f2bfc2033ebdb4e83a34cc4fd2ef68b162830dadc2ec4eea436abdcf7d88591ade57e05dd2dcdfbb6443ae30549a03aa9c0935afeeb SHA512 1b719a6d3d1a38638490d574f2b3f9b8a6b76f4059fd05f8c7230395db34caf5e34e58a977ad47a779e65b77317bc05af1293378bca84469fdf205822fbc1cdc
+DIST pytest-subprocess-1.5.2.gh.tar.gz 35438 BLAKE2B bbc92d99dfdd094e8295df37dd3fb66a022ebd4d711bb3f80408d21c8dbe3304bdafd8e7b0fcba15c681b8598bb55f92e0e91e9bd837ca165e94b791ef02c4e3 SHA512 56bf95ee085e74df1b9691d23a1e766de304896a74fb319df22dbb3faa6e4959fe9b7e790cd65a55c816fb39f3ae8db68bd501aeaade0db498a7273cd7267e45
diff --git a/dev-python/pytest-subprocess/pytest-subprocess-1.5.1.ebuild b/dev-python/pytest-subprocess/pytest-subprocess-1.5.1.ebuild
new file mode 100644
index 000000000000..80e8900dc3c4
--- /dev/null
+++ b/dev-python/pytest-subprocess/pytest-subprocess-1.5.1.ebuild
@@ -0,0 +1,51 @@
+# Copyright 2023-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{8,9,10,11,12} pypy3 )
+
+inherit distutils-r1
+
+DESCRIPTION="A plugin to fake subprocess for pytest"
+HOMEPAGE="
+ https://github.com/aklajnert/pytest-subprocess/
+ https://pypi.org/project/pytest-subprocess/
+"
+SRC_URI="
+ https://github.com/aklajnert/pytest-subprocess/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/pytest-4.0.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/anyio[${PYTHON_USEDEP}]
+ >=dev-python/docutils-0.12[${PYTHON_USEDEP}]
+ >=dev-python/pygments-2.0[${PYTHON_USEDEP}]
+ >=dev-python/pytest-asyncio-0.15.1[${PYTHON_USEDEP}]
+ dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # https://github.com/aklajnert/pytest-subprocess/pull/162
+ sed -i -e '/py_modules/d' -e '/find_packages/d' setup.py || die
+}
+
+python_test() {
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ local -x PYTEST_PLUGINS=pytest_subprocess.fixtures,pytest_asyncio.plugin
+ epytest -p rerunfailures
+}
diff --git a/dev-python/pytest-subprocess/pytest-subprocess-1.5.2.ebuild b/dev-python/pytest-subprocess/pytest-subprocess-1.5.2.ebuild
new file mode 100644
index 000000000000..4f4e29ad9e31
--- /dev/null
+++ b/dev-python/pytest-subprocess/pytest-subprocess-1.5.2.ebuild
@@ -0,0 +1,44 @@
+# Copyright 2023-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{8,9,10,11,12} pypy3 )
+
+inherit distutils-r1
+
+DESCRIPTION="A plugin to fake subprocess for pytest"
+HOMEPAGE="
+ https://github.com/aklajnert/pytest-subprocess/
+ https://pypi.org/project/pytest-subprocess/
+"
+SRC_URI="
+ https://github.com/aklajnert/pytest-subprocess/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/pytest-4.0.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/anyio[${PYTHON_USEDEP}]
+ >=dev-python/docutils-0.12[${PYTHON_USEDEP}]
+ >=dev-python/pygments-2.0[${PYTHON_USEDEP}]
+ >=dev-python/pytest-asyncio-0.15.1[${PYTHON_USEDEP}]
+ dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+python_test() {
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ local -x PYTEST_PLUGINS=pytest_subprocess.fixtures,pytest_asyncio.plugin
+ epytest -p rerunfailures
+}
diff --git a/dev-python/pytools/Manifest b/dev-python/pytools/Manifest
index 524bd9552013..0fb7b7cb7a6a 100644
--- a/dev-python/pytools/Manifest
+++ b/dev-python/pytools/Manifest
@@ -1,4 +1,5 @@
DIST pytools-2024.1.10.tar.gz 81741 BLAKE2B 39d44636c82ce7f2cadd543e9e3f7a32def0e11b3df24f0ae43aa47da924a1c2d9258b3147187dc9b0a12a5485e74bb906a87655ee863390af61ec6ce03ec95e SHA512 2e8d401b9f26b9a60ef4f479c982ff2b8801b00ac35b7ec06e36980fb5071c709d574e2a841f826d7ceff8a1303591c46a269284b09730c30eaca6759ca88ad5
+DIST pytools-2024.1.11.tar.gz 81917 BLAKE2B 197481c41ddf589c46e7f5470de6122f13aa1b69fab46342e20b30e51cc0f5a54cfc240522e16daaea941f4492eb9dd858de66255fba4ddbec8bd763a4f87069 SHA512 03521c3e6473e5e26c329ddeb596548c11a814c65a45b9d5a925346b7cdd9332ec0968cf80c350310955288e703c2e3d914a24253d34546a6ee814b07d373ae6
DIST pytools-2024.1.6.tar.gz 81344 BLAKE2B ff68e2606170bf54e3f609ee7f4cfe58e063f43dcfb2706d5ed7659ea2fde863e6315d0d81dff2e62a3378f195413561a927b0c1e7bedc06388cf4893c07b873 SHA512 a9e934f1cbaf0ace32420f9b74224a06ce8421ee291b837292133969c6788c4cc8bea01446cd4d1505aca9fa81e8ae0d3eacf60d3285186e66d67d5abe10ce3e
DIST pytools-2024.1.8.tar.gz 82220 BLAKE2B bc1dd2eb80be38f6ee450f2d0a780b4815b3a3349bc99ca8521a891bccbc0c4e532881db749def53e26e088238f852ca9174e0fc2a7a7a43a064c1caadec2772 SHA512 d49a6c2cd73915dbc9446f4ed2a05ac30c3235b8fd57fc26814c42cb31ab43c54ae3b06ad69354c7932f266e0f2e0fcde4b9ff91426f8744f924e3d6837f0060
DIST pytools-2024.1.9.tar.gz 80992 BLAKE2B 0c097690eaba7e40be3bc6ec5a0a3a3fd19cd793cd637a7c4ecf89adbd0a64ee63340f7d631c3b23a35e9230de37b239306da35fd7a8d9d9a50a7ea39198f977 SHA512 224bc9e98f6e2fdac1433f1d486946ce17d7b48271b78110066ebbb59384e0e8f3087ad82899fc6fdae4494198872acda384426c49a01b3d3c879eaf9b618323
diff --git a/dev-python/pytools/pytools-2024.1.11.ebuild b/dev-python/pytools/pytools-2024.1.11.ebuild
new file mode 100644
index 000000000000..fcd4323118fd
--- /dev/null
+++ b/dev-python/pytools/pytools-2024.1.11.ebuild
@@ -0,0 +1,33 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{8,9,10,11,12} )
+PYTHON_REQ_USE='sqlite'
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Collection of tools missing from the Python standard library"
+HOMEPAGE="
+ https://mathema.tician.de/software/pytools/
+ https://github.com/inducer/pytools/
+ https://pypi.org/project/pytools/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~riscv"
+
+# NB: numpy & siphash24 are an "extra" (optional) deps
+RDEPEND="
+ >=dev-python/numpy-1.6[${PYTHON_USEDEP}]
+ >=dev-python/platformdirs-2.2[${PYTHON_USEDEP}]
+ >=dev-python/siphash24-1.6[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ >=dev-python/typing-extensions-4[${PYTHON_USEDEP}]
+ ' 3.{10..12})
+"
+
+distutils_enable_tests pytest
diff --git a/dev-python/selenium/Manifest b/dev-python/selenium/Manifest
index 8c751457d45d..273a970fde2e 100644
--- a/dev-python/selenium/Manifest
+++ b/dev-python/selenium/Manifest
@@ -1,2 +1,4 @@
DIST selenium-4.22.0.tar.gz 9242392 BLAKE2B 15197221a53c597b412f805eed7f29f4c34a9d0596a069ea5a6df540b93c013815a59fe1730e8493f5ae854cbc03d5a6647eb57d825ecc68ad0b31949448acaa SHA512 a25c892495ed613c2cd96ab971f46cc101416a4928cffceaa9891c759a41d51df392999495d442a21b459d83a1b287c64c2cd5405b82e16464b56fcc75b2c595
+DIST selenium-4.23.1.tar.gz 945830 BLAKE2B 7931156bc8b79484433cb6a9bd7d49852981e3662a8e75f1f48d683644bac1c78e616e33965c611f50203a6a6f0f5bd09501c16816afe7a7c27b2a9e72a10a14 SHA512 3f9cda92c606ce7a32ecb6f1ef434501368fdab8673a0f23a39d78b80e80b732fafb6e29842ab5301d31cd8eaa907561b91a96cf67e181daeae3378e6a0e9a5b
DIST selenium-selenium-4.22.0.gh.tar.gz 77094998 BLAKE2B 1d74be914debec94e3b9fe41ce40e7432426c7f30a848c63ad82e616fc3dd7dce8e544c33a90e28ca268988b9035aabe41805277085095cc1c65bd38e09117e5 SHA512 f71721b614fa3e346a75ca2391fb03067520d746e1433a75ba896eb6bbe621064bcab7d50337989ccb60d13c493e2df2b3b1bd73cc8dcaf3b62dc4f4ebfaa086
+DIST selenium-selenium-4.23.1-python.gh.tar.gz 77116002 BLAKE2B dad444b109d2494b3442c81187fa6c9d3db2565183304f76d2badf2444e0545727c6f4bf08be0a5102692b9c018b3354a4063758253275624f9f4d6ff6d49254 SHA512 e7d4dc8f14fe9cae3d8e362a03b5068536d64e8484e151187ae9c917350e1f299977fb1521066998fba5cd845c5167a8440d02b15547d066a40d3e79cac1f50d
diff --git a/dev-python/selenium/selenium-4.23.1-r1.ebuild b/dev-python/selenium/selenium-4.23.1-r1.ebuild
new file mode 100644
index 000000000000..2c812ea93a57
--- /dev/null
+++ b/dev-python/selenium/selenium-4.23.1-r1.ebuild
@@ -0,0 +1,135 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_TESTED=( python3_{8,9,10,11,12} pypy3 )
+PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" )
+
+inherit distutils-r1 pypi
+
+# upstream sometimes tags it as ${P}, sometimes as ${P}-python, sigh
+TEST_TAG=${P}-python
+TEST_P=selenium-${TEST_TAG}
+
+DESCRIPTION="Python language binding for Selenium Remote Control"
+HOMEPAGE="
+ https://www.seleniumhq.org/
+ https://github.com/SeleniumHQ/selenium/tree/trunk/py/
+ https://pypi.org/project/selenium/
+"
+SRC_URI+="
+ test? (
+ https://github.com/SeleniumHQ/selenium/archive/${TEST_TAG}.tar.gz
+ -> ${TEST_P}.gh.tar.gz
+ )
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="test-rust"
+
+RDEPEND="
+ >=dev-python/certifi-2021.10.8[${PYTHON_USEDEP}]
+ <dev-python/trio-1[${PYTHON_USEDEP}]
+ >=dev-python/trio-0.17[${PYTHON_USEDEP}]
+ <dev-python/trio-websocket-1[${PYTHON_USEDEP}]
+ >=dev-python/trio-websocket-0.9[${PYTHON_USEDEP}]
+ <dev-python/typing-extensions-5[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.9[${PYTHON_USEDEP}]
+ <dev-python/urllib3-3[${PYTHON_USEDEP}]
+ >=dev-python/urllib3-1.26[${PYTHON_USEDEP}]
+ <dev-python/websocket-client-2[${PYTHON_USEDEP}]
+ >=dev-python/websocket-client-1.8.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/pytest-mock[${PYTHON_USEDEP}]
+ test-rust? (
+ dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
+ dev-python/pytest-xdist[${PYTHON_USEDEP}]
+ dev-util/selenium-manager
+ net-misc/geckodriver
+ || (
+ www-client/firefox
+ www-client/firefox-bin
+ )
+ )
+ )
+"
+
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # do not build selenium-manager implicitly
+ sed -e '/setuptools_rust/d' \
+ -e '/rust_extensions/,/\]/d' \
+ -i setup.py || die
+}
+
+python_test() {
+ if ! has "${EPYTHON/./_}" "${PYTHON_TESTED[@]}"; then
+ einfo "Skipping tests on ${EPYTHON}"
+ return
+ fi
+
+ local EPYTEST_DESELECT=(
+ # expects vanilla certifi
+ test/unit/selenium/webdriver/remote/remote_connection_tests.py::test_get_connection_manager_for_certs_and_timeout
+ )
+ local pytest_args=(
+ # https://github.com/SeleniumHQ/selenium/blob/selenium-4.8.2-python/py/test/runner/run_pytest.py#L20-L24
+ # seriously?
+ -o "python_files=*_tests.py test_*.py"
+ -p pytest_mock
+ )
+ if use test-rust; then
+ local -x PATH=${T}/bin:${PATH}
+ local -x SE_MANAGER_PATH="$(type -P selenium-manager)"
+
+ local EPYTEST_XDIST=1
+ pytest_args+=(
+ -p rerunfailures --reruns=5
+
+ --driver=firefox
+ --browser-binary="$(type -P firefox || type -P firefox-bin)"
+ --driver-binary="$(type -P geckodriver)"
+ --headless=true
+ )
+
+ EPYTEST_DESELECT+=(
+ # expects prebuilt executables for various systems
+ test/selenium/webdriver/common/selenium_manager_tests.py::test_uses_windows
+ test/selenium/webdriver/common/selenium_manager_tests.py::test_uses_linux
+ test/selenium/webdriver/common/selenium_manager_tests.py::test_uses_mac
+ test/selenium/webdriver/common/selenium_manager_tests.py::test_errors_if_invalid_os
+
+ # TODO: these don't respect --*-binary and try to fetch versions
+ test/selenium/webdriver/firefox
+ test/selenium/webdriver/marionette/mn_context_tests.py::test_context_sets_correct_context_and_returns
+ test/selenium/webdriver/marionette/mn_context_tests.py::test_context_sets_correct_context_and_returns
+ test/selenium/webdriver/marionette/mn_options_tests.py::TestIntegration::test_we_can_pass_options
+ test/selenium/webdriver/marionette/mn_set_context_tests.py::test_we_can_switch_context_to_chrome
+
+ # TODO
+ test/selenium/webdriver/common/bidi_script_tests.py
+ test/selenium/webdriver/marionette/mn_options_tests.py::TestUnit::test_binary
+ test/selenium/webdriver/marionette/mn_options_tests.py::TestUnit::test_ctor
+ test/selenium/webdriver/marionette/mn_options_tests.py::TestUnit::test_prefs
+ test/selenium/webdriver/marionette/mn_options_tests.py::TestUnit::test_to_capabilities
+ )
+ else
+ EPYTEST_DESELECT+=(
+ test/selenium
+ )
+ fi
+
+ cd "${WORKDIR}/${TEST_P}/py" || die
+ rm -rf selenium || die
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest "${pytest_args[@]}"
+}
diff --git a/dev-python/selenium/selenium-4.23.1.ebuild b/dev-python/selenium/selenium-4.23.1.ebuild
new file mode 100644
index 000000000000..a99b7205bb66
--- /dev/null
+++ b/dev-python/selenium/selenium-4.23.1.ebuild
@@ -0,0 +1,83 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_TESTED=( python3_{8,9,10,11,12} pypy3 )
+PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" )
+
+inherit distutils-r1 pypi
+
+# upstream sometimes tags it as ${P}, sometimes as ${P}-python, sigh
+TEST_TAG=${P}-python
+TEST_P=selenium-${TEST_TAG}
+
+DESCRIPTION="Python language binding for Selenium Remote Control"
+HOMEPAGE="
+ https://www.seleniumhq.org/
+ https://github.com/SeleniumHQ/selenium/tree/trunk/py/
+ https://pypi.org/project/selenium/
+"
+SRC_URI+="
+ test? (
+ https://github.com/SeleniumHQ/selenium/archive/${TEST_TAG}.tar.gz
+ -> ${TEST_P}.gh.tar.gz
+ )
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/certifi-2021.10.8[${PYTHON_USEDEP}]
+ <dev-python/trio-1[${PYTHON_USEDEP}]
+ >=dev-python/trio-0.17[${PYTHON_USEDEP}]
+ <dev-python/trio-websocket-1[${PYTHON_USEDEP}]
+ >=dev-python/trio-websocket-0.9[${PYTHON_USEDEP}]
+ <dev-python/typing-extensions-5[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.9[${PYTHON_USEDEP}]
+ <dev-python/urllib3-3[${PYTHON_USEDEP}]
+ >=dev-python/urllib3-1.26[${PYTHON_USEDEP}]
+ <dev-python/websocket-client-2[${PYTHON_USEDEP}]
+ >=dev-python/websocket-client-1.8.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/pytest-mock[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # do not build selenium-manager implicitly
+ sed -e '/setuptools_rust/d' \
+ -e '/rust_extensions/,/\]/d' \
+ -i setup.py || die
+}
+
+python_test() {
+ if ! has "${EPYTHON/./_}" "${PYTHON_TESTED[@]}"; then
+ einfo "Skipping tests on ${EPYTHON}"
+ return
+ fi
+
+ local EPYTEST_DESELECT=(
+ # TODO: we may need extra setup or deps
+ test/selenium
+
+ # expects vanilla certifi
+ test/unit/selenium/webdriver/remote/remote_connection_tests.py::test_get_connection_manager_for_certs_and_timeout
+ )
+
+ cd "${WORKDIR}/${TEST_P}/py" || die
+ rm -rf selenium || die
+ # https://github.com/SeleniumHQ/selenium/blob/selenium-4.8.2-python/py/test/runner/run_pytest.py#L20-L24
+ # seriously?
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest -o "python_files=*_tests.py test_*.py" -p pytest_mock
+}
diff --git a/dev-python/sentry-sdk/Manifest b/dev-python/sentry-sdk/Manifest
index cbd8a7dabe11..7650348c31d6 100644
--- a/dev-python/sentry-sdk/Manifest
+++ b/dev-python/sentry-sdk/Manifest
@@ -1,4 +1,5 @@
DIST sentry-python-1.45.0.gh.tar.gz 475425 BLAKE2B 8dc46154dfc1c7c9104a706be032b5269d407dee6845da252f1c603ea4f9486d02d1d3c6bec314064b821dee31b503d07a9c17935ca1f4dd6cc4d7b9c3165094 SHA512 dad23a3f6a8e6ef5fe78e1d38a61977d8974edf306d5688537f331801d8fa0f60743d18cc3dadf6e9a9666c55a01c98b9ff8d8808ece7d8f95ee68a69b6cb9be
DIST sentry-python-2.10.0.gh.tar.gz 534265 BLAKE2B 34f447323476aad6fb463036e58d4100e44368964d50c0d32ae8d4d7d4a89a0adfc70b8fbf7b091843181a21c37eef901f66702fe9e4655287eb5d19c003b096 SHA512 87e0c655fcb96b3462847980c58bde708b5064f80f17433e6ae5ca67d8432150268a542b18779dc5644c153146029141438b9c0a958feb3d35cf9cb6f5cc4b6a
+DIST sentry-python-2.11.0.gh.tar.gz 537891 BLAKE2B ce46efe95a61088f92c02c13ed55c4cde4e1b17cbfbbbdbb0b8092f83d5571239d004810ca193f7954f0469018b2b881ec254530c13d58056993c2811a14a376 SHA512 339ed1b325c84ef350ca29deb326b4adff5a9b648a03ec28dcf6ca461856c79b2f30944a1360204d54020732564f6c30ebe3fc8902c3b3c2a7e66e5bb0f7994b
DIST sentry-python-2.7.1.gh.tar.gz 528495 BLAKE2B 7846e726aaca3d916a5b901aa1cde6ac04e79c32f71a631955a354143fc9937ba8881ccf1e3ed387ec12afcd4e6734ea4eee0614512447bcd58d8875fe97cd35 SHA512 afe034553ddb5eeefa00db26e13cebe82d946f990eb62f8cfde670ad5d9d5c93c0ffb2d0ed5f01f55ac533dca66ab6f53553e5b8f011e08705213cb515146516
DIST sentry-python-2.9.0.gh.tar.gz 531490 BLAKE2B 8b67caa6911fd44e58c2a1d1206e6ecb9dc31f81c15c66763a04f1a65fc89d4667e60f27e055016342c6b4cac5470729c802ffb046e6e0796d5bfd7044caf27d SHA512 aed112a2ee35e23a1431486ff18e67772476ecfc63eacc388d17454a723b98f6e05cfa95a6c9db2cb6be572eed73d249951a411c60184b20eb251520071a4254
diff --git a/dev-python/sentry-sdk/sentry-sdk-2.11.0.ebuild b/dev-python/sentry-sdk/sentry-sdk-2.11.0.ebuild
new file mode 100644
index 000000000000..1d2a2bd98e46
--- /dev/null
+++ b/dev-python/sentry-sdk/sentry-sdk-2.11.0.ebuild
@@ -0,0 +1,128 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{8,9,10,11,12} )
+
+inherit distutils-r1
+
+MY_P=sentry-python-${PV}
+DESCRIPTION="Python client for Sentry"
+HOMEPAGE="
+ https://sentry.io/
+ https://github.com/getsentry/sentry-python/
+ https://pypi.org/project/sentry-sdk/
+"
+SRC_URI="
+ https://github.com/getsentry/sentry-python/archive/${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="PSF-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~sparc ~x86"
+
+RDEPEND="
+ dev-python/urllib3[${PYTHON_USEDEP}]
+ dev-python/certifi[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/asttokens[${PYTHON_USEDEP}]
+ dev-python/executing[${PYTHON_USEDEP}]
+ dev-python/fakeredis[${PYTHON_USEDEP}]
+ dev-python/flask-login[${PYTHON_USEDEP}]
+ dev-python/jsonschema[${PYTHON_USEDEP}]
+ dev-python/pyrsistent[${PYTHON_USEDEP}]
+ <dev-python/pytest-8[${PYTHON_USEDEP}]
+ dev-python/pytest-aiohttp[${PYTHON_USEDEP}]
+ dev-python/pytest-forked[${PYTHON_USEDEP}]
+ dev-python/pytest-localserver[${PYTHON_USEDEP}]
+ dev-python/python-socks[${PYTHON_USEDEP}]
+ dev-python/responses[${PYTHON_USEDEP}]
+ dev-python/werkzeug[${PYTHON_USEDEP}]
+ dev-python/zope-event[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+PATCHES=(
+ "${FILESDIR}/sentry-sdk-1.21.0-ignore-warnings.patch"
+)
+
+python_test() {
+ local EPYTEST_IGNORE=(
+ # tests require Internet access
+ tests/integrations/httpx/test_httpx.py
+ tests/integrations/requests/test_requests.py
+ tests/integrations/django/test_basic.py
+ tests/integrations/socket/test_socket.py
+ # wtf is it supposed to do?!
+ tests/integrations/gcp/test_gcp.py
+ # TODO
+ tests/integrations/bottle
+ # TODO: most of them hang
+ tests/integrations/starlette
+ # TODO
+ tests/integrations/tornado
+ # requires mockupdb
+ tests/integrations/pymongo
+ # requires AWS access
+ tests/integrations/aws_lambda
+ # requires quart_auth
+ tests/integrations/quart
+ # TODO: require opentelemetry (with py3.10)
+ tests/integrations/opentelemetry
+ # broken (incompatible rq version?)
+ tests/integrations/rq
+ )
+
+ local EPYTEST_DESELECT=(
+ # hangs
+ tests/integrations/threading/test_threading.py::test_propagates_threadpool_hub
+ # broken teardown?
+ tests/test_client.py::test_uwsgi_warnings
+ # too many dependencies installed, sigh
+ tests/test_new_scopes_compat_event.py
+ # Internet
+ tests/integrations/stdlib/test_httplib.py::test_outgoing_trace_headers
+ tests/integrations/stdlib/test_httplib.py::test_outgoing_trace_headers_head_sdk
+ tests/integrations/aiohttp/test_aiohttp.py::test_span_origin
+ tests/integrations/stdlib/test_httplib.py::test_span_origin
+ tests/integrations/stdlib/test_subprocess.py::test_subprocess_span_origin
+ # TODO
+ tests/integrations/aiohttp/test_aiohttp.py::test_basic
+ tests/integrations/django
+ tests/integrations/sqlalchemy/test_sqlalchemy.py::test_orm_queries
+ tests/integrations/sqlalchemy/test_sqlalchemy.py::test_query_source
+ tests/integrations/sqlalchemy/test_sqlalchemy.py::test_transactions
+ tests/integrations/stdlib/test_subprocess.py::test_subprocess_basic
+ tests/integrations/threading/test_threading.py
+ tests/integrations/wsgi/test_wsgi.py
+ tests/test_basics.py::test_auto_enabling_integrations_catches_import_error
+ tests/test_client.py::test_databag_breadth_stripping
+ tests/test_client.py::test_databag_depth_stripping
+ tests/test_client.py::test_databag_string_stripping
+ tests/test_utils.py::test_default_release
+ tests/tracing/test_sampling.py::test_records_lost_event_only_if_traces_sample_rate_enabled
+ tests/tracing/test_sampling.py::test_records_lost_event_only_if_traces_sampler_enabled
+ tests/utils/test_contextvars.py::test_leaks
+ # pointless, fragile to packages being installed in parallel
+ tests/test_utils.py::test_installed_modules
+ # TODO
+ tests/profiler/test_continuous_profiler.py::test_continuous_profiler_auto_start_and_manual_stop
+ tests/profiler/test_continuous_profiler.py::test_continuous_profiler_manual_start_and_stop
+ tests/profiler/test_transaction_profiler.py::test_minimum_unique_samples_required
+ tests/profiler/test_transaction_profiler.py::test_profile_captured
+ tests/profiler/test_transaction_profiler.py::test_profiles_sample_rate
+ tests/profiler/test_transaction_profiler.py::test_profiles_sampler
+ tests/new_scopes_compat/test_new_scopes_compat_event.py
+ )
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest -p asyncio -p aiohttp -p pytest_forked -o addopts=
+}
diff --git a/dev-python/sphinx-autoapi/Manifest b/dev-python/sphinx-autoapi/Manifest
index e7d25ff332d2..ccf1a9ebc0c0 100644
--- a/dev-python/sphinx-autoapi/Manifest
+++ b/dev-python/sphinx-autoapi/Manifest
@@ -1,2 +1,3 @@
DIST sphinx-autoapi-3.1.2.gh.tar.gz 68260 BLAKE2B 31315fb298f7dae78c10f839e2738340eaf68d5497f22368c50f14309a564d1c5636015a715a9f99080a4f753416a10c63147e63dfcd53a27d7466ad422f95c4 SHA512 18e4a49e831446fa14278ffda4fec703f3b2c86654ce78fa7f4b89e5a41f1e6b19ea76cb64e7290a3125dc027a2de8aa052495a8bfd4bcc1828780f762e81957
DIST sphinx-autoapi-3.2.0.gh.tar.gz 68693 BLAKE2B f9d70febea444a12c4db906614223415f51e649c3cb02770ca24e7274cb1e6c64a86802545ff1cb7b22e0e63bb63ceaaf1c27e487982a3d8d45e750a497dda01 SHA512 d14d62d4ab414f54f0066a63de490c293fbbbb1ca364b3094ca915fcb7765f373650a933026bf9582aeafb5556efb83c72a907f17c5168888bcfd7cbad081583
+DIST sphinx-autoapi-3.2.1.gh.tar.gz 68891 BLAKE2B b31db0f584498a96d3bf7e57fa92abd884d3b8bb8812236a8491685f0fc81d212e114ae1663e316ba7ba14dee082dd4aeab19941f3d6ab85de95399f3736f596 SHA512 e1920a79ce8954a9da1d33fd46e5c1968990e5cfd960a8c97ac344d3d6dd97c06dbbafb3144e67d223f6504b233e0cf59328f015d918264df12b00aed8e34f8f
diff --git a/dev-python/sphinx-autoapi/sphinx-autoapi-3.2.1.ebuild b/dev-python/sphinx-autoapi/sphinx-autoapi-3.2.1.ebuild
new file mode 100644
index 000000000000..0405fcac85d4
--- /dev/null
+++ b/dev-python/sphinx-autoapi/sphinx-autoapi-3.2.1.ebuild
@@ -0,0 +1,50 @@
+# 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_{8,9,10,11,12} )
+
+inherit distutils-r1
+
+DESCRIPTION="A new approach to API documentation in Sphinx"
+HOMEPAGE="
+ https://sphinx-autoapi.readthedocs.io/
+ https://github.com/readthedocs/sphinx-autoapi/
+ https://pypi.org/project/sphinx-autoapi/
+"
+# sdist is missing docs, as of 2.1.0
+SRC_URI="
+ https://github.com/readthedocs/sphinx-autoapi/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86"
+
+RDEPEND="
+ >=dev-python/astroid-3.0.0[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ >=dev-python/sphinx-6.1.0[${PYTHON_USEDEP}]
+"
+
+BDEPEND+="
+ test? ( dev-python/beautifulsoup4[${PYTHON_USEDEP}] )
+"
+
+DOCS=( README.rst CHANGELOG.rst )
+
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # Internet
+ tests/python/test_pyintegration.py::TestPEP695::test_integration
+ tests/python/test_pyintegration.py::TestPipeUnionModule::test_integration
+ "tests/test_integration.py::TestExtensionErrors::test_extension_setup_errors[dotnetexample"
+ )
+
+ distutils-r1_python_test
+}
diff --git a/dev-python/starlette/Manifest b/dev-python/starlette/Manifest
index 4960f00bb2ac..c5ee95363608 100644
--- a/dev-python/starlette/Manifest
+++ b/dev-python/starlette/Manifest
@@ -1,2 +1,3 @@
DIST starlette-0.37.2.gh.tar.gz 2846433 BLAKE2B 489fe0d3148f8f006d32d3e52e82cc2c07d9b1a8e3a3cadabe2aa2eb9dd7e00b35e2093dc1de0cb4a6a4606395ed4d19b26778686216a7f8b55a15e61701c9da SHA512 27240c706553e610da05cfc92f818c61e97a891ea7c960fef925a122100a61931cbca973a0995aa1e79d192cda2250139f471929a3f4a7b0f4600d00b6287744
DIST starlette-0.38.0.gh.tar.gz 2847354 BLAKE2B edcaa8d360f8316fc91f8e32efe778c74bad491c044e2cf5577878a27b840303b34a8f0aa0cc518165a54f28049fb9ed27af4f7e260dc6fc4fbf1f61897237e6 SHA512 89b79f8e3daf1567bc69a2f1f6710a0e981a6633cd462eaa1e014e514f4dbdc98fcb592a3750a1055f08bad28908fc763267e7902479553513e96e2db566b63f
+DIST starlette-0.38.1.gh.tar.gz 2847236 BLAKE2B 79ab91120ac9739e438c6fb52f36c7b2b011ad9b12dbe7f6b883b19e58d76189da4cbb3f42e8d0ffba957b225596f6a938862dd577962b2f9b7114c2105f3de3 SHA512 a7f6415a2fb3640a7f6568fc8d115a04b43ca93f9cff189802d79c1c2c33d3a6eaa631a04c871e4897d9c9d260d2b410095813ec90a86b8c1a23696608f30148
diff --git a/dev-python/starlette/starlette-0.38.1.ebuild b/dev-python/starlette/starlette-0.38.1.ebuild
new file mode 100644
index 000000000000..53c7d8efaeb7
--- /dev/null
+++ b/dev-python/starlette/starlette-0.38.1.ebuild
@@ -0,0 +1,61 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{8,9,10,11,12} pypy3 )
+
+inherit distutils-r1
+
+MY_P=${P/_p/.post}
+DESCRIPTION="The little ASGI framework that shines"
+HOMEPAGE="
+ https://www.starlette.io/
+ https://github.com/encode/starlette/
+ https://pypi.org/project/starlette/
+"
+# no docs or tests in sdist, as of 0.27.0
+SRC_URI="
+ https://github.com/encode/starlette/archive/${PV/_p/.post}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ <dev-python/anyio-5[${PYTHON_USEDEP}]
+ >=dev-python/anyio-3.4.0[${PYTHON_USEDEP}]
+ >=dev-python/httpx-0.22.0[${PYTHON_USEDEP}]
+ dev-python/itsdangerous[${PYTHON_USEDEP}]
+ dev-python/jinja[${PYTHON_USEDEP}]
+ >=dev-python/python-multipart-0.0.7[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ <dev-python/pytest-8.3[${PYTHON_USEDEP}]
+ >=dev-python/pytest-8[${PYTHON_USEDEP}]
+ dev-python/trio[${PYTHON_USEDEP}]
+ )
+"
+
+PATCHES=(
+ # https://github.com/encode/starlette/pull/2648
+ "${FILESDIR}/${PN}-0.38.0-py313.patch"
+)
+
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_IGNORE=(
+ # Unpackaged 'databases' dependency
+ tests/test_database.py
+ )
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest -p anyio
+}
diff --git a/dev-python/tifffile/Manifest b/dev-python/tifffile/Manifest
index 1ec6af26e5cb..6d5096d34cd5 100644
--- a/dev-python/tifffile/Manifest
+++ b/dev-python/tifffile/Manifest
@@ -1,2 +1,3 @@
DIST tifffile-2024.7.2.gh.tar.gz 349770 BLAKE2B c722f23857310826568f54bffa4f071c8018c6d17ee810dad423f6e9ad80ee99f888bf9282e8cc53d710ba5052c69136e8385aa7ac7e9052346fa766cfdc1747 SHA512 11efbda0f20428fbff4863f52425021de9303be8ad76051c7daf5921f1282a88655872c98dcb2530ea354b1f2833509b3b98b82d035dc8bbae4a4d2da0ef8d47
DIST tifffile-2024.7.21.gh.tar.gz 350351 BLAKE2B 665060211809e51ef38f233d300524e1af79f02c966c3409269280fd6b383022d3b2a87b6c581f7703d31f93b279f77779dc63d2bffbd2f95dd55f954f7f8bc4 SHA512 5d41d389e7ba706bf2fa6ed224878a2af4aa4ba98c9ec4f3b975e32019e894869bbdd8615619dfd7910a9600f05703f14371981be281e9f9144cb240e4be26c0
+DIST tifffile-2024.7.24.gh.tar.gz 350866 BLAKE2B f978e93c308bd7813d2cb6d0c48686ff75cdf8702aaa6888a4a9b50b3dcd60edb15f8a1404b8468aa38e4fefc0161a49448bfd57a5d7719ac7a8372a5a72dc00 SHA512 ad2ca4412a11f3afa175811651f85b2b9ff3da3d1382633ca9b50530fe976050e56abf7c2333660e07230f826fb8af152df355ee211a2409408be6084137647b
diff --git a/dev-python/tifffile/tifffile-2024.7.24.ebuild b/dev-python/tifffile/tifffile-2024.7.24.ebuild
new file mode 100644
index 000000000000..1f53f5beadd7
--- /dev/null
+++ b/dev-python/tifffile/tifffile-2024.7.24.ebuild
@@ -0,0 +1,47 @@
+# Copyright 2021-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{8,9,10,11,12} )
+
+inherit distutils-r1
+
+DESCRIPTION="Read and write TIFF files"
+HOMEPAGE="
+ https://pypi.org/project/tifffile/
+ https://github.com/cgohlke/tifffile/
+ https://www.cgohlke.com/
+"
+SRC_URI="
+ https://github.com/cgohlke/tifffile/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="
+ >=dev-python/numpy-1.19.2[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/defusedxml[${PYTHON_USEDEP}]
+ >=dev-python/fsspec-2021.5.0[${PYTHON_USEDEP}]
+ dev-python/lxml[${PYTHON_USEDEP}]
+ dev-python/xarray[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_test() {
+ local -x SKIP_LARGE=1
+ local -x SKIP_HTTP=1
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest
+}
diff --git a/dev-python/types-docutils/Manifest b/dev-python/types-docutils/Manifest
index 9aae0752c9d7..bbadaf1d6bf0 100644
--- a/dev-python/types-docutils/Manifest
+++ b/dev-python/types-docutils/Manifest
@@ -1,2 +1,3 @@
DIST types-docutils-0.21.0.20240710.tar.gz 19813 BLAKE2B ffe7a9605faf155ad968e6bf190fb2cfec4e09ce09c8b2c9346710c9065e18f169682122c9ba83acd331f166dc9ed925be55626be4320553de2f1f467d2a0e67 SHA512 f870c692666c9966cba11fec7c441cbdf0f5510d586ebea467880bdec859783aeb23a3621dc14fc65021ec3cd917c929116642901048249ea8549ede4ff1c02b
DIST types-docutils-0.21.0.20240711.tar.gz 19857 BLAKE2B db38ce7230323b6710ca0f183eb77d700f6fc895af5956abde65f85e976dc15db920eab6b69483fa7ad3361fef0286069875ec02564d4a855244cdb255e039c0 SHA512 770aa29d2e0fb51c35924239e636ec5d31fe6a9986f3842afd6e7a6414e2ae281d1e88bbce1343d69f9d596381bee056f7471566e051025fb2dd9ad93b188786
+DIST types-docutils-0.21.0.20240724.tar.gz 20175 BLAKE2B a21715a3f24c120e58b4d542e97de8f0a580ad40fe9f7d451b9e2b2072f4eb552d750662d198d8afcd8a6f7e0be3605b727ac014f229214849d9ba3757feb7d8 SHA512 5fc881f945a0755d38cc36ed2134303e421f4f19016517ffb88f39a7f29d2075eaf4d5691c1280a90597fa87478c9eed747ad7a40df210ce0ab3af7ed36e6281
diff --git a/dev-python/types-docutils/types-docutils-0.21.0.20240724.ebuild b/dev-python/types-docutils/types-docutils-0.21.0.20240724.ebuild
new file mode 100644
index 000000000000..0d86c4835acd
--- /dev/null
+++ b/dev-python/types-docutils/types-docutils-0.21.0.20240724.ebuild
@@ -0,0 +1,17 @@
+# Copyright 2022-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_NO_NORMALIZE=1
+PYTHON_COMPAT=( python3_{8,9,10,11,12} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Typing stubs for docutils"
+HOMEPAGE="https://pypi.org/project/types-docutils/"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
diff --git a/dev-python/types-setuptools/Manifest b/dev-python/types-setuptools/Manifest
index 6985efc567ba..b0b7c29d1f08 100644
--- a/dev-python/types-setuptools/Manifest
+++ b/dev-python/types-setuptools/Manifest
@@ -1,3 +1,4 @@
DIST types-setuptools-70.2.0.20240704.tar.gz 39301 BLAKE2B 697ae444f26b05b00d922610b05e12f76101cbd86de4ebf7d33c335f6e35aa2e168ebe780329ebf7a2d7e4f38b9255647fb08ce10828a2e476863dc3ac9b5b19 SHA512 a5ad2c1e038473dc676199b9cc8b5f73e2c32a3db0c6474cd02c61c22d945658f122fbaaa299c04138efe0be20db789ceb376f77013f9502f5f60f78e22711f0
DIST types-setuptools-70.3.0.20240710.tar.gz 39352 BLAKE2B 7ce226fe33a714f1467a6656832b6c8b01ee9821fd7c8345f32fb0675afa55689be094f7e695e11d06ddc38e58443b637d2ddf64aad89d456475ec717d8daef1 SHA512 c8c213a1d401a6aa46d0990bc0f0955261b113987713cfdfea683b90232a8c78bce0575612b4fbfeba3b2c12d9e6846ffc45ada7da5f2e3832c2ee8354249304
DIST types-setuptools-71.1.0.20240723.tar.gz 39110 BLAKE2B 6b7fc328913bf3f6778a433ffcaa989f98182986836f8fb773ca9a7e132124a70fdfbd47e4b424b7f201b512fb869e1bb7a75308317ab761c92891a2ece8e7a2 SHA512 ac14a14c31780f4e50765f8ff17078e3ca23590b8ccdc4848c0171b85f1e807146944d1c6ec8ff6fcdedfbe357d3264847a44936b88b9c6698f1db5bea57d26d
+DIST types-setuptools-71.1.0.20240724.tar.gz 39287 BLAKE2B 78d5fe5cd9ef13d12c7c86474e76a4651d9e40b4b1cd8e05052b28c23a066979d5228f20cc8e1b3be0d691040616f13d9a78fc752092a1678eb5502780d8bf4a SHA512 af44e7e046cc79d904b51e3e2f98f266a8d0fd5108d495b73cb920ade45b90daf683727475aa04824752207b9980b3a4c7e796d90bcefb15626cb693e78df466
diff --git a/dev-python/types-setuptools/types-setuptools-71.1.0.20240724.ebuild b/dev-python/types-setuptools/types-setuptools-71.1.0.20240724.ebuild
new file mode 100644
index 000000000000..c755b6e96b17
--- /dev/null
+++ b/dev-python/types-setuptools/types-setuptools-71.1.0.20240724.ebuild
@@ -0,0 +1,17 @@
+# Copyright 2023-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_NO_NORMALIZE=1
+PYTHON_COMPAT=( python3_{8,9,10,11,12} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Typing stubs for setuptools"
+HOMEPAGE="https://pypi.org/project/types-setuptools/"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
diff --git a/dev-python/uv/Manifest b/dev-python/uv/Manifest
index 2e212ea81f51..a01568fbdaa4 100644
--- a/dev-python/uv/Manifest
+++ b/dev-python/uv/Manifest
@@ -8,3 +8,5 @@ DIST uv-0.2.25-crates.tar.xz 63731168 BLAKE2B 5693f7db28756e74ad619f1ed0ad9f1c7a
DIST uv-0.2.25.gh.tar.gz 1377235 BLAKE2B c8c3a68b16c82d51de31700973e52e6745c26a5349696065e9b140f2304ca5cfc30e8a0922178c4630ed6a4823141a82bf0cd8a6631b1a4de1e77a733b70251a SHA512 c78a4bf66ac1140767d0fb7af35ba3f3cd044d04447862a9374b9491742a627e7a27df04689ee64f9dcb6445619a419022e0ae0da4a0fdedf531db9f902583e0
DIST uv-0.2.26.gh.tar.gz 1401835 BLAKE2B 24d4fdb7f332635293235602ba117167432aa9d9ca196dc835b444a55f0c16fa19aaefb883282c08299aedce1e586dfd8d1f90a889c7ff0c907c366c9391865a SHA512 a630c4c7e8e306336f49d16eebe0bbb20ccbcb0401c495b2c3ab273d04df736737167ad6d368193f39d4bc7ad0e7475cb0e42d81fd2c420fd4f8ef000b820002
DIST uv-0.2.27.gh.tar.gz 1421504 BLAKE2B 18bbc260d57a12c9265da8bf9d566678cba95374db22a6aca0d66550eb23d09490814111763876cf8db97671899d9ccbe121df9d7cadd357d2275199569e33a7 SHA512 86fdc58c6a0fa93c77c8dd08a58385702ed16a6421658d3d97fcf1011bf6bc562161e4e0ad8d021417e2e0cd3860bfc0384aa9550b1c5bce52aa3cb32b1f8539
+DIST uv-0.2.28-crates.tar.xz 56802104 BLAKE2B c0eed0eb3405a9a06918091926864731b35060e1a67e28a8916090c5f61c76633ca78584270003212efe892727f0e53951385a1bb0df337044aa3996492d6e82 SHA512 10e233add9062ec4a9ca73bc13bb8dc85ffa109a432d7001d009a882c0edc1ed6a5a31c53dba012bc825bec855290d085ea17e797e9bc3335c8f5268a17d0a56
+DIST uv-0.2.28.gh.tar.gz 1448749 BLAKE2B 162f07ff36f1e4edb036fe10ab2f17b8aeefb0e11fbd2a6b15d48f1d77c9986bf24930c8f9e111d470f1d0344d97f970aeb50bfa8e0362974c06f21b4723f8ad SHA512 ca2e25e0e3edd15d033516aa2f1ad799e6008bd96045443d011c2da8c29813192152e2b60d242cd13491b2248f9bb9c2d793c93c379e73e2249190ae9b180615
diff --git a/dev-python/uv/uv-0.2.28.ebuild b/dev-python/uv/uv-0.2.28.ebuild
new file mode 100644
index 000000000000..4a26ef308765
--- /dev/null
+++ b/dev-python/uv/uv-0.2.28.ebuild
@@ -0,0 +1,109 @@
+# Copyright 2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+CRATES="
+"
+
+declare -A GIT_CRATES=(
+ [async_zip]='https://github.com/charliermarsh/rs-async-zip;1dcb40cfe1bf5325a6fd4bfcf9894db40241f585;rs-async-zip-%commit%'
+ [pubgrub]='https://github.com/astral-sh/pubgrub;3f0ba760951ab0deeac874b98bb18fc90103fcf7;pubgrub-%commit%'
+ [reqwest-middleware]='https://github.com/astral-sh/reqwest-middleware;21ceec9a5fd2e8d6f71c3ea2999078fecbd13cbe;reqwest-middleware-%commit%/reqwest-middleware'
+ [reqwest-retry]='https://github.com/astral-sh/reqwest-middleware;21ceec9a5fd2e8d6f71c3ea2999078fecbd13cbe;reqwest-middleware-%commit%/reqwest-retry'
+)
+
+inherit cargo check-reqs
+
+CRATE_PV=0.2.28
+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://dev.gentoo.org/~mgorny/dist/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 ISC MIT
+ MPL-2.0 Unicode-DFS-2016
+"
+# ring crate
+LICENSE+=" openssl"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
+IUSE="test"
+RESTRICT="test"
+PROPERTIES="test_network"
+
+BDEPEND="
+ >=virtual/rust-1.77
+ test? (
+ dev-lang/python:3.8
+ dev-lang/python:3.9
+ dev-lang/python:3.10
+ dev-lang/python:3.11
+ dev-lang/python:3.12
+ )
+"
+
+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
+}
+
+src_prepare() {
+ default
+
+ # remove patch.* that breaks GIT_CRATES
+ sed -i -e "/^\[patch/,\$s@^\(reqwest-middleware = \).*@\1 { path = \"${WORKDIR}/reqwest-middleware-21ceec9a5fd2e8d6f71c3ea2999078fecbd13cbe/reqwest-middleware\" }@" Cargo.toml || die
+
+ # https://github.com/vorot93/tokio-tar/pull/23
+ # (fortunately uv already depends on portable-atomic, so we don't
+ # have to fight Cargo.lock)
+ cd "${ECARGO_VENDOR}/tokio-tar-0.3.1" || die
+ eapply "${FILESDIR}/tokio-tar-0.3.1-ppc.patch"
+}
+
+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
+
+ cd crates/uv || die
+ cargo_src_test --no-fail-fast
+}
+
+src_install() {
+ cd crates/uv || die
+ cargo_src_install
+}