summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
authorLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2024-11-05 17:54:35 +0000
committerLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2024-11-05 17:54:35 +0000
commit82aa4a9198c4807d2ee0f6e2a143b54db8e02aca (patch)
treef5523024d3ae17655d6b15cf26b5b7225e3db90d /dev-python
parentd8922666847902bd7cab346505f025e91c911eae (diff)
downloadbaldeagleos-repo-82aa4a9198c4807d2ee0f6e2a143b54db8e02aca.tar.gz
baldeagleos-repo-82aa4a9198c4807d2ee0f6e2a143b54db8e02aca.tar.xz
baldeagleos-repo-82aa4a9198c4807d2ee0f6e2a143b54db8e02aca.zip
Adding metadata
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/QtPy/Manifest1
-rw-r--r--dev-python/QtPy/QtPy-2.4.2.ebuild243
-rw-r--r--dev-python/alembic/Manifest1
-rw-r--r--dev-python/alembic/alembic-1.14.0.ebuild47
-rw-r--r--dev-python/apispec/Manifest2
-rw-r--r--dev-python/apispec/apispec-6.7.1.ebuild (renamed from dev-python/apispec/apispec-6.6.1.ebuild)0
-rw-r--r--dev-python/cachecontrol/Manifest1
-rw-r--r--dev-python/cachecontrol/cachecontrol-0.14.1.ebuild33
-rw-r--r--dev-python/cfn-lint/Manifest1
-rw-r--r--dev-python/cfn-lint/cfn-lint-1.18.4.ebuild70
-rw-r--r--dev-python/dulwich/dulwich-0.22.4.ebuild13
-rw-r--r--dev-python/mkdocs-git-authors-plugin/Manifest1
-rw-r--r--dev-python/mkdocs-git-authors-plugin/mkdocs-git-authors-plugin-0.9.2.ebuild55
-rw-r--r--dev-python/moto/Manifest1
-rw-r--r--dev-python/moto/moto-5.0.20.ebuild133
-rw-r--r--dev-python/mpxj/mpxj-13.5.1-r1.ebuild (renamed from dev-python/mpxj/mpxj-13.5.1.ebuild)3
-rw-r--r--dev-python/phonenumbers/Manifest1
-rw-r--r--dev-python/phonenumbers/phonenumbers-8.13.49.ebuild39
-rw-r--r--dev-python/pydantic-settings/Manifest2
-rw-r--r--dev-python/pydantic-settings/pydantic-settings-2.6.1.ebuild (renamed from dev-python/pydantic-settings/pydantic-settings-2.5.2.ebuild)22
-rw-r--r--dev-python/pyproject-fmt/pyproject-fmt-2.5.0.ebuild2
-rw-r--r--dev-python/simsimd/Manifest3
-rw-r--r--dev-python/simsimd/simsimd-5.9.10.ebuild64
-rw-r--r--dev-python/simsimd/simsimd-6.0.0.ebuild (renamed from dev-python/simsimd/simsimd-5.8.0.ebuild)0
-rw-r--r--dev-python/tldextract/Manifest1
-rw-r--r--dev-python/tldextract/tldextract-5.1.3.ebuild45
-rw-r--r--dev-python/toml-fmt-common/toml-fmt-common-1.0.1.ebuild2
-rw-r--r--dev-python/types-setuptools/Manifest1
-rw-r--r--dev-python/types-setuptools/types-setuptools-75.3.0.20241105.ebuild17
-rw-r--r--dev-python/uv/Manifest2
-rw-r--r--dev-python/uv/uv-0.4.30.ebuild145
-rw-r--r--dev-python/werkzeug/Manifest1
-rw-r--r--dev-python/werkzeug/werkzeug-3.1.2.ebuild54
33 files changed, 932 insertions, 74 deletions
diff --git a/dev-python/QtPy/Manifest b/dev-python/QtPy/Manifest
index f518af3f339b..19715d04e382 100644
--- a/dev-python/QtPy/Manifest
+++ b/dev-python/QtPy/Manifest
@@ -1 +1,2 @@
DIST QtPy-2.4.1.tar.gz 65492 BLAKE2B 3816e3836c171f75fc1877984b533602c8929a791b09a1f53b14687eae7a1067e47fcae3a198d798417521a1a81829168d3af94178b28d8a3bd2c28e7d9f7865 SHA512 cb7c65cfec5aba9bdc4942b95108ac0300eac5ca8f0c984e8ea789b77fded3a1817f591d43bc45e9aa4feb3cb3da64c0d42ae67f12121a807cf7c247e7612e7d
+DIST qtpy-2.4.2.tar.gz 66849 BLAKE2B 1eb362e797950d6c1406fb02bb3047ca7f8fdecd2b75371ab34f39601c9bdebce33336e3809c0d35dca31673c88d1734721a6dfdfb65f2ce20729445c4a4ca27 SHA512 2f9a0e1a4839c8dca23b4364900a12c2bd00f518353785a41eb6bd62fdc469670457f18224e1150a5a216ff5d0c4e799c3a1711ff7703ea07fadd655538fa37a
diff --git a/dev-python/QtPy/QtPy-2.4.2.ebuild b/dev-python/QtPy/QtPy-2.4.2.ebuild
new file mode 100644
index 000000000000..61488328d271
--- /dev/null
+++ b/dev-python/QtPy/QtPy-2.4.2.ebuild
@@ -0,0 +1,243 @@
+# 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 virtualx pypi
+
+DESCRIPTION="Abstraction layer on top of PyQt and PySide with additional custom QWidgets"
+HOMEPAGE="
+ https://github.com/spyder-ide/qtpy/
+ https://pypi.org/project/QtPy/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+
+_IUSE_QT_MODULES="
+ designer +gui help multimedia +network opengl positioning
+ printsupport qml quick sensors serialport speech +sql svg testlib
+ webchannel webengine websockets +widgets +xml
+"
+IUSE="+pyqt5 +pyqt6 pyside2 pyside6 ${_IUSE_QT_MODULES}"
+unset _IUSE_QT_MODULES
+
+REQUIRED_USE="
+ || ( pyqt5 pyqt6 pyside2 pyside6 )
+ python_targets_python3_12? ( !pyside2 )
+ python_targets_python3_13? ( !pyside2 )
+"
+
+# These flags are currently *not* common to the PySide2/6 and PyQt5/6 ebuilds
+# Disable them for now, please check periodically if this is still up to date.
+# bluetooth? ( pyqt5/6 and pyside6 only )
+# dbus? ( pyqt5/6 and pyside6 only )
+#
+# 3d? ( pyside2/6 only )
+# charts? ( pyside2 only )
+# concurrent? ( pyside2 only )
+# datavis? ( pyside2 only )
+# scxml? ( pyside2/6 only )
+#
+# x11extras? ( pyside2 and pyqt5 only )
+# xmlpatterns? ( pyside2 and pyqt5 only )
+#
+# location? ( pyside2/6 and pyqt5 only)
+# nfc? ( pyqt6 and pyside6 only)
+# spatialaudio? ( pyqt6 and pyside6 only)
+# pdfium? ( pyqt6 and pyside6 only)
+
+# WARNING: the obvious solution of using || for PyQt5/pyside2 is not going
+# to work. The package only checks whether PyQt5/pyside2 is installed, it does
+# not verify whether they have the necessary modules (i.e. satisfy the USE dep).
+#
+# Webengine is a special case, because PyQt5 provides this in a separate package
+# while PySide2 ships it in the same package.
+#
+# declarative/qml/quick is a special case, because PyQt5 bundles the bindings
+# for qml and quick in one flag: declarative PySide2 does not.
+#
+# The PyQt5 ebuild currently enables xml support unconditionally, the flag is
+# added anyway with a (+) to make it future proof if the ebuild were to change
+# this behaviour in the future.
+#
+# The PySide2 ebuild currently enables opengl and serialport support
+# unconditionally, the flag is added anyway with a (+) to make it future proof
+# if the ebuild were to change this behaviour in the future.
+RDEPEND="
+ dev-python/packaging[${PYTHON_USEDEP}]
+ pyqt5? (
+ dev-python/PyQt5[${PYTHON_USEDEP}]
+ dev-python/PyQt5[designer?,gui?,help?,multimedia?,network?,opengl?]
+ dev-python/PyQt5[positioning?,printsupport?,sensors?,serialport?,speech?,sql?,svg?]
+ dev-python/PyQt5[testlib?,webchannel?,websockets?,widgets?,xml(+)?]
+ qml? ( dev-python/PyQt5[declarative] )
+ quick? ( dev-python/PyQt5[declarative] )
+ webengine? ( dev-python/PyQtWebEngine[${PYTHON_USEDEP}] )
+ )
+ pyqt6? (
+ dev-python/PyQt6[${PYTHON_USEDEP}]
+ dev-python/PyQt6[designer?,gui?,help?,multimedia?,network?,opengl?]
+ dev-python/PyQt6[positioning?,printsupport?,qml?,quick?,sensors?,serialport?,sql?]
+ dev-python/PyQt6[speech?,svg?,testlib?,webchannel?,websockets?,widgets?,xml?]
+ webengine? ( dev-python/PyQt6-WebEngine[${PYTHON_USEDEP},widgets?,quick?] )
+
+ )
+ pyside2? (
+ $(python_gen_cond_dep '
+ dev-python/pyside2[${PYTHON_USEDEP}]
+ dev-python/pyside2[designer?,gui?,help?,multimedia?,network?,opengl(+)?]
+ dev-python/pyside2[positioning?,printsupport?,qml?,quick?,sensors?,serialport(+)?]
+ dev-python/pyside2[speech?,sql?,svg?,testlib?,webchannel?,webengine?,websockets?]
+ dev-python/pyside2[widgets?,xml?]
+ ' python3_{10..11})
+ )
+ pyside6? (
+ dev-python/pyside6[${PYTHON_USEDEP}]
+ dev-python/pyside6[designer?,gui?,help?,multimedia?,network?,opengl?]
+ dev-python/pyside6[positioning?,printsupport?,qml?,quick?,sensors(-)?,serialport?]
+ dev-python/pyside6[speech(-)?,sql?,svg?,testlib?,webchannel?,webengine?,websockets?]
+ dev-python/pyside6[widgets?,xml?]
+ )
+"
+
+# The QtPy testsuite skips tests for bindings that are not installed, so here we
+# ensure that everything is available and all tests are run. Note that not
+# all flags are available in PyQt5/PySide2, so some tests are still skipped.
+BDEPEND="
+ test? (
+ dev-python/pytest-qt[${PYTHON_USEDEP}]
+ pyqt5? (
+ dev-python/PyQt5[${PYTHON_USEDEP}]
+ dev-python/PyQt5[bluetooth,dbus,declarative,designer,gui,help,location]
+ dev-python/PyQt5[multimedia,network,opengl,positioning,printsupport]
+ dev-python/PyQt5[sensors,serialport,speech(-),sql,svg,testlib,webchannel]
+ dev-python/PyQt5[websockets,widgets,x11extras,xml(+),xmlpatterns]
+ dev-python/PyQtWebEngine[${PYTHON_USEDEP}]
+ dev-qt/qtsql:5[sqlite]
+ )
+ pyqt6? (
+ dev-python/PyQt6[${PYTHON_USEDEP}]
+ dev-python/PyQt6[dbus,designer,gui,help,multimedia,network,nfc,opengl]
+ dev-python/PyQt6[pdfium(-),positioning,printsupport,qml,quick,quick3d,serialport]
+ dev-python/PyQt6[sensors(-),spatialaudio(-),speech(-),sql,ssl,svg,testlib,webchannel]
+ dev-python/PyQt6[websockets,widgets,xml]
+ dev-python/PyQt6-WebEngine[${PYTHON_USEDEP},widgets,quick]
+ dev-qt/qtbase:6[sqlite]
+ )
+ pyside2? (
+ $(python_gen_cond_dep '
+ dev-python/pyside2[${PYTHON_USEDEP}]
+ dev-python/pyside2[3d,charts,concurrent,datavis,designer,gui,help]
+ dev-python/pyside2[location,multimedia,network,opengl(+)]
+ dev-python/pyside2[positioning,printsupport,qml,quick,scxml]
+ dev-python/pyside2[sensors,serialport(+),speech,sql,svg,testlib]
+ dev-python/pyside2[webchannel,webengine,websockets,widgets,x11extras]
+ dev-python/pyside2[xml,xmlpatterns]
+ dev-qt/qtsql:5[sqlite]
+ dev-python/pyside2-tools[${PYTHON_USEDEP}]
+ ' python3_{10..11})
+ dev-qt/qtsql:5[sqlite]
+ )
+ pyside6? (
+ dev-python/pyside6[${PYTHON_USEDEP}]
+ dev-python/pyside6[3d(-),bluetooth(-),concurrent,dbus,designer,gui,help]
+ dev-python/pyside6[location(-),multimedia,network,nfc(-),opengl,positioning,pdfium(-)]
+ dev-python/pyside6[printsupport,qml,quick,quick3d,scxml(-),sensors(-)]
+ dev-python/pyside6[serialport,spatialaudio(-),speech(-),sql,svg,testlib,webchannel]
+ dev-python/pyside6[webengine,websockets,widgets,xml]
+ dev-python/pyside6-tools[${PYTHON_USEDEP}]
+ dev-qt/qtbase:6[sqlite]
+ )
+ )
+"
+
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+ sed -i -e 's:--cov=qtpy --cov-report=term-missing::' pytest.ini || die
+ # Disable Qt for Python implementations that are not selected
+ if ! use pyqt5; then
+ sed \
+ -e '/from PyQt5.QtCore import/,/)/c\ \ \ \ \ \ \ \ raise ImportError #/' \
+ -e '/if "PyQt5" in sys.modules:/,/"pyqt5"/c\' \
+ -i qtpy/__init__.py || die
+
+ # We need to ensure the first option is an 'if' not 'elif'
+ sed -e 's/elif "PySide2" in sys.modules:/if "PySide2" in sys.modules:/g' -i qtpy/__init__.py || die
+ fi
+ if ! use pyside2; then
+ sed \
+ -e "s/from PySide2 import/raise ImportError #/" \
+ -e "s/from PySide2.QtCore import/raise ImportError #/" \
+ -e '/if "PySide2" in sys.modules:/,/"pyside2"/c\' \
+ -i qtpy/__init__.py || die
+
+ if ! use pyqt5; then
+ sed \
+ -e 's/elif "PyQt6" in sys.modules:/if "PyQt6" in sys.modules:/g' \
+ -i qtpy/__init__.py || die
+ fi
+ fi
+ if ! use pyqt6; then
+ sed \
+ -e '/from PyQt6.QtCore import/,/)/c\ \ \ \ \ \ \ \ raise ImportError #/' \
+ -e '/if "PyQt6" in sys.modules:/,/"pyqt6"/c\' \
+ -i qtpy/__init__.py || die
+
+ if ! use pyqt5 && ! use pyside2; then
+ sed \
+ -e 's/elif "PySide6" in sys.modules:/if "PySide6" in sys.modules:/g' \
+ -i qtpy/__init__.py || die
+ fi
+ fi
+ if ! use pyside6; then
+ sed \
+ -e "s/from PySide6 import/raise ImportError #/" \
+ -e "s/from PySide6.QtCore import/raise ImportError #/" \
+ -e '/if "PySide6" in sys.modules:/,/"pyside6"/c\' \
+ -i qtpy/__init__.py || die
+ fi
+}
+
+python_test() {
+ local -x QT_API
+ local -a EPYTEST_DESELECT
+ local other
+
+ # Test for each enabled Qt4Python target.
+ # Deselect the other targets, their test fails if we specify QT_API
+ # or if we have disabled their corresponding inherit in __init__.py above
+ for QT_API in PyQt{5,6} PySide{2,6}; do
+ if use "${QT_API,,}"; then
+ EPYTEST_DESELECT=()
+ for other in PyQt{5,6} PySide{2,6}; do
+ if [[ ${QT_API} != ${other} ]]; then
+ EPYTEST_DESELECT+=(
+ "qtpy/tests/test_main.py::test_qt_api_environ[${other}]"
+ )
+ fi
+ done
+
+ einfo "Testing with ${EPYTHON} and QT_API=${QT_API}"
+ nonfatal epytest -o addopts= ||
+ die -n "Tests failed with ${EPYTHON} and QT_API=${QT_API}" ||
+ return 1
+ fi
+ done
+}
+
+src_test() {
+ virtx distutils-r1_src_test
+}
+
+pkg_postinst() {
+ elog "When multiple Qt4Python targets are enabled QtPy will default to"
+ elog "the first enabled target in this order: PyQt5 PySide2 PyQt6 PySide6."
+ elog "This can be overridden with the QT_API environment variable."
+}
diff --git a/dev-python/alembic/Manifest b/dev-python/alembic/Manifest
index 5b8a6848f064..32d0168acb35 100644
--- a/dev-python/alembic/Manifest
+++ b/dev-python/alembic/Manifest
@@ -1 +1,2 @@
DIST alembic-1.13.3.tar.gz 1921223 BLAKE2B 25f0dcc806e5988e54f2557bce31bdb50ff94ea6a312fa71a82f61114b4b34a5a2b8003c8174d77a4e202c60d84f8cad4b61c048b093e2159a6dd85ca8f38ce1 SHA512 5661098833a4314484a6e7ea4cdea9755ed84982eaa914972265943c8b62e17d5a2831d323d238c4a37d71de61251388d43f5b419e2c592753f6bdc5fc463563
+DIST alembic-1.14.0.tar.gz 1916172 BLAKE2B 22c9373df866857328dbcd10e87ded6d7768bff0f5955a2ca607d9a31e722f69b3adb0560150483f59122bc676ba7d9bd4245e29f5f1a35c8f96b4741422b77a SHA512 efc6eb3527672a136a6acef8bcc1d484c4a331fbb1b825085ac337133facddd11c4cfe4f473175a748bbbec8f7d58c45cb341902cdedbbb7b00a0403e2ba53d5
diff --git a/dev-python/alembic/alembic-1.14.0.ebuild b/dev-python/alembic/alembic-1.14.0.ebuild
new file mode 100644
index 000000000000..bc0d60309286
--- /dev/null
+++ b/dev-python/alembic/alembic-1.14.0.ebuild
@@ -0,0 +1,47 @@
+# 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} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Database migrations tool, written by the author of SQLAlchemy"
+HOMEPAGE="
+ https://github.com/sqlalchemy/alembic/
+ https://pypi.org/project/alembic/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+IUSE="doc"
+
+RDEPEND="
+ >=dev-python/sqlalchemy-1.1.0[${PYTHON_USEDEP}]
+ dev-python/mako[${PYTHON_USEDEP}]
+ >=dev-python/python-editor-0.3[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ sys-libs/timezone-data
+ )
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_test() {
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ # setup.cfg contains -p no:warnings in addopts which triggers
+ # datetime.utcfromtimestamp() deprecation warning as an error in py3.12
+ epytest -o addopts=
+}
+
+python_install_all() {
+ use doc && local HTML_DOCS=( docs/. )
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/apispec/Manifest b/dev-python/apispec/Manifest
index 2ed1169cc8a0..8b015c2ed195 100644
--- a/dev-python/apispec/Manifest
+++ b/dev-python/apispec/Manifest
@@ -1,2 +1,2 @@
-DIST apispec-6.6.1.tar.gz 76537 BLAKE2B e08f1545441be7f1dd266205a6a7dc1317385961325e47c25fde0aecbd68712410601249bced9b0c3491d3e6f772c94c14f638d77e3dbfac37bba5bb0dd1e284 SHA512 a6820444b017f9551d21cf5ba5a14f8f4eaa6bccd1848c540e41bd37140df06dc897bf5d29bc77a2e55b670d58dc84eeb6588769efb3fe400eba243c0a1b5425
DIST apispec-6.7.0.tar.gz 76654 BLAKE2B 95b0daa8c6b07bd4accf84a8f4259d9c7ebed34ad0e9767c53548b13a82bc0de7bf3b145905f380106bfc07cfa10a942f290d93d1d3599aa8fe76df23863a3b3 SHA512 b75482696aecd6a68bd35ba1e4112c3ead7475c7f5dcca49f0ec6f332f37ed8e42df152164b645716f86daaafbb59f94c3f4844705d3df5263e637e9fa90afcd
+DIST apispec-6.7.1.tar.gz 76714 BLAKE2B ced24f5d455d02a64bbcd098d892bf5f37275eb6cc3ea445b97f89b8e21d0446ae069e1086cdd9c833135931fa3ddf0694eddf10fbbbd81986a59c79f4faf42c SHA512 97a0800f95301b249c57b05560ef45912462c3754f1923530bdfbbbd5e6968f2b1a8174470a5fdb06368d8541a6ef2c76e4964e98cfb47eea0715e1e7abaac7f
diff --git a/dev-python/apispec/apispec-6.6.1.ebuild b/dev-python/apispec/apispec-6.7.1.ebuild
index b71f2f8ae3c6..b71f2f8ae3c6 100644
--- a/dev-python/apispec/apispec-6.6.1.ebuild
+++ b/dev-python/apispec/apispec-6.7.1.ebuild
diff --git a/dev-python/cachecontrol/Manifest b/dev-python/cachecontrol/Manifest
index 39f6e1b02ccc..294d6becd175 100644
--- a/dev-python/cachecontrol/Manifest
+++ b/dev-python/cachecontrol/Manifest
@@ -1 +1,2 @@
DIST cachecontrol-0.14.0.tar.gz 28899 BLAKE2B 158d70333b8e5cbbee31db788c9737a92592c3c342d17e4e1ff4826759e3fe14eb855556f9363c122fbf3fd68ca43a78b34b3327260fe51a15b30dde01302508 SHA512 4bb43475d43a2b83f9196cf02af7a881ab37da3b481777f1ae6b24df0f7dab54629fcdf9e07b00e1226a7707f5c92b0473481ef7cbbcaa4275665a41487c903f
+DIST cachecontrol-0.14.1.tar.gz 28928 BLAKE2B 9f01bc35c905f0fb489e796f96ccc0063a475bacc24b980ee67f8053412a52d9167b4b96495a8a7f7c561e2485a1b6fcb4ec94b1408ea5111f8661fea59394fd SHA512 f99463ee08199058d0f84a173d6a85276cfe6caec0bec6692e5af74f4c8e684a68ab6910c6c85cbd1f4515c7044ee2fbf149cfd85e4ce9d9ac97e9850698c07f
diff --git a/dev-python/cachecontrol/cachecontrol-0.14.1.ebuild b/dev-python/cachecontrol/cachecontrol-0.14.1.ebuild
new file mode 100644
index 000000000000..ceb0ca465f1d
--- /dev/null
+++ b/dev-python/cachecontrol/cachecontrol-0.14.1.ebuild
@@ -0,0 +1,33 @@
+# Copyright 2022-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="httplib2 caching for requests"
+HOMEPAGE="
+ https://pypi.org/project/CacheControl/
+ https://github.com/psf/cachecontrol/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ <dev-python/msgpack-2[${PYTHON_USEDEP}]
+ >=dev-python/msgpack-0.5.2[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.16.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/cherrypy[${PYTHON_USEDEP}]
+ >=dev-python/filelock-3.8.0[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
diff --git a/dev-python/cfn-lint/Manifest b/dev-python/cfn-lint/Manifest
index f295fc04a7a0..4d5760ed3403 100644
--- a/dev-python/cfn-lint/Manifest
+++ b/dev-python/cfn-lint/Manifest
@@ -1,2 +1,3 @@
DIST cfn_lint-1.17.2.tar.gz 2526962 BLAKE2B 76feefa1bcce6a0957ce028d6041ac49b475cf25bd843e7de30b1d05d797e55d4189d9deba087f569f94f2f8fc40b11c3ecddcab1593432abf0da1bd26db6da9 SHA512 79fa133244cfe1239648209da9e8bbb2e50435bc5c18b6f998c90eb09536a760dfae62507123c22295098bf0866b1ef0ed05853debb00e651b75651921401530
DIST cfn_lint-1.18.3.tar.gz 2768521 BLAKE2B 277d52b6005e175bf87094dc6a0c71e660217db2665a03f1408ed03d67c2b72aefd0d2ed377869932aabeb351449eb6f7e05db3d8abebe94eed18b60d4c9c283 SHA512 27803f683f8f0440b71925a511fd9cd81c8a81c35a04b267a6f67833d40e2d1dca94f9c81bad507ede02c049ef5143372d5e9aa148ea5242b946d1cd3ac55a77
+DIST cfn_lint-1.18.4.tar.gz 2788919 BLAKE2B c9815d61450d6afa6f054a305b90ceb14a2dd72206834fb64c8e51017cbcf02843dc83e909d1db0dfb183d7f059909a9b794e886745bbe48cac42dcf2c109150 SHA512 fc8ed928fa83d262000c141805734c788559f2ed7ad7b1b989771069cd8972c04dba67a8c4823cceb35ad70db19e28c5f36093cf42f86b232f35eeba8585c89b
diff --git a/dev-python/cfn-lint/cfn-lint-1.18.4.ebuild b/dev-python/cfn-lint/cfn-lint-1.18.4.ebuild
new file mode 100644
index 000000000000..d9b997205f33
--- /dev/null
+++ b/dev-python/cfn-lint/cfn-lint-1.18.4.ebuild
@@ -0,0 +1,70 @@
+# 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="CloudFormation Linter"
+HOMEPAGE="
+ https://github.com/aws-cloudformation/cfn-lint/
+ https://pypi.org/project/cfn-lint/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+
+RDEPEND="
+ >=dev-python/aws-sam-translator-1.91.0[${PYTHON_USEDEP}]
+ dev-python/jsonpatch[${PYTHON_USEDEP}]
+ >=dev-python/jschema-to-python-1.2.3[${PYTHON_USEDEP}]
+ <dev-python/jsonschema-5[${PYTHON_USEDEP}]
+ >=dev-python/jsonschema-3.0[${PYTHON_USEDEP}]
+ dev-python/junit-xml[${PYTHON_USEDEP}]
+ <dev-python/networkx-4[${PYTHON_USEDEP}]
+ >dev-python/pyyaml-5.4[${PYTHON_USEDEP}]
+ >=dev-python/regex-2021.7.1[${PYTHON_USEDEP}]
+ >=dev-python/sarif-om-1.0.4[${PYTHON_USEDEP}]
+ >=dev-python/sympy-1.0.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/defusedxml[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+src_prepare() {
+ # unpin the deps
+ sed -e 's:~=[0-9.]*::' -i pyproject.toml || die
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # TODO
+ test/unit/module/test_template.py::TestTemplate::test_build_graph
+ # requires git repo
+ test/unit/module/maintenance/test_update_documentation.py::TestUpdateDocumentation::test_update_docs
+ # Internet
+ test/unit/module/formatters/test_formatters.py::TestFormatters::test_sarif_formatter
+ test/unit/module/maintenance/test_update_resource_specs.py::TestUpdateResourceSpecs::test_update_resource_specs_python_3
+ # TODO: it looks as if AWS_DEFAULT_REGION didn't work
+ test/unit/module/core/test_run_cli.py::TestCli::test_bad_config
+ test/unit/module/core/test_run_cli.py::TestCli::test_override_parameters
+ test/unit/module/core/test_run_cli.py::TestCli::test_positional_template_parameters
+ test/unit/module/core/test_run_cli.py::TestCli::test_template_config
+ # different graphviz version?
+ test/unit/module/template/test_template.py::TestTemplate::test_build_graph
+ )
+
+ # from tox.ini
+ local -x AWS_DEFAULT_REGION=us-east-1
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest
+}
diff --git a/dev-python/dulwich/dulwich-0.22.4.ebuild b/dev-python/dulwich/dulwich-0.22.4.ebuild
index 84809b4a9b1e..be352a0472dc 100644
--- a/dev-python/dulwich/dulwich-0.22.4.ebuild
+++ b/dev-python/dulwich/dulwich-0.22.4.ebuild
@@ -73,6 +73,19 @@ src_unpack() {
cargo_src_unpack
}
+src_prepare() {
+ default
+
+ if use !native-extensions; then
+ # avoid hard dep on rust via setuptools_rust
+ # https://github.com/jelmer/dulwich/issues/1405
+ sed -i \
+ -e '/from setuptools_rust/d' \
+ -e '/^rust_extensions = \[/,/^\]/d' \
+ setup.py || die
+ fi
+}
+
python_compile() {
unset PURE
# TODO: enable Rust extensions
diff --git a/dev-python/mkdocs-git-authors-plugin/Manifest b/dev-python/mkdocs-git-authors-plugin/Manifest
index dacf209f3e38..3ab1e2500293 100644
--- a/dev-python/mkdocs-git-authors-plugin/Manifest
+++ b/dev-python/mkdocs-git-authors-plugin/Manifest
@@ -1,2 +1,3 @@
DIST mkdocs-git-authors-plugin-0.9.0.gh.tar.gz 30785 BLAKE2B babf9c6b200ee3ea6839e4b35c78e83c727477b9dbaee027fda49500d7b8bb57ffea2d960a2ca979ee8cb2e499a004dc49ca417c4a96054dad27408e4bbb0607 SHA512 66527124217eecef80025517b1fabe9b81c3b65808f0c32610a8333ace2bec1dbb316ad35aec819c03482e9a09961f8cf84f8b1c2f5bdfbd5e270c07019f06e6
DIST mkdocs-git-authors-plugin-0.9.1.gh.tar.gz 32985 BLAKE2B 4b0ba5ed91b809aa3873953018c80fe86e7d1d7df04b73de170b9cf546848fccdbcf5282b608c1197af27783856259fbcde945a53426c3e46c0927bcda4e9f5a SHA512 d93cef7d86961aeb321d2eb74487f69c0d775bc9e90445444e8978f624d9b9ae4af5b183c72ec494ad8d3e89a8d67ae81ecd999218adced597fff6a374132477
+DIST mkdocs-git-authors-plugin-0.9.2.gh.tar.gz 32983 BLAKE2B 3f709a180ee80b4553038a459b46684a367ef6c2f62bde4cb551d23aadb7ca701402e4b645d9b75c4d735346d4cd6f825821c23a391dca5264b750f2c2c544c8 SHA512 8933bbf828c239427b40a1a99ea014c1947400b46bb9a88beed6074420fb3b85d60083476c5daf88fe9e10e1f6a6cb5899dfd768ff6f12ead8d70f4bd3951b51
diff --git a/dev-python/mkdocs-git-authors-plugin/mkdocs-git-authors-plugin-0.9.2.ebuild b/dev-python/mkdocs-git-authors-plugin/mkdocs-git-authors-plugin-0.9.2.ebuild
new file mode 100644
index 000000000000..6f9ba0b4576e
--- /dev/null
+++ b/dev-python/mkdocs-git-authors-plugin/mkdocs-git-authors-plugin-0.9.2.ebuild
@@ -0,0 +1,55 @@
+# 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} )
+
+# Requires self to be installed to build docs
+# TODO: Do this a bit better
+DOCS_BUILDER="mkdocs"
+DOCS_DEPEND="
+ dev-python/regex
+ dev-python/mkdocs-material
+ dev-python/mkdocs-git-authors-plugin
+"
+DOCS_INITIALIZE_GIT=1
+
+inherit distutils-r1 docs
+
+DESCRIPTION="Mkdocs plugin to display git authors of a page"
+HOMEPAGE="
+ https://github.com/timvink/mkdocs-git-authors-plugin/
+ https://pypi.org/project/mkdocs-git-authors-plugin/
+"
+SRC_URI="https://github.com/timvink/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.gh.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86"
+
+# Tests are broken outside of upstream git repo
+RESTRICT="test"
+
+RDEPEND="
+ dev-python/GitPython[${PYTHON_USEDEP}]
+ >=dev-python/mkdocs-1.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/click[${PYTHON_USEDEP}]
+ dev-python/mkdocs-material[${PYTHON_USEDEP}]
+ dev-python/mkdocs-git-revision-date-localized-plugin[${PYTHON_USEDEP}]
+ dev-vcs/git
+ )
+"
+
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ # mkdocs-git-authors tests need git repo
+ use test && initialize_git_repo
+
+ distutils-r1_python_prepare_all
+}
diff --git a/dev-python/moto/Manifest b/dev-python/moto/Manifest
index dae979b43a94..f2f6cc7aead0 100644
--- a/dev-python/moto/Manifest
+++ b/dev-python/moto/Manifest
@@ -2,3 +2,4 @@ DIST moto-4.2.14.tar.gz 4933741 BLAKE2B 4c50a808dc8f27cfbcd0ba234d268084ee9a32f3
DIST moto-5.0.17.tar.gz 5500632 BLAKE2B 9807388c0318a99635b0972f7d4d24489ddd37b0ec5272965d895c101ee924ef3915d8ef7546b6eab7574e87a5b3c650abce5dc07dda389a1fd9a0fc55d75cfb SHA512 8f17b4f0367f7068c0896d1db8766a2133dab027f107d742027ca936c3a2aaf13e4255ddc4801958e53197e3dd618bd6db7a7b21fef057662ba98e895c2e6bfc
DIST moto-5.0.18.tar.gz 5509110 BLAKE2B 0e56aabc053184121608f08e9d0489fe20c51450d500cb35557d65222b60bb3b6e0aa5e3900a22fe8f6008c751524b1bd946e0994fcddf0e82c058ecf106e115 SHA512 805a100aaa0a1164fff3baf80baec868d12c7f94ec345640272ed284e2c982b6c0c092ffa5e0b28a26d547b9eb48485ed660e06170c1e26ec03590c35695e44f
DIST moto-5.0.19.tar.gz 6203233 BLAKE2B 792d540a6ba44350e9fb4c85848e60daf704eb1a866e30e2cdd910dcf7bd7846f4da6c5b1a3e3b72663efb85574845508bc5eb3f70b0e948554ef19fe2970ebe SHA512 593965dcc821f0fdc8495e4ee72330ab1808e0bbbb491906eb204d2dc4b68af036b2065f5640c264c868207ceace967ca9d6efa741b3f9132427c0918aa2dcd7
+DIST moto-5.0.20.tar.gz 6203061 BLAKE2B 0e2126c72eb7a0afbe5ef29251527e7e4822d125e7e107217e6a702e2c51aa274f7181cdd6dd1b0c724315f89e58415e1e89fdb96db6777fac79a85bc0f53421 SHA512 d7a2c4311cc0518761226d200c8691fa70871b779f5f01cf573e0f92e4677a6f9ab5b77b2005b36346b199f3f0f2921df9879d13b1bed95c363537b01a9ef47e
diff --git a/dev-python/moto/moto-5.0.20.ebuild b/dev-python/moto/moto-5.0.20.ebuild
new file mode 100644
index 000000000000..dd296447dade
--- /dev/null
+++ b/dev-python/moto/moto-5.0.20.ebuild
@@ -0,0 +1,133 @@
+# 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 toolchain-funcs
+
+DESCRIPTION="Mock library for boto"
+HOMEPAGE="
+ https://github.com/getmoto/moto/
+ https://pypi.org/project/moto/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+
+RDEPEND="
+ >=dev-python/aws-xray-sdk-0.93[${PYTHON_USEDEP}]
+ dev-python/boto3[${PYTHON_USEDEP}]
+ >=dev-python/botocore-1.14.0[${PYTHON_USEDEP}]
+ >=dev-python/cfn-lint-0.40.0[${PYTHON_USEDEP}]
+ >=dev-python/cryptography-3.3.1[${PYTHON_USEDEP}]
+ dev-python/cookies[${PYTHON_USEDEP}]
+ >=dev-python/docker-3.0.0[${PYTHON_USEDEP}]
+ dev-python/flask[${PYTHON_USEDEP}]
+ dev-python/flask-cors[${PYTHON_USEDEP}]
+ >=dev-python/idna-2.5[${PYTHON_USEDEP}]
+ >=dev-python/jinja-2.10.1[${PYTHON_USEDEP}]
+ >=dev-python/jsondiff-1.1.2[${PYTHON_USEDEP}]
+ dev-python/jsonpath-ng[${PYTHON_USEDEP}]
+ dev-python/jsonschema[${PYTHON_USEDEP}]
+ dev-python/more-itertools[${PYTHON_USEDEP}]
+ >=dev-python/pyparsing-3.0.7[${PYTHON_USEDEP}]
+ >=dev-python/openapi-spec-validator-0.5.0[${PYTHON_USEDEP}]
+ dev-python/pyaml[${PYTHON_USEDEP}]
+ >=dev-python/pyyaml-5.1[${PYTHON_USEDEP}]
+ >=dev-python/python-dateutil-2.1[${PYTHON_USEDEP}]
+ dev-python/python-dateutil[${PYTHON_USEDEP}]
+ dev-python/python-jose[${PYTHON_USEDEP}]
+ >=dev-python/responses-0.15.0[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.5[${PYTHON_USEDEP}]
+ dev-python/sshpubkeys[${PYTHON_USEDEP}]
+ dev-python/typing-extensions[${PYTHON_USEDEP}]
+ dev-python/xmltodict[${PYTHON_USEDEP}]
+ dev-python/werkzeug[${PYTHON_USEDEP}]
+ dev-python/zipp[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/antlr4-python3-runtime[${PYTHON_USEDEP}]
+ dev-python/freezegun[${PYTHON_USEDEP}]
+ dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
+ )
+"
+
+: "${EPYTEST_TIMEOUT:=180}"
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # Needs network (or docker?) but not marked as such, bug #807031
+ # TODO: report upstream
+ tests/test_core/test_request_passthrough.py
+ tests/test_core/test_responses_module.py::TestResponsesMockWithPassThru::test_aws_and_http_requests
+ tests/test_core/test_responses_module.py::TestResponsesMockWithPassThru::test_http_requests
+ # broken code? (local variable used referenced before definition)
+ tests/test_appsync/test_appsync_schema.py
+ # require py_partiql_parser
+ tests/test_s3/test_s3_select.py
+ tests/test_dynamodb/test_dynamodb_statements.py
+ # require joserfc
+ tests/test_apigateway/test_apigateway.py::test_update_authorizer_configuration
+ tests/test_apigateway/test_apigateway.py::test_create_authorizer
+ tests/test_apigateway/test_apigateway.py::test_delete_authorizer
+ tests/test_cognitoidp/test_cognitoidp_exceptions.py::TestCognitoUserDeleter::test_authenticate_with_signed_out_user
+ tests/test_cognitoidp/test_cognitoidp_exceptions.py::TestCognitoUserPoolDuplidateEmails::test_use_existing_email__when_email_is_
+ tests/test_cognitoidp/test_cognitoidp_exceptions.py::TestCognitoUserPoolDuplidateEmails::test_use_existing_email__when_username_
+ tests/test_cognitoidp/test_cognitoidp_replay.py::TestCreateUserPoolWithPredeterminedID::test_different_seed
+ tests/test_cognitoidp/test_cognitoidp_replay.py::TestCreateUserPoolWithPredeterminedID::test_same_seed
+ tests/test_cognitoidp/test_server.py::test_sign_up_user_without_authentication
+ tests/test_cognitoidp/test_server.py::test_admin_create_user_without_authentication
+ tests/test_cognitoidp/test_server.py::test_associate_software_token
+ # TODO
+ tests/test_dynamodb/test_dynamodb_import_table.py
+ tests/test_firehose/test_firehose_put.py::test_put_record_http_destination
+ tests/test_firehose/test_firehose_put.py::test_put_record_batch_http_destination
+ tests/test_stepfunctions/parser/test_stepfunctions_dynamodb_integration.py::test_zero_retry
+ # random crashes
+ tests/test_stepfunctions/parser/test_stepfunctions_sns_integration.py
+ tests/test_stepfunctions/parser/test_stepfunctions_sqs_integration.py
+ tests/test_stepfunctions/test_stepfunctions.py
+ )
+ local EPYTEST_IGNORE=(
+ # require joserfc
+ tests/test_cognitoidp/test_cognitoidp.py
+ )
+
+ case ${EPYTHON} in
+ python3.13)
+ EPYTEST_DESELECT+=(
+ # suddenly started crashing, *shrug*
+ tests/test_xray/test_xray_client.py::test_xray_context_patched
+ tests/test_xray/test_xray_client.py::test_xray_dynamo_request_id
+ tests/test_xray/test_xray_client.py::test_xray_dynamo_request_id_with_context_mgr
+ tests/test_xray/test_xray_client.py::test_xray_udp_emitter_patched
+ )
+ ;;
+ esac
+
+ if ! tc-has-64bit-time_t; then
+ einfo "time_t is smaller than 64 bits, will skip broken tests"
+ EPYTEST_DESELECT+=(
+ tests/test_acm/test_acm.py::test_request_certificate_with_optional_arguments
+ tests/test_s3/test_multiple_accounts_server.py::TestAccountIdResolution::test_with_custom_request_header
+ tests/test_s3/test_server.py::test_s3_server_post_cors_multiple_origins
+ )
+ EPYTEST_IGNORE+=(
+ tests/test_route53domains/test_route53domains_domain.py
+ )
+ fi
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ local -x TZ=UTC
+
+ rm -rf moto || die
+ epytest -m 'not network and not requires_docker' \
+ -p rerunfailures --reruns=5
+}
diff --git a/dev-python/mpxj/mpxj-13.5.1.ebuild b/dev-python/mpxj/mpxj-13.5.1-r1.ebuild
index f510428e73bc..96f3d8002cd1 100644
--- a/dev-python/mpxj/mpxj-13.5.1.ebuild
+++ b/dev-python/mpxj/mpxj-13.5.1-r1.ebuild
@@ -33,4 +33,7 @@ src_unpack() {
python_compile() {
distutils_wheel_install "${BUILD_DIR}/install" \
"${DISTDIR}/${P}-py3-none-any.whl"
+
+ # Clean up spurious folder
+ rm -fr "${BUILD_DIR}/install"/usr/lib/python*/site-packages/legal || die
}
diff --git a/dev-python/phonenumbers/Manifest b/dev-python/phonenumbers/Manifest
index 47bcf33c36f2..7a7a1c591845 100644
--- a/dev-python/phonenumbers/Manifest
+++ b/dev-python/phonenumbers/Manifest
@@ -1,2 +1,3 @@
DIST python-phonenumbers-8.13.47.gh.tar.gz 4913983 BLAKE2B adf167f95ec4817c3adf92ffe4e0e2eab3ff99ce572023d47adc88b03e29414721ed6ed22f4029fb9e56d4f8cf8c5d9cf65e59209c6a4e5ae41e89d24df509e5 SHA512 a25ce93f79f7ec17b4dd3334b3912c8311c8ad0196e91f554c59b2f12b85f2c5936ec280bb2a5048c9ea8e274cdc632e42566153d87992db3601ddb8f93a0eaf
DIST python-phonenumbers-8.13.48.gh.tar.gz 4914013 BLAKE2B 7b279251fd369bbb5909a6b89fd856d4f4e3fca9c28b5e4e250f1a32734f1ae6071ed9304b64c9a66183d5ec8266c3b7c6bd129b15bc9a9c43fadfff93bc110b SHA512 d0c55c3058086b609aef81e316857f2dea7f65e6bbcdd06fcc58783c024252ba35796b79e92d1e9a888ec4b7c1ef6c221a1a07f09867ea5415f369be40453704
+DIST python-phonenumbers-8.13.49.gh.tar.gz 4914069 BLAKE2B b4759021af0195af48a6b556df9d69d1aaf9fc5501d375b28b0bc61b0c5b249c5216670f24b239b52cb6c9baf1843026ce607d5e41222ad83079a49522c4d911 SHA512 a20a743e7cc82cf0d04676d19843886c74bb6d78355a40fe2eac110d463e2c6a6855a7924083c60201560c95d318c473b2728f1b1206c5874214d010bf232d3f
diff --git a/dev-python/phonenumbers/phonenumbers-8.13.49.ebuild b/dev-python/phonenumbers/phonenumbers-8.13.49.ebuild
new file mode 100644
index 000000000000..587f52b791b0
--- /dev/null
+++ b/dev-python/phonenumbers/phonenumbers-8.13.49.ebuild
@@ -0,0 +1,39 @@
+# 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
+
+MY_P=python-${P}
+DESCRIPTION="Python port of Google's libphonenumber"
+HOMEPAGE="
+ https://github.com/daviddrysdale/python-phonenumbers/
+ https://pypi.org/project/phonenumbers/
+"
+SRC_URI="
+ https://github.com/daviddrysdale/python-phonenumbers/archive/v${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}/python
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+ test? (
+ dev-python/protobuf-python[${PYTHON_USEDEP}]
+ )
+"
+
+DOCS=( ../README.md )
+
+python_test() {
+ "${EPYTHON}" testwrapper.py -v || die "Tests failed with ${EPYTHON}"
+}
diff --git a/dev-python/pydantic-settings/Manifest b/dev-python/pydantic-settings/Manifest
index 55f8fbb62e85..82224f5c5d40 100644
--- a/dev-python/pydantic-settings/Manifest
+++ b/dev-python/pydantic-settings/Manifest
@@ -1,2 +1,2 @@
-DIST pydantic_settings-2.5.2.tar.gz 70938 BLAKE2B ef5f2791c6bfe450096baa694d4512315118d92aca8959e2654d7e832112b4c0a8f468075b31f872ca74a3e40dbc594841f3a69cd487deed94903fac283230e0 SHA512 8aa2585a2b1648630a89f2b271765b240194ce99597d6adf3a61bb705fd0a1504614f7c22ae3fd78f25a598108dc41469c9a7c90810b49f73e07fc7339693dd1
DIST pydantic_settings-2.6.0.tar.gz 75232 BLAKE2B 1fd0954f4785166433253f28b64e66b5bee2bc3ae0f78170800b5b4b26b5092a3b098ae59a275937de10022c9040e9eba398b62ed1a370364b2126d4ddf69a52 SHA512 c84fda5e343a654ea98ecc6c704be00882a5a1b5e05e2b84c91b7d48c113f79d505a85caa21fa03f1e63cfe6f564073f85556f8db0dedb13f68d6e19484633d3
+DIST pydantic_settings-2.6.1.tar.gz 75646 BLAKE2B 5c0ea4ea143d03382f2b1adbda3cc60667cd100044f937d75be9b0f575d0f8e5410631e84d6a60e7b24e02db2d323c5684ddd89061acad9a5832f658aab1d220 SHA512 eead0b0584c0532955cfb7580a62d901870490be19c13fc6ee93851db55838090eb066f273b244e473e02f072a0a2fb27e440fb1ed1c6a21b4357bcb374001d6
diff --git a/dev-python/pydantic-settings/pydantic-settings-2.5.2.ebuild b/dev-python/pydantic-settings/pydantic-settings-2.6.1.ebuild
index 95456872293d..10bd7298f5a6 100644
--- a/dev-python/pydantic-settings/pydantic-settings-2.5.2.ebuild
+++ b/dev-python/pydantic-settings/pydantic-settings-2.6.1.ebuild
@@ -33,12 +33,26 @@ BDEPEND="
)
"
-EPYTEST_IGNORE=( tests/test_docs.py )
+EPYTEST_IGNORE=(
+ # Dependencies not packaged: pytest-examples
+ tests/test_docs.py
+ # Dependencies not packaged: azure-keyvault-secrets, azure-identity
+ tests/test_source_azure_key_vault.py
+)
+
EPYTEST_DESELECT=(
- tests/test_settings.py::test_ignore_empty_with_dotenv_when_empty_uses_default
- tests/test_settings.py::test_ignore_empty_with_dotenv_when_not_empty_uses_value
+ # Failed: DID NOT RAISE <class 'UserWarning'>
tests/test_settings.py::test_protected_namespace_defaults
- tests/test_settings.py::test_cli_help_differentiation
)
distutils_enable_tests pytest
+
+python_test() {
+ # Parsing --help output is width dependent
+ local -x COLUMNS=80
+
+ # Ebuild's "A" variable conflicts with test expectations
+ local -x A=
+
+ epytest
+}
diff --git a/dev-python/pyproject-fmt/pyproject-fmt-2.5.0.ebuild b/dev-python/pyproject-fmt/pyproject-fmt-2.5.0.ebuild
index fcfa2884861d..762ccf491756 100644
--- a/dev-python/pyproject-fmt/pyproject-fmt-2.5.0.ebuild
+++ b/dev-python/pyproject-fmt/pyproject-fmt-2.5.0.ebuild
@@ -134,7 +134,7 @@ LICENSE+="
|| ( Apache-2.0 Boost-1.0 )
"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~s390 ~x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~s390 ~x86"
RDEPEND="
~dev-python/toml-fmt-common-1.0.1[${PYTHON_USEDEP}]
diff --git a/dev-python/simsimd/Manifest b/dev-python/simsimd/Manifest
index 9eb681754609..97571936a639 100644
--- a/dev-python/simsimd/Manifest
+++ b/dev-python/simsimd/Manifest
@@ -1,3 +1,2 @@
-DIST SimSIMD-5.8.0.gh.tar.gz 183559 BLAKE2B 2df0eac6eff58bc6c460b37cb7c523eae5d7e77d516bc7182ef3b39d033a1028d40536aaf99ad8ec8c28b4908ff873079ff0ca3d74acd1f763b0faaa5d4e225e SHA512 4e68050379dfe42e6c36a88a0defad0d941c873bda66cb4c65bd8367b07bca99a5c5d6eec7c8e39b15ad1b8e5bcc9dc7f43457d8552e9d72faefb88b03ad6f9b
-DIST SimSIMD-5.9.10.gh.tar.gz 204187 BLAKE2B fdfdd6bb1473a60fd878a819f9d848bf90e9d35625c6112407e5af064d0b2ac80dedf3f7f0762dd40cc7bf2e79ddaee5baa8c708ff99ae98c8dfa9eb90853491 SHA512 7b4693d6513e01d486496ce46edf1a342d3f28e64b72f29bc6a0a8489e7be53056122d17b2dd9df297f3eb317260eff102aea7c49f90ca3a52485f289452f9cd
DIST SimSIMD-5.9.11.gh.tar.gz 204255 BLAKE2B 6c67f47bf2beb41b8f6e091874c808a9be0da307d6bc7af5d6cca62435d1a4199cff7444b8b9f0ce04dbdd779641d635b8e7545512cfeb782ca81ef0f6e74e2e SHA512 eae6b0a509198de09a6d47c207554cc330ad1242b3a1d98d74d0fcb0c960052de1765e05d2bbe4bbb295224266dc393890a159b7fa933c6d7725685a5e50d1ec
+DIST SimSIMD-6.0.0.gh.tar.gz 206367 BLAKE2B a79d19ffd4fb9fb518ec4b05523aa316e99e1729884decfe560be419ab7dd5d8395835ebcd593dc7ec92aa8524ce2a6f1a3693e363c638d60d1d417b636f1fbe SHA512 0edc66409d6616066205b6f976220a86f180f3e1d32c2a25e9173ae49314ed72362949bcc91b288e791b65569654573e7b3b9a5f1c79609ab58ada12abe8a458
diff --git a/dev-python/simsimd/simsimd-5.9.10.ebuild b/dev-python/simsimd/simsimd-5.9.10.ebuild
deleted file mode 100644
index 61d7aca0a9fa..000000000000
--- a/dev-python/simsimd/simsimd-5.9.10.ebuild
+++ /dev/null
@@ -1,64 +0,0 @@
-# Copyright 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 toolchain-funcs
-
-MY_P=SimSIMD-${PV}
-DESCRIPTION="Fastest SIMD-Accelerated Vector Similarity Functions for x86 and Arm"
-HOMEPAGE="
- https://github.com/ashvardanian/SimSIMD/
- https://pypi.org/project/simsimd/
-"
-# no sdist, as of 4.3.1
-# https://github.com/ashvardanian/SimSIMD/issues/113
-SRC_URI="
- https://github.com/ashvardanian/SimSIMD/archive/v${PV}.tar.gz
- -> ${MY_P}.gh.tar.gz
-"
-S=${WORKDIR}/${MY_P}
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~amd64"
-IUSE="openmp"
-
-BDEPEND="
- test? (
- dev-python/pytest-repeat[${PYTHON_USEDEP}]
- dev-python/tabulate[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_tests pytest
-
-pkg_pretend() {
- if [[ ${MERGE_TYPE} != binary ]] && use openmp; then
- tc-check-openmp
- fi
-}
-
-pkg_setup() {
- if [[ ${MERGE_TYPE} != binary ]] && use openmp; then
- tc-check-openmp
- fi
-}
-
-src_prepare() {
- sed -i -e '/-O3/d' setup.py || die
- if ! use openmp; then
- sed -i -e '/-fopenmp/d' setup.py || die
- fi
-
- distutils-r1_src_prepare
-}
-
-python_test() {
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
- epytest -p repeat scripts/test.py
-}
diff --git a/dev-python/simsimd/simsimd-5.8.0.ebuild b/dev-python/simsimd/simsimd-6.0.0.ebuild
index 61d7aca0a9fa..61d7aca0a9fa 100644
--- a/dev-python/simsimd/simsimd-5.8.0.ebuild
+++ b/dev-python/simsimd/simsimd-6.0.0.ebuild
diff --git a/dev-python/tldextract/Manifest b/dev-python/tldextract/Manifest
index 17f59e0acca5..eb7c4a00a951 100644
--- a/dev-python/tldextract/Manifest
+++ b/dev-python/tldextract/Manifest
@@ -1 +1,2 @@
DIST tldextract-5.1.2.tar.gz 116825 BLAKE2B ffe10e58e122ac3a0d8851992d791d9525695d987d2c3bfcfe37df043bd532491e21b2e2530feab6d60befad7afb76b5e66d3ce16e909a0cd822a7cb37fa10f9 SHA512 79cdab6ec9259109bdee6412206eea1cd1d760e3c8ee3483607e27adc237821ff74039b2b3c886cb21ebd76f9d636e775623d018e06e46b713d76b9e9719fa00
+DIST tldextract-5.1.3.tar.gz 125033 BLAKE2B b2557ae29cf049c06bb3b520f11e47e174d23709de7d785cbd78ac184e14635ab9923f9390633246c6342c6c040333bc4cc4dc06d09f0e64a7fbcaefbac9ccc5 SHA512 be10b4a6f227af9249f59c3b810a2ba08efb45ca18bbd9cef3f554671bc665ba596d7ee3f2bbfa789dacca6fc4b09c9178e9f658f7c920f8667566652ee5624f
diff --git a/dev-python/tldextract/tldextract-5.1.3.ebuild b/dev-python/tldextract/tldextract-5.1.3.ebuild
new file mode 100644
index 000000000000..59749e1de501
--- /dev/null
+++ b/dev-python/tldextract/tldextract-5.1.3.ebuild
@@ -0,0 +1,45 @@
+# 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="Accurately separate the TLD from the registered domain and subdomains of a URL"
+HOMEPAGE="
+ https://github.com/john-kurkowski/tldextract/
+ https://pypi.org/project/tldextract/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~loong ~x86"
+
+RDEPEND="
+ >=dev-python/filelock-3.0.8[${PYTHON_USEDEP}]
+ dev-python/idna[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.1.0[${PYTHON_USEDEP}]
+ >=dev-python/requests-file-1.4[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ dev-python/setuptools-scm[${PYTHON_USEDEP}]
+ test? (
+ dev-python/pytest-mock[${PYTHON_USEDEP}]
+ dev-python/responses[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+python_test() {
+ EPYTEST_IGNORE=(
+ # we don't need release tests, also deps
+ tests/test_release.py
+ )
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest -p pytest_mock
+}
diff --git a/dev-python/toml-fmt-common/toml-fmt-common-1.0.1.ebuild b/dev-python/toml-fmt-common/toml-fmt-common-1.0.1.ebuild
index 4098c01a09ff..d1f34abda448 100644
--- a/dev-python/toml-fmt-common/toml-fmt-common-1.0.1.ebuild
+++ b/dev-python/toml-fmt-common/toml-fmt-common-1.0.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~s390 ~x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~s390 ~x86"
RDEPEND="
$(python_gen_cond_dep '
diff --git a/dev-python/types-setuptools/Manifest b/dev-python/types-setuptools/Manifest
index a212317d1eaa..cff2d6c38396 100644
--- a/dev-python/types-setuptools/Manifest
+++ b/dev-python/types-setuptools/Manifest
@@ -1 +1,2 @@
DIST types-setuptools-75.2.0.20241025.tar.gz 43477 BLAKE2B 76cc7b50a0b1a8f6bc11752caf5ff09272acd0ae8ddeb76c6c367fe8350be9ac9ce79b0cc8e603aaa3c90300b86fd97ab72241998ea69396a128207052dfd36b SHA512 86a1c753a7258d61678c9eda59c8d0f1549180e08216e754e717f7f07c50c4c48ec3275f1516d3b49566ba271be6aeee1b3ea3672c627fac98d8adbddf2b3d17
+DIST types-setuptools-75.3.0.20241105.tar.gz 43569 BLAKE2B 415bbe2320f20af8ebeb3105e959b77f7097e9cc74ccf6bf13e4dc53ff597f149d9d28de610d2d0e8faccf90cd886179dfb5fc7a36ff5fbf93e71d18712807f0 SHA512 e88373b6f05b422497e3332ff1ef55fc52c4b78f47809dd8ae28b025d1c24364b8e1afec1a441a120b0373afda1e8422daecd6d9b5e6fa6b02cda4bd93f99c8a
diff --git a/dev-python/types-setuptools/types-setuptools-75.3.0.20241105.ebuild b/dev-python/types-setuptools/types-setuptools-75.3.0.20241105.ebuild
new file mode 100644
index 000000000000..d27d371b9a83
--- /dev/null
+++ b/dev-python/types-setuptools/types-setuptools-75.3.0.20241105.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_{9,10,11,12,13} )
+
+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 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
diff --git a/dev-python/uv/Manifest b/dev-python/uv/Manifest
index 14635af401b8..1bc3c0e66272 100644
--- a/dev-python/uv/Manifest
+++ b/dev-python/uv/Manifest
@@ -15,3 +15,5 @@ DIST uv-0.4.26.gh.tar.gz 2772725 BLAKE2B 46ea8245fdb0a38ad924e4d65d1c247f11c2419
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
+DIST uv-0.4.30-crates.tar.xz 45786704 BLAKE2B 72a5828c5c504859248312e0d796a6505e4d0546218c8f7f99e37843afdf9496ea1ba4b1f094979299de417accca7f021e4f8971e467429e7d986ed9a3fb2008 SHA512 49abd05fa9e14b1bdb1b4d26f1e68a2038d57bd25c756440bca209b513de42fd8d33ce6e1333392dce65ab427285651809b44e024758359688af5fb87efc19ed
+DIST uv-0.4.30.gh.tar.gz 2832043 BLAKE2B 11c0d090161b9aa6d6e84d0edb15701c8eaba8281579653d6b0ba84003933f82ec5b71c3c33689e5324e51de70b7af41e4799f35fb45f57ce6d58fafa371a615 SHA512 4930c863aae71ae6e6f5b7ba20ff30ffe4c044f6980f973110d0c8c3079cb4aacbe774fe4577eb8d9c16f5d41d2cd0974c0fe63cf0d10e065c6b8d4cf553b80b
diff --git a/dev-python/uv/uv-0.4.30.ebuild b/dev-python/uv/uv-0.4.30.ebuild
new file mode 100644
index 000000000000..8ce7f04ec3be
--- /dev/null
+++ b/dev-python/uv/uv-0.4.30.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/werkzeug/Manifest b/dev-python/werkzeug/Manifest
index efe0327d9d1e..435611d07870 100644
--- a/dev-python/werkzeug/Manifest
+++ b/dev-python/werkzeug/Manifest
@@ -1,3 +1,4 @@
DIST werkzeug-3.0.6.tar.gz 805170 BLAKE2B 7aa02e3e979d9375ec676d02f43738b96410fc3dddf60ca96fc9709790caa47e590952e7675f9226af9f8111271463e82a7069d0ed6e8e672188bc824d3d04a8 SHA512 500f47e13546a3d0ce3a41f21157649571ea70b332ca22758bad939cb42aee4d1b58b64cecc4ed83a857ad466f37de8256cf7b53ad28e5fe0fd353455df3639b
DIST werkzeug-3.1.0.tar.gz 806386 BLAKE2B 7e05da6c4196b30afd0cafeb0fb1c8dcab25a28e78bf8279b2ec639195f4f6296d38d689e085c15a6a53863b210ae7a8bd1c6a4c97d772f8e1bc339369a47160 SHA512 1c1e7f6a2e08aaf5a41f99dd41193cc1177a01242c9281cb7170db84fb193b15a1c3291ef039d8660ac35a89cc6fdf2664f15f742085305a46894f2a2f331976
DIST werkzeug-3.1.1.tar.gz 806453 BLAKE2B b1b07dcef415d122ca49109fa241fb505193bf990528706508e621f6fc4483ad4ef23ce5830785fd57972fbba0de0e1a92e6b1035622d63e22ec622869168de5 SHA512 abae534907959d8d1032f5c99a241c74785ede89a7f8cd760dcbed07d77bbb92167db75cc8f212a5e635ce8d473b82a3b3d5cc89ecf9c068bb7f2e6f7d7fe9b7
+DIST werkzeug-3.1.2.tar.gz 806496 BLAKE2B e7020f4044889f105473300ac3e14faf98f4f840fe6ac03c7a99c43ab31c8e48544ee1bf04e0d0633229f6f2043b7e2d440080d99a56ec7292422310175f8011 SHA512 f8628364dcd999ab4c50c3c4fbf8de78da24f541d2fb768be313296a116de901c9a8c3001c6280f07a0ffba102f7dcf02658f3f9a2c48517c029df5753d44c35
diff --git a/dev-python/werkzeug/werkzeug-3.1.2.ebuild b/dev-python/werkzeug/werkzeug-3.1.2.ebuild
new file mode 100644
index 000000000000..107a053a25c5
--- /dev/null
+++ b/dev-python/werkzeug/werkzeug-3.1.2.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
+}