summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
authorLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2025-12-31 20:19:02 +0000
committerLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2025-12-31 20:19:02 +0000
commita4e87863708e0c8dffd3750d50695de7274e9554 (patch)
tree90ff5f6d7a89ae3fb60849760f1c11d0eec715b0 /dev-python
parent2d2e72fe708ba301d75df9d83bdb90f2341c889e (diff)
downloadbaldeagleos-repo-a4e87863708e0c8dffd3750d50695de7274e9554.tar.gz
baldeagleos-repo-a4e87863708e0c8dffd3750d50695de7274e9554.tar.xz
baldeagleos-repo-a4e87863708e0c8dffd3750d50695de7274e9554.zip
Adding metadata
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/boto3/Manifest1
-rw-r--r--dev-python/boto3/boto3-1.42.19.ebuild53
-rw-r--r--dev-python/botocore/Manifest1
-rw-r--r--dev-python/botocore/botocore-1.42.19.ebuild67
-rw-r--r--dev-python/cbor2/Manifest3
-rw-r--r--dev-python/cbor2/cbor2-5.8.0.ebuild (renamed from dev-python/cbor2/cbor2-5.7.0.ebuild)9
-rw-r--r--dev-python/ipykernel/ipykernel-6.31.0.ebuild2
-rw-r--r--dev-python/ipykernel/ipykernel-7.1.0.ebuild2
-rw-r--r--dev-python/ipyparallel/ipyparallel-9.0.2.ebuild2
-rw-r--r--dev-python/ipython/ipython-9.7.0.ebuild2
-rw-r--r--dev-python/ipywidgets/ipywidgets-8.1.8.ebuild2
-rw-r--r--dev-python/jupyter-client/jupyter-client-8.6.3-r1.ebuild2
-rw-r--r--dev-python/jupyter-server-terminals/jupyter-server-terminals-0.5.3-r1.ebuild2
-rw-r--r--dev-python/jupyter-server/jupyter-server-2.17.0-r1.ebuild2
-rw-r--r--dev-python/matplotlib/Manifest3
-rw-r--r--dev-python/matplotlib/files/matplotlib-3.10.1-test.patch235
-rw-r--r--dev-python/matplotlib/matplotlib-3.10.1.ebuild323
-rw-r--r--dev-python/matplotlib/matplotlib-3.10.3.ebuild2
-rw-r--r--dev-python/matplotlib/matplotlib-3.10.5.ebuild330
-rw-r--r--dev-python/matplotlib/matplotlib-3.10.6.ebuild330
-rw-r--r--dev-python/memory-allocator/Manifest2
-rw-r--r--dev-python/memory-allocator/memory-allocator-0.2.0.ebuild36
-rw-r--r--dev-python/nbclient/nbclient-0.10.2-r1.ebuild2
-rw-r--r--dev-python/nbconvert/nbconvert-7.16.6-r1.ebuild2
-rw-r--r--dev-python/pyqt-builder/pyqt-builder-1.19.1.ebuild2
-rw-r--r--dev-python/pyqt5-sip/pyqt5-sip-12.17.2.ebuild2
-rw-r--r--dev-python/pyqt6-sip/pyqt6-sip-13.10.3.ebuild2
-rw-r--r--dev-python/pytest-jupyter/pytest-jupyter-0.11.0.ebuild2
-rw-r--r--dev-python/pytest-reserial/Manifest5
-rw-r--r--dev-python/pytest-reserial/pytest-reserial-0.4.3.ebuild26
-rw-r--r--dev-python/pytest-reserial/pytest-reserial-0.6.1.ebuild (renamed from dev-python/pytest-reserial/pytest-reserial-0.5.0.ebuild)2
-rw-r--r--dev-python/scipy/Manifest1
-rw-r--r--dev-python/scipy/scipy-1.17.0_rc2.ebuild181
-rw-r--r--dev-python/types-psutil/Manifest1
-rw-r--r--dev-python/types-psutil/types-psutil-7.2.1.20251231.ebuild16
-rw-r--r--dev-python/uv-build/Manifest1
-rw-r--r--dev-python/uv-build/uv-build-0.9.21.ebuild99
-rw-r--r--dev-python/uv/Manifest2
-rw-r--r--dev-python/uv/uv-0.9.21.ebuild168
39 files changed, 651 insertions, 1274 deletions
diff --git a/dev-python/boto3/Manifest b/dev-python/boto3/Manifest
index 177837befa1e..e73eb8b639ea 100644
--- a/dev-python/boto3/Manifest
+++ b/dev-python/boto3/Manifest
@@ -6,5 +6,6 @@ DIST boto3-1.42.15.gh.tar.gz 1064569 BLAKE2B 80f4bcdbc981f2d16f6b220086537bbf57c
DIST boto3-1.42.16.gh.tar.gz 1064829 BLAKE2B 315e8cec75fbc8d596fb41535cec5e9a7aff67bcc24df20d8a2ad0dbb9b8b2dde2238227f3fcfe47ce3244ce72182231de96396089adcd19802304fa0489ca35 SHA512 93ea18662be155e3bfb055f8e577ec42b84eb287cc62d7fb9fcdfdfb8c4db05b8e6c16e488f22cf7f66232fc86186e75d9c7511fe893b9eab32e9ae4685aa6d5
DIST boto3-1.42.17.gh.tar.gz 1067041 BLAKE2B 74c4adba3da630a0b8ccde824f1e96327299631b0ad54b47476ec8412a8d2a809b1aa7282c518b9c1e1d0913a96603a9feeb44da9cd5deb5d6852adbf1c0edba SHA512 f2c3ff7ce6c90c02c8e9c7107e7ab88ae126d1b709336e9483be9cfc4f39f96abf875fae27561ddf2816a6d03ba2a06ccad6b5e0a29fd51b57e94429ddae33b6
DIST boto3-1.42.18.gh.tar.gz 1067403 BLAKE2B 9e6011411eeef2a36bd94af01677930a49033312d02221ed94c06f27d8eea063c463d7fc2bee49e6e7e5166a9a57e3308dc63deb58fb47223e773ca7402af9a1 SHA512 1b4ba17130ab69eb057bf4f6ef4c30a52299dcc75853ec0702ff3620989a8c05d618e89da1e332b2ddee48536b47e6ab51e7376d23e8adfb5d82e2acdb60c90b
+DIST boto3-1.42.19.gh.tar.gz 1067744 BLAKE2B ecdb7b493e511e8f8c13520b3b26e1c1dfa14dd9b3a0bfdc242569a03da9a49a64df9b0ba9df0fa31b60a9602d885581626e9a1a90dc5ac522f3343d149fc74b SHA512 cc01aeff747ee9ddc60823964ace06ea47ab51f8344706b8196ee11571ef18bdfd67445a58ee65bd9da819285b7d6301293c3d98536bdd805dc889a11acafd34
DIST boto3-1.42.4.gh.tar.gz 1055570 BLAKE2B a9990bb04ce59111c6371536692c6e4d5440f3f0dc79e1ecc119652603bcd8bc15839400758999faffd7df9bda9efb4991393fcab32baa16c7a0e51ff7c5cc94 SHA512 95950ba80f31c3951a88237ff5edd1367285c3ab263c7f8ad1b7556d610d553dd4e2021fbbcc0d9bdcf578fe34ad9fcf6231511f54ee71917f69c1cdb6adab28
DIST boto3-1.42.9.gh.tar.gz 1059745 BLAKE2B 78fba4fe807a3ea8eea22cd81cff67c90cd36e281665545bc9d7dc9bfaa1089d668e1994ba6e950eedfe2cfa1495f192b43f8fdae2b9b8b6bd74b62e0ab699d8 SHA512 92ecb0d609ba2f7df6a444b9d840e2a070b22ec38f8ae3bd376e9473e5b4efbefc9bc924046cc6d79576967e33eed270633396171e6102331b58519021435fe8
diff --git a/dev-python/boto3/boto3-1.42.19.ebuild b/dev-python/boto3/boto3-1.42.19.ebuild
new file mode 100644
index 000000000000..b692316316e5
--- /dev/null
+++ b/dev-python/boto3/boto3-1.42.19.ebuild
@@ -0,0 +1,53 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..14} )
+
+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 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/botocore-${PV}[${PYTHON_USEDEP}]
+ >=dev-python/jmespath-0.7.1[${PYTHON_USEDEP}]
+ >=dev-python/s3transfer-0.16.0[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=()
+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() {
+ epytest tests/{functional,unit}
+}
diff --git a/dev-python/botocore/Manifest b/dev-python/botocore/Manifest
index 3ccab2961e05..b7c460c3ff71 100644
--- a/dev-python/botocore/Manifest
+++ b/dev-python/botocore/Manifest
@@ -6,5 +6,6 @@ DIST botocore-1.42.15.gh.tar.gz 15775038 BLAKE2B 258285b123c6826e7df80e50d5b814a
DIST botocore-1.42.16.gh.tar.gz 15776713 BLAKE2B afe3ae9aa0564cd3d25a366e13b83fb8044adb8870261df79dc62b79425a6e75e9ae620e63acd3f15c62b62d878a31e9368ba57617ae9c7af0eb79679d93b8e7 SHA512 2ffd0739a51cd62ba770aa4c98b5ff0729a5321ced7cbd558d401d62f5bfc0a963b3e3584c649c9129b11fad1944c54df584ce32252cce5896684a1651ac519e
DIST botocore-1.42.17.gh.tar.gz 15777020 BLAKE2B b703c802f61993c6c3bed03e61f6e1da2099ad59364ea02ad2fe9802e0aa824ca4a38b0e8bafdcdd2bc2a6b64a8617fd1d052867d8ff2aa724834b7dd1bac265 SHA512 accbc4762c08d9ccdd95786f7be1a8b34d4d5c4315c3c3850a085db566dc58dbc96367440aa71ddf708b4454c8dd45866b60f0dd19c6173849ea450e4c5bd16c
DIST botocore-1.42.18.gh.tar.gz 15741228 BLAKE2B 9808f4b1b1f90d83577594633c016cd2582d297626102ba18c9d343034d675f20d66b21c671a3f1de2ed1629765d149b28992a720d4ea43d0b11ae0cb2e5f7b9 SHA512 7a8d353e3b261e00d2b848de11baf6690b679c0fecb02569d89d611ee57de5c13f404d758258bffd9f5c99325bff2e6a709bbbc8e99e9c4eabc6143acbf86e0a
+DIST botocore-1.42.19.gh.tar.gz 15741256 BLAKE2B cfba6202f71b2bfce4c183f96df5c76832128d19b820a42cbcaf23aa1485f4979696301872f71d039549a9d640cef8df637920c07efbfc5fa67ddf9c1bd92d11 SHA512 040648b3dc118a8d01d31eda9f3ad125b2b3ab0e98857cdd4b4d70de9662e51b6e5ac9f7d0b90ca89eab3c893fb9156a61b95df90b374d81b1c7ae6d188ac611
DIST botocore-1.42.4.gh.tar.gz 15703399 BLAKE2B ffd1613284a8487fd2abf10f53fcdaa13746990f519e2bc511bd09daa2efdbbc03cd141f40d36c83dc8180229daddb3a064c6d5aae2bc14f46921f50edf0f528 SHA512 22bbda9f4bc36bd18802812c63d650b2267565c27e432f7105daaa2c85660d2e3786ee11837ce2affe6d130504f9a7bf5c9e7ea3be5699b5d32be3090fb71914
DIST botocore-1.42.9.gh.tar.gz 15723096 BLAKE2B 2cb1489fa48546abe3306935367744f918d053e02af58d6b85ed84a50bbfc659ec20763055e9783d492f6f248af81e571b8452487bf8ca3267e15d12ce8773bb SHA512 54cc19ca34474e8bfd7eda403452af24b6f73e611442ba4b7ed5f4f223ae279bdf95a3bc4945d16eba6ccca53d2dbefee6d2157ecb6b4ef23a1e960d5469dcc9
diff --git a/dev-python/botocore/botocore-1.42.19.ebuild b/dev-python/botocore/botocore-1.42.19.ebuild
new file mode 100644
index 000000000000..cbe29570b2e5
--- /dev/null
+++ b/dev-python/botocore/botocore-1.42.19.ebuild
@@ -0,0 +1,67 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..14} )
+
+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 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
+
+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_PLUGINS=()
+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
+ )
+
+ epytest tests/{functional,unit}
+}
diff --git a/dev-python/cbor2/Manifest b/dev-python/cbor2/Manifest
index f7e8305caff9..9aaaf671ba5a 100644
--- a/dev-python/cbor2/Manifest
+++ b/dev-python/cbor2/Manifest
@@ -1,3 +1,4 @@
-DIST cbor2-5.7.0.tar.gz 102374 BLAKE2B 8f7ce5220217d926a3a171baef8b4cbfb5b3d8609e01a5ad63c56898449b192be082c1c8f833a6cb8cf48de6ee8668d572297242d0ab6367e8943195b515d499 SHA512 9ec2c8c3de5220c9c6c6197d09c6c627dbd56fc3531ca09bab8f76bdcd00127dadb0e0b5faf61619859327440c7f356b68c1e9ff9ef43876e61627d1a44b8069
DIST cbor2-5.7.1.tar.gz 102467 BLAKE2B 8025d34843c977eb282f47b3836844441c4d45fd3e01f0791241a2cf1f99fccde43c096edaf52fca31c18341b73591a6168a7012d06906f31b27f1c990697274 SHA512 0bdb36f505c61fa554c5f042ac82827fe286b66b46d7847ca5292942d5eda354c3216d6521cb5b1b2ffa19bc4798870a985aeb806cfe6e60f173a59def8f2bd2
DIST cbor2-5.7.1.tar.gz.provenance 9333 BLAKE2B 37eefd944d4d525e8d3a1be918855f535c3a328fd8da8f178e550b137bcf24fcd378904bd5cb69e47312c3acc2d9c010ebfbfdd5c1eb5dbb8724d40f18d832f7 SHA512 d8532140f1830204c9c2f823b2f0acf3140b736b946d1239551b7116de2f62de3eb4d2d39a327ee2fcc2afb2d75914d0b30f819cf8cfdcd795f5e8d4237145e9
+DIST cbor2-5.8.0.tar.gz 107825 BLAKE2B 619a8d01530f6b5d13f9dfef8ba0f75e0a1d771c9886c248b76a15e09092d6fe1cb48a488e4cf85dea8ca7e8be6642e45f454dfc12bfa07219aa4bbc28df9a9c SHA512 19a79554526db6926421ec6520c589fd51530057226ca9479662f2eb9c8af6ebda2bf52d3d28c4597d3985585b3798d54f2b783e5bc6622610f91eea91f28547
+DIST cbor2-5.8.0.tar.gz.provenance 9374 BLAKE2B c540105f160f1b3877338a35387e91c0a4f07f71513ae8a9088fb14f0eeadf3466b64f7e0d9f626b3e331cc7974a9013223c4ad439d936d805489216594e2d0d SHA512 2930cb9d68cd4e7baab9b6a156ac404bb870340895a0d41ee73371943e3fae868b8f6950a85346c80d3f02bd17faa840cb10021d99d2f42d96a6ca840597113d
diff --git a/dev-python/cbor2/cbor2-5.7.0.ebuild b/dev-python/cbor2/cbor2-5.8.0.ebuild
index 607499d54117..ecd63d0b72c0 100644
--- a/dev-python/cbor2/cbor2-5.7.0.ebuild
+++ b/dev-python/cbor2/cbor2-5.8.0.ebuild
@@ -5,6 +5,7 @@ EAPI=8
DISTUTILS_EXT=1
DISTUTILS_USE_PEP517=setuptools
+PYPI_VERIFY_REPO=https://github.com/agronholm/cbor2
PYTHON_COMPAT=( python3_{10..14} )
inherit distutils-r1 pypi
@@ -17,7 +18,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
IUSE="+native-extensions"
BDEPEND="
@@ -28,12 +29,6 @@ BDEPEND="
EPYTEST_PLUGINS=( hypothesis )
distutils_enable_tests pytest
-python_prepare_all() {
- # remove pytest-cov dep
- sed -i -e "s/--cov//" pyproject.toml || die
- distutils-r1_python_prepare_all
-}
-
python_compile() {
local -x CBOR2_BUILD_C_EXTENSION=1
# pypy3 not supported upstream
diff --git a/dev-python/ipykernel/ipykernel-6.31.0.ebuild b/dev-python/ipykernel/ipykernel-6.31.0.ebuild
index 2ed2496dcf50..434b2b48052e 100644
--- a/dev-python/ipykernel/ipykernel-6.31.0.ebuild
+++ b/dev-python/ipykernel/ipykernel-6.31.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos"
RDEPEND="
>=dev-python/comm-0.1.1[${PYTHON_USEDEP}]
diff --git a/dev-python/ipykernel/ipykernel-7.1.0.ebuild b/dev-python/ipykernel/ipykernel-7.1.0.ebuild
index 88ed3255c4a9..67b4b1bc7817 100644
--- a/dev-python/ipykernel/ipykernel-7.1.0.ebuild
+++ b/dev-python/ipykernel/ipykernel-7.1.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos"
RDEPEND="
>=dev-python/comm-0.1.1[${PYTHON_USEDEP}]
diff --git a/dev-python/ipyparallel/ipyparallel-9.0.2.ebuild b/dev-python/ipyparallel/ipyparallel-9.0.2.ebuild
index 1fc552c10b19..a78587aa3a69 100644
--- a/dev-python/ipyparallel/ipyparallel-9.0.2.ebuild
+++ b/dev-python/ipyparallel/ipyparallel-9.0.2.ebuild
@@ -19,7 +19,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ppc ppc64 ~riscv ~s390 ~sparc ~x86"
RDEPEND="
dev-python/decorator[${PYTHON_USEDEP}]
diff --git a/dev-python/ipython/ipython-9.7.0.ebuild b/dev-python/ipython/ipython-9.7.0.ebuild
index b576734d9346..1e2d6535e180 100644
--- a/dev-python/ipython/ipython-9.7.0.ebuild
+++ b/dev-python/ipython/ipython-9.7.0.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc ~x86"
IUSE="examples gui notebook nbconvert +smp test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/ipywidgets/ipywidgets-8.1.8.ebuild b/dev-python/ipywidgets/ipywidgets-8.1.8.ebuild
index aa51998d0195..2d4c7b375b7e 100644
--- a/dev-python/ipywidgets/ipywidgets-8.1.8.ebuild
+++ b/dev-python/ipywidgets/ipywidgets-8.1.8.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ppc64 ~riscv ~x86"
RDEPEND="
>=dev-python/comm-0.1.3[${PYTHON_USEDEP}]
diff --git a/dev-python/jupyter-client/jupyter-client-8.6.3-r1.ebuild b/dev-python/jupyter-client/jupyter-client-8.6.3-r1.ebuild
index c92a4de51025..d9e245ae42df 100644
--- a/dev-python/jupyter-client/jupyter-client-8.6.3-r1.ebuild
+++ b/dev-python/jupyter-client/jupyter-client-8.6.3-r1.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos"
RDEPEND="
>=dev-python/jupyter-core-5.1[${PYTHON_USEDEP}]
diff --git a/dev-python/jupyter-server-terminals/jupyter-server-terminals-0.5.3-r1.ebuild b/dev-python/jupyter-server-terminals/jupyter-server-terminals-0.5.3-r1.ebuild
index 3b213966c6fd..6907bde52bed 100644
--- a/dev-python/jupyter-server-terminals/jupyter-server-terminals-0.5.3-r1.ebuild
+++ b/dev-python/jupyter-server-terminals/jupyter-server-terminals-0.5.3-r1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ppc ppc64 ~riscv ~s390 ~sparc ~x86"
RDEPEND="
dev-python/terminado[${PYTHON_USEDEP}]
diff --git a/dev-python/jupyter-server/jupyter-server-2.17.0-r1.ebuild b/dev-python/jupyter-server/jupyter-server-2.17.0-r1.ebuild
index 76adc58ecfe1..17f97feac5e5 100644
--- a/dev-python/jupyter-server/jupyter-server-2.17.0-r1.ebuild
+++ b/dev-python/jupyter-server/jupyter-server-2.17.0-r1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ppc ppc64 ~riscv ~s390 ~sparc ~x86"
RDEPEND="
>=dev-python/anyio-3.1.0[${PYTHON_USEDEP}]
diff --git a/dev-python/matplotlib/Manifest b/dev-python/matplotlib/Manifest
index 9d382578cc1b..dc3fdd262c1d 100644
--- a/dev-python/matplotlib/Manifest
+++ b/dev-python/matplotlib/Manifest
@@ -1,8 +1,5 @@
DIST freetype-2.6.1.tar.gz 2302080 BLAKE2B 6a5fb98e5fa6cf4b7d7533ad44e364227d8c2f7dded4c552d6e22e204c32b7858f20d41d1e809ecdad6e5353d6cec81bea0e0b06a4533363a41ecab83ce3f7ca SHA512 ff2daed64d712737085924c50e75862fafbcbb24eef6d72dac9eaae63bb656d7245397fd828f5d3e47ac847f7ff83d73dedfdd61fde1f7d6e0f0cdeb49bcf83b
-DIST matplotlib-3.10.1.tar.gz 36743335 BLAKE2B e689dcaa314a6af8ce2934aac95208adf0f87822e4f84d6fb15ac1a17d162deea106636abf52b5332636ad8bb944301f16100b15d409b04ef2a8ecd287ea827c SHA512 1b52a421e61ca0a295d7b1d2bbe9bdcb1dd58f6c750b21d95e263547b20a17d58aadcc86f97ae0fdff9151d3c2f75a6c5419a35b258b698d777f42de7b598c4e
DIST matplotlib-3.10.3.tar.gz 34799811 BLAKE2B f855a65ebf6d33373b8ed62fca0824291aa10319cfa652e0ed07db4fe2511d6bc0232e0ef44858717142ce6f13ef604131c312d3ffa00b414321d34dc45d2727 SHA512 c3027fa116f45a4a7d7ac8e7ce87f509a6604b283c39b74379e8d84a05df61283ddf4e79036c9b83b2dff13291b59945d26aeb7420873d3b275097817a12be72
-DIST matplotlib-3.10.5.tar.gz 34804044 BLAKE2B ffda7bfb4c4a5bc6aacabb1f1595525fcdac9070f6e1c039abe6ba480cc34ea1663fc2c35a4583176a4d4695aacc238d3080eb75d965ee4ddc27bd96fda1d3e8 SHA512 761388d0aad410b80179b3bb97d63b6a99d71338a0eb8801702f4a38f4a1a0fdecd8fbb6401e664d2f30a0256f412167c7c102fc494664c1837495572ebf3caa
-DIST matplotlib-3.10.6.tar.gz 34804264 BLAKE2B d6bbea7b225052026dcd326ab0434600191746b663fe922a306c21823b59a7eb6cd23ef45992e7eb4630b1e92fc2e58f351f258f53a7d98b8b1cb9c3dbf038af SHA512 c12686d52229bbbd3c16fa5b1d633a7a6eec8e9bae58221554dc3d9595ceae05f985ebb3207425ad2e134e4dae671f590225b1d692b66c2099dd78da13cc6332
DIST matplotlib-3.10.7.tar.gz 34804865 BLAKE2B 13895bb4e8677fdb05cc0dbe5e58c62efbd5f298469d0647a23806a5101f7b4021accf8fefbdc85a49374f125bf8caa5537a40ac534283746e465bcb87cc1e6d SHA512 48c54dc0719ee5e42a96288200ecd696b52c90816b74404c0350f1707cab31fe8e6371135a3d469f9d78fe4234abf03f92f32cb1777f70e8a34e4fe300d89c27
DIST matplotlib-3.10.7.tar.gz.provenance 9556 BLAKE2B a429fffb82ef7b0b8f0e085c73e48d0551b2092b1274774553df559436eaaea7ca46ee4043ab0fdb057461a4a0c8af9cbb73746054bff63ba94e78263c076b06 SHA512 960a7d2c21877611ee6d30eed1ba124df51f2fb6c8c2b2f798bfd262c9306ec2a0a60733c82da4f4f2f01a255503a3e7e5eb2778b49da07b7b487026e93ec6c0
DIST matplotlib-3.10.8.tar.gz 34806269 BLAKE2B 1dc1de36b7b29c1d9b50fd464dff7054faef4bcf0e6338c8ac4c89bcb7325578af0be99323336489ecc9dfda0418596413e456e16391343fe2fbdec16730a4e4 SHA512 66d07fb0b13821e88f6e6fe9f9882542340c074198dce7d5f8bf5d65d1c64326ae7517ad38d6357491c54aedd8cd1b03f555ad6d9337754db5dbd43c6305ab3f
diff --git a/dev-python/matplotlib/files/matplotlib-3.10.1-test.patch b/dev-python/matplotlib/files/matplotlib-3.10.1-test.patch
deleted file mode 100644
index fa05c9d8f0af..000000000000
--- a/dev-python/matplotlib/files/matplotlib-3.10.1-test.patch
+++ /dev/null
@@ -1,235 +0,0 @@
-diff --git a/lib/matplotlib/tests/test_arrow_patches.py b/lib/matplotlib/tests/test_arrow_patches.py
-index 431d1eb6ea..bb0cc9c8d8 100644
---- a/lib/matplotlib/tests/test_arrow_patches.py
-+++ b/lib/matplotlib/tests/test_arrow_patches.py
-@@ -68,7 +68,7 @@ def __prepare_fancyarrow_dpi_cor_test():
-
-
- @image_comparison(['fancyarrow_dpi_cor_100dpi.png'], remove_text=True,
-- tol=0 if platform.machine() == 'x86_64' else 0.02,
-+ tol=0.015 if platform.machine() == 'x86_64' else 0.02,
- savefig_kwarg=dict(dpi=100))
- def test_fancyarrow_dpi_cor_100dpi():
- """
-@@ -83,7 +83,7 @@ def test_fancyarrow_dpi_cor_100dpi():
-
-
- @image_comparison(['fancyarrow_dpi_cor_200dpi.png'], remove_text=True,
-- tol=0 if platform.machine() == 'x86_64' else 0.02,
-+ tol=0.018 if platform.machine() == 'x86_64' else 0.02,
- savefig_kwarg=dict(dpi=200))
- def test_fancyarrow_dpi_cor_200dpi():
- """
-@@ -116,7 +116,7 @@ def test_fancyarrow_dash():
-
-
- @image_comparison(['arrow_styles.png'], style='mpl20', remove_text=True,
-- tol=0 if platform.machine() == 'x86_64' else 0.02)
-+ tol=0.005 if platform.machine() == 'x86_64' else 0.02)
- def test_arrow_styles():
- styles = mpatches.ArrowStyle.get_styles()
-
-diff --git a/lib/matplotlib/tests/test_axes.py b/lib/matplotlib/tests/test_axes.py
-index cd5cd08fbf..be426c6c70 100644
---- a/lib/matplotlib/tests/test_axes.py
-+++ b/lib/matplotlib/tests/test_axes.py
-@@ -1219,7 +1219,7 @@ def test_imshow():
-
-
- @image_comparison(['imshow_clip'], style='mpl20',
-- tol=0 if platform.machine() == 'x86_64' else 1.24)
-+ tol=1.24)
- def test_imshow_clip():
- # As originally reported by Gellule Xg <gellule.xg@free.fr>
- # use former defaults to match existing baseline image
-@@ -2653,7 +2653,7 @@ def test_contour_hatching():
-
-
- @image_comparison(['contour_colorbar'], style='mpl20',
-- tol=0 if platform.machine() == 'x86_64' else 0.54)
-+ tol=0.54)
- def test_contour_colorbar():
- x, y, z = contour_dat()
-
-@@ -5148,7 +5148,7 @@ def test_vertex_markers():
-
-
- @image_comparison(['vline_hline_zorder', 'errorbar_zorder'],
-- tol=0 if platform.machine() == 'x86_64' else 0.026)
-+ tol=0.015 if platform.machine() == 'x86_64' else 0.026)
- def test_eb_line_zorder():
- x = list(range(10))
-
-@@ -9133,7 +9133,7 @@ def test_zorder_and_explicit_rasterization():
-
-
- @image_comparison(["preset_clip_paths.png"], remove_text=True, style="mpl20",
-- tol=0 if platform.machine() == 'x86_64' else 0.027)
-+ tol=0.027)
- def test_preset_clip_paths():
- fig, ax = plt.subplots()
-
-diff --git a/lib/matplotlib/tests/test_colorbar.py b/lib/matplotlib/tests/test_colorbar.py
-index 24eeab6894..f140e031fe 100644
---- a/lib/matplotlib/tests/test_colorbar.py
-+++ b/lib/matplotlib/tests/test_colorbar.py
-@@ -235,7 +235,7 @@ def test_colorbar_single_ax_panchor_east(constrained):
-
-
- @image_comparison(['contour_colorbar.png'], remove_text=True,
-- tol=0 if platform.machine() == 'x86_64' else 0.054)
-+ tol=0.01 if platform.machine() == 'x86_64' else 0.054)
- def test_contour_colorbar():
- fig, ax = plt.subplots(figsize=(4, 2))
- data = np.arange(1200).reshape(30, 40) - 500
-diff --git a/lib/matplotlib/tests/test_constrainedlayout.py b/lib/matplotlib/tests/test_constrainedlayout.py
-index 77f9f34bc2..805479a7de 100644
---- a/lib/matplotlib/tests/test_constrainedlayout.py
-+++ b/lib/matplotlib/tests/test_constrainedlayout.py
-@@ -655,11 +655,11 @@ def test_compressed1():
- fig.draw_without_rendering()
-
- pos = axs[0, 0].get_position()
-- np.testing.assert_allclose(pos.x0, 0.06195, atol=1e-3)
-- np.testing.assert_allclose(pos.y1, 0.8537, atol=1e-3)
-+ np.testing.assert_allclose(pos.x0, 0.06195, atol=2e-3)
-+ np.testing.assert_allclose(pos.y1, 0.8537, atol=2e-3)
- pos = axs[1, 2].get_position()
-- np.testing.assert_allclose(pos.x1, 0.8618, atol=1e-3)
-- np.testing.assert_allclose(pos.y0, 0.1934, atol=1e-3)
-+ np.testing.assert_allclose(pos.x1, 0.8618, atol=2e-3)
-+ np.testing.assert_allclose(pos.y0, 0.1934, atol=2e-3)
-
-
- def test_compressed_suptitle():
-diff --git a/lib/matplotlib/tests/test_contour.py b/lib/matplotlib/tests/test_contour.py
-index 543cff18c6..6e113bc897 100644
---- a/lib/matplotlib/tests/test_contour.py
-+++ b/lib/matplotlib/tests/test_contour.py
-@@ -417,7 +417,7 @@ def test_contourf_log_extension():
-
-
- @image_comparison(['contour_addlines.png'], remove_text=True, style='mpl20',
-- tol=0.03 if platform.machine() == 'x86_64' else 0.15)
-+ tol=0.15)
- # tolerance is because image changed minutely when tick finding on
- # colorbars was cleaned up...
- def test_contour_addlines():
-diff --git a/lib/matplotlib/tests/test_figure.py b/lib/matplotlib/tests/test_figure.py
-index c80f534131..d7686ce236 100644
---- a/lib/matplotlib/tests/test_figure.py
-+++ b/lib/matplotlib/tests/test_figure.py
-@@ -26,7 +26,7 @@ import matplotlib.dates as mdates
-
-
- @image_comparison(['figure_align_labels'], extensions=['png', 'svg'],
-- tol=0 if platform.machine() == 'x86_64' else 0.01)
-+ tol=0.02)
- def test_align_labels():
- fig = plt.figure(layout='tight')
- gs = gridspec.GridSpec(3, 3)
-@@ -68,7 +68,7 @@ def test_align_labels():
-
- @image_comparison(['figure_align_titles_tight.png',
- 'figure_align_titles_constrained.png'],
-- tol=0 if platform.machine() == 'x86_64' else 0.022,
-+ tol=0.01 if platform.machine() == 'x86_64' else 0.022,
- style='mpl20')
- def test_align_titles():
- for layout in ['tight', 'constrained']:
-diff --git a/lib/matplotlib/tests/test_legend.py b/lib/matplotlib/tests/test_legend.py
-index 8baa7bb0f7..01f67d06e8 100644
---- a/lib/matplotlib/tests/test_legend.py
-+++ b/lib/matplotlib/tests/test_legend.py
-@@ -165,7 +165,7 @@ def test_multiple_keys():
-
-
- @image_comparison(['rgba_alpha.png'], remove_text=True,
-- tol=0 if platform.machine() == 'x86_64' else 0.03)
-+ tol=0.02 if platform.machine() == 'x86_64' else 0.03)
- def test_alpha_rgba():
- fig, ax = plt.subplots()
- ax.plot(range(10), lw=5)
-@@ -174,7 +174,7 @@ def test_alpha_rgba():
-
-
- @image_comparison(['rcparam_alpha.png'], remove_text=True,
-- tol=0 if platform.machine() == 'x86_64' else 0.03)
-+ tol=0.02 if platform.machine() == 'x86_64' else 0.03)
- def test_alpha_rcparam():
- fig, ax = plt.subplots()
- ax.plot(range(10), lw=5)
-@@ -202,7 +202,7 @@ def test_fancy():
-
-
- @image_comparison(['framealpha'], remove_text=True,
-- tol=0 if platform.machine() == 'x86_64' else 0.024)
-+ tol=0.02 if platform.machine() == 'x86_64' else 0.024)
- def test_framealpha():
- x = np.linspace(1, 100, 100)
- y = x
-diff --git a/lib/matplotlib/tests/test_lines.py b/lib/matplotlib/tests/test_lines.py
-index bbaea25102..7892c340c6 100644
---- a/lib/matplotlib/tests/test_lines.py
-+++ b/lib/matplotlib/tests/test_lines.py
-@@ -184,7 +184,7 @@ def test_set_drawstyle():
-
-
- @image_comparison(['line_collection_dashes'], remove_text=True, style='mpl20',
-- tol=0 if platform.machine() == 'x86_64' else 0.65)
-+ tol=0.65)
- def test_set_line_coll_dash_image():
- fig, ax = plt.subplots()
- np.random.seed(0)
-diff --git a/lib/matplotlib/tests/test_units.py b/lib/matplotlib/tests/test_units.py
-index cc71f68585..1fd3b50fea 100644
---- a/lib/matplotlib/tests/test_units.py
-+++ b/lib/matplotlib/tests/test_units.py
-@@ -81,7 +81,7 @@ def quantity_converter():
- # Tests that the conversion machinery works properly for classes that
- # work as a facade over numpy arrays (like pint)
- @image_comparison(['plot_pint.png'], style='mpl20',
-- tol=0 if platform.machine() == 'x86_64' else 0.03)
-+ tol=0.002 if platform.machine() == 'x86_64' else 0.03)
- def test_numpy_facade(quantity_converter):
- # use former defaults to match existing baseline image
- plt.rcParams['axes.formatter.limits'] = -7, 7
-@@ -108,7 +108,7 @@ def test_numpy_facade(quantity_converter):
-
- # Tests gh-8908
- @image_comparison(['plot_masked_units.png'], remove_text=True, style='mpl20',
-- tol=0 if platform.machine() == 'x86_64' else 0.02)
-+ tol=0.02)
- def test_plot_masked_units():
- data = np.linspace(-5, 5)
- data_masked = np.ma.array(data, mask=(data > -2) & (data < 2))
-diff --git a/lib/matplotlib/tests/test_usetex.py b/lib/matplotlib/tests/test_usetex.py
-index 342face450..c7256586bc 100644
---- a/lib/matplotlib/tests/test_usetex.py
-+++ b/lib/matplotlib/tests/test_usetex.py
-@@ -15,6 +15,7 @@ import matplotlib.pyplot as plt
- pytestmark = needs_usetex
-
-
-+@pytest.mark.skip(reason="TODO: broken")
- @image_comparison(
- baseline_images=['test_usetex'],
- extensions=['pdf', 'png'],
-@@ -65,7 +66,7 @@ def test_mathdefault():
- fig.canvas.draw()
-
-
--@image_comparison(['eqnarray.png'])
-+@image_comparison(['eqnarray.png'], tol=23)
- def test_multiline_eqnarray():
- text = (
- r'\begin{eqnarray*}'
-@@ -163,7 +164,7 @@ except mpl.ExecutableNotFoundError:
-
-
- @image_comparison(baseline_images=['rotation'], extensions=['eps', 'pdf', 'png', 'svg'],
-- style='mpl20', tol=3.91 if _old_gs_version else 0)
-+ style='mpl20', tol=30)
- def test_rotation():
- mpl.rcParams['text.usetex'] = True
-
diff --git a/dev-python/matplotlib/matplotlib-3.10.1.ebuild b/dev-python/matplotlib/matplotlib-3.10.1.ebuild
deleted file mode 100644
index f3736d54c9b3..000000000000
--- a/dev-python/matplotlib/matplotlib-3.10.1.ebuild
+++ /dev/null
@@ -1,323 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=meson-python
-PYTHON_COMPAT=( python3_{10..14} )
-PYTHON_REQ_USE='tk?,threads(+)'
-
-inherit distutils-r1 pypi virtualx
-
-FT_PV=2.6.1
-DESCRIPTION="Pure python plotting library with matlab like syntax"
-HOMEPAGE="
- https://matplotlib.org/
- https://github.com/matplotlib/matplotlib/
- https://pypi.org/project/matplotlib/
-"
-SRC_URI+="
- test? (
- https://downloads.sourceforge.net/project/freetype/freetype2/${FT_PV}/freetype-${FT_PV}.tar.gz
- )
-"
-
-# Main license: matplotlib
-# Some modules: BSD
-# matplotlib/backends/qt4_editor: MIT
-# Fonts: BitstreamVera, OFL-1.1
-LICENSE="BitstreamVera BSD matplotlib MIT OFL-1.1"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos"
-IUSE="cairo excel gtk3 latex qt6 tk webagg wxwidgets"
-
-DEPEND="
- media-libs/freetype:2
- >=media-libs/qhull-2013:=
- >=dev-python/numpy-1.25:=[${PYTHON_USEDEP}]
-"
-# internal copy of pycxx highly patched
-# dev-python/pycxx
-RDEPEND="
- ${DEPEND}
- >=dev-python/contourpy-1.0.1[${PYTHON_USEDEP}]
- >=dev-python/cycler-0.10.0-r1[${PYTHON_USEDEP}]
- >=dev-python/fonttools-4.22.0[${PYTHON_USEDEP}]
- >=dev-python/kiwisolver-1.3.1[${PYTHON_USEDEP}]
- >=dev-python/packaging-20.0[${PYTHON_USEDEP}]
- >=dev-python/pillow-8[jpeg,webp,${PYTHON_USEDEP}]
- >=dev-python/pyparsing-2.3.1[${PYTHON_USEDEP}]
- >=dev-python/python-dateutil-2.7[${PYTHON_USEDEP}]
- >=dev-python/pytz-2019.3[${PYTHON_USEDEP}]
- media-fonts/dejavu
- media-fonts/stix-fonts
- media-libs/libpng:0
- virtual/imagemagick-tools[jpeg,tiff]
- cairo? (
- dev-python/cairocffi[${PYTHON_USEDEP}]
- )
- excel? (
- dev-python/xlwt[${PYTHON_USEDEP}]
- )
- gtk3? (
- >=dev-python/pygobject-3.40.1-r1:3[cairo?,${PYTHON_USEDEP}]
- x11-libs/gtk+:3[introspection]
- )
- latex? (
- virtual/latex-base
- app-text/dvipng
- app-text/ghostscript-gpl
- app-text/poppler[utils]
- dev-texlive/texlive-fontsrecommended
- dev-texlive/texlive-latexextra
- dev-texlive/texlive-luatex
- dev-texlive/texlive-xetex
- )
- qt6? (
- $(python_gen_cond_dep '
- || (
- dev-python/pyqt6[gui,widgets,${PYTHON_USEDEP}]
- dev-python/pyside:6[gui,widgets,${PYTHON_USEDEP}]
- )
- ' 'python3*')
- )
- webagg? (
- >=dev-python/tornado-6.0.4[${PYTHON_USEDEP}]
- )
- wxwidgets? (
- $(python_gen_cond_dep '
- dev-python/wxpython:*[${PYTHON_USEDEP}]
- ' python3_{10..12})
- )
-"
-
-BDEPEND="
- ${RDEPEND}
- dev-python/pybind11[${PYTHON_USEDEP}]
- >=dev-python/setuptools-scm-7[${PYTHON_USEDEP}]
- virtual/pkgconfig
- test? (
- $(python_gen_impl_dep 'tk')
- dev-python/psutil[${PYTHON_USEDEP}]
- dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
- >=dev-python/tornado-6.0.4[${PYTHON_USEDEP}]
- !hppa? ( !s390? (
- || (
- media-video/ffmpeg[openh264]
- media-video/ffmpeg[x264]
- )
- ) )
- gtk3? (
- >=dev-python/pygobject-3.40.1-r1:3[cairo?,${PYTHON_USEDEP}]
- x11-libs/gtk+:3[introspection]
- )
- )
-"
-
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-src_unpack() {
- # do not unpack freetype
- unpack "${P//_/}.tar.gz"
-}
-
-python_prepare_all() {
- # Affects installed _version.py, bug #854600
- export SETUPTOOLS_SCM_PRETEND_VERSION=${PV}
-
- local PATCHES=(
- "${FILESDIR}"/matplotlib-3.10.1-test.patch
- )
-
- # increase lock timeout to 30 s
- sed -i -e 's:retries = 50:retries = 300:' lib/matplotlib/cbook.py || die
-
- distutils-r1_python_prepare_all
-}
-
-src_configure() {
- unset DISPLAY # bug #278524
- export XDG_RUNTIME_DIR="${T}/runtime-dir"
- mkdir "${XDG_RUNTIME_DIR}" || die
- chmod 0700 "${XDG_RUNTIME_DIR}" || die
-
- DISTUTILS_ARGS=(
- -Dsystem-freetype=true
- -Dsystem-qhull=true
- -Dmacosx=false
- )
-}
-
-src_test() {
- mkdir subprojects/packagecache || die
- cp "${DISTDIR}/freetype-${FT_PV}.tar.gz" subprojects/packagecache/ || die
- virtx distutils-r1_src_test
-}
-
-python_test() {
- local EPYTEST_DESELECT=(
- # broken by -Wdefault
- "tests/test_rcparams.py::test_validator_invalid[validate_strlist-arg6-MatplotlibDeprecationWarning]"
- "tests/test_rcparams.py::test_validator_invalid[validate_strlist-arg7-MatplotlibDeprecationWarning]"
- tests/test_testing.py::test_warn_to_fail
- tests/test_legend.py::test_legend_nolabels_warning
- # TODO?
- tests/test_backend_qt.py::test_fig_sigint_override
- tests/test_backend_qt.py::test_ipython
- tests/test_backend_nbagg.py::test_ipynb
- # leak tests are fragile
- tests/test_backends_interactive.py::test_figure_leak_20490
- # major "images not close", new texlive perhaps
- tests/test_contour.py::test_all_algorithms
- # "no warnings"
- tests/test_backend_pdf.py::test_invalid_metadata
- tests/test_figure.py::test_too_many_figures
- # Requires qt5
- tests/test_backends_interactive.py::test_qt5backends_uses_qt5
- 'tests/test_backends_interactive.py::test_interactive_backend[toolbar2-MPLBACKEND=qtagg-QT_API=PyQt5-BACKEND_DEPS=PyQt5]'
- 'tests/test_backends_interactive.py::test_interactive_backend[toolbar2-MPLBACKEND=qtcairo-QT_API=PyQt5-BACKEND_DEPS=PyQt5,cairocffi]'
- 'tests/test_backends_interactive.py::test_interactive_backend[toolmanager-MPLBACKEND=qtagg-QT_API=PyQt5-BACKEND_DEPS=PyQt5]'
- 'tests/test_backends_interactive.py::test_blitting_events[MPLBACKEND=qtagg-QT_API=PyQt5-BACKEND_DEPS=PyQt5]'
- 'tests/test_backends_interactive.py::test_blitting_events[MPLBACKEND=qtcairo-QT_API=PyQt5-BACKEND_DEPS=PyQt5,cairocffi]'
- 'tests/test_backends_interactive.py::test_interactive_thread_safety[MPLBACKEND=qtagg-QT_API=PyQt5-BACKEND_DEPS=PyQt5]'
- 'tests/test_backends_interactive.py::test_interactive_timers[MPLBACKEND=qtagg-QT_API=PyQt5-BACKEND_DEPS=PyQt5]'
- 'tests/test_backends_interactive.py::test_interactive_timers[MPLBACKEND=qtcairo-QT_API=PyQt5-BACKEND_DEPS=PyQt5,cairocffi]'
- # Tests mixing qt5 and qt6, requires installing all Qt4Py impl.
- tests/test_backends_interactive.py::test_cross_Qt_imports
- )
-
- case ${EPYTHON} in
- pypy3)
- EPYTEST_DESELECT+=(
- # TODO
- tests/test_widgets.py::test_check_buttons
- tests/test_widgets.py::test_check_buttons_lines
- tests/test_widgets.py::test_check_radio_buttons_image
- tests/test_widgets.py::test_radio_buttons
- )
- ;&
- pypy3.11)
- EPYTEST_DESELECT+=(
- # TODO: warning isn't passed through
- tests/test_image.py::test_large_image
- # TODO: regression in 7.3.18+
- tests/test_axes.py::test_axes_clear_reference_cycle
- # TODO
- tests/test_pickle.py::test_complete
- tests/test_pickle.py::test_no_pyplot
- tests/test_pickle.py::test_pickle_load_from_subprocess
- tests/test_pickle.py::test_simple
- tests/test_texmanager.py::test_openin_any_paranoid
- )
- ;;
- python3.11)
- EPYTEST_DESELECT+=(
- # https://github.com/matplotlib/matplotlib/issues/23384
- "tests/test_backends_interactive.py::test_figure_leak_20490[time_mem1-{'MPLBACKEND': 'qtagg', 'QT_API': 'PyQt5'}]"
- "tests/test_backends_interactive.py::test_figure_leak_20490[time_mem1-{'MPLBACKEND': 'qtcairo', 'QT_API': 'PyQt5'}]"
- )
- ;;
- python3.12)
- EPYTEST_DESELECT+=(
- tests/test_constrainedlayout.py::test_compressed1
- )
- ;;
- esac
-
- case ${ABI} in
- hppa)
- EPYTEST_DESELECT+=(
- 'tests/test_mathtext.py::test_mathtext_exceptions[hspace without value]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[hspace with invalid value]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[function without space]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[accent without space]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[frac without parameters]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[frac with empty parameters]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[binom without parameters]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[binom with empty parameters]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[genfrac without parameters]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[genfrac with empty parameters]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[sqrt without parameters]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[sqrt with invalid value]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[overline without parameters]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[overline with empty parameter]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[left with invalid delimiter]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[right with invalid delimiter]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[unclosed parentheses with sizing]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[unclosed parentheses without sizing]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[dfrac without parameters]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[dfrac with empty parameters]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[overset without parameters]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[underset without parameters]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[unknown symbol]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[double superscript]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[double subscript]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[super on sub without braces]'
- 'tests/test_quiver.py::test_barbs[png]'
- 'tests/test_quiver.py::test_barbs_pivot[png]'
- 'tests/test_quiver.py::test_barbs_flip[png]'
- 'tests/test_text.py::test_parse_math'
- 'tests/test_text.py::test_parse_math_rcparams'
- )
- ;;
- arm)
- EPYTEST_DESELECT+=(
- tests/test_backend_ps.py::test_savefig_to_stringio
- # too large for 32-bit platforms
- 'tests/test_axes.py::test_psd_csd[png]'
- )
- ;;
- sparc64)
- EPYTEST_DESELECT+=(
- tests/test_backend_pgf.py::test_pdf_pages_metadata_check
- tests/test_backend_pgf.py::test_minus_signs_with_tex
- )
- ;;
- alpha|arm|m68k|o32|ppc|s390|sh|sparc|x86)
- EPYTEST_DESELECT+=(
- # too large for 32-bit platforms
- 'tests/test_axes.py::test_psd_csd[png]'
- )
- ;;
- *)
- ;;
- esac
-
- # we need to rebuild mpl against bundled freetype, otherwise
- # over 1000 tests will fail because of mismatched font rendering
- local DISTUTILS_ARGS=(
- "${DISTUTILS_ARGS[@]}"
- -Dsystem-freetype=false
- )
- distutils_pep517_install "${BUILD_DIR}"/test
- cp -r "${BUILD_DIR}"/{install,test}"${EPREFIX}/usr/bin" || die
- cp -r "${BUILD_DIR}"/{install,test}"${EPREFIX}/usr/pyvenv.cfg" || die
- local -x PATH=${BUILD_DIR}/test${EPREFIX}/usr/bin:${PATH}
-
- pushd lib >/dev/null || die
- local path
- local sitedir=${BUILD_DIR}/test$(python_get_sitedir)
- # sigh, upstream doesn't install these
- while IFS= read -d '' path; do
- cp -r "${path}" "${sitedir}/${path}" || die
- done < <(
- find \( \
- -name baseline_images -o \
- -name '*.ipynb' -o \
- -name '*.pfb' -o \
- -name '*.ttf' -o \
- -name tinypages \
- \) -print0
- )
- popd >/dev/null || die
-
- # speed tests up
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
- # pretend we're on CI to increase timeouts
- local -x CI=1
- nonfatal epytest --pyargs matplotlib -m "not network" \
- -p rerunfailures --reruns=3 \
- -o tmp_path_retention_policy=all || die
-}
diff --git a/dev-python/matplotlib/matplotlib-3.10.3.ebuild b/dev-python/matplotlib/matplotlib-3.10.3.ebuild
index e285858a18a0..6848bf2fbb71 100644
--- a/dev-python/matplotlib/matplotlib-3.10.3.ebuild
+++ b/dev-python/matplotlib/matplotlib-3.10.3.ebuild
@@ -29,7 +29,7 @@ SRC_URI+="
# Fonts: BitstreamVera, OFL-1.1
LICENSE="BitstreamVera BSD matplotlib MIT OFL-1.1"
SLOT="0"
-KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos"
IUSE="cairo excel gtk3 latex qt6 tk webagg wxwidgets"
DEPEND="
diff --git a/dev-python/matplotlib/matplotlib-3.10.5.ebuild b/dev-python/matplotlib/matplotlib-3.10.5.ebuild
deleted file mode 100644
index d775725505c4..000000000000
--- a/dev-python/matplotlib/matplotlib-3.10.5.ebuild
+++ /dev/null
@@ -1,330 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=meson-python
-PYTHON_COMPAT=( python3_{10..14} )
-PYTHON_REQ_USE='tk?,threads(+)'
-
-inherit distutils-r1 pypi virtualx
-
-FT_PV=2.6.1
-DESCRIPTION="Pure python plotting library with matlab like syntax"
-HOMEPAGE="
- https://matplotlib.org/
- https://github.com/matplotlib/matplotlib/
- https://pypi.org/project/matplotlib/
-"
-SRC_URI+="
- test? (
- https://downloads.sourceforge.net/project/freetype/freetype2/${FT_PV}/freetype-${FT_PV}.tar.gz
- )
-"
-
-# Main license: matplotlib
-# Some modules: BSD
-# matplotlib/backends/qt4_editor: MIT
-# Fonts: BitstreamVera, OFL-1.1
-LICENSE="BitstreamVera BSD matplotlib MIT OFL-1.1"
-SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos"
-IUSE="cairo excel gtk3 latex qt6 tk webagg wxwidgets"
-
-DEPEND="
- media-libs/freetype:2
- >=media-libs/qhull-2013:=
- >=dev-python/numpy-1.25:=[${PYTHON_USEDEP}]
-"
-# internal copy of pycxx highly patched
-# dev-python/pycxx
-RDEPEND="
- ${DEPEND}
- >=dev-python/contourpy-1.0.1[${PYTHON_USEDEP}]
- >=dev-python/cycler-0.10.0-r1[${PYTHON_USEDEP}]
- >=dev-python/fonttools-4.22.0[${PYTHON_USEDEP}]
- >=dev-python/kiwisolver-1.3.1[${PYTHON_USEDEP}]
- >=dev-python/packaging-20.0[${PYTHON_USEDEP}]
- >=dev-python/pillow-8[jpeg,webp,${PYTHON_USEDEP}]
- >=dev-python/pyparsing-2.3.1[${PYTHON_USEDEP}]
- >=dev-python/python-dateutil-2.7[${PYTHON_USEDEP}]
- >=dev-python/pytz-2019.3[${PYTHON_USEDEP}]
- media-fonts/dejavu
- media-fonts/stix-fonts
- media-libs/libpng:0
- virtual/imagemagick-tools[jpeg,tiff]
- cairo? (
- dev-python/cairocffi[${PYTHON_USEDEP}]
- )
- excel? (
- dev-python/xlwt[${PYTHON_USEDEP}]
- )
- gtk3? (
- >=dev-python/pygobject-3.40.1-r1:3[cairo?,${PYTHON_USEDEP}]
- x11-libs/gtk+:3[introspection]
- )
- latex? (
- virtual/latex-base
- app-text/dvipng
- app-text/ghostscript-gpl
- app-text/poppler[utils]
- dev-texlive/texlive-fontsrecommended
- dev-texlive/texlive-latexextra
- dev-texlive/texlive-luatex
- dev-texlive/texlive-xetex
- )
- qt6? (
- $(python_gen_cond_dep '
- || (
- dev-python/pyqt6[gui,widgets,${PYTHON_USEDEP}]
- dev-python/pyside:6[gui,widgets,${PYTHON_USEDEP}]
- )
- ' 'python3*')
- )
- webagg? (
- >=dev-python/tornado-6.0.4[${PYTHON_USEDEP}]
- )
- wxwidgets? (
- $(python_gen_cond_dep '
- dev-python/wxpython:*[${PYTHON_USEDEP}]
- ' python3_{10..12})
- )
-"
-
-BDEPEND="
- ${RDEPEND}
- dev-python/pybind11[${PYTHON_USEDEP}]
- >=dev-python/setuptools-scm-7[${PYTHON_USEDEP}]
- virtual/pkgconfig
- test? (
- $(python_gen_impl_dep 'tk')
- dev-python/psutil[${PYTHON_USEDEP}]
- dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
- >=dev-python/tornado-6.0.4[${PYTHON_USEDEP}]
- !hppa? ( !s390? (
- || (
- media-video/ffmpeg[openh264]
- media-video/ffmpeg[x264]
- )
- ) )
- gtk3? (
- >=dev-python/pygobject-3.40.1-r1:3[cairo?,${PYTHON_USEDEP}]
- x11-libs/gtk+:3[introspection]
- )
- )
-"
-
-EPYTEST_PLUGINS=()
-EPYTEST_RERUNS=3
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-src_unpack() {
- # do not unpack freetype
- unpack "${P//_/}.tar.gz"
-}
-
-python_prepare_all() {
- # Affects installed _version.py, bug #854600
- export SETUPTOOLS_SCM_PRETEND_VERSION=${PV}
-
- # increase lock timeout to 30 s
- sed -i -e 's:retries = 50:retries = 300:' lib/matplotlib/cbook.py || die
- # upstream uses 'x86_64' condition to require exact matches no their CI
- # which doesn't match results from other x86_64 systems
- find -name 'test_*.py' -exec \
- sed -i -e "s:platform.machine() == 'x86_64':False:" {} + || die
-
- distutils-r1_python_prepare_all
-}
-
-src_configure() {
- unset DISPLAY # bug #278524
- export XDG_RUNTIME_DIR="${T}/runtime-dir"
- mkdir "${XDG_RUNTIME_DIR}" || die
- chmod 0700 "${XDG_RUNTIME_DIR}" || die
-
- DISTUTILS_ARGS=(
- -Dsystem-freetype=true
- -Dsystem-qhull=true
- -Dmacosx=false
- )
-}
-
-src_test() {
- mkdir subprojects/packagecache || die
- cp "${DISTDIR}/freetype-${FT_PV}.tar.gz" subprojects/packagecache/ || die
- virtx distutils-r1_src_test
-}
-
-python_test() {
- local EPYTEST_DESELECT=(
- # broken by -Wdefault
- "tests/test_rcparams.py::test_validator_invalid[validate_strlist-arg6-MatplotlibDeprecationWarning]"
- "tests/test_rcparams.py::test_validator_invalid[validate_strlist-arg7-MatplotlibDeprecationWarning]"
- tests/test_testing.py::test_warn_to_fail
- tests/test_legend.py::test_legend_nolabels_warning
- # TODO?
- tests/test_backend_qt.py::test_fig_sigint_override
- tests/test_backend_qt.py::test_ipython
- tests/test_backend_nbagg.py::test_ipynb
- # leak tests are fragile
- tests/test_backends_interactive.py::test_figure_leak_20490
- # major "images not close", new texlive perhaps
- tests/test_contour.py::test_all_algorithms
- 'tests/test_usetex.py::test_usetex[png]'
- 'tests/test_usetex.py::test_multiline_eqnarray[png]'
- 'tests/test_usetex.py::test_rotation[png]'
- # "no warnings"
- tests/test_backend_pdf.py::test_invalid_metadata
- tests/test_figure.py::test_too_many_figures
- # Requires qt5
- tests/test_backends_interactive.py::test_qt5backends_uses_qt5
- 'tests/test_backends_interactive.py::test_interactive_backend[toolbar2-MPLBACKEND=qtagg-QT_API=PyQt5-BACKEND_DEPS=PyQt5]'
- 'tests/test_backends_interactive.py::test_interactive_backend[toolbar2-MPLBACKEND=qtcairo-QT_API=PyQt5-BACKEND_DEPS=PyQt5,cairocffi]'
- 'tests/test_backends_interactive.py::test_interactive_backend[toolmanager-MPLBACKEND=qtagg-QT_API=PyQt5-BACKEND_DEPS=PyQt5]'
- 'tests/test_backends_interactive.py::test_blitting_events[MPLBACKEND=qtagg-QT_API=PyQt5-BACKEND_DEPS=PyQt5]'
- 'tests/test_backends_interactive.py::test_blitting_events[MPLBACKEND=qtcairo-QT_API=PyQt5-BACKEND_DEPS=PyQt5,cairocffi]'
- 'tests/test_backends_interactive.py::test_interactive_thread_safety[MPLBACKEND=qtagg-QT_API=PyQt5-BACKEND_DEPS=PyQt5]'
- 'tests/test_backends_interactive.py::test_interactive_timers[MPLBACKEND=qtagg-QT_API=PyQt5-BACKEND_DEPS=PyQt5]'
- 'tests/test_backends_interactive.py::test_interactive_timers[MPLBACKEND=qtcairo-QT_API=PyQt5-BACKEND_DEPS=PyQt5,cairocffi]'
- # Tests mixing qt5 and qt6, requires installing all Qt4Py impl.
- tests/test_backends_interactive.py::test_cross_Qt_imports
- )
-
- case ${EPYTHON} in
- pypy3)
- EPYTEST_DESELECT+=(
- # TODO
- tests/test_widgets.py::test_check_buttons
- tests/test_widgets.py::test_check_buttons_lines
- tests/test_widgets.py::test_check_radio_buttons_image
- tests/test_widgets.py::test_radio_buttons
- )
- ;&
- pypy3.11)
- EPYTEST_DESELECT+=(
- # TODO: warning isn't passed through
- tests/test_image.py::test_large_image
- # TODO: regression in 7.3.18+
- tests/test_axes.py::test_axes_clear_reference_cycle
- # TODO
- tests/test_pickle.py::test_complete
- tests/test_pickle.py::test_no_pyplot
- tests/test_pickle.py::test_pickle_load_from_subprocess
- tests/test_pickle.py::test_simple
- tests/test_texmanager.py::test_openin_any_paranoid
- )
- ;;
- python3.11)
- EPYTEST_DESELECT+=(
- # https://github.com/matplotlib/matplotlib/issues/23384
- "tests/test_backends_interactive.py::test_figure_leak_20490[time_mem1-{'MPLBACKEND': 'qtagg', 'QT_API': 'PyQt5'}]"
- "tests/test_backends_interactive.py::test_figure_leak_20490[time_mem1-{'MPLBACKEND': 'qtcairo', 'QT_API': 'PyQt5'}]"
- )
- ;;
- python3.12)
- EPYTEST_DESELECT+=(
- tests/test_constrainedlayout.py::test_compressed1
- )
- ;;
- esac
-
- case ${ABI} in
- hppa)
- EPYTEST_DESELECT+=(
- 'tests/test_mathtext.py::test_mathtext_exceptions[hspace without value]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[hspace with invalid value]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[function without space]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[accent without space]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[frac without parameters]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[frac with empty parameters]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[binom without parameters]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[binom with empty parameters]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[genfrac without parameters]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[genfrac with empty parameters]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[sqrt without parameters]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[sqrt with invalid value]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[overline without parameters]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[overline with empty parameter]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[left with invalid delimiter]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[right with invalid delimiter]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[unclosed parentheses with sizing]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[unclosed parentheses without sizing]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[dfrac without parameters]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[dfrac with empty parameters]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[overset without parameters]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[underset without parameters]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[unknown symbol]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[double superscript]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[double subscript]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[super on sub without braces]'
- 'tests/test_quiver.py::test_barbs[png]'
- 'tests/test_quiver.py::test_barbs_pivot[png]'
- 'tests/test_quiver.py::test_barbs_flip[png]'
- 'tests/test_text.py::test_parse_math'
- 'tests/test_text.py::test_parse_math_rcparams'
- )
- ;;
- arm)
- EPYTEST_DESELECT+=(
- tests/test_backend_ps.py::test_savefig_to_stringio
- # too large for 32-bit platforms
- 'tests/test_axes.py::test_psd_csd[png]'
- )
- ;;
- sparc64)
- EPYTEST_DESELECT+=(
- tests/test_backend_pgf.py::test_pdf_pages_metadata_check
- tests/test_backend_pgf.py::test_minus_signs_with_tex
- )
- ;;
- alpha|arm|m68k|o32|ppc|s390|sh|sparc|x86)
- EPYTEST_DESELECT+=(
- # too large for 32-bit platforms
- 'tests/test_axes.py::test_psd_csd[png]'
- )
- ;;
- *)
- ;;
- esac
-
- # override BUILD_DIR used by meson, so that mpl is actually rebuilt
- # against bundled freetype
- local orig_build_dir=${BUILD_DIR}
- local BUILD_DIR=${BUILD_DIR}-test
-
- # we need to rebuild mpl against bundled freetype, otherwise
- # over 1000 tests will fail because of mismatched font rendering
- local DISTUTILS_ARGS=(
- "${DISTUTILS_ARGS[@]}"
- -Dsystem-freetype=false
- )
- distutils_pep517_install "${BUILD_DIR}"/install
- cp -r {"${orig_build_dir}","${BUILD_DIR}"}/install"${EPREFIX}/usr/bin" || die
- cp -r {"${orig_build_dir}","${BUILD_DIR}"}/install"${EPREFIX}/usr/pyvenv.cfg" || die
- local -x PATH=${BUILD_DIR}/install${EPREFIX}/usr/bin:${PATH}
-
- pushd lib >/dev/null || die
- local path
- local sitedir=${BUILD_DIR}/install$(python_get_sitedir)
- # sigh, upstream doesn't install these
- while IFS= read -d '' path; do
- cp -r "${path}" "${sitedir}/${path}" || die
- done < <(
- find \( \
- -name baseline_images -o \
- -name '*.ipynb' -o \
- -name '*.pfb' -o \
- -name '*.ttf' -o \
- -name tinypages \
- \) -print0
- )
- popd >/dev/null || die
-
- # pretend we're on CI to increase timeouts
- local -x CI=1
- nonfatal epytest --pyargs matplotlib -m "not network" \
- -o tmp_path_retention_policy=all || die
-}
diff --git a/dev-python/matplotlib/matplotlib-3.10.6.ebuild b/dev-python/matplotlib/matplotlib-3.10.6.ebuild
deleted file mode 100644
index d775725505c4..000000000000
--- a/dev-python/matplotlib/matplotlib-3.10.6.ebuild
+++ /dev/null
@@ -1,330 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=meson-python
-PYTHON_COMPAT=( python3_{10..14} )
-PYTHON_REQ_USE='tk?,threads(+)'
-
-inherit distutils-r1 pypi virtualx
-
-FT_PV=2.6.1
-DESCRIPTION="Pure python plotting library with matlab like syntax"
-HOMEPAGE="
- https://matplotlib.org/
- https://github.com/matplotlib/matplotlib/
- https://pypi.org/project/matplotlib/
-"
-SRC_URI+="
- test? (
- https://downloads.sourceforge.net/project/freetype/freetype2/${FT_PV}/freetype-${FT_PV}.tar.gz
- )
-"
-
-# Main license: matplotlib
-# Some modules: BSD
-# matplotlib/backends/qt4_editor: MIT
-# Fonts: BitstreamVera, OFL-1.1
-LICENSE="BitstreamVera BSD matplotlib MIT OFL-1.1"
-SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos"
-IUSE="cairo excel gtk3 latex qt6 tk webagg wxwidgets"
-
-DEPEND="
- media-libs/freetype:2
- >=media-libs/qhull-2013:=
- >=dev-python/numpy-1.25:=[${PYTHON_USEDEP}]
-"
-# internal copy of pycxx highly patched
-# dev-python/pycxx
-RDEPEND="
- ${DEPEND}
- >=dev-python/contourpy-1.0.1[${PYTHON_USEDEP}]
- >=dev-python/cycler-0.10.0-r1[${PYTHON_USEDEP}]
- >=dev-python/fonttools-4.22.0[${PYTHON_USEDEP}]
- >=dev-python/kiwisolver-1.3.1[${PYTHON_USEDEP}]
- >=dev-python/packaging-20.0[${PYTHON_USEDEP}]
- >=dev-python/pillow-8[jpeg,webp,${PYTHON_USEDEP}]
- >=dev-python/pyparsing-2.3.1[${PYTHON_USEDEP}]
- >=dev-python/python-dateutil-2.7[${PYTHON_USEDEP}]
- >=dev-python/pytz-2019.3[${PYTHON_USEDEP}]
- media-fonts/dejavu
- media-fonts/stix-fonts
- media-libs/libpng:0
- virtual/imagemagick-tools[jpeg,tiff]
- cairo? (
- dev-python/cairocffi[${PYTHON_USEDEP}]
- )
- excel? (
- dev-python/xlwt[${PYTHON_USEDEP}]
- )
- gtk3? (
- >=dev-python/pygobject-3.40.1-r1:3[cairo?,${PYTHON_USEDEP}]
- x11-libs/gtk+:3[introspection]
- )
- latex? (
- virtual/latex-base
- app-text/dvipng
- app-text/ghostscript-gpl
- app-text/poppler[utils]
- dev-texlive/texlive-fontsrecommended
- dev-texlive/texlive-latexextra
- dev-texlive/texlive-luatex
- dev-texlive/texlive-xetex
- )
- qt6? (
- $(python_gen_cond_dep '
- || (
- dev-python/pyqt6[gui,widgets,${PYTHON_USEDEP}]
- dev-python/pyside:6[gui,widgets,${PYTHON_USEDEP}]
- )
- ' 'python3*')
- )
- webagg? (
- >=dev-python/tornado-6.0.4[${PYTHON_USEDEP}]
- )
- wxwidgets? (
- $(python_gen_cond_dep '
- dev-python/wxpython:*[${PYTHON_USEDEP}]
- ' python3_{10..12})
- )
-"
-
-BDEPEND="
- ${RDEPEND}
- dev-python/pybind11[${PYTHON_USEDEP}]
- >=dev-python/setuptools-scm-7[${PYTHON_USEDEP}]
- virtual/pkgconfig
- test? (
- $(python_gen_impl_dep 'tk')
- dev-python/psutil[${PYTHON_USEDEP}]
- dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
- >=dev-python/tornado-6.0.4[${PYTHON_USEDEP}]
- !hppa? ( !s390? (
- || (
- media-video/ffmpeg[openh264]
- media-video/ffmpeg[x264]
- )
- ) )
- gtk3? (
- >=dev-python/pygobject-3.40.1-r1:3[cairo?,${PYTHON_USEDEP}]
- x11-libs/gtk+:3[introspection]
- )
- )
-"
-
-EPYTEST_PLUGINS=()
-EPYTEST_RERUNS=3
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-src_unpack() {
- # do not unpack freetype
- unpack "${P//_/}.tar.gz"
-}
-
-python_prepare_all() {
- # Affects installed _version.py, bug #854600
- export SETUPTOOLS_SCM_PRETEND_VERSION=${PV}
-
- # increase lock timeout to 30 s
- sed -i -e 's:retries = 50:retries = 300:' lib/matplotlib/cbook.py || die
- # upstream uses 'x86_64' condition to require exact matches no their CI
- # which doesn't match results from other x86_64 systems
- find -name 'test_*.py' -exec \
- sed -i -e "s:platform.machine() == 'x86_64':False:" {} + || die
-
- distutils-r1_python_prepare_all
-}
-
-src_configure() {
- unset DISPLAY # bug #278524
- export XDG_RUNTIME_DIR="${T}/runtime-dir"
- mkdir "${XDG_RUNTIME_DIR}" || die
- chmod 0700 "${XDG_RUNTIME_DIR}" || die
-
- DISTUTILS_ARGS=(
- -Dsystem-freetype=true
- -Dsystem-qhull=true
- -Dmacosx=false
- )
-}
-
-src_test() {
- mkdir subprojects/packagecache || die
- cp "${DISTDIR}/freetype-${FT_PV}.tar.gz" subprojects/packagecache/ || die
- virtx distutils-r1_src_test
-}
-
-python_test() {
- local EPYTEST_DESELECT=(
- # broken by -Wdefault
- "tests/test_rcparams.py::test_validator_invalid[validate_strlist-arg6-MatplotlibDeprecationWarning]"
- "tests/test_rcparams.py::test_validator_invalid[validate_strlist-arg7-MatplotlibDeprecationWarning]"
- tests/test_testing.py::test_warn_to_fail
- tests/test_legend.py::test_legend_nolabels_warning
- # TODO?
- tests/test_backend_qt.py::test_fig_sigint_override
- tests/test_backend_qt.py::test_ipython
- tests/test_backend_nbagg.py::test_ipynb
- # leak tests are fragile
- tests/test_backends_interactive.py::test_figure_leak_20490
- # major "images not close", new texlive perhaps
- tests/test_contour.py::test_all_algorithms
- 'tests/test_usetex.py::test_usetex[png]'
- 'tests/test_usetex.py::test_multiline_eqnarray[png]'
- 'tests/test_usetex.py::test_rotation[png]'
- # "no warnings"
- tests/test_backend_pdf.py::test_invalid_metadata
- tests/test_figure.py::test_too_many_figures
- # Requires qt5
- tests/test_backends_interactive.py::test_qt5backends_uses_qt5
- 'tests/test_backends_interactive.py::test_interactive_backend[toolbar2-MPLBACKEND=qtagg-QT_API=PyQt5-BACKEND_DEPS=PyQt5]'
- 'tests/test_backends_interactive.py::test_interactive_backend[toolbar2-MPLBACKEND=qtcairo-QT_API=PyQt5-BACKEND_DEPS=PyQt5,cairocffi]'
- 'tests/test_backends_interactive.py::test_interactive_backend[toolmanager-MPLBACKEND=qtagg-QT_API=PyQt5-BACKEND_DEPS=PyQt5]'
- 'tests/test_backends_interactive.py::test_blitting_events[MPLBACKEND=qtagg-QT_API=PyQt5-BACKEND_DEPS=PyQt5]'
- 'tests/test_backends_interactive.py::test_blitting_events[MPLBACKEND=qtcairo-QT_API=PyQt5-BACKEND_DEPS=PyQt5,cairocffi]'
- 'tests/test_backends_interactive.py::test_interactive_thread_safety[MPLBACKEND=qtagg-QT_API=PyQt5-BACKEND_DEPS=PyQt5]'
- 'tests/test_backends_interactive.py::test_interactive_timers[MPLBACKEND=qtagg-QT_API=PyQt5-BACKEND_DEPS=PyQt5]'
- 'tests/test_backends_interactive.py::test_interactive_timers[MPLBACKEND=qtcairo-QT_API=PyQt5-BACKEND_DEPS=PyQt5,cairocffi]'
- # Tests mixing qt5 and qt6, requires installing all Qt4Py impl.
- tests/test_backends_interactive.py::test_cross_Qt_imports
- )
-
- case ${EPYTHON} in
- pypy3)
- EPYTEST_DESELECT+=(
- # TODO
- tests/test_widgets.py::test_check_buttons
- tests/test_widgets.py::test_check_buttons_lines
- tests/test_widgets.py::test_check_radio_buttons_image
- tests/test_widgets.py::test_radio_buttons
- )
- ;&
- pypy3.11)
- EPYTEST_DESELECT+=(
- # TODO: warning isn't passed through
- tests/test_image.py::test_large_image
- # TODO: regression in 7.3.18+
- tests/test_axes.py::test_axes_clear_reference_cycle
- # TODO
- tests/test_pickle.py::test_complete
- tests/test_pickle.py::test_no_pyplot
- tests/test_pickle.py::test_pickle_load_from_subprocess
- tests/test_pickle.py::test_simple
- tests/test_texmanager.py::test_openin_any_paranoid
- )
- ;;
- python3.11)
- EPYTEST_DESELECT+=(
- # https://github.com/matplotlib/matplotlib/issues/23384
- "tests/test_backends_interactive.py::test_figure_leak_20490[time_mem1-{'MPLBACKEND': 'qtagg', 'QT_API': 'PyQt5'}]"
- "tests/test_backends_interactive.py::test_figure_leak_20490[time_mem1-{'MPLBACKEND': 'qtcairo', 'QT_API': 'PyQt5'}]"
- )
- ;;
- python3.12)
- EPYTEST_DESELECT+=(
- tests/test_constrainedlayout.py::test_compressed1
- )
- ;;
- esac
-
- case ${ABI} in
- hppa)
- EPYTEST_DESELECT+=(
- 'tests/test_mathtext.py::test_mathtext_exceptions[hspace without value]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[hspace with invalid value]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[function without space]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[accent without space]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[frac without parameters]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[frac with empty parameters]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[binom without parameters]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[binom with empty parameters]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[genfrac without parameters]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[genfrac with empty parameters]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[sqrt without parameters]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[sqrt with invalid value]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[overline without parameters]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[overline with empty parameter]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[left with invalid delimiter]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[right with invalid delimiter]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[unclosed parentheses with sizing]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[unclosed parentheses without sizing]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[dfrac without parameters]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[dfrac with empty parameters]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[overset without parameters]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[underset without parameters]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[unknown symbol]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[double superscript]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[double subscript]'
- 'tests/test_mathtext.py::test_mathtext_exceptions[super on sub without braces]'
- 'tests/test_quiver.py::test_barbs[png]'
- 'tests/test_quiver.py::test_barbs_pivot[png]'
- 'tests/test_quiver.py::test_barbs_flip[png]'
- 'tests/test_text.py::test_parse_math'
- 'tests/test_text.py::test_parse_math_rcparams'
- )
- ;;
- arm)
- EPYTEST_DESELECT+=(
- tests/test_backend_ps.py::test_savefig_to_stringio
- # too large for 32-bit platforms
- 'tests/test_axes.py::test_psd_csd[png]'
- )
- ;;
- sparc64)
- EPYTEST_DESELECT+=(
- tests/test_backend_pgf.py::test_pdf_pages_metadata_check
- tests/test_backend_pgf.py::test_minus_signs_with_tex
- )
- ;;
- alpha|arm|m68k|o32|ppc|s390|sh|sparc|x86)
- EPYTEST_DESELECT+=(
- # too large for 32-bit platforms
- 'tests/test_axes.py::test_psd_csd[png]'
- )
- ;;
- *)
- ;;
- esac
-
- # override BUILD_DIR used by meson, so that mpl is actually rebuilt
- # against bundled freetype
- local orig_build_dir=${BUILD_DIR}
- local BUILD_DIR=${BUILD_DIR}-test
-
- # we need to rebuild mpl against bundled freetype, otherwise
- # over 1000 tests will fail because of mismatched font rendering
- local DISTUTILS_ARGS=(
- "${DISTUTILS_ARGS[@]}"
- -Dsystem-freetype=false
- )
- distutils_pep517_install "${BUILD_DIR}"/install
- cp -r {"${orig_build_dir}","${BUILD_DIR}"}/install"${EPREFIX}/usr/bin" || die
- cp -r {"${orig_build_dir}","${BUILD_DIR}"}/install"${EPREFIX}/usr/pyvenv.cfg" || die
- local -x PATH=${BUILD_DIR}/install${EPREFIX}/usr/bin:${PATH}
-
- pushd lib >/dev/null || die
- local path
- local sitedir=${BUILD_DIR}/install$(python_get_sitedir)
- # sigh, upstream doesn't install these
- while IFS= read -d '' path; do
- cp -r "${path}" "${sitedir}/${path}" || die
- done < <(
- find \( \
- -name baseline_images -o \
- -name '*.ipynb' -o \
- -name '*.pfb' -o \
- -name '*.ttf' -o \
- -name tinypages \
- \) -print0
- )
- popd >/dev/null || die
-
- # pretend we're on CI to increase timeouts
- local -x CI=1
- nonfatal epytest --pyargs matplotlib -m "not network" \
- -o tmp_path_retention_policy=all || die
-}
diff --git a/dev-python/memory-allocator/Manifest b/dev-python/memory-allocator/Manifest
index 55b8884f8be1..2b280ecc4394 100644
--- a/dev-python/memory-allocator/Manifest
+++ b/dev-python/memory-allocator/Manifest
@@ -1 +1,3 @@
DIST memory_allocator-0.1.4.tar.gz 19723 BLAKE2B 22643aa32ac43f0e80e76b9d214c5decb70fbb83ddf4e116739bd257df1a2f2f02cf33c4a8925d0a38af2c59b90ee4fb6ccdfe2256fccae00ad98b2a9596e1db SHA512 0cd8b4d5878fa86972f9aa91e1fef4c074c3a0afe25ac1e54a3ad5e3b1ec5e4907cdd067d790f4e2ab7706f5dc2ff44c43ca0bc8e03b1b4dc90d66d8aa49ba0f
+DIST memory_allocator-0.2.0.tar.gz 22165 BLAKE2B ae49ff6893f4202214823dd5b1bdb0dc14f7dd4a5750f5a537770c0ecb879b6abdcad9bd0c4b1e0ed460b9d17542d6d2bb38936632a3e0db683d7896179a9981 SHA512 5c7dcedc347027f4918763ba5312f7994f90aff61fd44f17f1850f86f3aa0bb08d49fddadfb6555c08c52ac9c346e10c140dde3653f9c17c85dbea436ebeec13
+DIST memory_allocator-0.2.0.tar.gz.provenance 9501 BLAKE2B 0ef75267c5868b5b764a52d49b889772245bf276a32dfc4331f9f5efe70db703b964a0b6b2b504c32f76349ce40aaa64f99c466f79397e1aaa0bed9dbe348434 SHA512 15e92d597015c33ed093cfa4b21445d59aeac8e7321162f89975fd45f6d6dbceb721aa11203bc1f5db4b9609f7e83bacc02676249b19672ff5ab8987628e94f4
diff --git a/dev-python/memory-allocator/memory-allocator-0.2.0.ebuild b/dev-python/memory-allocator/memory-allocator-0.2.0.ebuild
new file mode 100644
index 000000000000..7b8d3a37e7d3
--- /dev/null
+++ b/dev-python/memory-allocator/memory-allocator-0.2.0.ebuild
@@ -0,0 +1,36 @@
+# Copyright 2021-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=meson-python
+PYPI_VERIFY_REPO=https://github.com/sagemath/memory_allocator
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="An extension class for memory allocation in cython"
+HOMEPAGE="
+ https://pypi.org/project/memory-allocator/
+ https://github.com/sagemath/memory_allocator/
+"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~riscv"
+
+BDEPEND="
+ dev-python/cython[${PYTHON_USEDEP}]
+"
+
+python_test() {
+ # The test script tries to "import memory_allocator.test" which, so
+ # long as a memory_allocator directory exists inside CWD, will look
+ # for a memory_allocator/test.py there. But there is no such file;
+ # the "test" module is a compiled extension. To let the search fall
+ # back to the correct location, we temporarily rename the directory
+ # that misleads it.
+ rm -rf memory_allocator || die
+ "${EPYTHON}" test.py || die
+}
diff --git a/dev-python/nbclient/nbclient-0.10.2-r1.ebuild b/dev-python/nbclient/nbclient-0.10.2-r1.ebuild
index ebabb782192d..131c7f36b253 100644
--- a/dev-python/nbclient/nbclient-0.10.2-r1.ebuild
+++ b/dev-python/nbclient/nbclient-0.10.2-r1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ppc ppc64 ~riscv ~s390 ~sparc ~x86"
RDEPEND="
>=dev-python/jupyter-client-6.1.12[${PYTHON_USEDEP}]
diff --git a/dev-python/nbconvert/nbconvert-7.16.6-r1.ebuild b/dev-python/nbconvert/nbconvert-7.16.6-r1.ebuild
index 0300a31bf23e..b090bf722998 100644
--- a/dev-python/nbconvert/nbconvert-7.16.6-r1.ebuild
+++ b/dev-python/nbconvert/nbconvert-7.16.6-r1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ppc ppc64 ~riscv ~s390 ~sparc ~x86"
RDEPEND="
dev-python/beautifulsoup4[${PYTHON_USEDEP}]
diff --git a/dev-python/pyqt-builder/pyqt-builder-1.19.1.ebuild b/dev-python/pyqt-builder/pyqt-builder-1.19.1.ebuild
index 817ccd7b614f..58419ad22019 100644
--- a/dev-python/pyqt-builder/pyqt-builder-1.19.1.ebuild
+++ b/dev-python/pyqt-builder/pyqt-builder-1.19.1.ebuild
@@ -12,7 +12,7 @@ HOMEPAGE="https://github.com/Python-PyQt/PyQt-builder/"
LICENSE="BSD-2"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
+KEYWORDS="amd64 arm arm64 ~loong ~ppc ppc64 ~riscv x86"
RDEPEND="
dev-python/packaging[${PYTHON_USEDEP}]
diff --git a/dev-python/pyqt5-sip/pyqt5-sip-12.17.2.ebuild b/dev-python/pyqt5-sip/pyqt5-sip-12.17.2.ebuild
index 2d332fd114c9..c95a9bea11bf 100644
--- a/dev-python/pyqt5-sip/pyqt5-sip-12.17.2.ebuild
+++ b/dev-python/pyqt5-sip/pyqt5-sip-12.17.2.ebuild
@@ -14,4 +14,4 @@ HOMEPAGE="https://pypi.org/project/PyQt5-sip/"
LICENSE="BSD-2"
SLOT="0/$(ver_cut 1)"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
+KEYWORDS="amd64 arm arm64 ~loong ~ppc ppc64 ~riscv x86"
diff --git a/dev-python/pyqt6-sip/pyqt6-sip-13.10.3.ebuild b/dev-python/pyqt6-sip/pyqt6-sip-13.10.3.ebuild
index 74144f98345e..8d5344c63f73 100644
--- a/dev-python/pyqt6-sip/pyqt6-sip-13.10.3.ebuild
+++ b/dev-python/pyqt6-sip/pyqt6-sip-13.10.3.ebuild
@@ -14,4 +14,4 @@ HOMEPAGE="https://pypi.org/project/PyQt6-sip/"
LICENSE="BSD-2"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
+KEYWORDS="amd64 arm arm64 ~loong ~ppc ppc64 ~riscv x86"
diff --git a/dev-python/pytest-jupyter/pytest-jupyter-0.11.0.ebuild b/dev-python/pytest-jupyter/pytest-jupyter-0.11.0.ebuild
index 5bb2dd5bea3c..b1be4d7a0b96 100644
--- a/dev-python/pytest-jupyter/pytest-jupyter-0.11.0.ebuild
+++ b/dev-python/pytest-jupyter/pytest-jupyter-0.11.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ppc ppc64 ~riscv ~s390 ~sparc ~x86"
RDEPEND="
>=dev-python/ipykernel-6.14[${PYTHON_USEDEP}]
diff --git a/dev-python/pytest-reserial/Manifest b/dev-python/pytest-reserial/Manifest
index f981f541a562..c184ac62dfd9 100644
--- a/dev-python/pytest-reserial/Manifest
+++ b/dev-python/pytest-reserial/Manifest
@@ -1,7 +1,6 @@
-DIST pytest_reserial-0.4.3.tar.gz 12625 BLAKE2B 09f3ee9706f06923d8edd53d19c956046f075b90675642c692c51dc65f66429413d756a902396f147f27cc547dc3487641645dedae6c6900f96b1c2c66dca33a SHA512 282a9edd457b6bc622aaa66ee7715671eeb945e8dab72c3c7898d7850fb6d151ebfbcddefaad25c1b3f10c13c52b6bc8438975484f1fecd87b5c224f431dba59
-DIST pytest_reserial-0.5.0.tar.gz 12931 BLAKE2B 4d91f1c367145d15ee5b64fc18ab43422aa42848f3df63826edbe12a016495d8add36667e83415d443cb8e4805e718634d127c0c38cd5890d1b537c37b053789 SHA512 96095b7ff8b9db661de9902ff2a8137f30af98696c9589e94ebbbc8367ae4dfa8cb1d116aa9f5e94913548189adda129634bcf8e4fee079c5358367c34e3bfb4
-DIST pytest_reserial-0.5.0.tar.gz.provenance 9263 BLAKE2B e5a8c86fb1eb70415a3627bc71037718bb1aaa36f6fb68fd0eae8bb45b4b56f66339f1036c78bcf6d4d6da0687f2de4545ce1ffa16031fe17094e8c41d64bf74 SHA512 859f2d9ffd1467276e5bbef41a2822574dbd80618784834e95c05ebfeabbf710d3ce7a709e482d1b24f3cfb7b2a01cabd7d3a7e1669671bcbc54574fec952984
DIST pytest_reserial-0.5.1.tar.gz 13597 BLAKE2B 9106559890f45fcf7b514f1b76366e6ef31db37d3d78d753920f166f30aaebcbe1ad11a4b8c8550f5c8a93625cbad21ffe9830ea15eca00e91bab5ee53728f29 SHA512 1cd0f729c64fc7269169e74bea21bf5d95bf7c571e99ff751461888e020fd5aa28644a7601876f7bda0dbb4bb48370a11ca03b84c538ed2e80f1133e93530641
DIST pytest_reserial-0.5.1.tar.gz.provenance 9455 BLAKE2B dd2ba2b62878f7a01025072a53b19949b22bbedd8220e7a974b32bef21e520acaf30c95be250991bb72a0f04dff058877bba5189041622ebdfee5f72b97cf51b SHA512 5c97339b60a18bde4e158d7cfca5ebf25a2867e4bffbbac82803818b9164b1a092ed22737335548b020bcad4ca31fc1c095d1b9dfec901f08bccb37941a19110
DIST pytest_reserial-0.6.0.tar.gz 14363 BLAKE2B 35476087496675676d0568b85f870c6964ee6a4ac4e77be5af214cddec6f8046aba3da40b7830111e7738b8785c5403927b893f1c2af95eb7dc559ace58035b0 SHA512 315e75a08bf5c0c99d5381f0b1188afee14038703e17570779b3386315603668654e9a7f1da94e6925f029fec4b40a9b9c5f9733ecfbe043c6f5f599f17907a1
DIST pytest_reserial-0.6.0.tar.gz.provenance 9578 BLAKE2B f5f636c78e09dbe9a53a0ab1df691864f63afee8c669d7714ea466b7d91083d76f9cdbb52c9e3f79c5a8a3b103679c4a6e1afa0394f410355b2d3d495031bbed SHA512 12db5104fe59417d6727cd0c92c0ec12e488bbd029d7ae0c87feae1bce9e48a3e04bc39c8863d2dda0fa1e730971944a8d61d08a3aa0094d08e42e11d3fd5aaf
+DIST pytest_reserial-0.6.1.tar.gz 14432 BLAKE2B 5f265f01625cba3d66459f0ecb41c9aeafefce5ae85725e0264a78ab74c18ad4ccc8a4620163931ac543db6f29ebad266395af580ea2974295919cecb76c7771 SHA512 3a1d88f9ff1837acb6721eee96d4bfb0825738ad94ce73848cca5bc355b1f14eda93947d958bbeda24f38322c73117ff9a28931ebd490551f6ef3366986e4816
+DIST pytest_reserial-0.6.1.tar.gz.provenance 9527 BLAKE2B 25e46c15741c11076f1f81395f6885ae4bba75014c9e71eecffd9707e9766efba332d3fe3da604572f189d369c4acf3c60abe59264b85bbcf2485e246d0dcaf8 SHA512 4f380b7ec1a1fd06529073f8d174a8f52dba7ae82e2f6926021bd255b6efc6aab36f281b030f6ac2bc4428fa6388cb011de9bb501f2ff1f065bc986632addce1
diff --git a/dev-python/pytest-reserial/pytest-reserial-0.4.3.ebuild b/dev-python/pytest-reserial/pytest-reserial-0.4.3.ebuild
deleted file mode 100644
index 4dec3f9274af..000000000000
--- a/dev-python/pytest-reserial/pytest-reserial-0.4.3.ebuild
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=flit
-PYTHON_COMPAT=( python3_{10..14} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Pytest plugin for recording and replaying serial port traffic during tests"
-HOMEPAGE="
- https://pypi.org/project/pytest-reserial/
- https://github.com/bessman/pytest-reserial/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="amd64"
-
-RDEPEND="
- dev-python/pyserial[${PYTHON_USEDEP}]
- dev-python/pytest[${PYTHON_USEDEP}]
-"
-
-distutils_enable_tests pytest
diff --git a/dev-python/pytest-reserial/pytest-reserial-0.5.0.ebuild b/dev-python/pytest-reserial/pytest-reserial-0.6.1.ebuild
index 02f0af19ea52..8c72f8df8d41 100644
--- a/dev-python/pytest-reserial/pytest-reserial-0.5.0.ebuild
+++ b/dev-python/pytest-reserial/pytest-reserial-0.6.1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64"
+KEYWORDS="~amd64"
RDEPEND="
dev-python/pyserial[${PYTHON_USEDEP}]
diff --git a/dev-python/scipy/Manifest b/dev-python/scipy/Manifest
index 25438172e16a..501621bb3770 100644
--- a/dev-python/scipy/Manifest
+++ b/dev-python/scipy/Manifest
@@ -1,4 +1,5 @@
DIST scipy-1.16.2.tar.gz 30580599 BLAKE2B aec4039fe5798365fbe5147a4d6acea61e408ad0a533da4a3602e3c03a5a495f693b9b998a0417524621e6414e3bc847339364d6536e6b489cff43931253c87d SHA512 6b5c1ab6236af5d40850f8b77f8d47494dda9bccf814908ba306b4b3710359d18eb0dd880c05dc4f334cc298d0a2d54d271d5cd5b519190fcfba58524b1d8dce
DIST scipy-1.16.3.tar.gz 30597883 BLAKE2B ba026013ecfdc9329ec6140bf32f8de61e141b645c5a35ad5dc38276ac4df296fce0091675177daaf3d65f2cb797783365df306397e1643d50508e343daaa325 SHA512 7386670d2be598f46425a5f2ac0194748c83ec006be0b0395a850a613bc12731669469aefe503c9db2521aba956325d44e7a75fa82e4c1e629202cafd1966aa5
DIST scipy-1.17.0rc1.tar.gz 30393241 BLAKE2B aa98c2df9c10a456a47eda9cbeebded3e2a7c46e881fce6a8ede10ba232d5101392994e9f7a75f1312e7f7601eded977e803423fa60ee7b1ab0325c11b5683ae SHA512 91ecca179ad61ed7e584d90cdf4a2d918d86cc75a45ed12c761d1840a7cd1b2265d442e67de19dc271355c37f9bead00c3d55d4c9011eb9b898cd3ff6d9fd167
+DIST scipy-1.17.0rc2.tar.gz 30397866 BLAKE2B d49fcf7d5af8ffb10ca0615e8e43a6d36e2972fc4bc194905bfbfee88d44c8830d73373ec49cd5035ac73922f0122ebc97c2c3cfb3ba24d5a43a8002a05d2664 SHA512 6576b0aa4d7392f061249cf034f0497e64c3ac98314ad18499d63a8c41f1dc6a5dcfe8b09480e0eeda8bbcb2e688c8cd2b5aa8c5dd4918fb92f6800bc6a2dcc9
DIST scipy-html-1.16.2.zip 71516578 BLAKE2B 244537f823e39b52e0b00df63f8f36088f5ef17e365f98415d1573883e9c0eee3f4376b149eaea9b70b34b34a294aeafae9f849050ab8161a8ecdb24172c2876 SHA512 15df0c7211cc4d32007b54015efc17edd1c9b23e8892b748ab946c5c1ea3e1840a00d9005b585cc0c6416bcef1e490f54ff919d3c0140ed95d8e469836751d5c
diff --git a/dev-python/scipy/scipy-1.17.0_rc2.ebuild b/dev-python/scipy/scipy-1.17.0_rc2.ebuild
new file mode 100644
index 000000000000..f9a0fe19035b
--- /dev/null
+++ b/dev-python/scipy/scipy-1.17.0_rc2.ebuild
@@ -0,0 +1,181 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+FORTRAN_NEEDED=fortran
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=meson-python
+PYTHON_COMPAT=( python3_{10..14} )
+PYTHON_REQ_USE="threads(+)"
+
+inherit flag-o-matic fortran-2 distutils-r1
+
+DESCRIPTION="Scientific algorithms library for Python"
+HOMEPAGE="
+ https://scipy.org/
+ https://github.com/scipy/scipy/
+ https://pypi.org/project/scipy/
+"
+
+if [[ ${PV} == *9999* ]] ; then
+ inherit git-r3
+
+ # Need submodules, so git for now.
+ EGIT_REPO_URI="https://github.com/scipy/scipy"
+ EGIT_BRANCH="maintenance/$(ver_cut 1-2).x"
+ EGIT_SUBMODULES=( '*' )
+else
+ inherit pypi
+
+ # Upstream is often behind with doc updates
+ DOC_PV=1.16.2
+
+ SRC_URI+="
+ doc? (
+ https://docs.scipy.org/doc/${PN}-${DOC_PV}/${PN}-html-${DOC_PV}.zip
+ )
+ "
+
+ if [[ ${PV} != *rc* ]] ; then
+ KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+ fi
+fi
+
+LICENSE="BSD LGPL-2"
+SLOT="0"
+IUSE="doc +fortran test-rust"
+
+# pythran is needed in both BDEPEND (for /usr/bin/pythran) and in DEPEND
+# to actually compile code generated by pythran (headers and such needed).
+#
+# umfpack is technically optional but it's preferred to have it available.
+COMMON_DEPEND="
+ >=dev-python/numpy-1.23.5:=[lapack,${PYTHON_USEDEP}]
+ >=media-libs/qhull-2020.2:=
+ virtual/cblas
+ >=virtual/lapack-3.8
+"
+# Only boost.math is used, and meson.build doesn't even look up specific boost modules.
+DEPEND="
+ ${COMMON_DEPEND}
+ >=dev-libs/boost-1.89.0
+"
+RDEPEND="
+ ${COMMON_DEPEND}
+ dev-python/pillow[${PYTHON_USEDEP}]
+"
+DEPEND+="
+ fortran? (
+ >=dev-python/pythran-0.16.0[${PYTHON_USEDEP}]
+ )
+"
+BDEPEND="
+ dev-lang/swig
+ >=dev-python/cython-3.0.8[${PYTHON_USEDEP}]
+ >=dev-python/meson-python-0.15.0[${PYTHON_USEDEP}]
+ >=dev-python/pybind11-2.13.2[${PYTHON_USEDEP}]
+ >=dev-python/pytest-8.0.0[${PYTHON_USEDEP}]
+ >=dev-build/meson-1.5.0
+ !kernel_Darwin? ( dev-util/patchelf )
+ virtual/pkgconfig
+ doc? ( app-arch/unzip )
+ fortran? (
+ >=dev-python/pythran-0.16.0[${PYTHON_USEDEP}]
+ )
+ test-rust? (
+ dev-python/pooch[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( hypothesis )
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_unpack() {
+ default
+
+ if use doc; then
+ unzip -qo "${DISTDIR}"/${PN}-html-${DOC_PV}.zip -d html || die
+ fi
+}
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # unpin system dependencies
+ sed -i -e "s@version : '@&>=@" meson.build || die
+}
+
+python_configure_all() {
+ DISTUTILS_ARGS=(
+ -Dblas=blas
+ -Dlapack=lapack
+ -Duse-pythran=$(usex fortran true false)
+ -Duse-system-libraries=all
+ )
+
+ # https://bugs.gentoo.org/932721
+ has_version '>=dev-python/numpy-2.0.0' && filter-lto
+}
+
+python_test() {
+ # We run tests in parallel, so avoid having n^2 threads in lapack
+ # tests.
+ local -x BLIS_NUM_THREADS=1
+ local -x MKL_NUM_THREADS=1
+ local -x OMP_NUM_THREADS=1
+ local -x OPENBLAS_NUM_THREADS=1
+
+ cd "${BUILD_DIR}/install$(python_get_sitedir)" || die
+
+ local EPYTEST_DESELECT=(
+ # Network
+ scipy/datasets/tests/test_data.py::TestDatasets::test_existence_all
+ scipy/datasets/tests/test_data.py::TestDatasets::test_ascent
+ scipy/datasets/tests/test_data.py::TestDatasets::test_face
+ scipy/datasets/tests/test_data.py::TestDatasets::test_electrocardiogram
+
+ # Crashes with assertion, not a regression
+ # https://github.com/scipy/scipy/issues/19321
+ scipy/signal/tests/test_signaltools.py::test_lfilter_bad_object
+
+ # Awfully slow tests
+ scipy/interpolate/tests/test_bsplines.py::TestBatch::test_batch
+ scipy/linalg/tests/test_basic.py::TestLstsq::test_random_complex_exact
+ scipy/sparse/linalg/_eigen/tests/test_svds.py::test_small_sigma_sparse
+
+ # TODO: minor precision errors
+ 'scipy/linalg/tests/test_batch.py::TestBatch::test_solve[float32-bdim2]'
+ 'scipy/linalg/tests/test_batch.py::TestBatch::test_lu_solve[float32-bdim2]'
+ 'scipy/stats/tests/test_continuous.py::TestDistributions::test_funcs[cdf-methods11-x-Normal]['
+
+ # Crashes, probably too big
+ 'scipy/interpolate/tests/test_fitpack2.py::TestRectBivariateSpline::test_spline_large_2d_maxit'
+ )
+ local EPYTEST_IGNORE=()
+
+ if ! has_version -b "dev-python/pooch[${PYTHON_USEDEP}]" ; then
+ EPYTEST_IGNORE+=(
+ scipy/datasets/tests/test_data.py
+ )
+ fi
+
+ if has_version -b "sys-libs/zlib-ng[compat]"; then
+ EPYTEST_DESELECT+=(
+ # https://github.com/scipy/scipy/issues/23185
+ scipy/io/matlab/tests/test_streams.py::TestZlibInputStream::test_all_data_read_bad_checksum
+ scipy/io/matlab/tests/test_streams.py::TestZlibInputStream::test_all_data_read_overlap
+ )
+ fi
+
+ # avoid other stuff being multithreaded when using xdist
+ local -x PYTHON_CPU_COUNT=1
+ epytest scipy
+}
+
+python_install_all() {
+ use doc && local HTML_DOCS=( "${WORKDIR}"/html/. )
+
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/types-psutil/Manifest b/dev-python/types-psutil/Manifest
index cdd37884d973..aa93189c22d8 100644
--- a/dev-python/types-psutil/Manifest
+++ b/dev-python/types-psutil/Manifest
@@ -1,3 +1,4 @@
DIST types_psutil-7.1.3.20251125.tar.gz 23391 BLAKE2B c8f30870d822d9686dd23e893bb435cd2ce1bdecca8573ac7bfb7f871f76f5f285016a0c8cf6bd8fc871b07ae0e21e0259b3afa17e97ce7d28340eba281a6e5c SHA512 1b5e6d2e1f1f971a4b3bf52435f1eb115b6a2b845ea4c2c2f7061de4c7e6412568eddd82ad6a1465e880266b2a6b23d11031dccb1f315ba874120949f421c9d9
DIST types_psutil-7.1.3.20251211.tar.gz 25198 BLAKE2B fd12b6e16f9cd57568f069da420a1c500da0ccda515eec4197771ae23eabd0dfabaabe66c4335234ab297c7a86831c15ee5c7f4800c7e1c50e6fba8c54eebe61 SHA512 6bbe267aa2c90ff474fdd0c1949619fb7344aa4c0b9961dd63137813669f511abcc9871d499c6b74e36543b7007908a55e03754bbdbbfd128e5928911c6b89e3
DIST types_psutil-7.2.0.20251228.tar.gz 25400 BLAKE2B 93c589636c46a7034d73e898c5e912f7739147214aeedc091e5b92bbd4d8d95b7d4b2387cc78ecfcd37e98b10ba91a932125a0451ec1864113a0a9dc26b35165 SHA512 0f060ac56ba48062982dbf5d4ac6d010dceb8fe49b7b0817ff7834970f2b699077a7218d4d393c1f91924fce447942b89486daafd737faddf317d98d6187eec3
+DIST types_psutil-7.2.1.20251231.tar.gz 25620 BLAKE2B 6ca4bb77cd1d90a9eda26166aa38ff2b68c200b90f8d3cdeb731ec68a3145a3c5ba8c969983a5eeeeaf6adf92b0e32363c9908d1384413b266ccbc0c6b3cdfea SHA512 39e5c66245b9cdef7b08a42384baa16a9fcad06b2c284fcb97d290677c04d935e435c8a43b22b145a48e3af84a3a521caf5ff756268c06b805929309ae013951
diff --git a/dev-python/types-psutil/types-psutil-7.2.1.20251231.ebuild b/dev-python/types-psutil/types-psutil-7.2.1.20251231.ebuild
new file mode 100644
index 000000000000..486007de99f8
--- /dev/null
+++ b/dev-python/types-psutil/types-psutil-7.2.1.20251231.ebuild
@@ -0,0 +1,16 @@
+# Copyright 2023-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Typing stubs for psutil"
+HOMEPAGE="https://pypi.org/project/types-psutil/"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
diff --git a/dev-python/uv-build/Manifest b/dev-python/uv-build/Manifest
index e25663570fb1..97d138303cfb 100644
--- a/dev-python/uv-build/Manifest
+++ b/dev-python/uv-build/Manifest
@@ -4,6 +4,7 @@ DIST uv_build-0.9.15.tar.gz 354021 BLAKE2B a47350ead8d9672d09967bbd7f9ac2f8e231e
DIST uv_build-0.9.17.tar.gz 356435 BLAKE2B 902d134f83026a68ef8600b21d9ce8bddab281ab8a34b7b836cce2b27ae393b24ddbafbbfa18332efc5cb8b5883c4a02435b62c29fb50923cb877834a2918e76 SHA512 7b536edcf9917055634f97150dba3e91d0fe71cb49922a3bf13fa480d6d17205de172242bb5e9dbd22de1984aec0c0f78955b37811d84a9ff765254719847d36
DIST uv_build-0.9.18.tar.gz 356832 BLAKE2B 61df9000eb4eb0dc147b4a18732937a459ff27ecbd6be19e1c4496632b8b79eaedb112dd2599d74ad111899d44070cf0acbdf4bc7b57d864823e202209a2b553 SHA512 093ece50dd3c89c56c7d61f35dbe66319ea23295e21b66b7cdb73ae669956d6a68684a183faad9c59cb96fc2b26747f40609570540b8ff158d1f8f3d32bfd15c
DIST uv_build-0.9.20.tar.gz 357132 BLAKE2B eb64c2e9e0029cf8eb8f295e16897911c602f7bc3205188c224748352ec9f3843badb2407103508c2a8703f6141937e0f61d88ceaf8a31a551dad4b500c24731 SHA512 9caa5c33a8d563f4205022c0a978e8d0b1e53aa60c977dee9e83d227935675ab918de7eef96f8f6c3bf4adc4db70dbb99504cee5533cc66412c93f2263246f8b
+DIST uv_build-0.9.21.tar.gz 357539 BLAKE2B 721e12e0260301d3234f3fbc76d5944c9b15e14b345876d3f231314f64f15c5e6c37c8c7155e24605c928dbe52b12b3b02cd2f0a1373b8d93b017f2c122ddf19 SHA512 1e2885f978fa45e1481a72a35d5734ef80d3ab7da0213fc41cad8c4e49756bf0b172cea570d25a6b0461c6dd13fead8a8fae356b11ec758f8bd7b915faa322c4
DIST uv_build-0.9.4.tar.gz 332506 BLAKE2B 3b65cc80192cf3abc33bcf01735c8b7f937a12f2dcd0557d0ae255ce8bd4cb7dbb15522e73802be0e17ac10c4acad6f9075f12d5f853bb1881b0c13f1d120b33 SHA512 c3be52cfbc1cf5a229df91d9e1125925a534e3fca3041e29a16edd2334fa28b055c73e21a6bd1a3d1d63924cf8f112645300530e8cb6139fb549499ca672070f
DIST uv_build-0.9.7.tar.gz 332992 BLAKE2B 069e615f41e78098b61cc073cb01bc77e0e6778f3054ccfcf36985be3755d7e819cc1bd151e875db109461f423cc855cd336467015ec7103e47346f230564679 SHA512 d61249de00640f6e0ab62ab440a8aae1802acbd6cf8ecb8aca3efe26361d7191d057735ab91c174c5772fc04accf0ae3281f447d010c99e2f458829f4c618abc
DIST uv_build-0.9.8.tar.gz 333344 BLAKE2B 4a841b4ca879734917bd09a7d1960dad322baa969fc55ec038c0318e8931ac129a0a3d03865a55ba4fa4a0f4beba398c1715c8faf1a275c1a4458317841253e6 SHA512 2c5f54a887ce7256911dabb54435618354f3caa1a941e77ed5a4b1c7015221a0009da08e8c46d569f92ac263bc544335ed2060de37ac5c27ee0789153f2edbac
diff --git a/dev-python/uv-build/uv-build-0.9.21.ebuild b/dev-python/uv-build/uv-build-0.9.21.ebuild
new file mode 100644
index 000000000000..fe8e9650d15e
--- /dev/null
+++ b/dev-python/uv-build/uv-build-0.9.21.ebuild
@@ -0,0 +1,99 @@
+# Copyright 2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# Maturin compiles uv-build executable for every impl, we do not want
+# that, so we use another backend. And since we use another backend,
+# why not dogfood it in the first place?
+DISTUTILS_USE_PEP517=standalone
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="PEP517 uv build backend"
+HOMEPAGE="
+ https://github.com/astral-sh/uv/
+ https://pypi.org/project/uv-build/
+"
+
+LICENSE="|| ( Apache-2.0 MIT )"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-python/uv-${PV}
+"
+BDEPEND="
+ test? (
+ app-arch/unzip
+ dev-python/build[${PYTHON_USEDEP}]
+ )
+"
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # use the executable from dev-python/uv instead of building
+ # a largely overlapping uv-build executable (at least for now)
+ sed -i -e '/USE_UV_EXECUTABLE/s:False:True:' python/uv_build/__init__.py || die
+
+ # replace the build-system section
+ sed -i -e '/\[build-system\]/,$d' pyproject.toml || die
+ cat >> pyproject.toml <<-EOF || die
+ [build-system]
+ requires = ["uv_build<9999"]
+ build-backend = "uv_build"
+ backend-path = ["src"]
+ EOF
+
+ # rename to make uv-build find it
+ mv python src || die
+}
+
+python_test() {
+ "${EPYTHON}" -m build -n || die "Self-build failed with ${EPYTHON}"
+
+ local zip_result=$(
+ unzip -t "dist/uv_build-${PV}-py3-none-any.whl" || die
+ )
+ local zip_expected="\
+Archive: dist/uv_build-${PV}-py3-none-any.whl
+ testing: uv_build/ OK
+ testing: uv_build/__init__.py OK
+ testing: uv_build/__main__.py OK
+ testing: uv_build/py.typed OK
+ testing: uv_build-${PV}.dist-info/ OK
+ testing: uv_build-${PV}.dist-info/WHEEL OK
+ testing: uv_build-${PV}.dist-info/METADATA OK
+ testing: uv_build-${PV}.dist-info/RECORD OK
+No errors detected in compressed data of dist/uv_build-${PV}-py3-none-any.whl.\
+"
+ if [[ ${zip_result} != ${zip_expected} ]]; then
+ eerror ".zip result:\n${zip_result}"
+ eerror ".zip expected:\n${zip_expected}"
+ die ".whl result mismatch"
+ fi
+
+ local tar_result=$(
+ tar -tf "dist/uv_build-${PV}.tar.gz" || die
+ )
+ local tar_expected="\
+uv_build-${PV}/PKG-INFO
+uv_build-${PV}/
+uv_build-${PV}/README.md
+uv_build-${PV}/pyproject.toml
+uv_build-${PV}/src
+uv_build-${PV}/src/uv_build
+uv_build-${PV}/src/uv_build/__init__.py
+uv_build-${PV}/src/uv_build/__main__.py
+uv_build-${PV}/src/uv_build/py.typed\
+"
+ if [[ ${tar_result} != ${tar_expected} ]]; then
+ eerror ".tar.gz result:\n${tar_result}"
+ eerror ".tar.gz expected:\n${tar_expected}"
+ die ".tar.gz result mismatch"
+ fi
+}
diff --git a/dev-python/uv/Manifest b/dev-python/uv/Manifest
index 574d1f2a029d..ea9eef7b4fd4 100644
--- a/dev-python/uv/Manifest
+++ b/dev-python/uv/Manifest
@@ -15,6 +15,8 @@ DIST uv-0.9.18-crates.tar.xz 48624732 BLAKE2B 5a890046ca810c9f0c3779310a413a0614
DIST uv-0.9.18.gh.tar.gz 4786468 BLAKE2B 3df1ca97128242a655a392cd61cd0b4c943f77804553f8722db058e3a2dc0698803f422609ae52bf64e5f8922d13fd596ca7b898756c8d360da5bed4b656c29a SHA512 e0d880d6cf946979fbc6333f086aa6a54893fca19bae6d62e82d831c7502c2150d829a861edeb4c29fe7320d7c7da902693039d597b945f58ae803eadc7f5a17
DIST uv-0.9.20-crates.tar.xz 48642776 BLAKE2B 4ce225a3639d02ea05014c2132a7fd8baf53f3bd0bf3cafc6ebde144f2cea982426835f91bcb587e8dba122afe381c5a0ffa654667d4677f0b0b18b4b63a2f2e SHA512 db391109602bf1afbe868740ee977e76f92911136f61a9db8918ca89bcabdad02b75f1892cef200a370ea91829e177fd6c775aff9522f72fb90f2fc9d3acb22a
DIST uv-0.9.20.gh.tar.gz 4798126 BLAKE2B 5eea15de759c52386f7c610455a9ffd71ae040fc6ad19652b0a4c86c8ee6543ca6f5a680c6aac3f0119924dcc1fddbb486588697060af73974a058e683d96792 SHA512 4b9d1e6e6d89aa1901b26715e9c2bb720e8132134ac0516bf01a40576c6d6e7fb97205321d50e3fd0f35fb69309af437f23643261cc11d55c2c8cb1db22fdafb
+DIST uv-0.9.21-crates.tar.xz 48642776 BLAKE2B 4ce225a3639d02ea05014c2132a7fd8baf53f3bd0bf3cafc6ebde144f2cea982426835f91bcb587e8dba122afe381c5a0ffa654667d4677f0b0b18b4b63a2f2e SHA512 db391109602bf1afbe868740ee977e76f92911136f61a9db8918ca89bcabdad02b75f1892cef200a370ea91829e177fd6c775aff9522f72fb90f2fc9d3acb22a
+DIST uv-0.9.21.gh.tar.gz 4799580 BLAKE2B 88a65fd86bc3b124e6470c701c387bfe2b4a41c21d4eb82870966b94ab6db6fc5819aaaf2c04c04d1cd2ed367353e995185103ce145e88dc17f9bba507e9a162 SHA512 38c852dfca2bdfa839c37342ace2482d5182e2d4f7b4334ee32da200364912ccbedda04cf08cf89d974ad0f82c374444a19156c9df65ce11019d4a214bf26eb3
DIST uv-0.9.4-crates.tar.xz 46093644 BLAKE2B bdce4b138718b91a67ccb36e6d8839358ab2ddeeedec3017bc245b0717e32d890a41f8c9c831983681ec715ce458efa8d43356c189b9b7457df3e71122924e3f SHA512 7047b68db7e05abb6a399250a4a531499985d42f12eff61ad1557823b37d62576b38b51ccbe39a02bc9a98af6341de728466b262c49bb48dd30abb64eb804660
DIST uv-0.9.4.gh.tar.gz 4749319 BLAKE2B b46d44830f7a2a621f3ab420db85e9d999b7c42ddebc21403ea2f11e819e8295af37049f1529848a3fd83ef87ac0de26ce1e1c03bf4177c3032b9adfd6dfe1e8 SHA512 ae11c1e777e3d0e036f0a665e2edfb9a4b5b50a9e107d795113b626bc16d406d3fca12e8a133185e54279b2a64f8e3d276372cefc9a96b2ac5f1ed0ece2c10b0
DIST uv-0.9.6-crates.tar.xz 45696768 BLAKE2B 96cff52c0e5477c4e9648e3863d32bde4b34a1a46b6d96703c48fe340b655319e951471aa6403c09818c313a59b0e54804467efa7e13a8410de34299a98f077b SHA512 46964460f3404304faefd1758bb07bcddf1d48efbdd2b890ddb0d2623841e1a0c86108ac3c9312ed8e2f8fcaefbf9b022b57cd6074fdb6d52f43c35e3b3c2d32
diff --git a/dev-python/uv/uv-0.9.21.ebuild b/dev-python/uv/uv-0.9.21.ebuild
new file mode 100644
index 000000000000..fe3eb6a3dc83
--- /dev/null
+++ b/dev-python/uv/uv-0.9.21.ebuild
@@ -0,0 +1,168 @@
+# Copyright 2024-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+CRATES="
+"
+RUST_MIN_VER="1.89.0"
+
+inherit cargo check-reqs
+
+CRATE_PV=${PV}
+DESCRIPTION="A Python package installer and resolver, written in Rust"
+HOMEPAGE="
+ https://github.com/astral-sh/uv/
+ https://pypi.org/project/uv/
+"
+# pypi sdist misses scripts/, needed for tests
+SRC_URI="
+ https://github.com/astral-sh/uv/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+ ${CARGO_CRATE_URIS}
+"
+if [[ ${PKGBUMPING} != ${PVR} ]]; then
+ SRC_URI+="
+ https://github.com/gentoo-crate-dist/uv/releases/download/${CRATE_PV}/uv-${CRATE_PV}-crates.tar.xz
+ "
+fi
+
+# most of the code
+LICENSE="|| ( Apache-2.0 MIT )"
+# crates/pep508-rs is || ( Apache-2.0 BSD-2 ) which is covered below
+# Dependent crate licenses
+LICENSE+="
+ 0BSD Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD-2 BSD CC0-1.0
+ CDLA-Permissive-2.0 ISC MIT MPL-2.0 Unicode-3.0 Unicode-DFS-2016
+ ZLIB
+"
+# ring crate
+LICENSE+=" openssl"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
+IUSE="test"
+RESTRICT="test"
+PROPERTIES="test_network"
+
+DEPEND="
+ app-arch/bzip2:=
+ app-arch/xz-utils:=
+ app-arch/zstd:=
+"
+RDEPEND="
+ ${DEPEND}
+"
+BDEPEND="
+ virtual/pkgconfig
+ test? (
+ dev-lang/python:3.9
+ dev-lang/python:3.10
+ dev-lang/python:3.11
+ dev-lang/python:3.12
+ dev-lang/python:3.13
+ !!~dev-python/uv-0.5.0
+ )
+"
+
+QA_FLAGS_IGNORED="usr/bin/.*"
+
+check_space() {
+ local CHECKREQS_DISK_BUILD=3G
+ use debug && CHECKREQS_DISK_BUILD=9G
+ check-reqs_pkg_setup
+}
+
+pkg_pretend() {
+ check_space
+}
+
+pkg_setup() {
+ check_space
+ rust_pkg_setup
+}
+
+src_prepare() {
+ default
+
+ # force thin lto, makes build much faster and less memory hungry
+ # (i.e. makes it possible to actually build uv on 32-bit PPC)
+ sed -i -e '/lto/s:fat:thin:' Cargo.toml || die
+
+ # enable system libraries where supported
+ export ZSTD_SYS_USE_PKG_CONFIG=1
+ # TODO: unbundle libz-ng-sys, tikv-jemalloc-sys?
+
+ # remove unbundled sources, just in case
+ find "${ECARGO_VENDOR}"/{bzip2,lzma,zstd}-sys-*/ -name '*.c' -delete || die
+
+ # bzip2-sys requires a pkg-config file
+ # https://github.com/alexcrichton/bzip2-rs/issues/104
+ mkdir "${T}/pkg-config" || die
+ export PKG_CONFIG_PATH=${T}/pkg-config${PKG_CONFIG_PATH+:${PKG_CONFIG_PATH}}
+ cat >> "${T}/pkg-config/bzip2.pc" <<-EOF || die
+ Name: bzip2
+ Version: 9999
+ Description:
+ Libs: -lbz2
+ EOF
+}
+
+src_configure() {
+ local myfeatures=(
+ git
+ pypi
+ python
+ )
+
+ cargo_src_configure --no-default-features
+}
+
+src_compile() {
+ cd crates/uv || die
+ cargo_src_compile
+}
+
+src_test() {
+ # work around https://github.com/astral-sh/uv/issues/4376
+ local -x PATH=${BROOT}/usr/lib/python-exec/python3.12:${PATH}
+ local -x COLUMNS=100
+ local -x PYTHONDONTWRITEBYTECODE=
+ # fix tests failing because of our config
+ local -x XDG_CONFIG_DIRS=${T}
+
+ cd crates/uv || die
+ cargo_src_test --no-fail-fast
+}
+
+src_install() {
+ cd crates/uv || die
+ cargo_src_install
+
+ insinto /etc/xdg/uv
+ newins - uv.toml <<-EOF || die
+ # These defaults match Fedora, see:
+ # https://src.fedoraproject.org/rpms/uv/pull-request/18
+
+ # By default ("automatic"), uv downloads missing Python versions
+ # automatically and keeps them in the user's home directory.
+ # Disable that to make downloading opt-in, and especially
+ # to avoid unnecessarily fetching custom Python when the distro
+ # package would be preferable. Python builds can still be
+ # downloaded manually via "uv python install".
+ #
+ # https://docs.astral.sh/uv/reference/settings/#python-downloads
+ python-downloads = "manual"
+
+ # By default ("managed"), uv always prefers self-installed
+ # Python versions over the system Python, independently
+ # of versions. Since we generally expect users to use that
+ # to install old Python versions not in ::gentoo anymore,
+ # this effectively means that uv would end up preferring very
+ # old Python versions over the newer ones that are provided
+ # by the system. Default to using the system versions to avoid
+ # this counter-intuitive behavior.
+ #
+ # https://docs.astral.sh/uv/reference/settings/#python-preference
+ python-preference = "system"
+ EOF
+}