summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
authorLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2024-05-15 06:58:16 +0000
committerLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2024-05-15 06:58:16 +0000
commit3d4c60ab67ab34063f83de57ca650a2093caa6e5 (patch)
treeb84fb03b155aee605de7d948e52eddb76dab1143 /dev-python
parentf4b148a17b03de6d1241e9e3706c564da5d6fb4b (diff)
downloadbaldeagleos-repo-3d4c60ab67ab34063f83de57ca650a2093caa6e5.tar.gz
baldeagleos-repo-3d4c60ab67ab34063f83de57ca650a2093caa6e5.tar.xz
baldeagleos-repo-3d4c60ab67ab34063f83de57ca650a2093caa6e5.zip
Adding metadata
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/Nuitka/Manifest1
-rw-r--r--dev-python/Nuitka/Nuitka-2.2.2.ebuild52
-rw-r--r--dev-python/adblock/adblock-0.6.0.ebuild3
-rw-r--r--dev-python/autoflake/Manifest2
-rw-r--r--dev-python/autoflake/autoflake-2.3.1.ebuild (renamed from dev-python/autoflake/autoflake-2.2.1.ebuild)2
-rw-r--r--dev-python/boto3/Manifest1
-rw-r--r--dev-python/boto3/boto3-1.34.105.ebuild53
-rw-r--r--dev-python/botocore/Manifest1
-rw-r--r--dev-python/botocore/botocore-1.34.105.ebuild67
-rw-r--r--dev-python/cssutils/Manifest1
-rw-r--r--dev-python/cssutils/cssutils-2.11.0.ebuild47
-rw-r--r--dev-python/httpcore/httpcore-1.0.5.ebuild24
-rw-r--r--dev-python/mako/Manifest1
-rw-r--r--dev-python/mako/mako-1.3.5.ebuild55
-rw-r--r--dev-python/mastodon-py/Manifest1
-rw-r--r--dev-python/mastodon-py/mastodon-py-1.8.0.ebuild55
-rw-r--r--dev-python/mastodon-py/mastodon-py-1.8.1.ebuild4
-rw-r--r--dev-python/material-color-utilities/Manifest2
-rw-r--r--dev-python/material-color-utilities/material-color-utilities-0.1.5.ebuild8
-rw-r--r--dev-python/material-color-utilities/material-color-utilities-9999.ebuild4
-rw-r--r--dev-python/mcbootflash/Manifest1
-rw-r--r--dev-python/mcbootflash/mcbootflash-9.0.1.ebuild35
-rw-r--r--dev-python/mkdocstrings-python/Manifest2
-rw-r--r--dev-python/mkdocstrings-python/mkdocstrings-python-1.10.1.ebuild (renamed from dev-python/mkdocstrings-python/mkdocstrings-python-1.9.2.ebuild)4
-rw-r--r--dev-python/mobi/mobi-0.3.3.ebuild2
-rw-r--r--dev-python/oscrypto/files/openssl-3.0.10-fix.patch38
-rw-r--r--dev-python/oscrypto/files/py3.12.patch902
-rw-r--r--dev-python/oscrypto/oscrypto-1.3.0-r2.ebuild (renamed from dev-python/oscrypto/oscrypto-1.3.0-r1.ebuild)5
-rw-r--r--dev-python/pem/Manifest1
-rw-r--r--dev-python/pem/pem-21.2.0.ebuild27
-rw-r--r--dev-python/pyarrow/Manifest1
-rw-r--r--dev-python/pyarrow/pyarrow-16.1.0.ebuild97
-rw-r--r--dev-python/pyfiglet/pyfiglet-0.8_p1.ebuild2
-rw-r--r--dev-python/pygsl/Manifest2
-rw-r--r--dev-python/pygsl/pygsl-2.3.4.ebuild (renamed from dev-python/pygsl/pygsl-2.3.3.ebuild)12
-rw-r--r--dev-python/pylint/Manifest1
-rw-r--r--dev-python/pylint/pylint-3.2.0.ebuild92
-rw-r--r--dev-python/pymemcache/pymemcache-4.0.0.ebuild2
-rw-r--r--dev-python/pyodbc/Manifest2
-rw-r--r--dev-python/pyodbc/pyodbc-4.0.35.ebuild53
-rw-r--r--dev-python/pyodbc/pyodbc-5.1.0.ebuild64
-rw-r--r--dev-python/pyproject-fmt-rust/Manifest1
-rw-r--r--dev-python/pyproject-fmt-rust/pyproject-fmt-rust-1.1.0.ebuild159
-rw-r--r--dev-python/pyproject-fmt/Manifest1
-rw-r--r--dev-python/pyproject-fmt/pyproject-fmt-2.1.0.ebuild36
-rw-r--r--dev-python/pytest-click/pytest-click-1.1.0.ebuild2
-rw-r--r--dev-python/readability-lxml/Manifest1
-rw-r--r--dev-python/readability-lxml/readability-lxml-0.6.1.ebuild22
-rw-r--r--dev-python/readability-lxml/readability-lxml-0.8.1.ebuild5
-rw-r--r--dev-python/rich/rich-13.7.1.ebuild12
-rw-r--r--dev-python/scikit-build-core/Manifest1
-rw-r--r--dev-python/scikit-build-core/scikit-build-core-0.9.4.ebuild63
-rw-r--r--dev-python/scramp/scramp-1.4.4.ebuild2
-rw-r--r--dev-python/sphinx-argparse-cli/sphinx-argparse-cli-1.11.1.ebuild4
-rw-r--r--dev-python/sphinx-click/Manifest1
-rw-r--r--dev-python/sphinx-click/metadata.xml2
-rw-r--r--dev-python/sphinx-click/sphinx-click-4.1.0.ebuild29
-rw-r--r--dev-python/sphinx-click/sphinx-click-4.2.0.ebuild3
-rw-r--r--dev-python/sphinx-hoverxref/sphinx-hoverxref-1.3.0.ebuild2
-rw-r--r--dev-python/sphinx-rtd-dark-mode/sphinx-rtd-dark-mode-1.2.4.ebuild2
-rw-r--r--dev-python/stdlibs/Manifest1
-rw-r--r--dev-python/stdlibs/stdlibs-2022.3.16.ebuild18
-rw-r--r--dev-python/stdlibs/stdlibs-2022.6.8.ebuild2
-rw-r--r--dev-python/trailrunner/trailrunner-1.2.1.ebuild2
-rw-r--r--dev-python/urwid/Manifest1
-rw-r--r--dev-python/urwid/urwid-2.6.12.ebuild47
-rw-r--r--dev-python/uv/Manifest1
-rw-r--r--dev-python/uv/uv-0.1.44.ebuild123
-rw-r--r--dev-python/volatile/volatile-2.1.0.ebuild2
-rw-r--r--dev-python/webpy/webpy-0.62.ebuild3
-rw-r--r--dev-python/zopfli/zopfli-0.2.2.ebuild2
71 files changed, 2027 insertions, 252 deletions
diff --git a/dev-python/Nuitka/Manifest b/dev-python/Nuitka/Manifest
index ea74104adbce..e536dbba436f 100644
--- a/dev-python/Nuitka/Manifest
+++ b/dev-python/Nuitka/Manifest
@@ -1,2 +1,3 @@
DIST Nuitka-2.2.1.tar.gz 3657159 BLAKE2B 46578e2ab4afa7edfb43cf42f968d222ba85717a276b84c25dfffea0f3211dc9ad202718f23b54435525a2b4447b49742259fb636a9cba3bfc1d251232878393 SHA512 08dfc85ada702e41b282ee8291c9b2f389c0b320cdab8ad7b259af9aba1fc3efb26d3deab5391a5d592c206f7dd94d7b99780ba25377bd5f145bd0bfd84e01fb
+DIST Nuitka-2.2.2.tar.gz 3999091 BLAKE2B 1512b0112dfa36c704900b787ac43a24377ab2994d16865d85da0384d2bb29a6dd26a83be270c51c28bcca68dad2398d68096d4dae1ee3f2044a85dad2571d82 SHA512 13f03fb849d83a1fbb10df2fe54f429f8871068942dfe93316460e1abed9149793b6fc1d7b62b1e72fc00de94ae9fd4b218f4ee65ea7668d138700f2bfd94eb2
DIST Nuitka-2.2.tar.gz 3655576 BLAKE2B a5c88da5c585163cf7efcc238697b2c930426674d89203e12dbf2bc00e579c523a74527269039e2a155a13821c5ae4d7022215db88b2ba201f3b13224c3e8223 SHA512 0e21ccbf2c35176e3f1b704f599ef79e65f19529c2de362ae384e61e6b0e5d7e86a8489fe0cb25e6800e169833d50e54853bd6c4bd860c139162e22e39249aff
diff --git a/dev-python/Nuitka/Nuitka-2.2.2.ebuild b/dev-python/Nuitka/Nuitka-2.2.2.ebuild
new file mode 100644
index 000000000000..35ccf652e8e3
--- /dev/null
+++ b/dev-python/Nuitka/Nuitka-2.2.2.ebuild
@@ -0,0 +1,52 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_NO_NORMALIZE=1
+PYTHON_COMPAT=( python3_{8,9,10,11,12} )
+
+inherit distutils-r1 flag-o-matic optfeature pypi
+
+DESCRIPTION="Python to native compiler"
+HOMEPAGE="
+ https://nuitka.net/
+ https://github.com/Nuitka/Nuitka/
+ https://pypi.org/project/Nuitka/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~loong ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ dev-build/scons[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ ${RDEPEND}
+ test? ( dev-util/ccache )
+"
+
+distutils-r1_src_prepare() {
+ # remove vendored version of SCons that is Python2 only
+ # this should be removed when upstream removes support for Python2
+ rm -vR "nuitka/build/inline_copy/lib/scons-2.3.2/SCons" || die
+ eapply_user
+}
+
+python_install() {
+ distutils-r1_python_install
+ doman doc/nuitka.1 doc/nuitka-run.1
+}
+
+python_test() {
+ append-ldflags -Wl,--no-warn-search-mismatch
+ ./tests/basics/run_all.py search || die
+}
+
+pkg_postinst() {
+ optfeature "support for stand-alone executables" dev-util/patchelf
+}
diff --git a/dev-python/adblock/adblock-0.6.0.ebuild b/dev-python/adblock/adblock-0.6.0.ebuild
index 67cdaec5208e..bcd085dc15bf 100644
--- a/dev-python/adblock/adblock-0.6.0.ebuild
+++ b/dev-python/adblock/adblock-0.6.0.ebuild
@@ -106,6 +106,9 @@ python_test() {
# unimportant (for us) test that uses the dir that we delete below
# so pytest does not try to load it while lacking extensions
tests/test_typestubs.py::test_functions_and_methods_exist_in_rust
+ # FileNotFound exception test that triggers a new assertion in
+ # python:3.13[debug], not an issue for normal usage (bug #931898)
+ tests/test_engine.py::test_serde_file
)
local EPYTEST_IGNORE=(
# not very meaningful here (e.g. validates changelog),
diff --git a/dev-python/autoflake/Manifest b/dev-python/autoflake/Manifest
index 2de21f6c253f..6fd5785009cd 100644
--- a/dev-python/autoflake/Manifest
+++ b/dev-python/autoflake/Manifest
@@ -1 +1 @@
-DIST autoflake-2.2.1.tar.gz 27377 BLAKE2B d669fd1954974f7237423d7dc67de044d737ba5a462b565f3307f1b6bdecefa6a6b2a6de437570e6a7772a692e894fb414e1ff05fc0aae7cbb3a0901ec9a0129 SHA512 02021b5f92edcdcb0b3c11132a46cf73dbc4b6e4efc4f5d5981b66bc5beafbef66a81229e65a727816ebda419c93399df14e9b6ba9f38a728f95a3455c1089f9
+DIST autoflake-2.3.1.tar.gz 27642 BLAKE2B 5002b404c39a5a1e18c5dc6e8a70f958b9d02e412b9320ba4b801b1a20427110cd15363bb3e4acb25de4ceca77ce86d49c1c36cef5ba3e886fecffb996ef7b81 SHA512 bad9a34f253e1182f3128867eb8699c8c02b99f35479c1b65669f0411d7dff29fe477a267d0398e60a5e833530ace3cf28443a4b2a8924bd019447cc7ee8ab08
diff --git a/dev-python/autoflake/autoflake-2.2.1.ebuild b/dev-python/autoflake/autoflake-2.3.1.ebuild
index 3f6b0695f998..2451df853e77 100644
--- a/dev-python/autoflake/autoflake-2.2.1.ebuild
+++ b/dev-python/autoflake/autoflake-2.3.1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2023 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
diff --git a/dev-python/boto3/Manifest b/dev-python/boto3/Manifest
index ea0c82a6203e..a394bf7fccb6 100644
--- a/dev-python/boto3/Manifest
+++ b/dev-python/boto3/Manifest
@@ -1,4 +1,5 @@
DIST boto3-1.34.103.gh.tar.gz 807394 BLAKE2B da291c86a8b20bcaac5f93779899bfa5c6ce207499df393cd921f37021c1c38ed0587edd2261cee8de7ce17264670f9cda072d6748f274e6f3d9b40caa499803 SHA512 3b879f88a145ca7ea7533e4d8aa77cec351f272c59fa119622dab061fd6354f88d33709bd1621802f38f19e8378505caa94b8a6b561d16f4a2aa168828021206
DIST boto3-1.34.104.gh.tar.gz 807605 BLAKE2B d315be19b5d54b74d2cec2967fb4d12bb2c3529f404dd41628d1fe41de7b0f81fa28b098268ea020db4334b863c875e7cf31763a179352b3f3bc6326a33d2f56 SHA512 18fb51400a20686db02317812da15dd6117a630896ed284b6fece7c7903265a2e9d5d74a8d5fe0eb504ed2e27d1b714369a4391a095f771aaf09609745436cdf
+DIST boto3-1.34.105.gh.tar.gz 807800 BLAKE2B a61b420b89fc153de0a32b5212eb5c492d2576fbad06073dfed5960bc15e6d45fa06df20ef59b9a41c4a9295a4129ff43f7781828d6f76ba7ba86a53bc5b6ee4 SHA512 d35ce5780f73ee973a232345f2585d4aff3f477c2976eb3127285ab7a143c94de19e4997036e65cbc3cc9e987d36b26ce2d028fb0e8f34e6813f5d5d65666fea
DIST boto3-1.34.93.gh.tar.gz 802078 BLAKE2B 43f19efd6ae42bdb20e8dd79b1735df229ec2f231b5fe05006b26fcd5ddf4796a53fba6011c298fb919ee7b205b4ae3f4b563ad3b5325bdbbdebaeab7be59608 SHA512 4da1d9d7d8648e895f23763e5055a868d05bbfd8eb28d56e716975b3b8349bd1825d703f6fd11c316174004c39e1fca5ddcd8a4ad27a000e1a52f08a36eb4780
DIST boto3-1.34.98.gh.tar.gz 805719 BLAKE2B 5cf7f0cc415e25c8b41aa464b636b1683f4e71198569f5eac3e6e43cef7050e20e92c3fd988517fc1463601073b41b0b9c668a58bb866d03b83973c9b9cd976a SHA512 06cab81bbf73a9c37b68e0312a7c587bace700b8032e283b6782c1275804ea7c93065c4282837957b5cf3523d50fe57319a54af494262e2666f65440da9771fd
diff --git a/dev-python/boto3/boto3-1.34.105.ebuild b/dev-python/boto3/boto3-1.34.105.ebuild
new file mode 100644
index 000000000000..509842b2699d
--- /dev/null
+++ b/dev-python/boto3/boto3-1.34.105.ebuild
@@ -0,0 +1,53 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{8,9,10,11,12} )
+
+inherit distutils-r1
+
+DESCRIPTION="The AWS SDK for Python"
+HOMEPAGE="
+ https://github.com/boto/boto3/
+ https://pypi.org/project/boto3/
+"
+SRC_URI="
+ https://github.com/boto/boto3/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux"
+
+RDEPEND="
+ >=dev-python/botocore-${PV}[${PYTHON_USEDEP}]
+ >=dev-python/jmespath-0.7.1[${PYTHON_USEDEP}]
+ >=dev-python/s3transfer-0.10.0[${PYTHON_USEDEP}]
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ # don't lock versions to narrow ranges
+ sed -e '/botocore/ d' \
+ -e '/jmespath/ d' \
+ -e '/s3transfer/ d' \
+ -i setup.py || die
+
+ # do not rely on bundled deps in botocore (sic!)
+ find -name '*.py' -exec sed -i \
+ -e 's:from botocore[.]vendored import:import:' \
+ -e 's:from botocore[.]vendored[.]:from :' \
+ {} + || die
+
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest tests/{functional,unit}
+}
diff --git a/dev-python/botocore/Manifest b/dev-python/botocore/Manifest
index 26ed7f684b51..c94589ff2154 100644
--- a/dev-python/botocore/Manifest
+++ b/dev-python/botocore/Manifest
@@ -1,4 +1,5 @@
DIST botocore-1.34.103.gh.tar.gz 13018336 BLAKE2B 84cef06d1eff09fc9e7d4480bc11be16c775e6aa21c300be21735d4bbf891618861a94e7fb52735c34f4f831220411d2b307546e930e77822d8c876dd05f7780 SHA512 f66c3959c5f323117127789d0a3492d5ecfcdfa371f2fdd3339bf1feb7cf1ba67ce7015014e49530f24a440d08a9b634d2ada85c1953ed438f70e5a6cca040f0
DIST botocore-1.34.104.gh.tar.gz 13018781 BLAKE2B 1c2cd9988482d2217392572c791b49e415b92229de0c68269dbc58a8ee88f28b1ea2add3557da4dacdd1fb7e72fe47357e18d901188795d6bc5bfc717760e903 SHA512 c66afeb83edc62adfb4d691dcf37c2b76a3cad7b5ea6ec0741129d99ec4a10fa09ed5827b8c6a3224436026ad4fbd7565074e7161921010bb6adcd5f563b30a4
+DIST botocore-1.34.105.gh.tar.gz 13020214 BLAKE2B 309c2130756f10d6000c606d2392848869e26ea7bb5bb23c55e60fa9292b263e61be9eedea37f8eed471d9ad70785877797d34135064e49863bc70f1b8a80bac SHA512 ea6f816ccdaa754fa4059c3cab96ac892d1165fa6c988bf3da87227a629989bf006b8b334f0aefa8bb25923f064da478f11561f02a49006274f76fe93fa492d8
DIST botocore-1.34.93.gh.tar.gz 12982900 BLAKE2B 3225279b85101e04da3be11f01ac3f4ca74cf77235fcb8878bc12d7aca61472155c8319329beb54ffe335f9da9023fb3ccce99256f3a31c6588389dfa1746de9 SHA512 505e8c9b3915b1c2da3863b62c85c392a58c12376c3e71493025445b7b672ba320474087b446fda876ffee5d6260909bc1d1442ff6dbfeb49fd6661d3d7840a1
DIST botocore-1.34.98.gh.tar.gz 13008491 BLAKE2B 0b5c368264cc43c162d158b383535183c0fd0065dc6c5edfd3eaaab842d0607b3cc3b99860fa8dc4ef207b5be1457fce9d143723da29e262f30ecc82c5f9ba66 SHA512 39ccb0082ecd6ed6cc7d3f7cea01d39e8d5e92224e3290a66f86ed00562a1d858f75d006af725d2b857ac891f1b366300b7e4c2d24277d942b5a9b9e2cdba431
diff --git a/dev-python/botocore/botocore-1.34.105.ebuild b/dev-python/botocore/botocore-1.34.105.ebuild
new file mode 100644
index 000000000000..857224b496b7
--- /dev/null
+++ b/dev-python/botocore/botocore-1.34.105.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_{8,9,10,11,12} )
+
+inherit distutils-r1
+
+DESCRIPTION="Low-level, data-driven core of boto 3"
+HOMEPAGE="
+ https://github.com/boto/botocore/
+ https://pypi.org/project/botocore/
+"
+SRC_URI="
+ https://github.com/boto/botocore/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux"
+
+RDEPEND="
+ <dev-python/jmespath-2[${PYTHON_USEDEP}]
+ dev-python/python-dateutil[${PYTHON_USEDEP}]
+ >=dev-python/urllib3-1.25.4[${PYTHON_USEDEP}]
+"
+# unbundled packages
+RDEPEND+="
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/six[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/jsonschema[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ # unpin deps
+ sed -i -e "s:>=.*':':" setup.py || die
+
+ # unbundle deps
+ rm -r botocore/vendored || die
+ find -name '*.py' -exec sed -i \
+ -e 's:from botocore[.]vendored import:import:' \
+ -e 's:from botocore[.]vendored[.]:from :' \
+ {} + || die
+
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # rely on bundled six
+ tests/functional/test_six_imports.py::test_no_bare_six_imports
+ tests/functional/test_six_threading.py::test_six_thread_safety
+ )
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest tests/{functional,unit}
+}
diff --git a/dev-python/cssutils/Manifest b/dev-python/cssutils/Manifest
index c57f13e933f6..3911c03aef36 100644
--- a/dev-python/cssutils/Manifest
+++ b/dev-python/cssutils/Manifest
@@ -1,2 +1,3 @@
DIST cssutils-2.10.2.tar.gz 723055 BLAKE2B 7064f1928bf8496bef8eccf4663f944ed79e5e8065808254d12b68f32e9c8f308724e652b24fa584af54a0976ff3ab2f2751a9102e0f31a5f4a8fabf8f417b23 SHA512 c678b6953b13e8a7ac7b2abbe0b8be26283973537089071828e618b359bcce27df636f382d8b0dc50b13962e0d2dffcce991a47f678954ec018849e57026446d
DIST cssutils-2.10.3.tar.gz 723334 BLAKE2B 3ee122fb843aeb8db79d5288d465fda4f632e63a51e09a9de7d1429b1e7a81de93518eb1c4766b7a18c7db3fb64480815fd3a8c22b9b4a4186890402328f1b42 SHA512 44570c048d64d9d2825f64c551470d86fd5a166c35fef7915e9187ba26807300c342360aa881fc4f7ed86ef7aba63969d5055811f5ecae4b3998bf4b28ffd5ea
+DIST cssutils-2.11.0.tar.gz 723164 BLAKE2B 433358b1bd167d72ceda9c60f4460a95804c492a92854747dfc49ef4e2efe69388781c515adbb3c5d9010895e13a039ea33c46d4b2c71cb8bb15eead3e998b60 SHA512 42ce87502757d213ab5b2812c8a76724955f565826c69ffe4db53d49020ce960c8544423428f2b8c24d9b1b215c22f18de9dff66ef249c8060d17aad990d9a6f
diff --git a/dev-python/cssutils/cssutils-2.11.0.ebuild b/dev-python/cssutils/cssutils-2.11.0.ebuild
new file mode 100644
index 000000000000..7334b1981df5
--- /dev/null
+++ b/dev-python/cssutils/cssutils-2.11.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_{8,9,10,11,12} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A CSS Cascading Style Sheets library"
+HOMEPAGE="
+ https://pypi.org/project/cssutils/
+ https://github.com/jaraco/cssutils/
+"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~x86"
+
+BDEPEND="
+ dev-python/setuptools-scm[${PYTHON_USEDEP}]
+ test? (
+ dev-python/cssselect[${PYTHON_USEDEP}]
+ >=dev-python/jaraco-test-5.1[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/lxml[${PYTHON_USEDEP}]
+ ' 3.10)
+ )
+"
+
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # network
+ encutils/__init__.py::encutils
+ examples/website.py::examples.website.logging
+ )
+ local EPYTEST_IGNORE=(
+ # path mismatch with "parse" package
+ examples/parse.py
+ )
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest -m "not network"
+}
diff --git a/dev-python/httpcore/httpcore-1.0.5.ebuild b/dev-python/httpcore/httpcore-1.0.5.ebuild
index 1ef1a9b8d7ac..ece9e8e34a89 100644
--- a/dev-python/httpcore/httpcore-1.0.5.ebuild
+++ b/dev-python/httpcore/httpcore-1.0.5.ebuild
@@ -35,15 +35,35 @@ BDEPEND="
test? (
dev-python/pytest-asyncio[${PYTHON_USEDEP}]
dev-python/pytest-httpbin[${PYTHON_USEDEP}]
- dev-python/pytest-trio[${PYTHON_USEDEP}]
dev-python/socksio[${PYTHON_USEDEP}]
- dev-python/trio[${PYTHON_USEDEP}]
dev-python/trustme[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/pytest-trio[${PYTHON_USEDEP}]
+ dev-python/trio[${PYTHON_USEDEP}]
+ ' 3.{10..12})
)
"
distutils_enable_tests pytest
+python_test() {
+ local opts=()
+ local EPYTEST_IGNORE=()
+
+ if ! has_version "dev-python/trio[${PYTHON_USEDEP}]"; then
+ opts+=( -k "not trio" )
+ EPYTEST_IGNORE+=(
+ tests/_async/test_connection_pool.py
+ )
+ fi
+
+ if ! has_version "dev-python/pytest-trio[${PYTHON_USEDEP}]"; then
+ opts+=( -m "not trio" -o addopts= )
+ fi
+
+ epytest "${opts[@]}"
+}
+
pkg_postinst() {
optfeature "SOCKS support" dev-python/socksio
}
diff --git a/dev-python/mako/Manifest b/dev-python/mako/Manifest
index de3ecdd41ccf..fc6026c41306 100644
--- a/dev-python/mako/Manifest
+++ b/dev-python/mako/Manifest
@@ -1,2 +1,3 @@
DIST Mako-1.3.3.tar.gz 389980 BLAKE2B 1c890f159e808a7026e46a489d49ec19a346ce0a8be8d2ea1ef870435830a9021b0877a3d395c9273609be9dc4b11d1e5359d89a9b571a73f05de11152988800 SHA512 fa8bf3997f7a3edc18057f53e8450d72d5c86019229fef91eaa141f0b65a081ca9425c14245227b35aedcccc7dbe52e90bc7dfee34598b490e93cd01fc4a8321
DIST Mako-1.3.4.tar.gz 392377 BLAKE2B bd0516dbbedb843a119eaba91798929c6c469eecf6b18d53b403c473e4279c9a73e1248afa8afbdc3e3dca8db5be1950f90c4bfb4683422d6621031910ef77a9 SHA512 e577fa40e861dc3a68f072ad098ae64f45c10ddd7cab9a7733ddb700d21b82b2c0b7448bf50ec95ec89293d4a3a5085fba23ccc97a60ede697ee008433e83715
+DIST Mako-1.3.5.tar.gz 392738 BLAKE2B 566d4126a1c2ece5b2b3f2bec8470d97cc44e512987103f7027d6433418e50bff1cfad7ba510b88f38537c92d3a69d9a85e5b28cd759dbaa29ec19702461e359 SHA512 9a2f96bcb650f40cc2a9daa05904e54efca1fa30022ab641c850f6e32b84a38368d4c5d328f94ac4495ed97778d6ab0b661bc93a14740ed7e5d518f03bc9a59f
diff --git a/dev-python/mako/mako-1.3.5.ebuild b/dev-python/mako/mako-1.3.5.ebuild
new file mode 100644
index 000000000000..d4ccdd56a49a
--- /dev/null
+++ b/dev-python/mako/mako-1.3.5.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
+PYPI_NO_NORMALIZE=1
+PYPI_PN=${PN^}
+PYTHON_COMPAT=( python3_{8,9,10,11,12} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A Python templating language"
+HOMEPAGE="
+ https://www.makotemplates.org/
+ https://github.com/sqlalchemy/mako/
+ https://pypi.org/project/Mako/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-macos"
+IUSE="doc"
+
+RDEPEND="
+ >=dev-python/markupsafe-0.9.2[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/Babel[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=()
+ case ${EPYTHON} in
+ pypy3)
+ EPYTEST_DESELECT+=(
+ test/test_exceptions.py::ExceptionsTest::test_alternating_file_names
+ )
+ ;;
+ esac
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest
+}
+
+python_install_all() {
+ rm -r doc/build || die
+
+ use doc && local HTML_DOCS=( doc/. )
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/mastodon-py/Manifest b/dev-python/mastodon-py/Manifest
index 5c81e85ca017..95dedc81dbaa 100644
--- a/dev-python/mastodon-py/Manifest
+++ b/dev-python/mastodon-py/Manifest
@@ -1,2 +1 @@
-DIST Mastodon.py-1.8.0.tar.gz 8659035 BLAKE2B 46c07fc3e3cf289f8a161975b1f3f36a88882c3299e79b331f3c659c18c5cafbc7144be57bf580212152a345ab4c4e73a08ea4d6052953fae6664eabd6360c3f SHA512 497cdb42adeceeea6f65210daf94eff0c6ce26b286fabc13976c8276649b6b6f51f47b4e99733133c60dc373fcbb0b0760a20ff526d8435391c43e8f06666696
DIST Mastodon.py-1.8.1.tar.gz 8694359 BLAKE2B d3b8d2196199eeaeb0377c8503e763099943142c58b5b45bbbb86a38c0629ea6ee6427b53c989267a13d4d2a0c104635387ffef96d05d7dfa7dd8c2756e8704b SHA512 812bfdcb1a59a06376bfb48798b43cac9dc9390781b3949e4b3d751ec0530b25b187e688c7cfc18eff6d5bb23c9bf442bce5f6902727331e8bc550e310dab94c
diff --git a/dev-python/mastodon-py/mastodon-py-1.8.0.ebuild b/dev-python/mastodon-py/mastodon-py-1.8.0.ebuild
deleted file mode 100644
index 39ba4b076448..000000000000
--- a/dev-python/mastodon-py/mastodon-py-1.8.0.ebuild
+++ /dev/null
@@ -1,55 +0,0 @@
-# Copyright 2022 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{8,9,10,11,12} )
-PYPI_NO_NORMALIZE=1
-PYPI_PN="Mastodon.py"
-inherit distutils-r1 optfeature pypi
-
-MY_PN="Mastodon.py"
-MY_P="${MY_PN}-${PV}"
-DESCRIPTION="Python wrapper for the Mastodon API"
-HOMEPAGE="
- https://pypi.org/project/Mastodon.py/
- https://github.com/halcy/Mastodon.py
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~amd64"
-
-RDEPEND="
- dev-python/blurhash[${PYTHON_USEDEP}]
- dev-python/decorator[${PYTHON_USEDEP}]
- dev-python/python-dateutil[${PYTHON_USEDEP}]
- dev-python/python-magic[${PYTHON_USEDEP}]
- dev-python/pytz[${PYTHON_USEDEP}]
- dev-python/requests[${PYTHON_USEDEP}]
- dev-python/six[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- dev-python/cryptography[${PYTHON_USEDEP}]
- dev-python/http-ece[${PYTHON_USEDEP}]
- dev-python/pytest-mock[${PYTHON_USEDEP}]
- dev-python/pytest-vcr[${PYTHON_USEDEP}]
- dev-python/requests-mock[${PYTHON_USEDEP}]
- dev-python/vcrpy[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_tests pytest
-
-distutils_enable_sphinx docs
-
-src_prepare() {
- distutils-r1_src_prepare
- rm setup.cfg || die
-}
-
-pkg_postinst() {
- optfeature "webpush support" "dev-python/cryptography dev-python/http-ece"
-}
diff --git a/dev-python/mastodon-py/mastodon-py-1.8.1.ebuild b/dev-python/mastodon-py/mastodon-py-1.8.1.ebuild
index f07aebe63605..aef14e37ad7c 100644
--- a/dev-python/mastodon-py/mastodon-py-1.8.1.ebuild
+++ b/dev-python/mastodon-py/mastodon-py-1.8.1.ebuild
@@ -1,10 +1,10 @@
-# Copyright 2022-2023 Gentoo Authors
+# Copyright 2022-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{8,9,10,11,12} ) # fails all tests with py3.12
+PYTHON_COMPAT=( python3_{8,9,10,11,12} )
PYPI_NO_NORMALIZE=1
PYPI_PN="Mastodon.py"
inherit distutils-r1 optfeature pypi
diff --git a/dev-python/material-color-utilities/Manifest b/dev-python/material-color-utilities/Manifest
index 81cf2c70bf42..5a202bca65be 100644
--- a/dev-python/material-color-utilities/Manifest
+++ b/dev-python/material-color-utilities/Manifest
@@ -1 +1 @@
-DIST material-color-utilities-0.1.5.tar.gz 25702 BLAKE2B cf444831fec962caae3a1871b8331dcdd055f186754631185140842e49e1dc5526c5aedc021d28cd5e192e6f593774abce34e4a2853049e9ded2cf3ca9b79e3f SHA512 f3987da2723f9bc0a383d544868bd48b79c815c1ef3b601cf7daf711ae66ba2e20c38d272fff34b8fef724d202cdb71431d885d0fc86cf6b459a8735cd0751a4
+DIST material-color-utilities-python-0.1.5.tar.gz 25702 BLAKE2B cf444831fec962caae3a1871b8331dcdd055f186754631185140842e49e1dc5526c5aedc021d28cd5e192e6f593774abce34e4a2853049e9ded2cf3ca9b79e3f SHA512 f3987da2723f9bc0a383d544868bd48b79c815c1ef3b601cf7daf711ae66ba2e20c38d272fff34b8fef724d202cdb71431d885d0fc86cf6b459a8735cd0751a4
diff --git a/dev-python/material-color-utilities/material-color-utilities-0.1.5.ebuild b/dev-python/material-color-utilities/material-color-utilities-0.1.5.ebuild
index dc867d68c6fa..e22785f7a28f 100644
--- a/dev-python/material-color-utilities/material-color-utilities-0.1.5.ebuild
+++ b/dev-python/material-color-utilities/material-color-utilities-0.1.5.ebuild
@@ -1,11 +1,14 @@
-# Copyright 2022 Gentoo Authors
+# Copyright 2022-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{8,9,10,11,12} )
DISTUTILS_USE_PEP517=poetry
-inherit distutils-r1
+PYPI_NO_NORMALIZE=1
+PYPI_PN="${PN}-python"
+
+inherit distutils-r1 pypi
MY_PN="${PN}-python"
MY_P="${MY_PN}-${PV}"
@@ -19,7 +22,6 @@ if [[ ${PV} == *9999 ]]; then
inherit git-r3
EGIT_REPO_URI="https://github.com/avanishsubbiah/material-color-utilities-python.git"
else
- SRC_URI="https://files.pythonhosted.org/packages/source/m/material-color-utilities-python/material-color-utilities-python-${PV}.tar.gz -> ${P}.tar.gz"
KEYWORDS="~amd64 ~arm64"
S="${WORKDIR}/${MY_P}"
fi
diff --git a/dev-python/material-color-utilities/material-color-utilities-9999.ebuild b/dev-python/material-color-utilities/material-color-utilities-9999.ebuild
index dc867d68c6fa..7e8bd3cdfaba 100644
--- a/dev-python/material-color-utilities/material-color-utilities-9999.ebuild
+++ b/dev-python/material-color-utilities/material-color-utilities-9999.ebuild
@@ -1,10 +1,11 @@
-# Copyright 2022 Gentoo Authors
+# Copyright 2022-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{8,9,10,11,12} )
DISTUTILS_USE_PEP517=poetry
+
inherit distutils-r1
MY_PN="${PN}-python"
@@ -19,7 +20,6 @@ if [[ ${PV} == *9999 ]]; then
inherit git-r3
EGIT_REPO_URI="https://github.com/avanishsubbiah/material-color-utilities-python.git"
else
- SRC_URI="https://files.pythonhosted.org/packages/source/m/material-color-utilities-python/material-color-utilities-python-${PV}.tar.gz -> ${P}.tar.gz"
KEYWORDS="~amd64 ~arm64"
S="${WORKDIR}/${MY_P}"
fi
diff --git a/dev-python/mcbootflash/Manifest b/dev-python/mcbootflash/Manifest
index 9fd6f2c44a00..ac5f53e1e9a2 100644
--- a/dev-python/mcbootflash/Manifest
+++ b/dev-python/mcbootflash/Manifest
@@ -1,3 +1,4 @@
DIST mcbootflash-8.0.1.tar.gz 24906 BLAKE2B 2af5c73de29aa089d33047179ce196507ab1ed1ae224b6f680341a818d8056915271b121cf1ac32f31dd5e33e095f2b82fcddf5907bdb5513a17e009ac242f7f SHA512 fc4093873bbfc0a29d2c09b2f62247dd659b4c9d531613a2a18d6b452f7a0e573b5fa087d82686045af1ba6f7811ca3ccba0f109ada71c42925e8c01faa0fe1d
DIST mcbootflash-8.0.2.tar.gz 27121 BLAKE2B caded3a13266db46ac1b9f35c0a027e9dbfa2c430da96992bf689d4b32574406a7d0c736da82dbe7c473189a8941db8548f59828010e755f33c0342c8c593be2 SHA512 542dcf9af6c22f2deae786fa547e99e4df07b8e3eda7b007a9ead96386c2bf880d8485985b3de399ecd496bf982b6a0308c3f82b49c5914bca09c961822566c6
DIST mcbootflash-9.0.0.tar.gz 26736 BLAKE2B d813e06f88192d44139fe1dc127df6cb26d21f5716288e3bb59989ac362664b1c3a66e857fe702e8691d945ecaf5dace56b43ab967f029bc51583b0a1603fcbd SHA512 92854a1f7c4ecebff5bce12e10131154fa23ae078618fb7a7757f325b49cae7c1a0d3505e25a2c2faa5101adfb2786be90f703a074304a61c55590267d2cdf38
+DIST mcbootflash-9.0.1.tar.gz 26858 BLAKE2B d8d8486a8713d46f7b93443dcfd9cbd9a93452fa7c8e76aeba1f4bfbf52765fbe3807fe8206b994015c094f9fba1626d5a3bb2fa93bd6b6400a9cbaaee7c19a9 SHA512 0c001a0a2c10e9d4bf111136d08ec89c4bc62568934ef9d8b75d7c58d59f451f5459ccc387c72424e8d16c5e49e7bba903efce403f41923ca33d87c2290a84e9
diff --git a/dev-python/mcbootflash/mcbootflash-9.0.1.ebuild b/dev-python/mcbootflash/mcbootflash-9.0.1.ebuild
new file mode 100644
index 000000000000..7653ff5ad9db
--- /dev/null
+++ b/dev-python/mcbootflash/mcbootflash-9.0.1.ebuild
@@ -0,0 +1,35 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=flit
+PYTHON_COMPAT=( python3_{8,9,10,11,12} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Flash firmware to devices running Microchip's 16-bit bootloader"
+HOMEPAGE="
+ https://pypi.org/project/mcbootflash/
+ https://github.com/bessman/mcbootflash/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+
+RDEPEND="
+ >=dev-python/bincopy-20.0.0[${PYTHON_USEDEP}]
+ dev-python/pyserial[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/pytest-reserial[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+python_test() {
+ epytest --replay
+}
diff --git a/dev-python/mkdocstrings-python/Manifest b/dev-python/mkdocstrings-python/Manifest
index d693cb6915fb..f01953616eb2 100644
--- a/dev-python/mkdocstrings-python/Manifest
+++ b/dev-python/mkdocstrings-python/Manifest
@@ -1,2 +1,2 @@
DIST mkdocstrings-python-1.10.0.gh.tar.gz 150022 BLAKE2B fc75c3a797a8c473121b6f00c17ff6b876170d2efde2a7c541667cdbdb1c730d3f843ed6c795d9a1ae8ceb22e56c50d91a0b7e29f4d6ec7aa1eb0f46e7a3c0a6 SHA512 743cadbf0c4318001a265b114d380107b3ed57b0b2ba4e73eb698a1e12074ba6bfe11277a4d245614226913d029483281058b1bc865a67f63de59698b89735dc
-DIST mkdocstrings-python-1.9.2.gh.tar.gz 149558 BLAKE2B 334843c268e308473baf4fc4f37b1a49db600cb4c033456f2a392b2f77e1fbd8e703982b56dea373e9946a5b55efcb236c36e6aa11bd792005ad6b9f4da4d693 SHA512 ac5f2acbc18ec8a07506acb8f9914549fb6d9d0128204efda69e94ee2a4b6d6763567b253374946e740dbaaf3dd3adabc09e56c5db69ff78fa7981931731c5c0
+DIST mkdocstrings-python-1.10.1.gh.tar.gz 157475 BLAKE2B a31c75a27e8459791fa0958373da731a13ae6c1d04f8f170aa1a01046488ca1e289871ff3d7f9eca0f5ee4ce6a58ee24e0fc4005b8742b64d600cb391bb69bc2 SHA512 f020ca43cd22f36008da6491c9632d272b2928ab7d79e83222da6aa894fcd51f1cf608dfb881569e1e04881a533680c12d779c18cb53ac3968008c64f5b96c2a
diff --git a/dev-python/mkdocstrings-python/mkdocstrings-python-1.9.2.ebuild b/dev-python/mkdocstrings-python/mkdocstrings-python-1.10.1.ebuild
index 39bd2049c47e..fd3680096503 100644
--- a/dev-python/mkdocstrings-python/mkdocstrings-python-1.9.2.ebuild
+++ b/dev-python/mkdocstrings-python/mkdocstrings-python-1.10.1.ebuild
@@ -26,8 +26,8 @@ SLOT="0"
KEYWORDS="~amd64 ~arm64 ~riscv"
RDEPEND="
- >=dev-python/griffe-0.37[${PYTHON_USEDEP}]
- >=dev-python/mkdocstrings-0.24.2[${PYTHON_USEDEP}]
+ >=dev-python/griffe-0.44[${PYTHON_USEDEP}]
+ >=dev-python/mkdocstrings-0.25.0[${PYTHON_USEDEP}]
"
BDEPEND="
test? (
diff --git a/dev-python/mobi/mobi-0.3.3.ebuild b/dev-python/mobi/mobi-0.3.3.ebuild
index 4ee80e95b05f..9e92b86de620 100644
--- a/dev-python/mobi/mobi-0.3.3.ebuild
+++ b/dev-python/mobi/mobi-0.3.3.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2021-2023 Gentoo Authors
+# Copyright 2021-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
diff --git a/dev-python/oscrypto/files/openssl-3.0.10-fix.patch b/dev-python/oscrypto/files/openssl-3.0.10-fix.patch
new file mode 100644
index 000000000000..a1c2e44c41fb
--- /dev/null
+++ b/dev-python/oscrypto/files/openssl-3.0.10-fix.patch
@@ -0,0 +1,38 @@
+From ebbc944485b278192b60080ea1f495e287efb4f8 Mon Sep 17 00:00:00 2001
+From: Martin Journois <BibMartin@users.noreply.github.com>
+Date: Thu, 17 Aug 2023 13:09:31 +0200
+Subject: [PATCH] MJ: Fix #75 bug with openssl 3.0.10 (#76)
+
+* MJ: Fix #75 bug with openssl 3.0.10
+* MJ: Add fix suggested by @vcunat on _libcrypto_ctypes regex
+---
+ oscrypto/_openssl/_libcrypto_cffi.py | 2 +-
+ oscrypto/_openssl/_libcrypto_ctypes.py | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/oscrypto/_openssl/_libcrypto_cffi.py b/oscrypto/_openssl/_libcrypto_cffi.py
+index 8aed03e..14eb576 100644
+--- a/oscrypto/_openssl/_libcrypto_cffi.py
++++ b/oscrypto/_openssl/_libcrypto_cffi.py
+@@ -37,7 +37,7 @@
+
+ is_libressl = 'LibreSSL' in version_string
+
+-version_match = re.search('\\b(\\d\\.\\d\\.\\d[a-z]*)\\b', version_string)
++version_match = re.search('\\b(\\d\\.\\d\\.\\d+[a-z]*)\\b', version_string)
+ if not version_match:
+ version_match = re.search('(?<=LibreSSL )(\\d\\.\\d(\\.\\d)?)\\b', version_string)
+ if not version_match:
+diff --git a/oscrypto/_openssl/_libcrypto_ctypes.py b/oscrypto/_openssl/_libcrypto_ctypes.py
+index e33ebbc..9cb294a 100644
+--- a/oscrypto/_openssl/_libcrypto_ctypes.py
++++ b/oscrypto/_openssl/_libcrypto_ctypes.py
+@@ -40,7 +40,7 @@
+
+ is_libressl = 'LibreSSL' in version_string
+
+-version_match = re.search('\\b(\\d\\.\\d\\.\\d[a-z]*)\\b', version_string)
++version_match = re.search('\\b(\\d\\.\\d\\.\\d+[a-z]*)\\b', version_string)
+ if not version_match:
+ version_match = re.search('(?<=LibreSSL )(\\d\\.\\d(\\.\\d)?)\\b', version_string)
+ if not version_match:
diff --git a/dev-python/oscrypto/files/py3.12.patch b/dev-python/oscrypto/files/py3.12.patch
new file mode 100644
index 000000000000..0bb8cb0cda02
--- /dev/null
+++ b/dev-python/oscrypto/files/py3.12.patch
@@ -0,0 +1,902 @@
+From 3be536e4a61ac5fbd403ee80cdb54cb666f34679 Mon Sep 17 00:00:00 2001
+From: Dominik 'Rathann' Mierzejewski <dominik@greysector.net>
+Date: Thu, 17 Aug 2023 09:05:29 +0200
+Subject: [PATCH 01/13] use `importlib` instead of deprecated `imp` module
+
+This fixes tests with python 3.12 where the `imp` module was
+[removed](https://docs.python.org/3.12/whatsnew/3.12.html#removed).
+
+This should fix issue #74.
+---
+ tests/__init__.py | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/tests/__init__.py b/tests/__init__.py
+index 4c65360..90bede4 100644
+--- a/tests/__init__.py
++++ b/tests/__init__.py
+@@ -1,7 +1,7 @@
+ # coding: utf-8
+ from __future__ import unicode_literals, division, absolute_import, print_function
+
+-import imp
++import importlib
+ import os
+ import unittest
+
+@@ -94,8 +94,7 @@ def _import_from(mod, path, mod_dir=None):
+ return None
+
+ try:
+- mod_info = imp.find_module(mod_dir, [path])
+- return imp.load_module(mod, *mod_info)
++ return importlib.import_module(mod)
+ except ImportError:
+ return None
+
+
+From 199f07eefb9c0d1d5ad8093c012fbdae1fefa633 Mon Sep 17 00:00:00 2001
+From: wbond <will@wbond.net>
+Date: Thu, 17 Aug 2023 07:14:40 -0400
+Subject: [PATCH 02/13] Fix compatibility with Python 2.6
+
+---
+ tests/__init__.py | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/tests/__init__.py b/tests/__init__.py
+index 90bede4..3ca9334 100644
+--- a/tests/__init__.py
++++ b/tests/__init__.py
+@@ -1,10 +1,15 @@
+ # coding: utf-8
+ from __future__ import unicode_literals, division, absolute_import, print_function
+
+-import importlib
+ import os
++import sys
+ import unittest
+
++if sys.version_info < (3,):
++ import imp as importlib
++else:
++ import importlib
++
+
+ __version__ = '1.3.0'
+ __version_info__ = (1, 3, 0)
+
+From 19de26bdad3154dc30c6661b652c459438fa9be2 Mon Sep 17 00:00:00 2001
+From: wbond <will@wbond.net>
+Date: Thu, 17 Aug 2023 07:25:49 -0400
+Subject: [PATCH 03/13] Fix both imp and importlib implementations
+
+---
+ tests/__init__.py | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/tests/__init__.py b/tests/__init__.py
+index 3ca9334..7aab84d 100644
+--- a/tests/__init__.py
++++ b/tests/__init__.py
+@@ -6,7 +6,7 @@
+ import unittest
+
+ if sys.version_info < (3,):
+- import imp as importlib
++ import imp
+ else:
+ import importlib
+
+@@ -99,7 +99,12 @@ def _import_from(mod, path, mod_dir=None):
+ return None
+
+ try:
+- return importlib.import_module(mod)
++ if sys.version_info < (3,):
++ mod_info = imp.find_module(mod_dir, [path])
++ return imp.load_module(mod, *mod_info)
++ else:
++ mod_info = importlib.machinery.PathFinder().find_spec(mod_dir, [path])
++ return importlib.import_module(mod, *mod_info)
+ except ImportError:
+ return None
+
+
+From 6973b915069babf665bc223979cd86b2dc262da4 Mon Sep 17 00:00:00 2001
+From: wbond <will@wbond.net>
+Date: Thu, 17 Aug 2023 07:34:37 -0400
+Subject: [PATCH 04/13] More importlib fixes
+
+---
+ tests/__init__.py | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/tests/__init__.py b/tests/__init__.py
+index 7aab84d..957c083 100644
+--- a/tests/__init__.py
++++ b/tests/__init__.py
+@@ -103,8 +103,10 @@ def _import_from(mod, path, mod_dir=None):
+ mod_info = imp.find_module(mod_dir, [path])
+ return imp.load_module(mod, *mod_info)
+ else:
+- mod_info = importlib.machinery.PathFinder().find_spec(mod_dir, [path])
+- return importlib.import_module(mod, *mod_info)
++ spec = importlib.machinery.PathFinder().find_spec(mod_dir, [path])
++ module = importlib.util.module_from_spec(spec)
++ sys.modules[mod] = module
++ spec.loader.exec_module(module)
+ except ImportError:
+ return None
+
+
+From 8843c89acae8435a7ba731b42750e42caef87a70 Mon Sep 17 00:00:00 2001
+From: wbond <will@wbond.net>
+Date: Thu, 17 Aug 2023 07:35:40 -0400
+Subject: [PATCH 05/13] Python 3.3 has a different importlib implementation
+
+---
+ tests/__init__.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/tests/__init__.py b/tests/__init__.py
+index 957c083..8339b5d 100644
+--- a/tests/__init__.py
++++ b/tests/__init__.py
+@@ -5,7 +5,7 @@
+ import sys
+ import unittest
+
+-if sys.version_info < (3,):
++if sys.version_info < (3, 5):
+ import imp
+ else:
+ import importlib
+@@ -99,7 +99,7 @@ def _import_from(mod, path, mod_dir=None):
+ return None
+
+ try:
+- if sys.version_info < (3,):
++ if sys.version_info < (3, 5):
+ mod_info = imp.find_module(mod_dir, [path])
+ return imp.load_module(mod, *mod_info)
+ else:
+
+From 53fa3ca263ad6bc04e4a8a56f180b82bdc88aa03 Mon Sep 17 00:00:00 2001
+From: wbond <will@wbond.net>
+Date: Thu, 17 Aug 2023 08:22:21 -0400
+Subject: [PATCH 06/13] Attempt a different importlib implementation
+
+---
+ tests/__init__.py | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/tests/__init__.py b/tests/__init__.py
+index 8339b5d..0eecf2f 100644
+--- a/tests/__init__.py
++++ b/tests/__init__.py
+@@ -103,7 +103,12 @@ def _import_from(mod, path, mod_dir=None):
+ mod_info = imp.find_module(mod_dir, [path])
+ return imp.load_module(mod, *mod_info)
+ else:
+- spec = importlib.machinery.PathFinder().find_spec(mod_dir, [path])
++ loader_details = (
++ importlib.machinery.SourceFileLoader,
++ importlib.machinery.SOURCE_SUFFIXES
++ )
++ finder = importlib.machinery.FileFinder(path, loader_details)
++ spec = finder.find_spec(mod_dir)
+ module = importlib.util.module_from_spec(spec)
+ sys.modules[mod] = module
+ spec.loader.exec_module(module)
+
+From b013e440061c88dfe0301309b695c7b47bcc1e72 Mon Sep 17 00:00:00 2001
+From: wbond <will@wbond.net>
+Date: Thu, 17 Aug 2023 15:52:30 -0400
+Subject: [PATCH 07/13] Hopefully some fully working Python 3.12-compatible
+ import backflips
+
+---
+ dev/_import.py | 35 ++++++++++++++++++++++++++++++++---
+ tests/__init__.py | 4 ++++
+ 2 files changed, 36 insertions(+), 3 deletions(-)
+
+diff --git a/dev/_import.py b/dev/_import.py
+index d64c028..016c576 100644
+--- a/dev/_import.py
++++ b/dev/_import.py
+@@ -1,12 +1,19 @@
+ # coding: utf-8
+ from __future__ import unicode_literals, division, absolute_import, print_function
+
+-import imp
+ import sys
+ import os
+
+ from . import build_root, package_name, package_root
+
++if sys.version_info < (3, 5):
++ import imp
++else:
++ import importlib
++ import importlib.machinery
++ import importlib.util
++
++
+ if sys.version_info < (3,):
+ getcwd = os.getcwdu
+ else:
+@@ -34,6 +41,14 @@ def _import_from(mod, path, mod_dir=None, allow_error=False):
+ None if not loaded, otherwise the module
+ """
+
++ if mod in sys.modules:
++ return sys.modules[mod]
++
++ if mod_dir is None:
++ full_mod = mod
++ else:
++ full_mod = mod_dir
++
+ if mod_dir is None:
+ mod_dir = mod.replace('.', os.sep)
+
+@@ -49,8 +64,22 @@ def _import_from(mod, path, mod_dir=None, allow_error=False):
+ path = os.path.join(path, append)
+
+ try:
+- mod_info = imp.find_module(mod_dir, [path])
+- return imp.load_module(mod, *mod_info)
++ if sys.version_info < (3, 5):
++ mod_info = imp.find_module(mod_dir, [path])
++ return imp.load_module(mod, *mod_info)
++
++ else:
++ loader_details = (
++ importlib.machinery.SourceFileLoader,
++ importlib.machinery.SOURCE_SUFFIXES
++ )
++ finder = importlib.machinery.FileFinder(path, loader_details)
++ spec = finder.find_spec(full_mod)
++ module = importlib.util.module_from_spec(spec)
++ sys.modules[mod] = module
++ spec.loader.exec_module(module)
++ return module
++
+ except ImportError:
+ if allow_error:
+ raise
+diff --git a/tests/__init__.py b/tests/__init__.py
+index 0eecf2f..9759ae3 100644
+--- a/tests/__init__.py
++++ b/tests/__init__.py
+@@ -89,6 +89,9 @@ def _import_from(mod, path, mod_dir=None):
+ None if not loaded, otherwise the module
+ """
+
++ if mod in sys.modules:
++ return sys.modules[mod]
++
+ if mod_dir is None:
+ mod_dir = mod
+
+@@ -112,6 +115,7 @@ def _import_from(mod, path, mod_dir=None):
+ module = importlib.util.module_from_spec(spec)
+ sys.modules[mod] = module
+ spec.loader.exec_module(module)
++ return module
+ except ImportError:
+ return None
+
+
+From 8ec71631b5adf6f6ab34c7cc3fe8e229a2bdcbd7 Mon Sep 17 00:00:00 2001
+From: Dominik Mierzejewski <dominik@greysector.net>
+Date: Fri, 18 Aug 2023 11:18:06 +0200
+Subject: [PATCH 08/13] Use importlib with python 3.5+
+
+This fixes `python run.py ci` under python 3.12.
+---
+ dev/coverage.py | 21 ++++++++++++++++++---
+ 1 file changed, 18 insertions(+), 3 deletions(-)
+
+diff --git a/dev/coverage.py b/dev/coverage.py
+index bb99a4f..6e669fe 100644
+--- a/dev/coverage.py
++++ b/dev/coverage.py
+@@ -4,7 +4,6 @@
+ import cgi
+ import codecs
+ import coverage
+-import imp
+ import json
+ import os
+ import unittest
+@@ -33,6 +32,11 @@
+ else:
+ Pattern = re.Pattern
+
++if sys.version_info < (3, 5):
++ import imp
++else:
++ import importlib
++
+
+ def run(ci=False):
+ """
+@@ -103,8 +107,19 @@ def _load_package_tests(name):
+ if not os.path.exists(package_dir):
+ return []
+
+- tests_module_info = imp.find_module('tests', [package_dir])
+- tests_module = imp.load_module('%s.tests' % name, *tests_module_info)
++ if sys.version_info < (3, 5):
++ tests_module_info = imp.find_module('tests', [package_dir])
++ tests_module = imp.load_module('%s.tests' % name, *tests_module_info)
++ else:
++ loader_details = (
++ importlib.machinery.SourceFileLoader,
++ importlib.machinery.SOURCE_SUFFIXES
++ )
++ finder = importlib.machinery.FileFinder(package_dir, loader_details)
++ spec = finder.find_spec('tests')
++ test_module = importlib.util.module_from_spec(spec)
++ sys.modules['%s.tests' % name] = test_module
++ spec.loader.exec_module(test_module)
+ return tests_module.test_classes()
+
+
+
+From 23d848a500413847a63df740af543e0fdaba5558 Mon Sep 17 00:00:00 2001
+From: wbond <will@wbond.net>
+Date: Tue, 22 Aug 2023 06:56:36 -0400
+Subject: [PATCH 09/13] Reuse _import_from in coverage task, fixing module name
+
+---
+ dev/coverage.py | 21 ++-------------------
+ 1 file changed, 2 insertions(+), 19 deletions(-)
+
+diff --git a/dev/coverage.py b/dev/coverage.py
+index 6e669fe..00684d0 100644
+--- a/dev/coverage.py
++++ b/dev/coverage.py
+@@ -16,6 +16,7 @@
+ from fnmatch import fnmatch
+
+ from . import package_name, package_root, other_packages
++from ._import import _import_from
+
+ if sys.version_info < (3,):
+ str_cls = unicode # noqa
+@@ -32,11 +33,6 @@
+ else:
+ Pattern = re.Pattern
+
+-if sys.version_info < (3, 5):
+- import imp
+-else:
+- import importlib
+-
+
+ def run(ci=False):
+ """
+@@ -107,20 +103,7 @@ def _load_package_tests(name):
+ if not os.path.exists(package_dir):
+ return []
+
+- if sys.version_info < (3, 5):
+- tests_module_info = imp.find_module('tests', [package_dir])
+- tests_module = imp.load_module('%s.tests' % name, *tests_module_info)
+- else:
+- loader_details = (
+- importlib.machinery.SourceFileLoader,
+- importlib.machinery.SOURCE_SUFFIXES
+- )
+- finder = importlib.machinery.FileFinder(package_dir, loader_details)
+- spec = finder.find_spec('tests')
+- test_module = importlib.util.module_from_spec(spec)
+- sys.modules['%s.tests' % name] = test_module
+- spec.loader.exec_module(test_module)
+- return tests_module.test_classes()
++ return _import_from('%s.tests' % name, package_dir, 'tests').test_classes()
+
+
+ def _env_info():
+
+From 9941d3b96e8aa08622d00954d89005dcf6e94b94 Mon Sep 17 00:00:00 2001
+From: wbond <will@wbond.net>
+Date: Tue, 22 Aug 2023 07:03:26 -0400
+Subject: [PATCH 10/13] Factor out remaining usage of imp module
+
+---
+ dev/build.py | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/dev/build.py b/dev/build.py
+index 4899594..f429fee 100644
+--- a/dev/build.py
++++ b/dev/build.py
+@@ -1,7 +1,6 @@
+ # coding: utf-8
+ from __future__ import unicode_literals, division, absolute_import, print_function
+
+-import imp
+ import os
+ import tarfile
+ import zipfile
+@@ -9,6 +8,7 @@
+ import setuptools.sandbox
+
+ from . import package_root, package_name, has_tests_package
++from ._import import _import_from
+
+
+ def _list_zip(filename):
+@@ -45,8 +45,8 @@ def run():
+
+ # Trying to call setuptools.sandbox.run_setup(setup, ['--version'])
+ # resulted in a segfault, so we do this instead
+- module_info = imp.find_module('version', [os.path.join(package_root, package_name)])
+- version_mod = imp.load_module('%s.version' % package_name, *module_info)
++ package_dir = os.path.join(package_root, package_name)
++ version_mod = _import_from('%s.version' % package_name, package_dir, 'version')
+
+ pkg_name_info = (package_name, version_mod.__version__)
+ print('Building %s-%s' % pkg_name_info)
+
+From 799aa0d2f4a954d3fc120ab382c8dd4322758654 Mon Sep 17 00:00:00 2001
+From: wbond <will@wbond.net>
+Date: Tue, 22 Aug 2023 16:29:39 -0400
+Subject: [PATCH 11/13] Rewrite importlib import mechanism
+
+---
+ dev/_import.py | 69 ++++++++++++++++++++++++++++++++---------
+ tests/__init__.py | 79 ++++++++++++++++++++++++++++++++++++++++-------
+ 2 files changed, 122 insertions(+), 26 deletions(-)
+
+diff --git a/dev/_import.py b/dev/_import.py
+index 016c576..20720e7 100644
+--- a/dev/_import.py
++++ b/dev/_import.py
+@@ -10,7 +10,7 @@
+ import imp
+ else:
+ import importlib
+- import importlib.machinery
++ import importlib.abc
+ import importlib.util
+
+
+@@ -20,6 +20,48 @@
+ getcwd = os.getcwd
+
+
++class ModCryptoMetaFinder(importlib.abc.MetaPathFinder):
++ def setup(self):
++ self.modules = {}
++ sys.meta_path.insert(0, self)
++
++ def add_module(self, package_name, package_path):
++ if package_name not in self.modules:
++ self.modules[package_name] = package_path
++
++ def find_spec(self, fullname, path, target=None):
++ name_parts = fullname.split('.')
++ if name_parts[0] not in self.modules:
++ return None
++
++ package = name_parts[0]
++ package_path = self.modules[package]
++
++ fullpath = os.path.join(package_path, *name_parts[1:])
++
++ if os.path.isdir(fullpath):
++ filename = os.path.join(fullpath, "__init__.py")
++ submodule_locations = [fullpath]
++ else:
++ filename = fullpath + ".py"
++ submodule_locations = None
++
++ if not os.path.exists(filename):
++ return None
++
++ return importlib.util.spec_from_file_location(
++ fullname,
++ filename,
++ loader=None,
++ submodule_search_locations=submodule_locations
++ )
++
++
++if sys.version_info >= (3, 5):
++ CUSTOM_FINDER = ModCryptoMetaFinder()
++ CUSTOM_FINDER.setup()
++
++
+ def _import_from(mod, path, mod_dir=None, allow_error=False):
+ """
+ Imports a module from a specific path
+@@ -47,7 +89,7 @@ def _import_from(mod, path, mod_dir=None, allow_error=False):
+ if mod_dir is None:
+ full_mod = mod
+ else:
+- full_mod = mod_dir
++ full_mod = mod_dir.replace(os.sep, '.')
+
+ if mod_dir is None:
+ mod_dir = mod.replace('.', os.sep)
+@@ -55,8 +97,11 @@ def _import_from(mod, path, mod_dir=None, allow_error=False):
+ if not os.path.exists(path):
+ return None
+
+- if not os.path.exists(os.path.join(path, mod_dir)) \
+- and not os.path.exists(os.path.join(path, mod_dir + '.py')):
++ source_path = os.path.join(path, mod_dir, '__init__.py')
++ if not os.path.exists(source_path):
++ source_path = os.path.join(path, mod_dir + '.py')
++
++ if not os.path.exists(source_path):
+ return None
+
+ if os.sep in mod_dir:
+@@ -69,16 +114,12 @@ def _import_from(mod, path, mod_dir=None, allow_error=False):
+ return imp.load_module(mod, *mod_info)
+
+ else:
+- loader_details = (
+- importlib.machinery.SourceFileLoader,
+- importlib.machinery.SOURCE_SUFFIXES
+- )
+- finder = importlib.machinery.FileFinder(path, loader_details)
+- spec = finder.find_spec(full_mod)
+- module = importlib.util.module_from_spec(spec)
+- sys.modules[mod] = module
+- spec.loader.exec_module(module)
+- return module
++ package = mod.split('.', 1)[0]
++ package_dir = full_mod.split('.', 1)[0]
++ package_path = os.path.join(path, package_dir)
++ CUSTOM_FINDER.add_module(package, package_path)
++
++ return importlib.import_module(mod)
+
+ except ImportError:
+ if allow_error:
+diff --git a/tests/__init__.py b/tests/__init__.py
+index 9759ae3..2e24046 100644
+--- a/tests/__init__.py
++++ b/tests/__init__.py
+@@ -9,6 +9,8 @@
+ import imp
+ else:
+ import importlib
++ import importlib.abc
++ import importlib.util
+
+
+ __version__ = '1.3.0'
+@@ -71,6 +73,48 @@ def local_oscrypto():
+ return (_asn1crypto_module, _oscrypto_module)
+
+
++class ModCryptoMetaFinder(importlib.abc.MetaPathFinder):
++ def setup(self):
++ self.modules = {}
++ sys.meta_path.insert(0, self)
++
++ def add_module(self, package_name, package_path):
++ if package_name not in self.modules:
++ self.modules[package_name] = package_path
++
++ def find_spec(self, fullname, path, target=None):
++ name_parts = fullname.split('.')
++ if name_parts[0] not in self.modules:
++ return None
++
++ package = name_parts[0]
++ package_path = self.modules[package]
++
++ fullpath = os.path.join(package_path, *name_parts[1:])
++
++ if os.path.isdir(fullpath):
++ filename = os.path.join(fullpath, "__init__.py")
++ submodule_locations = [fullpath]
++ else:
++ filename = fullpath + ".py"
++ submodule_locations = None
++
++ if not os.path.exists(filename):
++ return None
++
++ return importlib.util.spec_from_file_location(
++ fullname,
++ filename,
++ loader=None,
++ submodule_search_locations=submodule_locations
++ )
++
++
++if sys.version_info >= (3, 5):
++ CUSTOM_FINDER = ModCryptoMetaFinder()
++ CUSTOM_FINDER.setup()
++
++
+ def _import_from(mod, path, mod_dir=None):
+ """
+ Imports a module from a specific path
+@@ -93,29 +137,40 @@ def _import_from(mod, path, mod_dir=None):
+ return sys.modules[mod]
+
+ if mod_dir is None:
+- mod_dir = mod
++ full_mod = mod
++ else:
++ full_mod = mod_dir.replace(os.sep, '.')
++
++ if mod_dir is None:
++ mod_dir = mod.replace('.', os.sep)
+
+ if not os.path.exists(path):
+ return None
+
+- if not os.path.exists(os.path.join(path, mod_dir)):
++ source_path = os.path.join(path, mod_dir, '__init__.py')
++ if not os.path.exists(source_path):
++ source_path = os.path.join(path, mod_dir + '.py')
++
++ if not os.path.exists(source_path):
+ return None
+
++ if os.sep in mod_dir:
++ append, mod_dir = mod_dir.rsplit(os.sep, 1)
++ path = os.path.join(path, append)
++
+ try:
+ if sys.version_info < (3, 5):
+ mod_info = imp.find_module(mod_dir, [path])
+ return imp.load_module(mod, *mod_info)
++
+ else:
+- loader_details = (
+- importlib.machinery.SourceFileLoader,
+- importlib.machinery.SOURCE_SUFFIXES
+- )
+- finder = importlib.machinery.FileFinder(path, loader_details)
+- spec = finder.find_spec(mod_dir)
+- module = importlib.util.module_from_spec(spec)
+- sys.modules[mod] = module
+- spec.loader.exec_module(module)
+- return module
++ package = mod.split('.', 1)[0]
++ package_dir = full_mod.split('.', 1)[0]
++ package_path = os.path.join(path, package_dir)
++ CUSTOM_FINDER.add_module(package, package_path)
++
++ return importlib.import_module(mod)
++
+ except ImportError:
+ return None
+
+
+From 8a588fa0223f08f817e702f7f2cc4ef81017af26 Mon Sep 17 00:00:00 2001
+From: wbond <will@wbond.net>
+Date: Tue, 22 Aug 2023 16:35:17 -0400
+Subject: [PATCH 12/13] Fix custom importlib code for Python < 3.5
+
+---
+ dev/_import.py | 73 +++++++++++++++++++++++------------------------
+ tests/__init__.py | 58 ++++++++++++++++++-------------------
+ 2 files changed, 65 insertions(+), 66 deletions(-)
+
+diff --git a/dev/_import.py b/dev/_import.py
+index 20720e7..2d016db 100644
+--- a/dev/_import.py
++++ b/dev/_import.py
+@@ -19,45 +19,44 @@
+ else:
+ getcwd = os.getcwd
+
+-
+-class ModCryptoMetaFinder(importlib.abc.MetaPathFinder):
+- def setup(self):
+- self.modules = {}
+- sys.meta_path.insert(0, self)
+-
+- def add_module(self, package_name, package_path):
+- if package_name not in self.modules:
+- self.modules[package_name] = package_path
+-
+- def find_spec(self, fullname, path, target=None):
+- name_parts = fullname.split('.')
+- if name_parts[0] not in self.modules:
+- return None
+-
+- package = name_parts[0]
+- package_path = self.modules[package]
+-
+- fullpath = os.path.join(package_path, *name_parts[1:])
+-
+- if os.path.isdir(fullpath):
+- filename = os.path.join(fullpath, "__init__.py")
+- submodule_locations = [fullpath]
+- else:
+- filename = fullpath + ".py"
+- submodule_locations = None
+-
+- if not os.path.exists(filename):
+- return None
+-
+- return importlib.util.spec_from_file_location(
+- fullname,
+- filename,
+- loader=None,
+- submodule_search_locations=submodule_locations
+- )
++if sys.version_info >= (3, 5):
++ class ModCryptoMetaFinder(importlib.abc.MetaPathFinder):
++ def setup(self):
++ self.modules = {}
++ sys.meta_path.insert(0, self)
++
++ def add_module(self, package_name, package_path):
++ if package_name not in self.modules:
++ self.modules[package_name] = package_path
++
++ def find_spec(self, fullname, path, target=None):
++ name_parts = fullname.split('.')
++ if name_parts[0] not in self.modules:
++ return None
++
++ package = name_parts[0]
++ package_path = self.modules[package]
++
++ fullpath = os.path.join(package_path, *name_parts[1:])
++
++ if os.path.isdir(fullpath):
++ filename = os.path.join(fullpath, "__init__.py")
++ submodule_locations = [fullpath]
++ else:
++ filename = fullpath + ".py"
++ submodule_locations = None
++
++ if not os.path.exists(filename):
++ return None
++
++ return importlib.util.spec_from_file_location(
++ fullname,
++ filename,
++ loader=None,
++ submodule_search_locations=submodule_locations
++ )
+
+
+-if sys.version_info >= (3, 5):
+ CUSTOM_FINDER = ModCryptoMetaFinder()
+ CUSTOM_FINDER.setup()
+
+diff --git a/tests/__init__.py b/tests/__init__.py
+index 2e24046..e1e92e6 100644
+--- a/tests/__init__.py
++++ b/tests/__init__.py
+@@ -73,44 +73,44 @@ def local_oscrypto():
+ return (_asn1crypto_module, _oscrypto_module)
+
+
+-class ModCryptoMetaFinder(importlib.abc.MetaPathFinder):
+- def setup(self):
+- self.modules = {}
+- sys.meta_path.insert(0, self)
++if sys.version_info >= (3, 5):
++ class ModCryptoMetaFinder(importlib.abc.MetaPathFinder):
++ def setup(self):
++ self.modules = {}
++ sys.meta_path.insert(0, self)
+
+- def add_module(self, package_name, package_path):
+- if package_name not in self.modules:
+- self.modules[package_name] = package_path
++ def add_module(self, package_name, package_path):
++ if package_name not in self.modules:
++ self.modules[package_name] = package_path
+
+- def find_spec(self, fullname, path, target=None):
+- name_parts = fullname.split('.')
+- if name_parts[0] not in self.modules:
+- return None
++ def find_spec(self, fullname, path, target=None):
++ name_parts = fullname.split('.')
++ if name_parts[0] not in self.modules:
++ return None
+
+- package = name_parts[0]
+- package_path = self.modules[package]
++ package = name_parts[0]
++ package_path = self.modules[package]
+
+- fullpath = os.path.join(package_path, *name_parts[1:])
++ fullpath = os.path.join(package_path, *name_parts[1:])
+
+- if os.path.isdir(fullpath):
+- filename = os.path.join(fullpath, "__init__.py")
+- submodule_locations = [fullpath]
+- else:
+- filename = fullpath + ".py"
+- submodule_locations = None
++ if os.path.isdir(fullpath):
++ filename = os.path.join(fullpath, "__init__.py")
++ submodule_locations = [fullpath]
++ else:
++ filename = fullpath + ".py"
++ submodule_locations = None
+
+- if not os.path.exists(filename):
+- return None
++ if not os.path.exists(filename):
++ return None
+
+- return importlib.util.spec_from_file_location(
+- fullname,
+- filename,
+- loader=None,
+- submodule_search_locations=submodule_locations
+- )
++ return importlib.util.spec_from_file_location(
++ fullname,
++ filename,
++ loader=None,
++ submodule_search_locations=submodule_locations
++ )
+
+
+-if sys.version_info >= (3, 5):
+ CUSTOM_FINDER = ModCryptoMetaFinder()
+ CUSTOM_FINDER.setup()
+
+
+From d9f8e2ff88e722e3af6bf592c097298505a40381 Mon Sep 17 00:00:00 2001
+From: wbond <will@wbond.net>
+Date: Tue, 22 Aug 2023 16:45:45 -0400
+Subject: [PATCH 13/13] Fix test loading
+
+---
+ dev/_import.py | 1 -
+ dev/coverage.py | 2 +-
+ tests/__init__.py | 1 -
+ 3 files changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/dev/_import.py b/dev/_import.py
+index 2d016db..c0a1983 100644
+--- a/dev/_import.py
++++ b/dev/_import.py
+@@ -56,7 +56,6 @@ def find_spec(self, fullname, path, target=None):
+ submodule_search_locations=submodule_locations
+ )
+
+-
+ CUSTOM_FINDER = ModCryptoMetaFinder()
+ CUSTOM_FINDER.setup()
+
+diff --git a/dev/coverage.py b/dev/coverage.py
+index 00684d0..98f140b 100644
+--- a/dev/coverage.py
++++ b/dev/coverage.py
+@@ -103,7 +103,7 @@ def _load_package_tests(name):
+ if not os.path.exists(package_dir):
+ return []
+
+- return _import_from('%s.tests' % name, package_dir, 'tests').test_classes()
++ return _import_from('%s_tests' % name, package_dir, 'tests').test_classes()
+
+
+ def _env_info():
+diff --git a/tests/__init__.py b/tests/__init__.py
+index e1e92e6..3ae721d 100644
+--- a/tests/__init__.py
++++ b/tests/__init__.py
+@@ -110,7 +110,6 @@ def find_spec(self, fullname, path, target=None):
+ submodule_search_locations=submodule_locations
+ )
+
+-
+ CUSTOM_FINDER = ModCryptoMetaFinder()
+ CUSTOM_FINDER.setup()
+
diff --git a/dev-python/oscrypto/oscrypto-1.3.0-r1.ebuild b/dev-python/oscrypto/oscrypto-1.3.0-r2.ebuild
index 986154db08d5..589c3020e69b 100644
--- a/dev-python/oscrypto/oscrypto-1.3.0-r1.ebuild
+++ b/dev-python/oscrypto/oscrypto-1.3.0-r2.ebuild
@@ -30,6 +30,11 @@ BDEPEND="
DOCS=( docs {changelog,readme}.md )
+PATCHES=(
+ "${FILESDIR}"/openssl-3.0.10-fix.patch
+ "${FILESDIR}"/py3.12.patch
+)
+
distutils_enable_tests unittest
python_test() {
diff --git a/dev-python/pem/Manifest b/dev-python/pem/Manifest
index c60227d7b60a..9f68271c31cd 100644
--- a/dev-python/pem/Manifest
+++ b/dev-python/pem/Manifest
@@ -1,2 +1 @@
-DIST pem-21.2.0.gh.tar.gz 35899 BLAKE2B b24affc1228d61b61660615c252fbac36abc3e42d9b54a026fd63c68b3ba470c3208ce12d2d8b188bb4e951f2ad55cd4cf441ffdbc49b681e9f0616ed5290123 SHA512 7e6f6d46bd1c8ab5c84b0edee182fbec7ae3c37e2005854ff1bc6f43cb47490a1f3bb0ac97cbc9e8c0ff830d4f22fcddd52f68206452a16ba862354a75491b18
DIST pem-23.1.0.tar.gz 43796 BLAKE2B 903b6bbad0a73266467d876eba2a6a32993fd57f75630149bb00c8eac9f51a0fa7b1edcff9c09d48167f971c1da51f688ae0bda9494c3d3e3acf11262983858d SHA512 e742dba55df69736ed5896370da980b25961682a9fd38b6940490cb82332813fc1d7a931fe651716fa31caf6080e6fb047d0ef62d3e61d7e3e1288a00b70051e
diff --git a/dev-python/pem/pem-21.2.0.ebuild b/dev-python/pem/pem-21.2.0.ebuild
deleted file mode 100644
index 8040a907d9f9..000000000000
--- a/dev-python/pem/pem-21.2.0.ebuild
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 2023 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{8,9,10,11,12} )
-inherit distutils-r1
-
-DESCRIPTION="Easy PEM file parsing in Python"
-HOMEPAGE="https://pem.readthedocs.io/"
-SRC_URI="https://github.com/hynek/${PN}/archive/refs/tags/${PV}.tar.gz -> ${P}.gh.tar.gz"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~amd64"
-
-BDEPEND="
- test? (
- >=dev-python/coverage-5.0.2[${PYTHON_USEDEP}]
- dev-python/certifi[${PYTHON_USEDEP}]
- dev-python/pretend[${PYTHON_USEDEP}]
- dev-python/pyopenssl[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_tests pytest
diff --git a/dev-python/pyarrow/Manifest b/dev-python/pyarrow/Manifest
index 6136d388636a..bf2ef74d0b33 100644
--- a/dev-python/pyarrow/Manifest
+++ b/dev-python/pyarrow/Manifest
@@ -1 +1,2 @@
DIST apache-arrow-16.0.0.tar.gz 21695067 BLAKE2B aa5dfef3d8d46a53242075c165473635051d51ff28587ea8b80751232d5f75ee3ef89e0a027aa39bdc9dc03fa46ddb68e46ae2c7f40605258e47ff194f1d3979 SHA512 773f4f3eef603032c8ba0cfdc023bfd2a24bb5e41c82da354a22d7854ab153294ede1f4782cc32b27451cf1b58303f105bac61ceeb3568faea747b93e21d79e4
+DIST apache-arrow-16.1.0.tar.gz 21707079 BLAKE2B 5541c364351e59e8164f2461546bce3ddc834d70b3a03b815b681187674bdd89ccfb7eb113bf9010c821845b0c1fa51f5321bfea5b20927e6364f6452ec980d2 SHA512 28975f59e1fdde2dba4afaf4a5ba934b63db3a7f27656e2aa0af0f0d2a046c9dbfa9a6082de94629c36d03809b296566a37ea65ec5a2fc17fedac7d21e272d31
diff --git a/dev-python/pyarrow/pyarrow-16.1.0.ebuild b/dev-python/pyarrow/pyarrow-16.1.0.ebuild
new file mode 100644
index 000000000000..375bc93b77a4
--- /dev/null
+++ b/dev-python/pyarrow/pyarrow-16.1.0.ebuild
@@ -0,0 +1,97 @@
+# Copyright 2023-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{8,9,10,11,12} )
+
+inherit distutils-r1 multiprocessing
+
+DESCRIPTION="Python library for Apache Arrow"
+HOMEPAGE="
+ https://arrow.apache.org/
+ https://github.com/apache/arrow/
+ https://pypi.org/project/pyarrow/
+"
+SRC_URI="mirror://apache/arrow/arrow-${PV}/apache-arrow-${PV}.tar.gz"
+S="${WORKDIR}/apache-arrow-${PV}/python"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~hppa ~loong ~riscv ~x86"
+IUSE="+parquet +snappy ssl"
+
+RDEPEND="
+ ~dev-libs/apache-arrow-${PV}[compute,dataset,json,parquet?,re2,snappy?,ssl?]
+ >=dev-python/numpy-1.16.6:=[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/hypothesis[${PYTHON_USEDEP}]
+ dev-python/pandas[${PYTHON_USEDEP}]
+ dev-libs/apache-arrow[lz4,zlib]
+ )
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ # cython's -Werror
+ sed -i -e '/--warning-errors/d' CMakeLists.txt || die
+ distutils-r1_src_prepare
+}
+
+src_compile() {
+ export PYARROW_PARALLEL="$(makeopts_jobs)"
+ export PYARROW_BUILD_VERBOSE=1
+ export PYARROW_CXXFLAGS="${CXXFLAGS}"
+ export PYARROW_BUNDLE_ARROW_CPP_HEADERS=0
+ export PYARROW_CMAKE_GENERATOR=Ninja
+ export PYARROW_WITH_HDFS=1
+ if use parquet; then
+ export PYARROW_WITH_DATASET=1
+ export PYARROW_WITH_PARQUET=1
+ use ssl && export PYARROW_WITH_PARQUET_ENCRYPTION=1
+ fi
+ if use snappy; then
+ export PYARROW_WITH_SNAPPY=1
+ fi
+
+ distutils-r1_src_compile
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # wtf?
+ tests/test_fs.py::test_localfs_errors
+ # these require apache-arrow with jemalloc that doesn't seem
+ # to be supported by the Gentoo package
+ tests/test_memory.py::test_env_var
+ tests/test_memory.py::test_specific_memory_pools
+ tests/test_memory.py::test_supported_memory_backends
+ # pandas changed, i guess
+ tests/test_pandas.py::test_array_protocol_pandas_extension_types
+ tests/test_table.py::test_table_factory_function_args_pandas
+ # hypothesis health check failures
+ # https://github.com/apache/arrow/issues/41318
+ tests/interchange/test_interchange_spec.py::test_dtypes
+ tests/test_convert_builtin.py::test_array_to_pylist_roundtrip
+ tests/test_feather.py::test_roundtrip
+ tests/test_pandas.py::test_array_to_pandas_roundtrip
+ )
+
+ if has_version ">=dev-python/numpy-2"; then
+ EPYTEST_DESELECT+=(
+ # https://github.com/apache/arrow/issues/41319
+ tests/test_array.py::test_numpy_array_protocol
+ tests/test_table.py::test_numpy_array_protocol
+ )
+ fi
+
+ cd "${T}" || die
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest --pyargs pyarrow
+}
diff --git a/dev-python/pyfiglet/pyfiglet-0.8_p1.ebuild b/dev-python/pyfiglet/pyfiglet-0.8_p1.ebuild
index 28929b112804..79dbaae9f272 100644
--- a/dev-python/pyfiglet/pyfiglet-0.8_p1.ebuild
+++ b/dev-python/pyfiglet/pyfiglet-0.8_p1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2023 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
diff --git a/dev-python/pygsl/Manifest b/dev-python/pygsl/Manifest
index b941fbd47b58..22476ec8b591 100644
--- a/dev-python/pygsl/Manifest
+++ b/dev-python/pygsl/Manifest
@@ -1 +1 @@
-DIST pygsl-2.3.3.gh.tar.gz 1110939 BLAKE2B 9da5e35a6367a8cc03f836cab5e41d8d6e7c0c3d5bca995e01cf83e308f1922e6fce677977830920bc1184c6ac531f79da21d3941a63a72e16eb13b0faeabe0e SHA512 289713c2ac5d1adb1f5dd4379b704fbcfa56227b0bdbd19166a4c218d7eb9b41cb4927c265862996ae668486733510e56b6a6a0e0046d1040c88e8e854ce4a48
+DIST pygsl-2.3.4.gh.tar.gz 1100233 BLAKE2B 0d59062ae7a6193225ac731a9a12a7c32df9c309a90e358fd77f7c957f8d27269e97634022036aa7b1d99e2c3703a7c45387c97557c4e28762310009626cb465 SHA512 4b510426bafc06c79742f0ef0ad07e31a7aa74c14bab88bd2f0a2acb125569ecf38aeab0eaf01590bd052474a4aa7f8b39a66f853e4bc4a392e126dcf4bfb359
diff --git a/dev-python/pygsl/pygsl-2.3.3.ebuild b/dev-python/pygsl/pygsl-2.3.4.ebuild
index 05466b60602d..8d39d87bc2f6 100644
--- a/dev-python/pygsl/pygsl-2.3.3.ebuild
+++ b/dev-python/pygsl/pygsl-2.3.4.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2023 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -10,7 +10,8 @@ inherit distutils-r1
DESCRIPTION="Python interface for the GNU scientific library (gsl)"
HOMEPAGE="https://github.com/pygsl/pygsl"
-SRC_URI="https://github.com/pygsl/pygsl/archive/v${PV}.tar.gz -> ${P}.gh.tar.gz"
+SRC_URI="https://github.com/pygsl/pygsl/archive/v.${PV}.tar.gz -> ${P}.gh.tar.gz"
+S="${WORKDIR}/${PN}-v.${PV}"
LICENSE="GPL-2"
SLOT="0"
@@ -27,12 +28,7 @@ DEPEND="
"
distutils_enable_sphinx doc dev-python/sphinx-rtd-theme
-distutils_enable_tests unittest
-
-python_configure() {
- esetup.py config
- default
-}
+distutils_enable_tests pytest
src_install() {
use examples && dodoc -r examples
diff --git a/dev-python/pylint/Manifest b/dev-python/pylint/Manifest
index 7314df6d862d..e2f1f8c93b83 100644
--- a/dev-python/pylint/Manifest
+++ b/dev-python/pylint/Manifest
@@ -1,2 +1,3 @@
DIST pylint-3.1.0.gh.tar.gz 1433040 BLAKE2B a224af608fa5ccb256c18073a70f82c399ad23ff6df65f7ae3504c67060f5ba1cd36022c7d53a42f0f93bd4648340433601d2f479bef41a4281e8041a9d15715 SHA512 bb7f09fa8b2c6f218c0e4d74ec2d7bbcb5e9d9fa8c2aeae5a1bf899f25080251609f284959fab14dd93cc5dd911688e25d3d4e1e030a1790578bc78ef1ce2bf7
DIST pylint-3.1.1.gh.tar.gz 1433456 BLAKE2B f51e253228b9bb2bddd2edac76c11ae1e5c712e755665bf3f808da832af313626037aded39eeb75941b7462a87668ea2de307740bd6a736d3130aa10850b5c9f SHA512 66a30a45a1ac816a1e2ff16ea774fb5b5d646f89645c8f551ab4a65feea3076e6bc1b54ff1b71e5d8586f344c02b0e85c9b34d2c5b0afba115fd92cb7cb0a3f1
+DIST pylint-3.2.0.gh.tar.gz 1440470 BLAKE2B 428222378bdcf48ab05792144548a8d050115ecac84be72922839702a11247198a959098f3aa94b5c688671ce846386de35c4d870598912be26900d98c188f7d SHA512 14368efe598d074394effc5d90764d49b8680dfafea0837568e22ab9783de664e0d7c02491bf8c94c1b2bbe8d48018063f45a25ebd04c7813ac8e6bba7786109
diff --git a/dev-python/pylint/pylint-3.2.0.ebuild b/dev-python/pylint/pylint-3.2.0.ebuild
new file mode 100644
index 000000000000..ab6346709dc8
--- /dev/null
+++ b/dev-python/pylint/pylint-3.2.0.ebuild
@@ -0,0 +1,92 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{8,9,10,11,12} pypy3 )
+PYTHON_REQ_USE="threads(+)"
+
+inherit distutils-r1
+
+MY_P=${P/_beta/b}
+DESCRIPTION="Python code static checker"
+HOMEPAGE="
+ https://pypi.org/project/pylint/
+ https://github.com/pylint-dev/pylint/
+"
+SRC_URI="
+ https://github.com/pylint-dev/pylint/archive/v${PV/_beta/b}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="examples"
+
+RDEPEND="
+ =dev-python/astroid-3.2*[${PYTHON_USEDEP}]
+ >=dev-python/dill-0.3.7[${PYTHON_USEDEP}]
+ >=dev-python/isort-4.2.5[${PYTHON_USEDEP}]
+ <dev-python/isort-6[${PYTHON_USEDEP}]
+ >=dev-python/mccabe-0.6[${PYTHON_USEDEP}]
+ <dev-python/mccabe-0.8[${PYTHON_USEDEP}]
+ >=dev-python/platformdirs-2.2.0[${PYTHON_USEDEP}]
+ >=dev-python/tomlkit-0.10.1[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ >=dev-python/tomli-1.1.0[${PYTHON_USEDEP}]
+ ' 3.10)
+"
+BDEPEND="
+ test? (
+ $(python_gen_cond_dep '
+ >=dev-python/GitPython-3[${PYTHON_USEDEP}]
+ ' 'python*' )
+ <dev-python/pytest-8[${PYTHON_USEDEP}]
+ dev-python/pytest-timeout[${PYTHON_USEDEP}]
+ dev-python/typing-extensions[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # TODO
+ 'tests/test_functional.py::test_functional[dataclass_with_field]'
+ 'tests/test_functional.py::test_functional[no_name_in_module]'
+ 'tests/test_functional.py::test_functional[recursion_error_3159]'
+ 'tests/test_functional.py::test_functional[shadowed_import]'
+ 'tests/test_functional.py::test_functional[use_yield_from]'
+ 'tests/test_functional.py::test_functional[wrong_import_order]'
+ )
+ local EPYTEST_IGNORE=(
+ # No need to run the benchmarks
+ tests/benchmark/test_baseline_benchmarks.py
+ )
+
+ if ! has_version "dev-python/GitPython[${PYTHON_USEDEP}]"; then
+ EPYTEST_IGNORE+=(
+ tests/profile/test_profile_against_externals.py
+ tests/testutils/_primer/test_package_to_lint.py
+ tests/testutils/_primer/test_primer.py
+ )
+ fi
+
+ rm -rf pylint || die
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest -p timeout
+}
+
+python_install_all() {
+ if use examples ; then
+ docompress -x "/usr/share/doc/${PF}/examples"
+ docinto examples
+ dodoc -r examples/.
+ fi
+
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/pymemcache/pymemcache-4.0.0.ebuild b/dev-python/pymemcache/pymemcache-4.0.0.ebuild
index 933138e1db36..98b68788da2d 100644
--- a/dev-python/pymemcache/pymemcache-4.0.0.ebuild
+++ b/dev-python/pymemcache/pymemcache-4.0.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2022 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
diff --git a/dev-python/pyodbc/Manifest b/dev-python/pyodbc/Manifest
index d705d9525afd..2159c38d9e47 100644
--- a/dev-python/pyodbc/Manifest
+++ b/dev-python/pyodbc/Manifest
@@ -1 +1 @@
-DIST pyodbc-4.0.35.tar.gz 273300 BLAKE2B cda55c3f880f5b8e243090a8150095e323bce5a28006d6105d8fcf4724a1f4219314591a4e53fc38844607d7714dffa5a221cd89c08dd5725aec251ca1977a18 SHA512 63b5191f5b57379e4767f94ecc83f80c73a3d40e7479753ccd7ff5ca27961be526bbf5ec169f9ca17c2ef7bd521507898be9b95110e290c4c69e1974c4c053f2
+DIST pyodbc-5.1.0.tar.gz 115450 BLAKE2B 8080db700abb952ae60045825f76e73a3d4a42f13c05e48eeb06574d5535f34345aa8bf2710730430229cb31b3d73c9fcb250d8d0fddabf94ecfcb24518bf931 SHA512 78817864d30048eed0c670a30e1cc66bc72edd6c21d069a5cc5831ed180b25a5b30d2bf2313628431943defbae66c2df96e90781ef17bb8929622b9f49cfcaab
diff --git a/dev-python/pyodbc/pyodbc-4.0.35.ebuild b/dev-python/pyodbc/pyodbc-4.0.35.ebuild
deleted file mode 100644
index bfee37b474e9..000000000000
--- a/dev-python/pyodbc/pyodbc-4.0.35.ebuild
+++ /dev/null
@@ -1,53 +0,0 @@
-# Copyright 1999-2023 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-# No pypy3 support: https://github.com/mkleehammer/pyodbc/issues/915
-PYTHON_COMPAT=( python3_{8,9,10,11,12} )
-DISTUTILS_USE_PEP517=setuptools
-inherit databases edo distutils-r1 optfeature pypi
-
-DESCRIPTION="Python ODBC library"
-HOMEPAGE="
- https://pypi.org/project/pyodbc/
- https://github.com/mkleehammer/pyodbc
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~amd64"
-IUSE="mssql"
-
-RDEPEND=">=dev-db/unixODBC-2.3.0"
-DEPEND="${RDEPEND}"
-BDEPEND="
- test? (
- ${DATABASES_DEPEND[mysql]}
- dev-db/myodbc:8.0
- )
-"
-
-distutils_enable_tests pytest
-
-python_test() {
- edo ${EPYTHON} tests3/run_tests.py -vv \
- --mysql "DRIVER=/usr/$(get_libdir)/myodbc-8.0/libmyodbc8a.so;SERVER=localhost;PORT=44444;DATABASE=test"
-}
-
-src_test() {
- emysql --start 44444
- distutils-r1_src_test
- emysql --stop
-}
-
-src_install() {
- distutils-r1_src_install
- rm "${D}/usr/pyodbc.pyi" || die
-}
-
-pkg_postinst() {
- optfeature "MS SQL Server support" dev-db/freetds-0.64[odbc]
- optfeature "MySQL support" dev-db/myodbc
- optfeature "PostgreSQL support" dev-db/psqlodbc
-}
diff --git a/dev-python/pyodbc/pyodbc-5.1.0.ebuild b/dev-python/pyodbc/pyodbc-5.1.0.ebuild
new file mode 100644
index 000000000000..90bb204047a5
--- /dev/null
+++ b/dev-python/pyodbc/pyodbc-5.1.0.ebuild
@@ -0,0 +1,64 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{8,9,10,11,12} ) #py3.13 doesn't compile
+
+inherit databases distutils-r1 optfeature pypi
+
+DESCRIPTION="Python ODBC library"
+HOMEPAGE="
+ https://pypi.org/project/pyodbc/
+ https://github.com/mkleehammer/pyodbc
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="mssql"
+
+RDEPEND=">=dev-db/unixODBC-2.3.0"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ test? (
+ ${DATABASES_DEPEND[mysql]}
+ dev-db/myodbc:8.0
+ )
+"
+
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # Broken test, generates a string longer than 4000 characters
+ tests/mysql_test.py::test_varchar
+)
+
+EPYTEST_IGNORE=(
+ # No easy way to run an SqlServer during tests
+ tests/sqlserver_test.py
+)
+
+python_test() {
+ export PYODBC_MYSQL="DRIVER=/usr/$(get_libdir)/myodbc-8.0/libmyodbc8a.so;SERVER=localhost;PORT=44444;DATABASE=test"
+ export PYODBC_POSTGRESQL="DRIVER=/usr/$(get_libdir)/psqlodbcw.so;SERVER=localhost;PORT=44445;DATABASE=test;UID=postgres"
+ epytest
+}
+
+src_test() {
+ emysql --start 44444
+ epostgres --start 44445
+ psql -U postgres -h 127.0.0.1 -p 44445 <<EOF
+CREATE DATABASE test OWNER postgres
+EOF
+ distutils-r1_src_test
+ epostgres --stop
+ emysql --stop
+}
+
+pkg_postinst() {
+ optfeature "MySQL support" dev-db/myodbc
+ optfeature "PostgreSQL support" dev-db/psqlodbc
+}
diff --git a/dev-python/pyproject-fmt-rust/Manifest b/dev-python/pyproject-fmt-rust/Manifest
index 9cade297695d..07e9bf99f8a2 100644
--- a/dev-python/pyproject-fmt-rust/Manifest
+++ b/dev-python/pyproject-fmt-rust/Manifest
@@ -61,6 +61,7 @@ DIST pyo3-macros-backend-0.21.2.crate 58088 BLAKE2B 05dd49983c8aeddc47cd94f6cd58
DIST pyproject_fmt_rust-1.0.1.tar.gz 28922 BLAKE2B e2ba8580a4b64f6ae4e0608ebc9f7e7f5b7fa736b64fab199eaeed1c3e1453d4fb12c17d1e3a924191c023550b704dc6ea12fcf739c4c22f6987f952c0a3dd4d SHA512 f14629a95c22bc1469c198f90c7da80e88a82251b8a25c013748a2f0c32041cf9462ea728a5e5e440757b272d48b0396fc8fe67fe852effbfd769d50fe24f16d
DIST pyproject_fmt_rust-1.0.4.tar.gz 28896 BLAKE2B d2a8520cda6f155dc0d8090f40466f2edb72f329f3c6c22bdd6a202b09297e3160b6aa54360cb77d68b797a767a2fda08a7cb296f25c4770959f3a114a22e323 SHA512 d41d3e3cba0ec83c23071291270376ed835f05dcb7759ac4e88208c5eebd3e040b0226aa833fdf3ca25e60ddb6c3a932196e30d51ddca05771b6e20440d1406c
DIST pyproject_fmt_rust-1.0.6.tar.gz 29264 BLAKE2B 1d3e2636f09b376590450573d9e7c6e2892b8d495674e08af5a84f7a08cd644550f5fa4d2c3133286b38086a6c08d335a0b3cb67bf6bbaf1a139f21fafc7cb2c SHA512 cca3244d63f5082bf3f3b54982af2f5b0a0bba5c5e768552a3f079fa647a5aa9682038fec0ee55ff6c67efaa13e728d74821dee6229a6217bdf6ab055b887c70
+DIST pyproject_fmt_rust-1.1.0.tar.gz 32970 BLAKE2B 57b35294ab4fd84d13c76463f7b6461169c6e661a9e456d6955d9226d7bbd85293e96a6838fa126af36ac135a5323a6d3009d2c9444eaa76f654f8b158cf4802 SHA512 ccead88b5d31fc00e1c51296d79846146da4804702824da65dec2b5b85a83deac82cf70101f91bf52c9e5228cac16dafb8556bdca95efcc96c6fe1f02d94cf3e
DIST quote-1.0.36.crate 28507 BLAKE2B b93495163ed205e33543ed45f084870240d479071d643704b6e348fb9ada6e1d8401893c13348b9964f4b6b17ddb96cb5458eec540f0d761655fcb96a4cd9129 SHA512 f1f002a912692f7ffd4912ca980ec57ff4aca3a7d9e2e42e9e3409e2105c9f59d86c05719f6af309bccaef2f8843b0848a6e3afda3356e045d8e7cc5956ae685
DIST redox_syscall-0.4.1.crate 24858 BLAKE2B c3301137a0b84e03b09d28dfa377ab3bea74d574a08cee21d35713b278d8b5b30ca2a1d73a0981baeb4644cbb88c86c8eb15ab3bb2692e38b93e6b35fab4e0da SHA512 073ed9d96090cf46eab9877742277a013c62d8da86d9caf2310b4fa868af306511936553579e01309f27067d344226cc8dc5e3aef01d9b900da2febd33848f8d
DIST regex-1.10.4.crate 253191 BLAKE2B 08bdb925efbea1ee9f885a89ec6b4692e39d7b17039f788e5b3c1dbfb7847d4f53b67f0c61e4085af7ef4901e67e33ea94948668bf706fef19b4102a06ef0447 SHA512 88ef121a51759f418d5dc01607a6e02651bd00343dae92962c02a80f30343d3f079a0375457780ce46bf205ca38f279b03989154638199fe2fcede10554bf21b
diff --git a/dev-python/pyproject-fmt-rust/pyproject-fmt-rust-1.1.0.ebuild b/dev-python/pyproject-fmt-rust/pyproject-fmt-rust-1.1.0.ebuild
new file mode 100644
index 000000000000..ce9c2032a8d8
--- /dev/null
+++ b/dev-python/pyproject-fmt-rust/pyproject-fmt-rust-1.1.0.ebuild
@@ -0,0 +1,159 @@
+# Copyright 2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=maturin
+PYTHON_COMPAT=( python3_{8,9,10,11,12} pypy3 )
+
+CRATES="
+ ahash@0.8.11
+ aho-corasick@1.1.3
+ any_ascii@0.1.7
+ arc-swap@1.7.1
+ autocfg@1.2.0
+ beef@0.5.2
+ bitflags@1.3.2
+ bstr@1.9.1
+ cfg-if@1.0.0
+ countme@3.0.1
+ deranged@0.3.11
+ derivative@2.2.0
+ either@1.11.0
+ fnv@1.0.7
+ form_urlencoded@1.2.1
+ futures-channel@0.3.30
+ futures-core@0.3.30
+ futures-executor@0.3.30
+ futures-io@0.3.30
+ futures-macro@0.3.30
+ futures-sink@0.3.30
+ futures-task@0.3.30
+ futures-timer@3.0.3
+ futures-util@0.3.30
+ futures@0.3.30
+ getrandom@0.2.14
+ glob@0.3.1
+ globset@0.4.14
+ hashbrown@0.14.3
+ heck@0.4.1
+ idna@0.5.0
+ indoc@2.0.5
+ itertools@0.10.5
+ itoa@1.0.11
+ lexical-sort@0.3.1
+ libc@0.2.153
+ lock_api@0.4.11
+ log@0.4.21
+ logos-derive@0.12.1
+ logos@0.12.1
+ memchr@2.7.2
+ memoffset@0.9.1
+ num-conv@0.1.0
+ once_cell@1.19.0
+ parking_lot@0.12.1
+ parking_lot_core@0.9.9
+ pep440_rs@0.6.0
+ pep508_rs@0.6.0
+ percent-encoding@2.3.1
+ pin-project-lite@0.2.14
+ pin-utils@0.1.0
+ portable-atomic@1.6.0
+ powerfmt@0.2.0
+ proc-macro2@1.0.81
+ pyo3-build-config@0.21.2
+ pyo3-ffi@0.21.2
+ pyo3-macros-backend@0.21.2
+ pyo3-macros@0.21.2
+ pyo3@0.21.2
+ quote@1.0.36
+ redox_syscall@0.4.1
+ regex-automata@0.4.6
+ regex-syntax@0.6.29
+ regex-syntax@0.8.3
+ regex@1.10.4
+ relative-path@1.9.2
+ rowan@0.15.15
+ rstest@0.19.0
+ rstest_macros@0.19.0
+ rustc-hash@1.1.0
+ rustc_version@0.4.0
+ ryu@1.0.17
+ scopeguard@1.2.0
+ semver@1.0.22
+ serde@1.0.198
+ serde_derive@1.0.198
+ serde_json@1.0.116
+ slab@0.4.9
+ smallvec@1.13.2
+ syn@1.0.109
+ syn@2.0.60
+ taplo@0.13.0
+ target-lexicon@0.12.14
+ text-size@1.1.1
+ thiserror-impl@1.0.59
+ thiserror@1.0.59
+ time-core@0.1.2
+ time-macros@0.2.18
+ time@0.3.36
+ tinyvec@1.6.0
+ tinyvec_macros@0.1.1
+ tracing-attributes@0.1.27
+ tracing-core@0.1.32
+ tracing@0.1.40
+ unicode-bidi@0.3.15
+ unicode-ident@1.0.12
+ unicode-normalization@0.1.23
+ unicode-width@0.1.12
+ unindent@0.2.3
+ unscanny@0.1.0
+ url@2.5.0
+ urlencoding@2.1.3
+ version_check@0.9.4
+ wasi@0.11.0+wasi-snapshot-preview1
+ windows-targets@0.48.5
+ windows_aarch64_gnullvm@0.48.5
+ windows_aarch64_msvc@0.48.5
+ windows_i686_gnu@0.48.5
+ windows_i686_msvc@0.48.5
+ windows_x86_64_gnu@0.48.5
+ windows_x86_64_gnullvm@0.48.5
+ windows_x86_64_msvc@0.48.5
+ zerocopy-derive@0.7.32
+ zerocopy@0.7.32
+"
+
+inherit cargo distutils-r1 pypi
+
+DESCRIPTION="Format your pyproject.toml file (Rust extension)"
+HOMEPAGE="
+ https://github.com/tox-dev/pyproject-fmt-rust/
+ https://pypi.org/project/pyproject-fmt-rust/
+"
+SRC_URI+="
+ ${CARGO_CRATE_URIS}
+"
+
+LICENSE="MIT"
+# Dependent crate licenses
+LICENSE+="
+ Apache-2.0-with-LLVM-exceptions ISC MIT Unicode-DFS-2016
+ || ( Apache-2.0 BSD-2 )
+ || ( Apache-2.0 Boost-1.0 )
+"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~s390 ~sparc ~x86"
+
+distutils_enable_tests pytest
+
+QA_FLAGS_IGNORED="usr/lib/py.*/site-packages/pyproject_fmt_rust/_lib.*.so"
+
+src_prepare() {
+ sed -i -e '/strip/d' pyproject.toml || die
+ distutils-r1_src_prepare
+}
+
+python_test_all() {
+ cargo_src_test
+}
diff --git a/dev-python/pyproject-fmt/Manifest b/dev-python/pyproject-fmt/Manifest
index fc26781b36cc..5abda57b1698 100644
--- a/dev-python/pyproject-fmt/Manifest
+++ b/dev-python/pyproject-fmt/Manifest
@@ -2,3 +2,4 @@ DIST pyproject_fmt-1.8.0.tar.gz 16696 BLAKE2B 1614fd6da4bb7be818825138b69b826b71
DIST pyproject_fmt-2.0.2.tar.gz 8647 BLAKE2B aae92d952883adce7ee6bd92a29517064dfd25ed6a90ca4543ec4093ce57bb17d2315134d5709d084e17098680a861014fc35d18feeac17ba9c9cca4d501959a SHA512 750f8006a30425ccfcd28909f06208344776a250698025f7f1c8a33d7316e4dfe9f06baea6050848691940846ea1ef3dfdd1a7878c72bb611f1a6b9b2bed3ff7
DIST pyproject_fmt-2.0.3.tar.gz 8646 BLAKE2B 83b5984f513341e10fabf81eeb2466c54502da78e0d722795f814241dbee66f507a9167df7ef7b4654ab1178755eb6d976dab9954e8ae0924794841a39cc952a SHA512 e74c2d28cfafacbccc8b55600004353d2633c8946a6abc894e73e40f173794b2845eea50f44808009079161b3ab1067c95696080bdcfff9d387bfe04d9fd119d
DIST pyproject_fmt-2.0.4.tar.gz 8648 BLAKE2B 8886994d483c7829b947b4b53dd6808702f61e1177e4f24794cff56218199de990358cd27451a16a2583a73004438aedefc1999bdf9295e03c4b40388a94f0e6 SHA512 d20cde82082e4bcd3504eeb43bc1c3979cc55ad0522c8e1b907bfcf0af0c8203a53ef85987416a79c1259ab841d8bb71a5552b07ac2585dd47a8b278a0100110
+DIST pyproject_fmt-2.1.0.tar.gz 9012 BLAKE2B 5ddc95d9f5ef322f1895772d63a3d6a800172d57655f795d74a077628020ab54ee1a4ef52b3a317504567ce2a13b4c6cd229f7ee05dbcc5fecabb0762679f12e SHA512 00a9541c61ca1924a78a48736962df39e055cf61cd2a312dc0fd2c7efb247d504f7e747912d328e689de25049c944cc2b422dc6c74c1c1e910b6294bd2306944
diff --git a/dev-python/pyproject-fmt/pyproject-fmt-2.1.0.ebuild b/dev-python/pyproject-fmt/pyproject-fmt-2.1.0.ebuild
new file mode 100644
index 000000000000..74f3b326d769
--- /dev/null
+++ b/dev-python/pyproject-fmt/pyproject-fmt-2.1.0.ebuild
@@ -0,0 +1,36 @@
+# Copyright 2022-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{8,9,10,11,12} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Format your pyproject.toml file"
+HOMEPAGE="
+ https://github.com/tox-dev/pyproject-fmt/
+ https://pypi.org/project/pyproject-fmt/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~s390 ~sparc ~x86"
+
+RDEPEND="
+ ~dev-python/pyproject-fmt-rust-1.1.0[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ >=dev-python/tomli-2.0.1[${PYTHON_USEDEP}]
+ ' 3.10)
+"
+# tox is called as a subprocess, to get targets from tox.ini
+BDEPEND="
+ dev-python/hatch-vcs[${PYTHON_USEDEP}]
+ test? (
+ >=dev-python/pytest-mock-3.10[${PYTHON_USEDEP}]
+ dev-python/tox
+ )
+"
+
+distutils_enable_tests pytest
diff --git a/dev-python/pytest-click/pytest-click-1.1.0.ebuild b/dev-python/pytest-click/pytest-click-1.1.0.ebuild
index 77c3d343e1b7..3f5156ac907f 100644
--- a/dev-python/pytest-click/pytest-click-1.1.0.ebuild
+++ b/dev-python/pytest-click/pytest-click-1.1.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2022 Gentoo Authors
+# Copyright 2022-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
diff --git a/dev-python/readability-lxml/Manifest b/dev-python/readability-lxml/Manifest
index 50da2ee3e0b9..bf47cccb0498 100644
--- a/dev-python/readability-lxml/Manifest
+++ b/dev-python/readability-lxml/Manifest
@@ -1,2 +1 @@
-DIST readability-lxml-0.6.1.tar.gz 13741 BLAKE2B 8bae46033e6eb3c171869746291a856267bc8f64ae088969405c5920229447fa470b6e14ea8b32b380c43d30e83ad9371149181d293bbfca6ff13fa271da3d74 SHA512 f7bead871dc84e2cc6dac18ced3f9fa223cd3961204330064e338b2e822ba9af58beb43be42b7f61a7cfb761f7c1d7a339d428c310d6be34b7546328f1eeb276
DIST readability-lxml-0.8.1.gh.tar.gz 78871 BLAKE2B ef179d8bb727c0630e3af763a18170c1956be5cd3b8ad1cfe614b233964225e2e73b814c4ad628780eaffca21881d1ed276f45248a656b8c37ef1e6ccb121e85 SHA512 c5b296a35606f65643f72e7d9ee07d6820a7a6a36ce97350673ea6076b704f7ed72f92ded47dac56690cdf3776eb8fadbb02ea234355a9982d4127976b2e6c6e
diff --git a/dev-python/readability-lxml/readability-lxml-0.6.1.ebuild b/dev-python/readability-lxml/readability-lxml-0.6.1.ebuild
deleted file mode 100644
index fdf3d046542d..000000000000
--- a/dev-python/readability-lxml/readability-lxml-0.6.1.ebuild
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2019-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-PYTHON_COMPAT=( python3_{8,9,10,11,12} )
-PYPI_NO_NORMALIZE=1
-inherit distutils-r1 pypi
-
-DESCRIPTION="fast html to text parser (article readability tool)"
-HOMEPAGE="https://github.com/buriy/python-readability"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~amd64"
-
-DEPEND="
- dev-python/setuptools[${PYTHON_USEDEP}]
- dev-python/chardet[${PYTHON_USEDEP}]
- dev-python/lxml[${PYTHON_USEDEP}]
- dev-python/cssselect[${PYTHON_USEDEP}]
-"
diff --git a/dev-python/readability-lxml/readability-lxml-0.8.1.ebuild b/dev-python/readability-lxml/readability-lxml-0.8.1.ebuild
index 830f82c1ac6a..a025d507bf78 100644
--- a/dev-python/readability-lxml/readability-lxml-0.8.1.ebuild
+++ b/dev-python/readability-lxml/readability-lxml-0.8.1.ebuild
@@ -1,9 +1,9 @@
-# Copyright 2019-2022 Gentoo Authors
+# Copyright 2019-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
-PYTHON_COMPAT=( python3_{8,9,10,11,12} pypy3 )
+PYTHON_COMPAT=( python3_{8,9,10,11,12} )
DISTUTILS_USE_PEP517=setuptools
inherit distutils-r1
@@ -23,6 +23,7 @@ KEYWORDS="~amd64"
RDEPEND="
dev-python/cssselect[${PYTHON_USEDEP}]
dev-python/lxml[${PYTHON_USEDEP}]
+ dev-python/lxml-html-clean[${PYTHON_USEDEP}]
|| (
dev-python/chardet[${PYTHON_USEDEP}]
( $(python_gen_cond_dep \
diff --git a/dev-python/rich/rich-13.7.1.ebuild b/dev-python/rich/rich-13.7.1.ebuild
index 47cac10dbb3d..bbc6eba68543 100644
--- a/dev-python/rich/rich-13.7.1.ebuild
+++ b/dev-python/rich/rich-13.7.1.ebuild
@@ -45,6 +45,18 @@ python_test() {
tests/test_inspect.py::test_inspect_integer_with_methods_python310only
)
;;
+ python3.13)
+ EPYTEST_DESELECT+=(
+ tests/test_inspect.py::test_inspect_builtin_function_except_python311
+ tests/test_inspect.py::test_inspect_integer_with_methods_python38_and_python39
+ tests/test_inspect.py::test_inspect_integer_with_methods_python310only
+ tests/test_inspect.py::test_inspect_integer_with_methods_python311
+ tests/test_pretty.py::test_pretty_dataclass
+ tests/test_pretty.py::test_reference_cycle_dataclass
+ tests/test_pretty.py::test_max_depth_dataclass
+ tests/test_pretty.py::test_attrs_broken
+ )
+ ;;
esac
local -x COLUMNS=80
diff --git a/dev-python/scikit-build-core/Manifest b/dev-python/scikit-build-core/Manifest
index 1aebda6cdcc5..ace7f39d2b6d 100644
--- a/dev-python/scikit-build-core/Manifest
+++ b/dev-python/scikit-build-core/Manifest
@@ -1,2 +1,3 @@
DIST scikit_build_core-0.9.2.tar.gz 225078 BLAKE2B 8d50e82754013f23a2216d269757fce5b56c5fa99e2f3b93e3bb65e50730799f2874d0eaa71681e248eeb30c443cde03a5bd447732b764852f2069ed18ea98d3 SHA512 c94cb9b109c994bedaba0e82de15caaf4fc4ae5c08375324aeb60f8d05911cc958a70c0430d35b23ad9792d39ab0312ff607b0587cd55eb4fe68ae4f28eed1d9
DIST scikit_build_core-0.9.3.tar.gz 226732 BLAKE2B b15985eb4bf9cd44e75cf3ea1db4a1541dbac2310927608ab1ec31d5015ef4433290894755230ff5d691d69d90bce1ac92966209e46091d7f4d76099f33cca0a SHA512 e25adbcd2037471046376d3877d7a4a5bea42f3f9c13beaec646ed6e7a254138d0fce050309f634b61ec75c83ad76e34ebfa0bfa403ae394c25870cf15e0ff7a
+DIST scikit_build_core-0.9.4.tar.gz 228198 BLAKE2B 86987ce34ed840d22a84a56fa0b62e8b6420f6f91763199945d5dfd0709ffb3b12778e996611cc652364637b8b8e0013cf39322fe322f1c2d3bbc22670c52876 SHA512 bc5252bf1f52e7fa0ea4d9e27d57fbf82a35e2061dfd8b8fbecc32b2da0ae88a2c3197bbece28f1285c1fb33ce91f27907bec093d76b937b382fa7dca072d0d9
diff --git a/dev-python/scikit-build-core/scikit-build-core-0.9.4.ebuild b/dev-python/scikit-build-core/scikit-build-core-0.9.4.ebuild
new file mode 100644
index 000000000000..853b0772cfe7
--- /dev/null
+++ b/dev-python/scikit-build-core/scikit-build-core-0.9.4.ebuild
@@ -0,0 +1,63 @@
+# Copyright 2023-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{8,9,10,11,12} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Build backend for CMake based projects"
+HOMEPAGE="
+ https://github.com/scikit-build/scikit-build-core/
+ https://pypi.org/project/scikit-build-core/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+# we always want [pyproject] extra
+RDEPEND="
+ app-alternatives/ninja
+ dev-build/cmake
+ >=dev-python/packaging-21.3[${PYTHON_USEDEP}]
+ >=dev-python/pathspec-0.10.1[${PYTHON_USEDEP}]
+ >=dev-python/pyproject-metadata-0.5[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/exceptiongroup[${PYTHON_USEDEP}]
+ >=dev-python/tomli-1.2.2[${PYTHON_USEDEP}]
+ ' 3.10)
+"
+BDEPEND="
+ dev-python/hatch-vcs[${PYTHON_USEDEP}]
+ test? (
+ dev-python/build[${PYTHON_USEDEP}]
+ >=dev-python/cattrs-22.2.0[${PYTHON_USEDEP}]
+ dev-python/fastjsonschema[${PYTHON_USEDEP}]
+ dev-python/pybind11[${PYTHON_USEDEP}]
+ >=dev-python/pytest-subprocess-1.5[${PYTHON_USEDEP}]
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ dev-python/virtualenv[${PYTHON_USEDEP}]
+ dev-python/wheel[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+python_test() {
+ local _EPYTEST_DESELECT=(
+ # TODO / we don't package validate_pyproject anyway
+ tests/test_schema.py::test_compare_schemas
+ # setuptools now respects PEP 625
+ tests/test_setuptools_pep517.py::test_pep517_sdist
+ )
+ local EPYTEST_IGNORE=(
+ # needs unpackaged validate_pyproject
+ tests/test_schema.py
+ )
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest -p subprocess -m "not isolated and not network"
+}
diff --git a/dev-python/scramp/scramp-1.4.4.ebuild b/dev-python/scramp/scramp-1.4.4.ebuild
index a022e69fe538..d9be09a1868c 100644
--- a/dev-python/scramp/scramp-1.4.4.ebuild
+++ b/dev-python/scramp/scramp-1.4.4.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2022 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
diff --git a/dev-python/sphinx-argparse-cli/sphinx-argparse-cli-1.11.1.ebuild b/dev-python/sphinx-argparse-cli/sphinx-argparse-cli-1.11.1.ebuild
index 1eb05716c2dc..eaa6267d83d5 100644
--- a/dev-python/sphinx-argparse-cli/sphinx-argparse-cli-1.11.1.ebuild
+++ b/dev-python/sphinx-argparse-cli/sphinx-argparse-cli-1.11.1.ebuild
@@ -1,10 +1,10 @@
-# Copyright 2021-2023 Gentoo Authors
+# Copyright 2021-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DISTUTILS_USE_PEP517=hatchling
-PYTHON_COMPAT=( python3_{8,9,10,11,12} ) # no pypy3 support
+PYTHON_COMPAT=( python3_{8,9,10,11,12} )
inherit distutils-r1
DESCRIPTION="Render CLI arguments (sub-commands friendly) defined by argparse module"
diff --git a/dev-python/sphinx-click/Manifest b/dev-python/sphinx-click/Manifest
index 5a5a6771e03f..5e3d8fc71c60 100644
--- a/dev-python/sphinx-click/Manifest
+++ b/dev-python/sphinx-click/Manifest
@@ -1,2 +1 @@
-DIST sphinx-click-4.1.0.tar.gz 21146 BLAKE2B 0510bdcfa051e1272796ef049b4fe40e936526937b99bec5c20b714507d285a5524bd341f41042a74c1b6715fbda7a892e14aee08a397df61ff47f39b2ebc52a SHA512 a57efbcfe8ab4f82298917937b573480401a51ce81889eb37b56f6eac0b2d6123a94a877f5bc460c4998c55040072453a48400f9c94d902a7cab6cd622d13d62
DIST sphinx-click-4.2.0.tar.gz 21265 BLAKE2B 3f0cd707d6eb26bb63d81cd86324b715eecbb85d038a94104599034563be024d4d4cab5ed488b1d1fb55d4f7c6abb599f48c96f8ea582be0c3d4a37169e7638d SHA512 9b9fee96b17242a1a2cfc097a49aaaa0134e47d250231481d13c438abfdd17b149adf2bde9c3591a94e4e17f02dc800c2b48002eb74994b43fec0d50ddb1083e
diff --git a/dev-python/sphinx-click/metadata.xml b/dev-python/sphinx-click/metadata.xml
index 67dfadfbf7ba..fe53f4292fdf 100644
--- a/dev-python/sphinx-click/metadata.xml
+++ b/dev-python/sphinx-click/metadata.xml
@@ -3,7 +3,7 @@
<pkgmetadata>
<longdescription lang="en">
sphinx-click is a Sphinx plugin that allows you to automatically extract documentation from a click-based application and include it in your docs.
- </longdescription>
+ </longdescription>
<upstream>
<bugs-to>https://github.com/click-contrib/sphinx-click/issues</bugs-to>
<doc>https://sphinx-click.readthedocs.io/en/latest</doc>
diff --git a/dev-python/sphinx-click/sphinx-click-4.1.0.ebuild b/dev-python/sphinx-click/sphinx-click-4.1.0.ebuild
deleted file mode 100644
index 9077839957d3..000000000000
--- a/dev-python/sphinx-click/sphinx-click-4.1.0.ebuild
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright 1999-2022 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYPI_NO_NORMALIZE=1
-PYTHON_COMPAT=( python3_{8,9,10,11,12} pypy3 )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Sphinx plugin to automatically document click-based applications"
-HOMEPAGE="
- https://github.com/click-contrib/sphinx-click
- https://pypi.org/project/sphinx-click/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~amd64"
-
-RDEPEND="
- >=dev-python/sphinx-2.0[${PYTHON_USEDEP}]
- >=dev-python/click-7.0[${PYTHON_USEDEP}]
- dev-python/docutils[${PYTHON_USEDEP}]
-"
-BDEPEND=">=dev-python/pbr-2.0[${PYTHON_USEDEP}]"
-
-distutils_enable_tests pytest
-distutils_enable_sphinx docs --no-autodoc
diff --git a/dev-python/sphinx-click/sphinx-click-4.2.0.ebuild b/dev-python/sphinx-click/sphinx-click-4.2.0.ebuild
index 9077839957d3..fa081072206d 100644
--- a/dev-python/sphinx-click/sphinx-click-4.2.0.ebuild
+++ b/dev-python/sphinx-click/sphinx-click-4.2.0.ebuild
@@ -1,8 +1,9 @@
-# Copyright 1999-2022 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
+DISTUTILS_USE_PEP517=setuptools
PYPI_NO_NORMALIZE=1
PYTHON_COMPAT=( python3_{8,9,10,11,12} pypy3 )
diff --git a/dev-python/sphinx-hoverxref/sphinx-hoverxref-1.3.0.ebuild b/dev-python/sphinx-hoverxref/sphinx-hoverxref-1.3.0.ebuild
index 4747d35e2f1e..f96f0e082dbf 100644
--- a/dev-python/sphinx-hoverxref/sphinx-hoverxref-1.3.0.ebuild
+++ b/dev-python/sphinx-hoverxref/sphinx-hoverxref-1.3.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2022 Gentoo Authors
+# Copyright 2022-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
diff --git a/dev-python/sphinx-rtd-dark-mode/sphinx-rtd-dark-mode-1.2.4.ebuild b/dev-python/sphinx-rtd-dark-mode/sphinx-rtd-dark-mode-1.2.4.ebuild
index 86f1d5416eb9..94ac9e543463 100644
--- a/dev-python/sphinx-rtd-dark-mode/sphinx-rtd-dark-mode-1.2.4.ebuild
+++ b/dev-python/sphinx-rtd-dark-mode/sphinx-rtd-dark-mode-1.2.4.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2022 Gentoo Authors
+# Copyright 2022-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
diff --git a/dev-python/stdlibs/Manifest b/dev-python/stdlibs/Manifest
index 86d1c8fdef6f..a13d366dc1ac 100644
--- a/dev-python/stdlibs/Manifest
+++ b/dev-python/stdlibs/Manifest
@@ -1,2 +1 @@
-DIST stdlibs-2022.3.16.tar.gz 22314 BLAKE2B 568df82f9635007aa35509c20445d1554c6e3dd1ca13a727bd27932ddf0f2cd68fb21b74e40bf0fbf359932ef50e9d35f3cf64ae6f0eeecde9303a8c1726e16e SHA512 b59721730f85351271c346379bec23da504051426276f360627b2d0aa4eb56ed66640321f20362f158933928e8f3fa986b8b419bbd3c309a63101ecd46f92a0e
DIST stdlibs-2022.6.8.tar.gz 22510 BLAKE2B 4daa85811da7c9b2c206182c6a8f45738311d751519670a53d184c1524aa9d953ed85281a8da8ea95fe6f4ce3c23d8ffdf5866ebb5ca7a88d877505ff4719c97 SHA512 085e2186a8e4bdc78a50cd4628d8f8a30703e5fc0b2b5b6d3c3e2a7ebae6fe776a04ef5049475b1c1246824962ff2283908572140ee2a2e6343b93e378f3e9ff
diff --git a/dev-python/stdlibs/stdlibs-2022.3.16.ebuild b/dev-python/stdlibs/stdlibs-2022.3.16.ebuild
deleted file mode 100644
index 11b8d40202c4..000000000000
--- a/dev-python/stdlibs/stdlibs-2022.3.16.ebuild
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright 1999-2022 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=flit
-PYTHON_COMPAT=( python3_{8,9,10,11,12} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="What's in the Python stdlib"
-HOMEPAGE="https://github.com/omnilib/stdlibs/"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~amd64"
-
-distutils_enable_tests unittest
diff --git a/dev-python/stdlibs/stdlibs-2022.6.8.ebuild b/dev-python/stdlibs/stdlibs-2022.6.8.ebuild
index 11b8d40202c4..d409f87259d6 100644
--- a/dev-python/stdlibs/stdlibs-2022.6.8.ebuild
+++ b/dev-python/stdlibs/stdlibs-2022.6.8.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2022 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
diff --git a/dev-python/trailrunner/trailrunner-1.2.1.ebuild b/dev-python/trailrunner/trailrunner-1.2.1.ebuild
index a36a795eb87e..b0f55b69b6f1 100644
--- a/dev-python/trailrunner/trailrunner-1.2.1.ebuild
+++ b/dev-python/trailrunner/trailrunner-1.2.1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2022 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
diff --git a/dev-python/urwid/Manifest b/dev-python/urwid/Manifest
index a3d77c9a3762..1c0b13f8668f 100644
--- a/dev-python/urwid/Manifest
+++ b/dev-python/urwid/Manifest
@@ -1 +1,2 @@
DIST urwid-2.6.11.tar.gz 847254 BLAKE2B af0f23f404bc926c378b14a124b5c9504ea282048acd943221ca85f69b86cc8435df7cffc0ed632b3a2067504aca528e560454855acf129518cf69535242a6a6 SHA512 351185673a4ed506a55e2142c0a65150987ac4b6c1176e10c497df6f69c9f4acdabb15ec45564554b9a720387eaa725854fbe4adc4d288ef519b754b17b2fb33
+DIST urwid-2.6.12.tar.gz 847508 BLAKE2B 9790f2bcb768ff859115c1eb1dd03899e49eff41a56540d24ab0a2340b43c23e0572bfe6b689033a37c579ed4860e67a6fb3ade913c5a9c9d68d4a7bb41e8dab SHA512 1b2c7de9f523fe6c80155fc039a2b9e9d416c27f7d52a41911443b0a057739526b755fcb9c901ce99ab8e1e7d1bb5ff2be5ab7c0251554d9d933c0235b44a8e8
diff --git a/dev-python/urwid/urwid-2.6.12.ebuild b/dev-python/urwid/urwid-2.6.12.ebuild
new file mode 100644
index 000000000000..d33150d89fcb
--- /dev/null
+++ b/dev-python/urwid/urwid-2.6.12.ebuild
@@ -0,0 +1,47 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{8,9,10,11,12} )
+PYTHON_REQ_USE="ncurses"
+
+inherit distutils-r1 optfeature pypi
+
+DESCRIPTION="Curses-based user interface library for Python"
+HOMEPAGE="
+ https://urwid.org/
+ https://pypi.org/project/urwid/
+ https://github.com/urwid/urwid/
+"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux"
+IUSE="examples"
+
+RDEPEND="
+ dev-python/typing-extensions[${PYTHON_USEDEP}]
+ dev-python/wcwidth[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ dev-python/setuptools-scm[${PYTHON_USEDEP}]
+"
+
+distutils_enable_tests unittest
+
+python_test() {
+ rm -rf urwid || die
+ eunittest
+}
+
+python_install_all() {
+ use examples && dodoc -r examples
+ distutils-r1_python_install_all
+}
+
+pkg_postinst() {
+ optfeature "Trio event loop" "dev-python/trio"
+}
diff --git a/dev-python/uv/Manifest b/dev-python/uv/Manifest
index d206bff79ae3..b6afdadd8f3e 100644
--- a/dev-python/uv/Manifest
+++ b/dev-python/uv/Manifest
@@ -8,3 +8,4 @@ DIST uv-0.1.42-crates.tar.xz 65954692 BLAKE2B ae5b41ebee15530577623f7592ddc1c08c
DIST uv-0.1.42.gh.tar.gz 1077448 BLAKE2B 84c4e5f6e35ac9a50ff3b1ba7b9cdd415a8e4dc2c153aec4a116892b2c567f91ddb67cd32937c2ed867bbfef26c13b3b75c17bc7728334c8db1c58f550d4e735 SHA512 e0451614d8a7f016f382a2c9eaee03cb015fa8c552258bbaa7329e7802b1013878bc16134e0232262fa588bbc724857fb1818e61cb2b948c333aba295ee6c4b8
DIST uv-0.1.43-crates.tar.xz 58012188 BLAKE2B dd8ebb52d8ec9b21149047e0e4dcbd531b743feeefc8c7e8a9289b52474043e1ece0af1ea3e010d5b0a1cdbf57ac89664bc853ff776e800550175948a26c5e08 SHA512 5d5b8d7665af0a0a1920541c8310c772cdb5657a6ba62b8566ab09f8a38cc8a86a75ce7fddb4ea37be0b2e4511b2aba25e984efe4ce7bb11ff50ca072eb00277
DIST uv-0.1.43.gh.tar.gz 1093053 BLAKE2B 7988799e9c978bce618ab66fd162a5995663f0da0d4f77fe0d8fb50bb1b535b8696d7fd4eb837e6b03703089aea883d0689d0e28bcda951655ee62bf92cfffd0 SHA512 3fd66d106fc09fdb616944a18dfeec33d0ecca5d985915b4efb09d77ceb0e3bff92577433c67d27ce3fb78cbc24ff8651639b5aceb6d39a72422481150a5adf3
+DIST uv-0.1.44.gh.tar.gz 1093698 BLAKE2B 2b39053518188d95555507751facad1ea0fcd935f6382bf3fea974d4542f6fb0429ca25dd58546e8e1b69fd3bb573657dc62d2438777a7baa0c9317c21fa83cb SHA512 d9f0ecf7a0b30855c69b9a135d76c53e077dd427c39d1dec9fe499cfe9afb1f0c6a528f451d3bc0eab5b29a43df5795f876b1ce61fa28b8913b114834c915b3b
diff --git a/dev-python/uv/uv-0.1.44.ebuild b/dev-python/uv/uv-0.1.44.ebuild
new file mode 100644
index 000000000000..0bc3cbb02e02
--- /dev/null
+++ b/dev-python/uv/uv-0.1.44.ebuild
@@ -0,0 +1,123 @@
+# Copyright 2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+CRATES="
+"
+
+declare -A GIT_CRATES=(
+ [async_zip]='https://github.com/charliermarsh/rs-async-zip;1dcb40cfe1bf5325a6fd4bfcf9894db40241f585;rs-async-zip-%commit%'
+ [pubgrub]='https://github.com/astral-sh/pubgrub;0e684a874c9fb8f74738cd8875524c80e3d4820b;pubgrub-%commit%'
+)
+
+inherit cargo check-reqs
+
+CRATE_P=${PN}-0.1.43
+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/${CRATE_P}-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="
+ dev-libs/libgit2:=
+"
+RDEPEND="
+ ${DEPEND}
+"
+BDEPEND="
+ >=virtual/rust-1.77
+ test? (
+ dev-lang/python:3.8
+ dev-lang/python:3.9
+ dev-lang/python:3.10
+ dev-lang/python:3.11
+ dev-lang/python:3.12
+ )
+"
+
+QA_FLAGS_IGNORED="usr/bin/.*"
+
+check_space() {
+ local CHECKREQS_DISK_BUILD=3G
+ use debug && CHECKREQS_DISK_BUILD=9G
+ check-reqs_pkg_setup
+}
+
+pkg_pretend() {
+ check_space
+}
+
+pkg_setup() {
+ check_space
+}
+
+src_prepare() {
+ # https://github.com/astral-sh/uv/pull/3569
+ eapply "${FILESDIR}/${PN}-0.1.43-test.patch"
+ default
+
+ # https://github.com/vorot93/tokio-tar/pull/23
+ # (fortunately uv already depends on portable-atomic, so we don't
+ # have to fight Cargo.lock)
+ cd "${WORKDIR}/cargo_home/gentoo/tokio-tar-0.3.1" || die
+ eapply "${FILESDIR}/tokio-tar-0.3.1-ppc.patch"
+}
+
+src_configure() {
+ local myfeatures=(
+ # from upstream defaults
+ flate2/zlib-ng
+ python
+ pypi
+ git
+ maturin
+ # skip tests that require specific patch version of the interpreter:
+ # python-patch
+ )
+
+ cargo_src_configure --no-default-features
+}
+
+src_compile() {
+ cd crates/uv || die
+ cargo_src_compile
+}
+
+src_test() {
+ cd crates/uv || die
+ cargo_src_test --no-fail-fast
+}
+
+src_install() {
+ cd crates/uv || die
+ cargo_src_install
+}
diff --git a/dev-python/volatile/volatile-2.1.0.ebuild b/dev-python/volatile/volatile-2.1.0.ebuild
index d6e620ebad61..f10adbc67f8c 100644
--- a/dev-python/volatile/volatile-2.1.0.ebuild
+++ b/dev-python/volatile/volatile-2.1.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2022 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
diff --git a/dev-python/webpy/webpy-0.62.ebuild b/dev-python/webpy/webpy-0.62.ebuild
index ad9430bb0c71..0c4c31221e43 100644
--- a/dev-python/webpy/webpy-0.62.ebuild
+++ b/dev-python/webpy/webpy-0.62.ebuild
@@ -1,8 +1,9 @@
-# Copyright 1999-2023 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
+DISTUTILS_USE_PEP517=setuptools
PYTHON_COMPAT=( python3_{8,9,10,11,12} )
inherit distutils-r1
diff --git a/dev-python/zopfli/zopfli-0.2.2.ebuild b/dev-python/zopfli/zopfli-0.2.2.ebuild
index 43eb1c1e76c8..9ade28d17d36 100644
--- a/dev-python/zopfli/zopfli-0.2.2.ebuild
+++ b/dev-python/zopfli/zopfli-0.2.2.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2023 Gentoo Authors
+# Copyright 2023-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8