summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
authorLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2024-11-01 07:21:26 +0000
committerLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2024-11-01 07:21:26 +0000
commite8613737f8488d500058cc8c5e7ad45a96ad2a0a (patch)
tree864bbd6ac42dad2589dbd46239e38b4a82e4e0af /dev-python
parenta796170fd911c9b466cbcb63efaa4f9cf59da488 (diff)
downloadbaldeagleos-repo-e8613737f8488d500058cc8c5e7ad45a96ad2a0a.tar.gz
baldeagleos-repo-e8613737f8488d500058cc8c5e7ad45a96ad2a0a.tar.xz
baldeagleos-repo-e8613737f8488d500058cc8c5e7ad45a96ad2a0a.zip
Adding metadata
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/Faker/Faker-30.8.2.ebuild42
-rw-r--r--dev-python/Faker/Manifest1
-rw-r--r--dev-python/Levenshtein/Levenshtein-0.26.0.ebuild2
-rw-r--r--dev-python/aiohttp/Manifest4
-rw-r--r--dev-python/aiohttp/aiohttp-3.10.5.ebuild112
-rw-r--r--dev-python/aiohttp/aiohttp-3.10.6.ebuild112
-rw-r--r--dev-python/aiohttp/aiohttp-3.10.8.ebuild123
-rw-r--r--dev-python/aiohttp/aiohttp-3.10.9.ebuild123
-rw-r--r--dev-python/boto3/Manifest1
-rw-r--r--dev-python/boto3/boto3-1.35.53.ebuild53
-rw-r--r--dev-python/botocore/Manifest1
-rw-r--r--dev-python/botocore/botocore-1.35.53.ebuild67
-rw-r--r--dev-python/django-cacheops/Manifest1
-rw-r--r--dev-python/django-cacheops/django-cacheops-7.1.ebuild68
-rw-r--r--dev-python/hypothesis/Manifest1
-rw-r--r--dev-python/hypothesis/hypothesis-6.116.0.ebuild103
-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/numpy/files/numpy-2.0.2-setuptools-74.patch29
-rw-r--r--dev-python/numpy/numpy-2.0.2-r1.ebuild (renamed from dev-python/numpy/numpy-2.0.2.ebuild)12
-rw-r--r--dev-python/pdm/Manifest1
-rw-r--r--dev-python/pdm/pdm-2.20.0_p1.ebuild119
-rw-r--r--dev-python/pythran/Manifest1
-rw-r--r--dev-python/pythran/pythran-0.17.0.ebuild107
-rw-r--r--dev-python/rapidfuzz/rapidfuzz-3.10.0.ebuild2
-rw-r--r--dev-python/selenium/Manifest2
-rw-r--r--dev-python/selenium/selenium-4.26.1.ebuild135
-rw-r--r--dev-python/tinyhtml5/tinyhtml5-2.0.0.ebuild2
-rw-r--r--dev-python/uv/Manifest3
-rw-r--r--dev-python/uv/uv-0.4.29.ebuild145
-rw-r--r--dev-python/weasyprint/weasyprint-63.0.ebuild2
-rw-r--r--dev-python/werkzeug/Manifest1
-rw-r--r--dev-python/werkzeug/werkzeug-3.1.0.ebuild54
-rw-r--r--dev-python/whitenoise/Manifest4
-rw-r--r--dev-python/whitenoise/whitenoise-6.8.2.ebuild (renamed from dev-python/whitenoise/whitenoise-6.6.0.ebuild)0
37 files changed, 962 insertions, 500 deletions
diff --git a/dev-python/Faker/Faker-30.8.2.ebuild b/dev-python/Faker/Faker-30.8.2.ebuild
new file mode 100644
index 000000000000..aea1a8ba7ec6
--- /dev/null
+++ b/dev-python/Faker/Faker-30.8.2.ebuild
@@ -0,0 +1,42 @@
+# Copyright 2022-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A Python package that generates fake data for you"
+HOMEPAGE="
+ https://github.com/joke2k/faker/
+ https://pypi.org/project/Faker/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/python-dateutil-2.4.2[${PYTHON_USEDEP}]
+ dev-python/typing-extensions[${PYTHON_USEDEP}]
+ !dev-ruby/faker
+"
+BDEPEND="
+ test? (
+ dev-python/freezegun[${PYTHON_USEDEP}]
+ dev-python/pillow[${PYTHON_USEDEP},tiff]
+ dev-python/validators[${PYTHON_USEDEP}]
+ )
+"
+
+# note: tests are flaky with xdist
+distutils_enable_tests pytest
+
+python_test() {
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ local -x PYTEST_PLUGINS=faker.contrib.pytest.plugin
+ epytest
+ epytest --exclusive-faker-session tests/pytest/session_overrides
+}
diff --git a/dev-python/Faker/Manifest b/dev-python/Faker/Manifest
index b1659355410b..5cf3dfc5ee5d 100644
--- a/dev-python/Faker/Manifest
+++ b/dev-python/Faker/Manifest
@@ -1,3 +1,4 @@
DIST faker-30.3.0.tar.gz 1797350 BLAKE2B 3c8da599ea115637687d168acc299803844ec42d645ea6485f80911becdde4c0e93a1a065f831048651f1c749c74d05f57eb978ddb95f229f58d194710b3fbf8 SHA512 843d7b46ad5585b715a73a831f8f5fb912f545dcec1d12fbf2296278feb8b0838aad613df8f39b1c515657e617737795ce5775eba89d0d4e645325dc2f50b0ad
DIST faker-30.6.0.tar.gz 1806340 BLAKE2B e39a41aa46a45d9431908c0c76371fd51d23bcbb110bba8a8d015e150b7a4c5b767c5eca59846de659637af4f182377152b4ed49c1f68c971aee884df819e011 SHA512 e313d128ee8ebc724d63e0f3f42d16b5b8875e499449b67c0ce8b7ffc1613397c675da9f2933833ef112c6ebb669a51140183714015e9fcc3e02dbc097bfd8f6
DIST faker-30.8.1.tar.gz 1808667 BLAKE2B 758f452bc7412a7a61f11c99202616c1b63817d7b33eca80d0d87d5181c735d124d68fd81b3c3db0b3c09898ecfd4b36b9cee6d80be8707a5ec79e871a7c4e08 SHA512 cfd628948c0a067c779b5ac830bac0169a92ceea44218db69565bbdac67f053a790541c020c1d3844589455437e36b32d9096993b8f511a06ebc6606c0c998b6
+DIST faker-30.8.2.tar.gz 1808329 BLAKE2B a9788fdf875bf57e76de33478cf6ebb81a6cc94b9261f5226ea9a797e2d8332a0c9035896b03e86f741b630312872c10678b34dee11d92eea00b9b37d719944f SHA512 4db0352155b724890986c5b1ae59783fed7cd6a0aca289f6df2065c028cd0b9e03560faee60f2b75455e51c212819bc85ddf10c13351e774424fce6f553636be
diff --git a/dev-python/Levenshtein/Levenshtein-0.26.0.ebuild b/dev-python/Levenshtein/Levenshtein-0.26.0.ebuild
index 40fcc59041a8..d7caa2015a43 100644
--- a/dev-python/Levenshtein/Levenshtein-0.26.0.ebuild
+++ b/dev-python/Levenshtein/Levenshtein-0.26.0.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="GPL-2+"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ppc ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ppc ppc64 ~riscv ~s390 ~sparc x86"
DEPEND="
<dev-cpp/rapidfuzz-cpp-4
diff --git a/dev-python/aiohttp/Manifest b/dev-python/aiohttp/Manifest
index b9d572d51c99..6e997f3437e8 100644
--- a/dev-python/aiohttp/Manifest
+++ b/dev-python/aiohttp/Manifest
@@ -1,6 +1,2 @@
DIST aiohttp-3.10.10.tar.gz 7542993 BLAKE2B edc9808937892e2915b591a3d5b9e2be8401a67e6421ada8c49e27cfa1ee67283465d17e3c3a77f7579d4ed45df39884a2f9e336429ef7d64adf351ce7507a85 SHA512 c6928d989c110c323347b6f5b0a90c42e17924b4121455a240f5a15d87f939580640ba0f8d576f8254e484e5b631ec4562a2fb4e6c86402924b1892a6d72aff8
-DIST aiohttp-3.10.5.tar.gz 7524360 BLAKE2B 57ca70d1a075ae7f9ba9b86a19be52e05e88518e28baefb16e852ce83707bfbad9cb06af08a2cea3371349649e85ab6dfb3426ee2759a4e84456041373575a8b SHA512 bb932d24b3ce332d8a232ef3bf1fbe9b0a7df9986ad5e81d5f41bc31a81204653e5250c4f0ee77a9eeb53d404bd907b12977d31caae54c00ef0146350629e750
-DIST aiohttp-3.10.6.tar.gz 7538429 BLAKE2B 55df48ae6321aa9d18ecf02ea16a34a328ad36ec87b0af77291c89684cd8de1fe35617187a700229c056f062ea50e8bd2249c2adb4e39a0899cab6fcd5521ac4 SHA512 9f5a989db03a1c9ae7a67c2888259466a4e9d3926f6e7bd8c31bb7981b7378dd8712a839e9c746e3502cbcdaef03b5c9dfe5fd65d0fde0af938bfbf4c7341327
-DIST aiohttp-3.10.8.tar.gz 7540022 BLAKE2B 8407815a0f65035032c9c59174642784a9ad5845d6655c32f29369d3a7ffdd63d52310ec61ed3a106122a4aeb22ed0db5264a353b7e483bb63021cdd9526b5b6 SHA512 f19a58e698908faf164592037d57f1d133e064616b5552df26639a9a7248e90a960cb1b070dbbb90c058579cbdcc4edb72b2846bd20ab2867b4b0c670ddd177f
-DIST aiohttp-3.10.9.tar.gz 7541983 BLAKE2B 3bcfcd09c537fbd2a976f95b5c8387280ec0256bbc231b2bc5a07a1524e6926bfdebd182b1365d950b5a1465f44c4db004a645af7490c57cd4637978595fa6d4 SHA512 0b52ba3ff2c78113117f56818ab177791f2764b2e5ce6531ce5b0481ab9d22b4fe621d70c1c2067eab8cfdd423a2cf0fdaefd8b13231aecf0491326bdf12d1a0
DIST aiohttp-3.11.0b0.tar.gz 7587019 BLAKE2B 7391adbb55819deaf4a70f6b8a6a55bb5ded9a0b932ed5597585f3c1ae669575ecd4050df8757f7ada42cedb1301027f4aa1b6c027d6f7140bb5612d4268b926 SHA512 9754c51e63b20ff4df28d04897e630165bb0da6bc2924cd43a610d5679b3a87f82d9c0eebc0c2d6eb82c82c37b4908e7ff73ed801df7956846ac1a260219e61d
diff --git a/dev-python/aiohttp/aiohttp-3.10.5.ebuild b/dev-python/aiohttp/aiohttp-3.10.5.ebuild
deleted file mode 100644
index c4db079b711a..000000000000
--- a/dev-python/aiohttp/aiohttp-3.10.5.ebuild
+++ /dev/null
@@ -1,112 +0,0 @@
-# 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_{9,10,11,12,13} 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="~alpha amd64 arm arm64 hppa ~loong ~mips ppc ppc64 ~riscv ~s390 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-rerunfailures[${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" \
- -p rerunfailures --reruns=5
-}
diff --git a/dev-python/aiohttp/aiohttp-3.10.6.ebuild b/dev-python/aiohttp/aiohttp-3.10.6.ebuild
deleted file mode 100644
index 83d2fa535acb..000000000000
--- a/dev-python/aiohttp/aiohttp-3.10.6.ebuild
+++ /dev/null
@@ -1,112 +0,0 @@
-# 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_{9,10,11,12,13} 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="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 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.12.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-rerunfailures[${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" \
- -p rerunfailures --reruns=5
-}
diff --git a/dev-python/aiohttp/aiohttp-3.10.8.ebuild b/dev-python/aiohttp/aiohttp-3.10.8.ebuild
deleted file mode 100644
index ea5accf26b33..000000000000
--- a/dev-python/aiohttp/aiohttp-3.10.8.ebuild
+++ /dev/null
@@ -1,123 +0,0 @@
-# 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_{9,10,11,12,13} 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="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
-IUSE="+native-extensions 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.12.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="
- native-extensions? (
- 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-rerunfailures[${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() {
- if [[ ! -d tools && ${EPYTHON} != pypy3 ]] && use native-extensions
- then
- # 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
- fi
-}
-
-python_compile() {
- # implicitly disabled for pypy3
- if ! use native-extensions; then
- local -x AIOHTTP_NO_EXTENSIONS=1
- fi
-
- distutils-r1_python_compile
-}
-
-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
- )
-
- # upstream unconditionally blocks building C extensions
- # on PyPy3 but the test suite needs an explicit switch
- if [[ ${EPYTHON} == pypy3 ]] || ! use native-extensions; then
- local -x AIOHTTP_NO_EXTENSIONS=1
- fi
-
- 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" \
- -p rerunfailures --reruns=5
-}
diff --git a/dev-python/aiohttp/aiohttp-3.10.9.ebuild b/dev-python/aiohttp/aiohttp-3.10.9.ebuild
deleted file mode 100644
index 5cde7a76339f..000000000000
--- a/dev-python/aiohttp/aiohttp-3.10.9.ebuild
+++ /dev/null
@@ -1,123 +0,0 @@
-# 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_{9,10,11,12,13} 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="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86"
-IUSE="+native-extensions 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.12.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="
- native-extensions? (
- 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-rerunfailures[${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() {
- if [[ ! -d tools && ${EPYTHON} != pypy3 ]] && use native-extensions
- then
- # 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
- fi
-}
-
-python_compile() {
- # implicitly disabled for pypy3
- if ! use native-extensions; then
- local -x AIOHTTP_NO_EXTENSIONS=1
- fi
-
- distutils-r1_python_compile
-}
-
-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
- )
-
- # upstream unconditionally blocks building C extensions
- # on PyPy3 but the test suite needs an explicit switch
- if [[ ${EPYTHON} == pypy3 ]] || ! use native-extensions; then
- local -x AIOHTTP_NO_EXTENSIONS=1
- fi
-
- 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" \
- -p rerunfailures --reruns=5
-}
diff --git a/dev-python/boto3/Manifest b/dev-python/boto3/Manifest
index fcb5d6f6b0fe..30f5409ca57c 100644
--- a/dev-python/boto3/Manifest
+++ b/dev-python/boto3/Manifest
@@ -4,3 +4,4 @@ DIST boto3-1.35.49.gh.tar.gz 878577 BLAKE2B 8f9ddf29eaad2f91a9ba670b268ac987f7f8
DIST boto3-1.35.50.gh.tar.gz 878776 BLAKE2B 23b43830c16657e688bec46b65ae784fa8f70c5849f809bf71a4ab73533d43efd76a56bf0694d99a488bffed42896f034fe0b4680705093bd59d0dd86904c721 SHA512 91b66821f5698f09ef61851fe8419cfbe2b85f1a586858a490d12ef63ef2309af76b5393aeeb3a6b31a74a1d2dc46712750fe4b75dc627dc55fd681a5b019edf
DIST boto3-1.35.51.gh.tar.gz 879889 BLAKE2B 02e4a1713aa5112f4f8aa04b92c07748b1a4e5810ebac8ee62bd7f472852d77f3346106ad969e88cea9a9d0698268df1e7085a151000d2c6fa5efa424e21a829 SHA512 c4a733332ab77fd3b58a679e72893c2ef92e6f995c2993adca51423d5520b2fbf3febf6b97c4bcb6f341b55ffa01c19782b8aa9c822f8a5bc6012cd13c441b0b
DIST boto3-1.35.52.gh.tar.gz 882473 BLAKE2B 486214a218babb62eaf4df54e3df5521cea656bb7246b8b7f1c5ecbdd73724b1340c31f7211c962d91875fa434f210bc0866baad79b9e3c2495ffc600a6756c6 SHA512 981801e059640ffc57711b643b5bb52bed7dd8a0f1015b96b298cd817a2d65937a0e6a8a070befafc819eb2babb0819e2144223d075495507fcb75fe76af8d3a
+DIST boto3-1.35.53.gh.tar.gz 882494 BLAKE2B d28732988f93a4171913d882c90db2ecbae9349a590aae87df6c70d123c8ccc485b9e1adb1cf741fffcb5f4c6b5b7c111fc1a83c81357c710a2a1b17d1dac18a SHA512 e97ef9de59b9ff523f872a85af9125a40aabef1531f69b7ec0b49c9a8064e499fa098ab6d53036c4991cecc35a316fe1aaa27979444310c36ce1a638f041928f
diff --git a/dev-python/boto3/boto3-1.35.53.ebuild b/dev-python/boto3/boto3-1.35.53.ebuild
new file mode 100644
index 000000000000..d91ce27598cf
--- /dev/null
+++ b/dev-python/boto3/boto3-1.35.53.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_{9,10,11,12,13} )
+
+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 c4889eddee62..37ee952f464c 100644
--- a/dev-python/botocore/Manifest
+++ b/dev-python/botocore/Manifest
@@ -4,3 +4,4 @@ DIST botocore-1.35.49.gh.tar.gz 13473579 BLAKE2B 0b1a0e8ec76ad0d4ec677532626c4f3
DIST botocore-1.35.50.gh.tar.gz 13480380 BLAKE2B c75e98122762a9f061006019c3e8b12b3b374dc98236943e7d566a12faf791606e15e90cabd80e7ebe1b0b8f7cec8f39ca4d0852c80b95347bf5953cfbcdbd15 SHA512 41af923db98efcf885661ee9fc7debdd659df66a56b6bacda3aee5aeaa5eb774668e3617485c06eace75b7aa71f04abf7c6481c7d5a5a0c170f9add37ca8a8db
DIST botocore-1.35.51.gh.tar.gz 13481192 BLAKE2B a1b5689178cf800baf69965a8b69ba317aeb0c8f4752973ea01c4f9ec4720aa1538dbbcf242a834374a7943597d012c2f1961b813a79648690fa06d6f3aee168 SHA512 40a00597ebf30548addef59a0e4c9c78fd7ffcbdff961a8ec15954d3b30b94fb5600c1cbb1e4e98a89c034958bf0ff55f71721cb8637a9a3439cb8cce188e132
DIST botocore-1.35.52.gh.tar.gz 13562020 BLAKE2B 3164243950d4f7cfee0d2b01c46ed9c61ac2db4361dd32caea263b4f424b3e35e7eef66c0e0885081b7ba81f3fdac3b7825b8cfd83d50e645489e9a05d2f20ee SHA512 ff2bd96033395f960c334574d3158832af35464119e4e66bb265964b34852fcb701b9dff8ce6c4337fa883926df949fc3236b946849c9815e7e9dcccfe9f14cc
+DIST botocore-1.35.53.gh.tar.gz 13566810 BLAKE2B 6992501c08c89e56badf51658d07f1d2fa12662918a18b9bf65a9361dc370e4a1114b6327b30aacd3cc3bc9fde25aec4ea3e012c1263d47721fdf6d12f269405 SHA512 c3b6fbfc7ab724e085ac3e4df109ebd274c5375365de7e754c86726cdfdd4e5f331622ae9625ec4b22e8b526e09fc0e51541bdb371c1d1de2803b621e0b053b3
diff --git a/dev-python/botocore/botocore-1.35.53.ebuild b/dev-python/botocore/botocore-1.35.53.ebuild
new file mode 100644
index 000000000000..7816e9efeb52
--- /dev/null
+++ b/dev-python/botocore/botocore-1.35.53.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=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+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
+ )
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest tests/{functional,unit}
+}
diff --git a/dev-python/django-cacheops/Manifest b/dev-python/django-cacheops/Manifest
index 8f102264aaaf..f660b95d25c6 100644
--- a/dev-python/django-cacheops/Manifest
+++ b/dev-python/django-cacheops/Manifest
@@ -1 +1,2 @@
DIST django-cacheops-7.0.2.tar.gz 71747 BLAKE2B ceb5a536b1ee25c2b25beb9bac4b193325d74b58f7abc6f8edf62a9327eeb25fe8fd68292d5887aa02655f14290e7430d18747ccd487a4f44cdad7fa991f458c SHA512 cd6ea11c54d0c49c52a912033b0ef5d1940c9f061b5a248b4238bf22efa17aefdc48c10a3724613401e9972226e0ad20cbd607b4b63812efc5ae78c35968b767
+DIST django_cacheops-7.1.tar.gz 72352 BLAKE2B c6a13d78a44238666c6d2bf11ba5ec1df5c1ecc0eada5c2f787ab0df2aa917488a28a42688acfb88af24b7d12836de6cff9dbb80d7c505873d13a46ee18809af SHA512 1254d9765e94382eab0c75fd24f3f152d28b0a4814a1af5ba15ca0989f6181432025b68068228b538bb11da240672c17a47418b98fbce519cc80c4725b570e08
diff --git a/dev-python/django-cacheops/django-cacheops-7.1.ebuild b/dev-python/django-cacheops/django-cacheops-7.1.ebuild
new file mode 100644
index 000000000000..e3c0b6dcde4b
--- /dev/null
+++ b/dev-python/django-cacheops/django-cacheops-7.1.ebuild
@@ -0,0 +1,68 @@
+# 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_{9,10,11,12,13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="ORM cache with automatic granular event-driven invalidation for Django"
+HOMEPAGE="
+ https://github.com/Suor/django-cacheops/
+ https://pypi.org/project/django-cacheops/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-python/django-3.2[${PYTHON_USEDEP}]
+ >=dev-python/redis-2.9.1[${PYTHON_USEDEP}]
+ >=dev-python/funcy-1.8[${PYTHON_USEDEP}]
+ >=dev-python/six-1.4.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ ${RDEPEND}
+ dev-db/redis
+ dev-python/dill[${PYTHON_USEDEP}]
+ dev-python/mock[${PYTHON_USEDEP}]
+ )
+"
+
+src_prepare() {
+ # Remove test dependent on unpackaged before_after
+ sed -e 's/test_lock/_&/' -i tests/test_extras.py || die
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ local -x DJANGO_SETTINGS_MODULE=tests.settings
+ local -x PYTHONPATH=.
+ django-admin test -v 2 || die
+}
+
+src_test() {
+ local redis_pid="${T}"/redis.pid
+ local redis_port=6379
+
+ einfo "Spawning Redis"
+ einfo "NOTE: Port ${redis_port} must be free"
+ "${EPREFIX}"/usr/sbin/redis-server - <<-EOF || die
+ daemonize yes
+ pidfile ${redis_pid}
+ port ${redis_port}
+ bind 127.0.0.1
+ EOF
+
+ # Run the tests
+ distutils-r1_src_test
+
+ # Clean up afterwards
+ kill "$(<"${redis_pid}")" || die
+}
diff --git a/dev-python/hypothesis/Manifest b/dev-python/hypothesis/Manifest
index 81a570007b98..2afaf234e809 100644
--- a/dev-python/hypothesis/Manifest
+++ b/dev-python/hypothesis/Manifest
@@ -1,3 +1,4 @@
DIST hypothesis-6.114.1.gh.tar.gz 9477292 BLAKE2B 3dadb706f7d283febdc30c9e897fa5b648382edd9bba0ed0824abc2f2c1f6562f0ac77003df496d1def1e56092412c14674b5e768f9583607463f92b78770ad5 SHA512 14526a836c71cdec68a3fbd54391d4f6fe6911305fea9b349c77c59a3f352b7105531a44df05e26cd372d457ed07f7c8199967f444ede14b7d66151afe815727
DIST hypothesis-6.115.5.gh.tar.gz 9479622 BLAKE2B 44e21c25fbfb0da48102010a23522a636dd7dba0cbae3e1589710e816cb1f83abd33611750a76fd68c965dff5e0d1c234a5fb87da7cbf6ae0ebb4d3a8152ae9f SHA512 e6528eb48710b61f6ef18cc1415f9977c0a4c10d86f4d92da51859f17dc1b24e16ea7cbce5be2438794edb1002b426fc9911e02bb1ce456d7f812262bcc3bd2f
DIST hypothesis-6.115.6.gh.tar.gz 9479927 BLAKE2B ddfeaebaa4e3687be1cab03fa8517353fcfc392dfe7a38100087534c6e71339e381a425c0e2b0d277d3d6344b69b9498e0b722efb18bbcbb90c3401e997afa96 SHA512 fb5df7b7bb45958e492d69d9375b3847de1ed39467bc119be69a237456e1cb1a2633cafbcd58c90113f0aa35880d5d30395ac9d43ccbc6c7368af46065094eb9
+DIST hypothesis-6.116.0.gh.tar.gz 9480480 BLAKE2B 350abfd8bad65a33669345a71c3df9737e4defcfc12cd81a1d9ecb5603310372e039d1a148c2223a71f37f0ad485ca892ba322f9404e6d873016193b7f864f88 SHA512 5ae6848f16c21b9012d15eb71715df1fc9448b70264d18453d13e61fd71b84623150ce32c9b50ea4ce95494b0df21907368d0f6fabaa8cb8b26c71e474885703
diff --git a/dev-python/hypothesis/hypothesis-6.116.0.ebuild b/dev-python/hypothesis/hypothesis-6.116.0.ebuild
new file mode 100644
index 000000000000..902ce1505c8b
--- /dev/null
+++ b/dev-python/hypothesis/hypothesis-6.116.0.ebuild
@@ -0,0 +1,103 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+CLI_COMPAT=( pypy3 python3_{10..13} )
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+PYTHON_REQ_USE="threads(+),sqlite"
+
+inherit distutils-r1 optfeature
+
+TAG=hypothesis-python-${PV}
+MY_P=hypothesis-${TAG}
+DESCRIPTION="A library for property based testing"
+HOMEPAGE="
+ https://github.com/HypothesisWorks/hypothesis/
+ https://pypi.org/project/hypothesis/
+"
+SRC_URI="
+ https://github.com/HypothesisWorks/hypothesis/archive/${TAG}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+S="${WORKDIR}/${MY_P}/hypothesis-python"
+
+LICENSE="MPL-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="cli"
+
+RDEPEND="
+ >=dev-python/attrs-22.2.0[${PYTHON_USEDEP}]
+ >=dev-python/sortedcontainers-2.1.0[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ >=dev-python/exceptiongroup-1.0.0_rc8[${PYTHON_USEDEP}]
+ ' 3.9 3.10)
+ cli? (
+ $(python_gen_cond_dep '
+ dev-python/black[${PYTHON_USEDEP}]
+ dev-python/click[${PYTHON_USEDEP}]
+ ' "${CLI_COMPAT[@]}")
+ )
+"
+BDEPEND="
+ test? (
+ dev-python/pexpect[${PYTHON_USEDEP}]
+ >=dev-python/pytest-8[${PYTHON_USEDEP}]
+ dev-python/pytest-xdist[${PYTHON_USEDEP}]
+ !!<dev-python/requests-toolbelt-0.10.1
+ )
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_test() {
+ # subtests are broken by warnings from random plugins
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ local -x PYTEST_PLUGINS=xdist.plugin,_hypothesis_pytestplugin
+ local -x HYPOTHESIS_NO_PLUGINS=1
+
+ # NB: paths need to be relative to pytest.ini,
+ # i.e. start with hypothesis-python/
+ local EPYTEST_DESELECT=()
+ case ${EPYTHON} in
+ pypy3)
+ EPYTEST_DESELECT+=(
+ # failing due to warnings from numpy/cython
+ hypothesis-python/tests/pytest/test_fixtures.py::test_given_plus_overridden_fixture
+ )
+ ;;
+ esac
+
+ epytest -o filterwarnings= tests/cover tests/pytest tests/quality
+}
+
+src_install() {
+ local HAD_CLI=
+
+ distutils-r1_src_install
+
+ if [[ ! ${HAD_CLI} ]]; then
+ rm -r "${ED}/usr/bin" || die
+ fi
+}
+
+python_install() {
+ distutils-r1_python_install
+ if use cli && has "${EPYTHON}" "${CLI_COMPAT[@]/_/.}"; then
+ HAD_CLI=1
+ else
+ rm -r "${D}$(python_get_scriptdir)" || die
+ fi
+}
+
+pkg_postinst() {
+ optfeature "datetime support" dev-python/pytz
+ optfeature "dateutil support" dev-python/python-dateutil
+ optfeature "numpy support" dev-python/numpy
+ optfeature "django support" dev-python/django dev-python/pytz
+ optfeature "pandas support" dev-python/pandas
+ optfeature "pytest support" dev-python/pytest
+}
diff --git a/dev-python/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 eb2586280d80..56733bbffc48 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 c0f74ac187e2..020e07f2a3dd 100644
--- a/dev-python/langdetect/metadata.xml
+++ b/dev-python/langdetect/metadata.xml
@@ -2,9 +2,11 @@
<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
- <email>pastalian46@gmail.com</email>
- <name>Takuya Wakazono</name>
+ <email>marcin.deranek@slonko.net</email>
+ <name>Marcin Deranek</name>
</maintainer>
-
- <origin>gentoo-guru-overlay</origin>
+ <upstream>
+ <bugs-to>https://github.com/Mimino666/langdetect/issues</bugs-to>
+ </upstream>
+ <origin>slonko-overlay</origin>
</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/numpy/files/numpy-2.0.2-setuptools-74.patch b/dev-python/numpy/files/numpy-2.0.2-setuptools-74.patch
new file mode 100644
index 000000000000..7e61378bdecc
--- /dev/null
+++ b/dev-python/numpy/files/numpy-2.0.2-setuptools-74.patch
@@ -0,0 +1,29 @@
+From 1cc02cc6710384c52e1082a33d1617504eaed296 Mon Sep 17 00:00:00 2001
+From: Katie Rust <katie@ktpanda.org>
+Date: Mon, 16 Sep 2024 13:04:22 -0500
+Subject: [PATCH] BUG: Stub out `get_build_msvc_version` if
+ `distutils.msvccompiler` cannot be imported (fixes #27405)
+
+---
+ numpy/distutils/mingw32ccompiler.py | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/numpy/distutils/mingw32ccompiler.py b/numpy/distutils/mingw32ccompiler.py
+index 39905a784088..2599a9e9a807 100644
+--- a/numpy/distutils/mingw32ccompiler.py
++++ b/numpy/distutils/mingw32ccompiler.py
+@@ -24,7 +24,13 @@
+
+ import distutils.cygwinccompiler
+ from distutils.unixccompiler import UnixCCompiler
+-from distutils.msvccompiler import get_build_version as get_build_msvc_version
++
++try:
++ from distutils.msvccompiler import get_build_version as get_build_msvc_version
++except ImportError:
++ def get_build_msvc_version():
++ return None
++
+ from distutils.errors import UnknownFileError
+ from numpy.distutils.misc_util import (msvc_runtime_library,
+ msvc_runtime_version,
diff --git a/dev-python/numpy/numpy-2.0.2.ebuild b/dev-python/numpy/numpy-2.0.2-r1.ebuild
index 3eaf99560a3c..89b62e871bb8 100644
--- a/dev-python/numpy/numpy-2.0.2.ebuild
+++ b/dev-python/numpy/numpy-2.0.2-r1.ebuild
@@ -57,6 +57,11 @@ EPYTEST_XDIST=1
distutils_enable_tests pytest
python_prepare_all() {
+ local PATCHES=(
+ # https://github.com/numpy/numpy/pull/27406
+ "${FILESDIR}/${P}-setuptools-74.patch"
+ )
+
# bug #922457
filter-lto
# https://github.com/numpy/numpy/issues/25004
@@ -119,6 +124,13 @@ python_test() {
;;
esac
+ if has_version ">=dev-python/setuptools-74[${PYTHON_USEDEP}]"; then
+ # msvccompiler removal
+ EPYTEST_DESELECT+=(
+ tests/test_public_api.py::test_api_importable
+ )
+ fi
+
if ! has_version -b "~${CATEGORY}/${P}[${PYTHON_USEDEP}]" ; then
# depends on importing numpy.random from system namespace
EPYTEST_DESELECT+=(
diff --git a/dev-python/pdm/Manifest b/dev-python/pdm/Manifest
index 2e0e682f87c5..229b6e8e6d70 100644
--- a/dev-python/pdm/Manifest
+++ b/dev-python/pdm/Manifest
@@ -1,2 +1,3 @@
DIST pdm-2.19.3.tar.gz 2639417 BLAKE2B aa9930ea4a6b358ee82f111c7baac788fdc30e6aa20189e22d979716af306bd792a4b91654c39d915cbf812e07019692519a1acd65a7404dd5e7cafb4702c26c SHA512 05542e260d9849ae1b186df0e237a15e23e6c4b7442c2f9cbcbf593e88136831d724eecfebad2a7ba3deda13f20ed9b6a322ec12f1a3eb6f5f8e0e396312f333
+DIST pdm-2.20.0.post1.tar.gz 2641188 BLAKE2B e97cabea9dfda3a73b6d0532548a4498b9fe98f9db1a66d0cbc6f24d3a3a4463cdf023fd8039a294b538436977f66deb6c1474129a75ddb4ba144a5c70647e37 SHA512 33f201a24852d8a0c2eee8bae4fa3b059182e517b4890f5db827914594867494969cae651d449e9e2be6b6bae3cb7cb64947c4b24e0db457a283b60a15700506
DIST pdm-2.20.0.tar.gz 2641170 BLAKE2B de48155ba3964f8529715fd6afeb06aa019e199976f50593fbb05fcec44a2688d13ea6ecfa886bb18146833e4f226f2513db6bd233d9a9543752edfefbb143a7 SHA512 51d99bf576032ff90b2334c9cc2a857d2670d8bb7f64096d290d21eeaab62d14ca6ffec51747da49e0849b6853172dd79d116cb6ce4c8ea35fed8fd218521306
diff --git a/dev-python/pdm/pdm-2.20.0_p1.ebuild b/dev-python/pdm/pdm-2.20.0_p1.ebuild
new file mode 100644
index 000000000000..82f01015dfec
--- /dev/null
+++ b/dev-python/pdm/pdm-2.20.0_p1.ebuild
@@ -0,0 +1,119 @@
+# Copyright 2023-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=pdm-backend
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Python package and dependency manager supporting the latest PEP standards"
+HOMEPAGE="
+ https://pdm-project.org/
+ https://github.com/pdm-project/pdm/
+ https://pypi.org/project/pdm/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+
+RDEPEND="
+ dev-python/blinker[${PYTHON_USEDEP}]
+ >=dev-python/dep-logic-0.4.4[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ dev-python/platformdirs[${PYTHON_USEDEP}]
+ dev-python/rich[${PYTHON_USEDEP}]
+ >=dev-python/truststore-0.9[${PYTHON_USEDEP}]
+ dev-python/virtualenv[${PYTHON_USEDEP}]
+ dev-python/msgpack[${PYTHON_USEDEP}]
+ dev-python/httpx[${PYTHON_USEDEP}]
+ dev-python/filelock[${PYTHON_USEDEP}]
+ >=dev-python/hishel-0.0.32[${PYTHON_USEDEP}]
+ >=dev-python/pbs-installer-2024.4.18[${PYTHON_USEDEP}]
+ dev-python/pyproject-hooks[${PYTHON_USEDEP}]
+ >=dev-python/unearth-0.17.0[${PYTHON_USEDEP}]
+ <dev-python/findpython-1[${PYTHON_USEDEP}]
+ >=dev-python/findpython-0.6.0[${PYTHON_USEDEP}]
+ dev-python/tomlkit[${PYTHON_USEDEP}]
+ dev-python/shellingham[${PYTHON_USEDEP}]
+ dev-python/python-dotenv[${PYTHON_USEDEP}]
+ >=dev-python/resolvelib-1.1[${PYTHON_USEDEP}]
+ dev-python/installer[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/tomli[${PYTHON_USEDEP}]
+ ' 3.10)
+"
+BDEPEND="
+ ${RDEPEND}
+ test? (
+ dev-python/pytest-mock[${PYTHON_USEDEP}]
+ dev-python/pytest-httpserver[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # Internet
+ 'tests/cli/test_build.py::test_build_with_no_isolation[False]'
+ tests/test_project.py::test_access_index_with_auth
+ "tests/test_project.py::test_find_interpreters_with_PDM_IGNORE_ACTIVE_VENV[True]"
+ tests/cli/test_others.py::test_build_distributions
+ 'tests/models/test_candidates.py::test_expand_project_root_in_url[demo @ file:///${PROJECT_ROOT}/tests/fixtures/artifacts/demo-0.0.1.tar.gz]'
+ 'tests/models/test_candidates.py::test_expand_project_root_in_url[-e file:///${PROJECT_ROOT}/tests/fixtures/projects/demo-#-with-hash#egg=demo]'
+ tests/models/test_candidates.py::test_find_candidates_from_find_links
+ tests/cli/test_build.py::test_build_single_module
+ tests/cli/test_build.py::test_build_single_module_with_readme
+ tests/cli/test_build.py::test_build_package
+ tests/cli/test_build.py::test_build_src_package
+ tests/cli/test_build.py::test_build_package_include
+ tests/cli/test_build.py::test_build_src_package_by_include
+ tests/cli/test_build.py::test_build_with_config_settings
+ tests/cli/test_build.py::test_cli_build_with_config_settings
+ tests/cli/test_build.py::test_build_ignoring_pip_environment
+ tests/cli/test_others.py::test_show_self_package
+ tests/cli/test_publish.py::test_publish_and_build_in_one_run
+ "tests/cli/test_hooks.py::test_hooks[build]"
+ "tests/cli/test_hooks.py::test_hooks[publish]"
+ "tests/cli/test_hooks.py::test_skip_option_from_signal[build-pre_build]"
+ "tests/cli/test_hooks.py::test_skip_option_from_signal[build-post_build]"
+ "tests/cli/test_hooks.py::test_skip_option_from_signal[publish-pre_publish]"
+ "tests/cli/test_hooks.py::test_skip_option_from_signal[publish-pre_build]"
+ "tests/cli/test_hooks.py::test_skip_option_from_signal[publish-post_build]"
+ "tests/cli/test_hooks.py::test_skip_option_from_signal[publish-post_publish]"
+ "tests/cli/test_hooks.py::test_skip_all_option_from_signal[:all-build]"
+ "tests/cli/test_hooks.py::test_skip_all_option_from_signal[:all-publish]"
+ "tests/cli/test_hooks.py::test_skip_all_option_from_signal[:pre,:post-build]"
+ "tests/cli/test_hooks.py::test_skip_all_option_from_signal[:pre,:post-publish]"
+ "tests/cli/test_hooks.py::test_skip_pre_post_option_from_signal[pre-build]"
+ "tests/cli/test_hooks.py::test_skip_pre_post_option_from_signal[pre-publish]"
+ "tests/cli/test_hooks.py::test_skip_pre_post_option_from_signal[post-build]"
+ "tests/cli/test_hooks.py::test_skip_pre_post_option_from_signal[post-publish]"
+ "tests/cli/test_venv.py::test_conda_backend_create[True]"
+ "tests/cli/test_venv.py::test_conda_backend_create[False]"
+ tests/cli/test_lock.py::test_lock_all_with_excluded_groups
+ # hangs on interactive keyring prompts
+ tests/cli/test_config.py::test_repository_overwrite_default
+ tests/cli/test_config.py::test_hide_password_in_output_repository
+ tests/cli/test_config.py::test_hide_password_in_output_pypi
+ # junk output, sigh
+ tests/cli/test_others.py::test_info_command_json
+ # why does it try to use python 2.7?!
+ tests/cli/test_run.py::test_import_another_sitecustomize
+ # fails in tinderbox (bug #928964)
+ tests/test_project.py::test_project_packages_path
+ # i guess doesn't expect some dep to be present
+ tests/cli/test_build.py::test_build_with_no_isolation
+ )
+ [[ ${EPYTHON} != python3.10 ]] && EPYTEST_DESELECT+=(
+ # test seems hardcoded to 3.10
+ tests/test_project.py::test_project_packages_path
+ )
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest -m "not network and not integration and not path" \
+ -p pytest_mock
+}
diff --git a/dev-python/pythran/Manifest b/dev-python/pythran/Manifest
index 3588adea381f..b9c36750ccd4 100644
--- a/dev-python/pythran/Manifest
+++ b/dev-python/pythran/Manifest
@@ -1 +1,2 @@
DIST pythran-0.16.1.gh.tar.gz 3680817 BLAKE2B 2a4b928e9d0ce68248eb543c97da5afca900d81bc660377313617149c5aae7529a371bfd3604dd9feb6e38f834360fef881c8324ae72b585d8ab86e867c2f6b3 SHA512 7a89546b52bdae9bdaeba42768ac822c584a3714b8f4e32417d793454dc0b5492342dfd393d92f8ecee12c854bc39e418f5860aadd00d328afef7b17ebddec99
+DIST pythran-0.17.0.gh.tar.gz 3697173 BLAKE2B 90f765283e4346392eb69d8e6fadf4b00469779bd7fb8dc99084ed0d2d940a1ca949c9dd0eb0fc484c2938de79b1e3650c417dc1cd30786b25b6781c519a629d SHA512 af14cd497bcbef7ac97b42b80e297e641bd520f51938b04a68ebf01de86d6900926653c01ff99b1af7f699674094241099101f1501acfae2be5dc9d1724af777
diff --git a/dev-python/pythran/pythran-0.17.0.ebuild b/dev-python/pythran/pythran-0.17.0.ebuild
new file mode 100644
index 000000000000..bffa5c4f258a
--- /dev/null
+++ b/dev-python/pythran/pythran-0.17.0.ebuild
@@ -0,0 +1,107 @@
+# 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_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1
+
+MY_P=${P/_p/.post}
+DESCRIPTION="Ahead of Time compiler for numeric kernels"
+HOMEPAGE="
+ https://pypi.org/project/pythran/
+ https://github.com/serge-sans-paille/pythran/
+"
+SRC_URI="
+ https://github.com/serge-sans-paille/pythran/archive/${PV/_p/.post}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ dev-libs/boost
+ dev-cpp/xsimd
+ =dev-python/beniget-0.4*[${PYTHON_USEDEP}]
+ =dev-python/gast-0.6*[${PYTHON_USEDEP}]
+ dev-python/numpy[${PYTHON_USEDEP}]
+ >=dev-python/ply-3.4[${PYTHON_USEDEP}]
+ >=dev-python/setuptools-73.0.1[${PYTHON_USEDEP}]
+"
+DEPEND="
+ test? (
+ dev-libs/boost
+ dev-cpp/xsimd
+ )
+"
+BDEPEND="
+ test? (
+ dev-python/ipython[${PYTHON_USEDEP}]
+ dev-python/pip[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ dev-python/scipy[${PYTHON_USEDEP}]
+ dev-python/wheel[${PYTHON_USEDEP}]
+ virtual/cblas
+ !!dev-python/setuptools-declarative-requirements
+ )
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_configure() {
+ # vendored C++ headers -- use system copies
+ rm -r pythran/{boost,xsimd} || die
+
+ if use test ; then
+ # https://bugs.gentoo.org/916461
+ sed -i \
+ -e 's|blas=blas|blas=cblas|' \
+ -e 's|libs=|libs=cblas|' \
+ pythran/pythran-*.cfg || die
+ fi
+}
+
+python_test() {
+ local -x COLUMNS=80
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+
+ local EPYTEST_DESELECT=(
+ # TODO
+ pythran/tests/test_numpy_ufunc_unary.py::TestNumpyUFuncUnary::test_signbit0
+ )
+
+ if has_version ">=dev-python/numpy-2[${PYTHON_USEDEP}]"; then
+ case ${EPYTHON} in
+ pypy3)
+ EPYTEST_DESELECT+=(
+ pythran/tests/test_distutils.py::TestDistutils::test_setup_bdist_install3
+ pythran/tests/test_distutils.py::TestDistutils::test_setup_build3
+ pythran/tests/test_distutils.py::TestDistutils::test_setup_sdist_install
+ pythran/tests/test_distutils.py::TestDistutils::test_setup_sdist_install2
+ pythran/tests/test_distutils.py::TestDistutils::test_setup_sdist_install3
+ pythran/tests/test_distutils.py::TestMeson::test_meson_build
+ pythran/tests/test_exception.py::TestException::test_multiple_tuple_exception_register
+ pythran/tests/test_ndarray.py::TestNdarray::test_ndarray_fancy_indexing1
+ pythran/tests/test_numpy_fft.py::TestNumpyFFTN::test_fftn_1
+ pythran/tests/test_numpy_func0.py::TestNumpyFunc0::test_ravel0
+ pythran/tests/test_numpy_func3.py::TestNumpyFunc3::test_list_imag0
+ pythran/tests/test_numpy_random.py::TestNumpyRandom::test_numpy_uniform_size_int
+ pythran/tests/test_set.py::TestSet::test_fct_symmetric_difference_update
+ )
+ ;;
+ python3.13)
+ EPYTEST_DESELECT+=(
+ # repr() differences?
+ pythran/tests/test_xdoc.py::TestDoctest::test_tutorial
+ )
+ esac
+ fi
+
+ epytest
+}
diff --git a/dev-python/rapidfuzz/rapidfuzz-3.10.0.ebuild b/dev-python/rapidfuzz/rapidfuzz-3.10.0.ebuild
index b49ae2276f49..e98c54b50fa8 100644
--- a/dev-python/rapidfuzz/rapidfuzz-3.10.0.ebuild
+++ b/dev-python/rapidfuzz/rapidfuzz-3.10.0.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
# all these are header-only libraries
DEPEND="
diff --git a/dev-python/selenium/Manifest b/dev-python/selenium/Manifest
index 5759a6046876..8e2ab790e035 100644
--- a/dev-python/selenium/Manifest
+++ b/dev-python/selenium/Manifest
@@ -1,4 +1,6 @@
DIST selenium-4.25.0.tar.gz 957765 BLAKE2B e62f1e9e0619f376e75cbfdbc67540184dde32b5e3bfe07a80157a49bdbfe5475f7ea02bd4b130b24e83c82fc838c2b22d3bf09fd9bd76f4bb475e690f979346 SHA512 6961356a1e03d5b76f07fbf3e3bc834915c52b9c744aeebbde2a9a3c89c661b07f798629770a45e6842b509ae10cbeac61aa92101978bd334e9d1444dd743735
DIST selenium-4.26.0.tar.gz 967159 BLAKE2B 211a82d59813884cd4be133726b2ae70c530bb8676c505d44ae25e8b8e5bc38fd7e35839fe042a85fb3dd93c1c87ecd7d6c81cb1a1d7811b4b9f6f1811328c21 SHA512 8864c7d49591e29ee82c66c4548ca7286d0770efecf5b15e41c3622f541a665a404958afdc22b872f191487349602da13a3db7cd32aa14155c09d21a8a3e7b92
+DIST selenium-4.26.1.tar.gz 967543 BLAKE2B 7e7476338a030083261199b725aaa38d03bb62f71c56c16495600428e976067b456c32b98d18a0fa4fcdcd6544ddb0043a8104b3c6c075917924ebb8466aee56 SHA512 08d75ee4b3b5d93ad5385c0755d1b9b4e604e491127da19ba3531c6de2213c6cbbdb768893168112643e6272019d4d761873039f42af1c96dffc7ccfb9fc3bab
DIST selenium-selenium-4.25.0.gh.tar.gz 77158053 BLAKE2B 9978239a874d32e23d98ec98eb5292153496c42abcdd0f959875b2b460df5a85c0b532b6843e0d13b931078490958ebdc2944a8c21ce2eae24a0ac6a3c830772 SHA512 6d11d1aa22d27dbc07c3d39f5f852080c5089b12b1da0251e7b09c38ac3b8f56f452a24c64a20685eb0aff238698ab4bd18a8b7089c69f261cfbcdc679ceeac8
DIST selenium-selenium-4.26.0.gh.tar.gz 77107740 BLAKE2B d4e466dbdb9a12126ae8ee9e311d5d997228da3b22620ead3dbf1a553232503fbd8c19470419d6ad5862acfc19f0012c4c48b3a5e1ccecaf0f7c4171f35904fb SHA512 03197215c04e8f6e151631d769975e70b5140d2d7635443c07e43e63b1c0cc3bc99b0694300ca4dbfea6178af9d037d28699a756ef74926a357f7a3030086182
+DIST selenium-selenium-4.26.1-python.gh.tar.gz 77109265 BLAKE2B c0c5693c64fa65a627e5edf0cbbc051410fcddf59e4fd80c362b9a382c586fc3ad3d574674e5523ab284b40b6639e95e85fd1c8195f2f1a6f35ad6532ed667ce SHA512 7ace69332f17c6f7e28b81223f4c8c62cde1832b5acaf2fd1c777a08a5a9cfebb5d9c83daa10462eeb3acb9c7cb5038711f5acee51f5dad3910d7e29e4387d3f
diff --git a/dev-python/selenium/selenium-4.26.1.ebuild b/dev-python/selenium/selenium-4.26.1.ebuild
new file mode 100644
index 000000000000..f34a52822178
--- /dev/null
+++ b/dev-python/selenium/selenium-4.26.1.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_{9,10,11,12,13} 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"
+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/tinyhtml5/tinyhtml5-2.0.0.ebuild b/dev-python/tinyhtml5/tinyhtml5-2.0.0.ebuild
index 21527a33513a..61a201b1674b 100644
--- a/dev-python/tinyhtml5/tinyhtml5-2.0.0.ebuild
+++ b/dev-python/tinyhtml5/tinyhtml5-2.0.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64"
+KEYWORDS="~amd64 ~x86"
RDEPEND="
>=dev-python/webencodings-0.5.1[${PYTHON_USEDEP}]
diff --git a/dev-python/uv/Manifest b/dev-python/uv/Manifest
index 5468675818d6..14635af401b8 100644
--- a/dev-python/uv/Manifest
+++ b/dev-python/uv/Manifest
@@ -1,6 +1,7 @@
DIST netrc-544f3890b621f0dc30fcefb4f804269c160ce2e9.gh.tar.gz 7885 BLAKE2B ea6442eca20ffb3073306507c06bb1914678333eccacf6443b333a3fbabbea62998cf13b3acad61bef2f3cbeb7f9a1be37f2c200805f5014ec25a415f4ef506f SHA512 39edd00c68b30706fdcdff04c15bcae11380fc604d19960af13c479922bbc28b4718bac56ef2513ff45566f4275407a7025d6424a91d4e52b2ca6e72275b143e
DIST pubgrub-388685a8711092971930986644cfed152d1a1f6c.gh.tar.gz 87945 BLAKE2B 7c10db2eff97656a379e8beff9f77bf09b4ab2fdd0d5c171e36babc6f3bff08d05774c55a51a23d79144c4110a942764cefa8a1baf7c36174809d2e648f2d12d SHA512 15539076de8fe9a459f70efcf07ccb7f61ced2be9832c4eb7123e7baa2bb85f3263fd4cb5d8b277c28a70ba316d5128d74d59d6f1de96b6e55ef04321a42c4dc
DIST pubgrub-7243f4faf8e54837aa8a401a18406e7173de4ad5.gh.tar.gz 88294 BLAKE2B 9ef214731ae32def6c7365df8953575a820ba816b596844755abcc17304489a7c288c863cf3ce5de56ae10430cebb84b962e3de2e86aafc932dfb3fbd8b95940 SHA512 7f8e7a3a3070212c6f6d788b659bbdfa1857c6eb493cef11a75708b60e3d1abbc00dc6cc89527264faf1eb59f372dff646e1dd1a05168a1e0456d0f1ceaecc6b
+DIST pubgrub-95e1390399cdddee986b658be19587eb1fdb2d79.gh.tar.gz 88127 BLAKE2B 661b639a7028b7dfe4967b4e2f187c3d403e1796bb09ae4606854414547cf81a5907d7dc9c1f8c3f6fe6986b1c8c22a89fee9e93d2ca79d5241350916991cf05 SHA512 8fdcd1ca1badbd140eb386ff37dd91b26d2b81273544b25a376462b900e9b84e59523ff75a68abe4a03834d72ee0d44246f16aea5c7e9091ad5375a86d3aee70
DIST reqwest-middleware-5e3eaf254b5bd481c75d2710eed055f95b756913.gh.tar.gz 40049 BLAKE2B d284947a108e2d3233a4fa7c9eb5e1a959bc5b569e754861daef076672672b0500cb737b85871d1fc0587bdbf6d5020e03e7c906cb5de34ff2f81c05b66918d1 SHA512 540a71e59a8b57e5e0bd7fad18fed265552bdae4518690a9823c94dcf23ee1d436f91b9cecf21129917b25e78b91d8d7290760edaea68053666e28af7223476e
DIST reqwest-middleware-d95ec5a99fcc9a4339e1850d40378bbfe55ab121.gh.tar.gz 40815 BLAKE2B eb7edc4e4599635714b30e5a49b1ddf04e76a696618713320fbb06b240e5f77dafcba78e8532a7de3ada682773a65c88405a5bec2261a7da4310a7cc95b2554e SHA512 bc29f8e634cbfde9d89db3e7ac16a83b6545c15ecec1d0eb4eb2ea2c1647fb521712a9ebe98480cd0dff727fed0ecbceaaf3b23e0d85d97a0498f2e576cc9d7d
DIST rs-async-zip-011b24604fa7bc223daaad7712c0694bac8f0a87.gh.tar.gz 51706 BLAKE2B 354eb52c95ea355521e1e6a7c841102424c47c156fdb0efb62e3cac666ecf289806aeefab8a0273a7c3283429ac81502283bdb5424d5f925621e5c2b1430fd4d SHA512 6650eef354e84daf41a8572b98b29f2873b7f071dd1d6983292c70b2f580fdc50cd26762d2228a70c2b200eae2f40476e6604702aa62cc97558301195bf19eb8
@@ -12,3 +13,5 @@ DIST uv-0.4.25.gh.tar.gz 2766139 BLAKE2B d3dbb50f34f6ce5df6885b6ce3fc04a943c472e
DIST uv-0.4.26-crates.tar.xz 45699316 BLAKE2B 87409df6d4ff9462225000d8c3e4cb4f29c460f94043b28accc227e8dc5cc78aaf362a43e4f7df09b20e1354afdd414d5d260ed2742162e9c307d1e7641ead16 SHA512 321c61ef404cb10753fef2bc7aa2be89fdd1b3e2d77065400874044af1987f7d8eea85af259bc3d678bb56f97c185ac1c6d0f6f769b25fc732a1153c3c9b0d39
DIST uv-0.4.26.gh.tar.gz 2772725 BLAKE2B 46ea8245fdb0a38ad924e4d65d1c247f11c2419de1466b99f62ee486b0c3fc7a7dedf4a8d5168fc9b4bf062741b7865dd07d29cd1ab0e92772810982c10029d5 SHA512 e4ed845687641b1054703ec5419a34947409504353fbfc1f56aab3dbafa72c1705170f71b569fb8c92d549dc2d7ce26cd1fa4010e23d0360310743821d37b653
DIST uv-0.4.27.gh.tar.gz 2796691 BLAKE2B 8c4c04f912fc4c9ec6eceebd9853bbdf148f1d12f68836d8e4a92743ca1be405d7f5d8a5e3f09dd70360f078d0e93db6e878a9ed4cdcd6f876990b9a2ad41eb2 SHA512 6ba5f1b5fb0d427b75ec528d8ef40d020de11ddb81efc4638ed4b9d0244ccd1d630577c0f4d9fae6e3b303fcdeee51623406540de3b6974d4a22282884157e33
+DIST uv-0.4.29-crates.tar.xz 45807640 BLAKE2B 632fdd0315158b3f940cb69decaadb6f4cd48dbb982ff7f0d6c1d7b4bd70c737f31ba2e47fa34d3d22c6c3146e6e695610998229ebfbbd5d881852b8f6e07524 SHA512 28479e0444b1b9ead88a4a5064d80952e197bb1b19fd1f959948a22abcdcf95dfba11d750462ba005ffd230f5a3c70a091b62398a23ab7f824172322aadadc37
+DIST uv-0.4.29.gh.tar.gz 2804194 BLAKE2B 4797ae61b89e1dd3b46a1a5df7c8c4c850d1e8971075ebf502506291e6fdf61de3f5fd16cc7850cf2e2d8120c05437dd70d1df93072b81030aacb4fa1e2e532e SHA512 aa1e015c07a8bd5f8c4753994e1c4188da61029256089deb89f6471a72c30e263046a40a2ac5d030a519d558136240ef20595e5708b79b2adcd96cd70033b9e9
diff --git a/dev-python/uv/uv-0.4.29.ebuild b/dev-python/uv/uv-0.4.29.ebuild
new file mode 100644
index 000000000000..8ce7f04ec3be
--- /dev/null
+++ b/dev-python/uv/uv-0.4.29.ebuild
@@ -0,0 +1,145 @@
+# 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;011b24604fa7bc223daaad7712c0694bac8f0a87;rs-async-zip-%commit%'
+ [pubgrub]='https://github.com/astral-sh/pubgrub;95e1390399cdddee986b658be19587eb1fdb2d79;pubgrub-%commit%'
+ [reqwest-middleware]='https://github.com/TrueLayer/reqwest-middleware;d95ec5a99fcc9a4339e1850d40378bbfe55ab121;reqwest-middleware-%commit%/reqwest-middleware'
+ [reqwest-retry]='https://github.com/TrueLayer/reqwest-middleware;d95ec5a99fcc9a4339e1850d40378bbfe55ab121;reqwest-middleware-%commit%/reqwest-retry'
+ [tl]='https://github.com/charliermarsh/tl;6e25b2ee2513d75385101a8ff9f591ef51f314ec;tl-%commit%'
+ [version-ranges]='https://github.com/astral-sh/pubgrub;95e1390399cdddee986b658be19587eb1fdb2d79;pubgrub-%commit%/version-ranges'
+)
+
+inherit cargo check-reqs
+
+CRATE_PV=${PV}
+DESCRIPTION="A Python package installer and resolver, written in Rust"
+HOMEPAGE="
+ https://github.com/astral-sh/uv/
+ https://pypi.org/project/uv/
+"
+# pypi sdist misses scripts/, needed for tests
+SRC_URI="
+ https://github.com/astral-sh/uv/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+ ${CARGO_CRATE_URIS}
+"
+if [[ ${PKGBUMPING} != ${PVR} ]]; then
+ SRC_URI+="
+ https://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"
+
+DEPEND="
+ app-arch/bzip2:=
+ app-arch/xz-utils:=
+ app-arch/zstd:=
+"
+RDEPEND="
+ ${DEPEND}
+"
+BDEPEND="
+ >=virtual/rust-1.80
+ 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
+ local reqmw=${GIT_CRATES[reqwest-middleware]}
+ reqmw=${reqmw#*;}
+ reqmw=${reqmw%;*}
+ sed -i -e "/^\[patch/,\$s@^\(reqwest-middleware = \).*@\1 { path = \"${WORKDIR}/reqwest-middleware-${reqmw}/reqwest-middleware\" }@" Cargo.toml || die
+
+ # enable system libraries where supported
+ export ZSTD_SYS_USE_PKG_CONFIG=1
+ # TODO: unbundle libz-ng-sys, tikv-jemalloc-sys?
+
+ # remove unbundled sources, just in case
+ find "${ECARGO_VENDOR}"/{bzip2,lzma,zstd}-sys-*/ -name '*.c' -delete || die
+
+ # bzip2-sys requires a pkg-config file
+ # https://github.com/alexcrichton/bzip2-rs/issues/104
+ mkdir "${T}/pkg-config" || die
+ export PKG_CONFIG_PATH=${T}/pkg-config${PKG_CONFIG_PATH+:${PKG_CONFIG_PATH}}
+ cat >> "${T}/pkg-config/bzip2.pc" <<-EOF || die
+ Name: bzip2
+ Version: 9999
+ Description:
+ Libs: -lbz2
+ EOF
+}
+
+src_configure() {
+ local myfeatures=(
+ git
+ pypi
+ python
+ )
+
+ cargo_src_configure --no-default-features
+}
+
+src_compile() {
+ cd crates/uv || die
+ cargo_src_compile
+}
+
+src_test() {
+ # work around https://github.com/astral-sh/uv/issues/4376
+ local -x PATH=${BROOT}/usr/lib/python-exec/python3.12:${PATH}
+ local -x COLUMNS=100
+ local -x PYTHONDONTWRITEBYTECODE=
+
+ cd crates/uv || die
+ cargo_src_test --no-fail-fast
+}
+
+src_install() {
+ cd crates/uv || die
+ cargo_src_install
+}
diff --git a/dev-python/weasyprint/weasyprint-63.0.ebuild b/dev-python/weasyprint/weasyprint-63.0.ebuild
index 10e346f5b2a5..4401d1200142 100644
--- a/dev-python/weasyprint/weasyprint-63.0.ebuild
+++ b/dev-python/weasyprint/weasyprint-63.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~amd64"
+KEYWORDS="~amd64 ~x86"
RDEPEND="
>=dev-python/cffi-0.6:=[${PYTHON_USEDEP}]
diff --git a/dev-python/werkzeug/Manifest b/dev-python/werkzeug/Manifest
index 664fe9021d36..e740bfdc2044 100644
--- a/dev-python/werkzeug/Manifest
+++ b/dev-python/werkzeug/Manifest
@@ -1 +1,2 @@
DIST werkzeug-3.0.6.tar.gz 805170 BLAKE2B 7aa02e3e979d9375ec676d02f43738b96410fc3dddf60ca96fc9709790caa47e590952e7675f9226af9f8111271463e82a7069d0ed6e8e672188bc824d3d04a8 SHA512 500f47e13546a3d0ce3a41f21157649571ea70b332ca22758bad939cb42aee4d1b58b64cecc4ed83a857ad466f37de8256cf7b53ad28e5fe0fd353455df3639b
+DIST werkzeug-3.1.0.tar.gz 806386 BLAKE2B 7e05da6c4196b30afd0cafeb0fb1c8dcab25a28e78bf8279b2ec639195f4f6296d38d689e085c15a6a53863b210ae7a8bd1c6a4c97d772f8e1bc339369a47160 SHA512 1c1e7f6a2e08aaf5a41f99dd41193cc1177a01242c9281cb7170db84fb193b15a1c3291ef039d8660ac35a89cc6fdf2664f15f742085305a46894f2a2f331976
diff --git a/dev-python/werkzeug/werkzeug-3.1.0.ebuild b/dev-python/werkzeug/werkzeug-3.1.0.ebuild
new file mode 100644
index 000000000000..107a053a25c5
--- /dev/null
+++ b/dev-python/werkzeug/werkzeug-3.1.0.ebuild
@@ -0,0 +1,54 @@
+# 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_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Collection of various utilities for WSGI applications"
+HOMEPAGE="
+ https://palletsprojects.com/p/werkzeug/
+ https://pypi.org/project/Werkzeug/
+ https://github.com/pallets/werkzeug/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="test-rust"
+
+RDEPEND="
+ >=dev-python/markupsafe-2.1.1[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/ephemeral-port-reserve[${PYTHON_USEDEP}]
+ dev-python/pytest-timeout[${PYTHON_USEDEP}]
+ >=dev-python/pytest-xprocess-1[${PYTHON_USEDEP}]
+ >=dev-python/watchdog-2.3[${PYTHON_USEDEP}]
+ test-rust? (
+ dev-python/cryptography[${PYTHON_USEDEP}]
+ )
+ )
+"
+
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=()
+ if ! has_version "dev-python/cryptography[${PYTHON_USEDEP}]"; then
+ EPYTEST_DESELECT+=(
+ "tests/test_serving.py::test_server[https]"
+ tests/test_serving.py::test_ssl_dev_cert
+ tests/test_serving.py::test_ssl_object
+ )
+ fi
+
+ # the default portage tempdir is too long for AF_UNIX sockets
+ local -x TMPDIR=/tmp
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest -p xprocess -p timeout tests
+}
diff --git a/dev-python/whitenoise/Manifest b/dev-python/whitenoise/Manifest
index e13dd1d7789d..d1a0e671f968 100644
--- a/dev-python/whitenoise/Manifest
+++ b/dev-python/whitenoise/Manifest
@@ -1,5 +1,5 @@
-DIST whitenoise-6.6.0.gh.tar.gz 56367 BLAKE2B b18b7f029eee25820251457855d5dc082d5e7c787c0a5de7c83db4037a087f8c40a869d314e5d93f29b179ba4cda38eb9bcff2f7b320d03eebb4df8065af9989 SHA512 523070b760d17ff3b1ae263ea36d6b875acb2d9d05d562b1e24a24be84ebb026b7ebf558c6b6322a028a321c75dc3dfe7b3d84e8b3710754f05553820bc12f51
DIST whitenoise-6.7.0.gh.tar.gz 56462 BLAKE2B 917bf8dd48bf65ac6d2104fd8adb165086c7ea426267f72ab1fd758b69ec366a96f8e29ef6a1a3e344604f16fb3f5af380dc6169d14ae8f40c56ee889e1b7e75 SHA512 c2b2c6777ec53d41362aaf756decf8fc01a82ceaa3a446dd8c01c634f5087c756201c556905ae26adae8355f872251e4268a45e9ec40a57131762f1f8c7efb16
-EBUILD whitenoise-6.6.0.ebuild 733 BLAKE2B 17020f9c22e423416ba91412b5694588cce8c2c98d12d401d804b7696e41e44745e363b4240efb2293051ee1096df14bf218f49880d35b03325b10aac6b3a18b SHA512 87ccc75235f901d537afd11f55f6f9d18f918841ae59e285dbbea409af670104a4da0ce1665db84cf4e8b80d889815ecc7933da90737902a57b76f97ca576dbd
+DIST whitenoise-6.8.2.gh.tar.gz 57336 BLAKE2B e4c04beb057dbdf237da7f0c864d8cf1d077abbcd227d48bcadcabcb51d93c9b97460a167c2a2f8526beee3007b07d34c376518ad956831150730593f5867f7a SHA512 6b162d9147c83d77635f0a254d5462785a3ab21f87ea20db30ff330c5db28d183f8a7ce1eeae6e3b39b4f033cc1d3b1b261a4b5ff7d9bac4826218f59d948d68
EBUILD whitenoise-6.7.0.ebuild 733 BLAKE2B 17020f9c22e423416ba91412b5694588cce8c2c98d12d401d804b7696e41e44745e363b4240efb2293051ee1096df14bf218f49880d35b03325b10aac6b3a18b SHA512 87ccc75235f901d537afd11f55f6f9d18f918841ae59e285dbbea409af670104a4da0ce1665db84cf4e8b80d889815ecc7933da90737902a57b76f97ca576dbd
+EBUILD whitenoise-6.8.2.ebuild 733 BLAKE2B f450e341f864cb4d280505f6d795613d59c73904bfecfe45809e83d4418ac84e521142fb23f866b8748654a01776e961238dc301814668e4918664dc5b69ca8b SHA512 dab68b2d45de0fff1fe2d02f2442ab4c0a5fae94e7a853c4115d9d0da1791af195eb735aec98f3671c043ca952327aabfcec3fc9aba2bdc0618fc9325aef8556
MISC metadata.xml 451 BLAKE2B c9483574bd94fee26ed9dc0de6ea3e42b340035c5de0b7d6b37452c7fa2b2317283b7f926f0c8227444c1dd8245246dabea2bc1d7d312aff57133905098344bc SHA512 f3808adacefa3435da5a1e4ce97fa7089baeebb8eaad53a66dbb497b996e7005da3f316d734915ec2284480de2596f7927c34bfbaeb391277de4c9f04d45f743
diff --git a/dev-python/whitenoise/whitenoise-6.6.0.ebuild b/dev-python/whitenoise/whitenoise-6.8.2.ebuild
index 722fbfc71ebc..722fbfc71ebc 100644
--- a/dev-python/whitenoise/whitenoise-6.6.0.ebuild
+++ b/dev-python/whitenoise/whitenoise-6.8.2.ebuild