From 2e8abb8c82f14dd064991a1afd337b2f022b37f6 Mon Sep 17 00:00:00 2001
From: V3n3RiX <venerix@koprulu.sector>
Date: Fri, 30 Aug 2024 12:00:55 +0100
Subject: gentoo auto-resync : 30:08:2024 - 12:00:55

---
 dev-python/Manifest.gz                             | Bin 270656 -> 270837 bytes
 dev-python/aiodns/Manifest                         |   2 +-
 dev-python/aiodns/aiodns-3.2.0.ebuild              |   2 +-
 dev-python/aiohttp/Manifest                        |   2 +-
 dev-python/aiohttp/aiohttp-3.10.5.ebuild           |   2 +-
 dev-python/boto3/Manifest                          |   2 +
 dev-python/boto3/boto3-1.35.9.ebuild               |  53 ++++
 dev-python/botocore/Manifest                       |   2 +
 dev-python/botocore/botocore-1.35.9.ebuild         |  76 +++++
 dev-python/cattrs/Manifest                         |   4 +-
 dev-python/cattrs/cattrs-23.2.4_pre20240627.ebuild |   9 +
 dev-python/cattrs/cattrs-24.1.0.ebuild             | 106 +++++++
 dev-python/cfn-lint/Manifest                       |   2 +
 dev-python/cfn-lint/cfn-lint-1.11.1.ebuild         |  70 +++++
 dev-python/deepdiff/Manifest                       |   2 +
 dev-python/deepdiff/deepdiff-8.0.1.ebuild          |  68 +++++
 dev-python/freetype-py/Manifest                    |   2 +
 dev-python/freetype-py/freetype-py-2.5.1.ebuild    |  36 +++
 dev-python/gmpy/Manifest                           |   2 +-
 dev-python/gmpy/gmpy-2.2.1.ebuild                  |   2 +-
 dev-python/jsondiff/Manifest                       |   2 +
 dev-python/jsondiff/jsondiff-2.2.1.ebuild          |  41 +++
 dev-python/mpmath/Manifest                         |   4 +-
 dev-python/mpmath/mpmath-1.3.0-r1.ebuild           |   2 +-
 dev-python/mpmath/mpmath-1.4.0_alpha1.ebuild       |   2 +-
 dev-python/orderly-set/Manifest                    |   3 +
 dev-python/orderly-set/metadata.xml                |  12 +
 dev-python/orderly-set/orderly-set-5.2.2.ebuild    |  35 +++
 dev-python/pikepdf/Manifest                        |  15 +-
 dev-python/pikepdf/files/pikepdf-9.0.0-py313.patch |  26 --
 dev-python/pikepdf/pikepdf-8.11.2-r1.ebuild        |  67 -----
 dev-python/pikepdf/pikepdf-8.14.0-r1.ebuild        |  67 -----
 dev-python/pikepdf/pikepdf-8.15.1-r1.ebuild        |  71 -----
 dev-python/pikepdf/pikepdf-8.4.1-r1.ebuild         |  61 ----
 dev-python/pikepdf/pikepdf-9.0.0.ebuild            |  79 ------
 dev-python/pikepdf/pikepdf-9.1.0.ebuild            |  74 -----
 dev-python/pikepdf/pikepdf-9.1.1.ebuild            |   2 +-
 dev-python/plotly/Manifest                         |   2 +
 dev-python/plotly/plotly-5.24.0.ebuild             | 119 ++++++++
 dev-python/pycares/Manifest                        |   2 +-
 dev-python/pycares/pycares-4.4.0.ebuild            |   2 +-
 dev-python/pydantic-core/Manifest                  |   2 +
 .../pydantic-core/pydantic-core-2.23.1.ebuild      | 167 +++++++++++
 dev-python/pypy-exe-bin/Manifest                   |   9 +
 dev-python/pypy-exe-bin/pypy-exe-bin-7.3.17.ebuild |  82 ++++++
 dev-python/pypy-exe/Manifest                       |   3 +
 dev-python/pypy-exe/pypy-exe-7.3.17.ebuild         | 181 ++++++++++++
 dev-python/pypy/Manifest                           |   3 +
 dev-python/pypy/pypy-7.3.17.ebuild                 | 306 +++++++++++++++++++++
 dev-python/pypy3/Manifest                          |   1 +
 dev-python/pypy3/pypy3-7.3.17.ebuild               |  26 ++
 dev-python/pypy3_10-exe-bin/Manifest               |   9 +
 .../pypy3_10-exe-bin-7.3.17.ebuild                 |  85 ++++++
 dev-python/pypy3_10-exe/Manifest                   |   3 +
 dev-python/pypy3_10-exe/pypy3_10-exe-7.3.17.ebuild | 136 +++++++++
 dev-python/pypy3_10/Manifest                       |   3 +
 dev-python/pypy3_10/pypy3_10-7.3.17.ebuild         | 212 ++++++++++++++
 dev-python/python-cinderclient/Manifest            |   2 +
 .../python-cinderclient-9.6.0.ebuild               |  48 ++++
 dev-python/python-ironicclient/Manifest            |   2 +
 .../python-ironicclient-5.8.0.ebuild               |  49 ++++
 dev-python/python-snappy/Manifest                  |   2 +
 .../python-snappy/python-snappy-0.7.3.ebuild       |  25 ++
 dev-python/setuptools-rust/Manifest                |   2 +-
 .../setuptools-rust/setuptools-rust-1.10.1.ebuild  |   2 +-
 dev-python/sphinx-autoapi/Manifest                 |   2 +
 .../sphinx-autoapi/sphinx-autoapi-3.3.0.ebuild     |  50 ++++
 dev-python/sphinx-autodoc-typehints/Manifest       |   2 +
 .../sphinx-autodoc-typehints-2.3.0.ebuild          |  44 +++
 dev-python/spyder-kernels/Manifest                 |   2 +
 .../spyder-kernels/spyder-kernels-3.0.0.ebuild     |  92 +++++++
 dev-python/sqlalchemy/Manifest                     |   2 +-
 dev-python/sqlalchemy/sqlalchemy-1.4.53.ebuild     |   2 +-
 dev-python/stripe/Manifest                         |   2 +
 dev-python/stripe/stripe-10.9.0.ebuild             |  92 +++++++
 dev-python/twisted/Manifest                        |   2 +-
 dev-python/twisted/twisted-24.7.0.ebuild           |   2 +-
 77 files changed, 2307 insertions(+), 479 deletions(-)
 create mode 100644 dev-python/boto3/boto3-1.35.9.ebuild
 create mode 100644 dev-python/botocore/botocore-1.35.9.ebuild
 create mode 100644 dev-python/cattrs/cattrs-24.1.0.ebuild
 create mode 100644 dev-python/cfn-lint/cfn-lint-1.11.1.ebuild
 create mode 100644 dev-python/deepdiff/deepdiff-8.0.1.ebuild
 create mode 100644 dev-python/freetype-py/freetype-py-2.5.1.ebuild
 create mode 100644 dev-python/jsondiff/jsondiff-2.2.1.ebuild
 create mode 100644 dev-python/orderly-set/Manifest
 create mode 100644 dev-python/orderly-set/metadata.xml
 create mode 100644 dev-python/orderly-set/orderly-set-5.2.2.ebuild
 delete mode 100644 dev-python/pikepdf/files/pikepdf-9.0.0-py313.patch
 delete mode 100644 dev-python/pikepdf/pikepdf-8.11.2-r1.ebuild
 delete mode 100644 dev-python/pikepdf/pikepdf-8.14.0-r1.ebuild
 delete mode 100644 dev-python/pikepdf/pikepdf-8.15.1-r1.ebuild
 delete mode 100644 dev-python/pikepdf/pikepdf-8.4.1-r1.ebuild
 delete mode 100644 dev-python/pikepdf/pikepdf-9.0.0.ebuild
 delete mode 100644 dev-python/pikepdf/pikepdf-9.1.0.ebuild
 create mode 100644 dev-python/plotly/plotly-5.24.0.ebuild
 create mode 100644 dev-python/pydantic-core/pydantic-core-2.23.1.ebuild
 create mode 100644 dev-python/pypy-exe-bin/pypy-exe-bin-7.3.17.ebuild
 create mode 100644 dev-python/pypy-exe/pypy-exe-7.3.17.ebuild
 create mode 100644 dev-python/pypy/pypy-7.3.17.ebuild
 create mode 100644 dev-python/pypy3/pypy3-7.3.17.ebuild
 create mode 100644 dev-python/pypy3_10-exe-bin/pypy3_10-exe-bin-7.3.17.ebuild
 create mode 100644 dev-python/pypy3_10-exe/pypy3_10-exe-7.3.17.ebuild
 create mode 100644 dev-python/pypy3_10/pypy3_10-7.3.17.ebuild
 create mode 100644 dev-python/python-cinderclient/python-cinderclient-9.6.0.ebuild
 create mode 100644 dev-python/python-ironicclient/python-ironicclient-5.8.0.ebuild
 create mode 100644 dev-python/python-snappy/python-snappy-0.7.3.ebuild
 create mode 100644 dev-python/sphinx-autoapi/sphinx-autoapi-3.3.0.ebuild
 create mode 100644 dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-2.3.0.ebuild
 create mode 100644 dev-python/spyder-kernels/spyder-kernels-3.0.0.ebuild
 create mode 100644 dev-python/stripe/stripe-10.9.0.ebuild

(limited to 'dev-python')

diff --git a/dev-python/Manifest.gz b/dev-python/Manifest.gz
index b80d645ebeda..af5fc2e33cac 100644
Binary files a/dev-python/Manifest.gz and b/dev-python/Manifest.gz differ
diff --git a/dev-python/aiodns/Manifest b/dev-python/aiodns/Manifest
index cd039d89b981..1011e2751ede 100644
--- a/dev-python/aiodns/Manifest
+++ b/dev-python/aiodns/Manifest
@@ -1,3 +1,3 @@
 DIST aiodns-3.2.0.tar.gz 7823 BLAKE2B 8bafeebbf6ef69001670dffe8df3bd89b817bca921e266e218eaf2a53653d5bb150cef0c99b2fd498d39befb57c6e2edb4d94fbf4b4548e1debce69bcd114ff3 SHA512 ca6ae2d53cc0a0e5b8cd5f47da56d7db43236eb6738509d5cc088e56db996c49eba8b024cfe368e5acf44ad4de4cb5d6f949c7f0d4cd16ff4d5cc42ae3b27cb1
-EBUILD aiodns-3.2.0.ebuild 825 BLAKE2B 3a1a4dd8fb23e49aeed656bc6c8c1a339d8fb0e9484ccbf7c14fe63a2ad99b149d9ea0a0b63fad33a1b5a0ceba7020e0ec7f3fff5c0778e72b36f0a8bca03d37 SHA512 d4e2c9a67f6ac3f245c51655618fab901301bdb5a670b1367cc9b401743829d9e69d0d3539a746098d1424ce5cd1ad70f5c7299661a3f659555d46c1f6e6f7ca
+EBUILD aiodns-3.2.0.ebuild 851 BLAKE2B 7c61aa5c926d4b18ce93edeeb44ce3c49c64380b5d7cfc3d5e5ef70202fb9cc25505495ba2b140cac7cda5fec54cacf939d503ffb1a866e5199ce5d04af87484 SHA512 05215437227c47061de846fe4b5a9a4ef9a6f402d259c73874b9d027f9958b4c5e6638361e610c74ec4f587f1466e3c718b6ff362d3f6554e61c1fe6b4b96f99
 MISC metadata.xml 466 BLAKE2B 6f6f9859ea69490be57bf7c6581e3b51b8b0f3563cc013e072bcc221a81eaf7ade938e935a730c125452c0c6c8ac45d8c91ce1748cfa3ea1df3db55fa4c59d31 SHA512 101ea2c67fcd9b0c9496892422f7eac07d1c381f1fead1706c96fafdf5c2bb48f3c3b6912a166ee20a8b54be12e2989367674813c98aba0fd896f63110c8ee1c
diff --git a/dev-python/aiodns/aiodns-3.2.0.ebuild b/dev-python/aiodns/aiodns-3.2.0.ebuild
index 350be7ce958e..6ee5aa6ecfb8 100644
--- a/dev-python/aiodns/aiodns-3.2.0.ebuild
+++ b/dev-python/aiodns/aiodns-3.2.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
 
 LICENSE="MIT"
 SLOT="0"
-KEYWORDS="amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
 
 # Tests fail with network-sandbox, since they try to resolve google.com
 PROPERTIES="test_network"
diff --git a/dev-python/aiohttp/Manifest b/dev-python/aiohttp/Manifest
index 09f7aad23fb7..07aa6bbdfce9 100644
--- a/dev-python/aiohttp/Manifest
+++ b/dev-python/aiohttp/Manifest
@@ -1,5 +1,5 @@
 DIST aiohttp-3.10.5.tar.gz 7524360 BLAKE2B 57ca70d1a075ae7f9ba9b86a19be52e05e88518e28baefb16e852ce83707bfbad9cb06af08a2cea3371349649e85ab6dfb3426ee2759a4e84456041373575a8b SHA512 bb932d24b3ce332d8a232ef3bf1fbe9b0a7df9986ad5e81d5f41bc31a81204653e5250c4f0ee77a9eeb53d404bd907b12977d31caae54c00ef0146350629e750
 DIST aiohttp-3.9.5.tar.gz 7504841 BLAKE2B f051ee88d45952219f72d542f1c6d0cc33c699c6c5fb5dbe3bc054ee4d0e03121b219c8c8524fd1236a8b878329b0997b8afe07d6c66074102d4a2052a8738ff SHA512 da11468a2f131275593395b052700a99cf79055a32d48327dca0f58547ad30add8cd0a375dbd831e2f06fe7a739183251e4ad69c16f3d141799bbed45a8a5dc4
-EBUILD aiohttp-3.10.5.ebuild 2909 BLAKE2B 09b3671658e43c7ea107bf02043b80ba483aac30c933d657dd6f8879a04f1e3c0363b73a62fd55932f30b394af017834c01bb0f52d28830d3f6b6468139c8b3f SHA512 6a12918ac49339e781eff7df50dfa38025a9bf3b13de9790e2ddd9a597e3a825ce474780682025ce3d6683a5bb981918dd1b89338607e99e862288b0142a4a74
+EBUILD aiohttp-3.10.5.ebuild 2935 BLAKE2B 20713a920fdb67aae06ba39369679be1f53ec6e76b83725616e76660b627b480719aa604cd645252a9492a88e895100e4c3e25774968b8bbccd65b39b01b2590 SHA512 c1ba40b6d1119cc4c5aa627e21154937edcf39d6fb69fa40c3a0d4613a9922fcc4e02ad89c73ca553e05c074f88bf45ef8be48dcf4f7ae99d85558713b988d09
 EBUILD aiohttp-3.9.5.ebuild 2884 BLAKE2B ca63f65e2f9893741e3a61956ebf0d80d71a0005e86467fceabfe781431e2afbbd103e286839b3a59516419502c71aa365f4d198b774f6ef956ef7afbd344474 SHA512 66a8ff411e3377b8655202ef0a7d0ee42be1aea52a5634e72c6435538d811772c5599a23464f44fb8ee58f52e34784e4f8e290ed2003fe2d18580fd422536b0b
 MISC metadata.xml 490 BLAKE2B 5233af0b5e2668b1eb62278b05b62f24f1ab90f6d05b20dd9f1c5b54b846919c3fa28b843df28f5bfa320996d46de0e74c7a28bd0bef02aaaca14b1cec52baba SHA512 9b701c5c5a22b6aa94977a67bc40f3dc9df8337556952658a2a17ecaaa471cd7f7b5b8bf3a0088208087677555f0cbb8760c091b03b96ee70affe3e2b84cf6d5
diff --git a/dev-python/aiohttp/aiohttp-3.10.5.ebuild b/dev-python/aiohttp/aiohttp-3.10.5.ebuild
index ff6337c302d6..86d188180b35 100644
--- a/dev-python/aiohttp/aiohttp-3.10.5.ebuild
+++ b/dev-python/aiohttp/aiohttp-3.10.5.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
 
 LICENSE="Apache-2.0"
 SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
 IUSE="test-rust"
 
 RDEPEND="
diff --git a/dev-python/boto3/Manifest b/dev-python/boto3/Manifest
index b3ac834c7b80..77376b0fe740 100644
--- a/dev-python/boto3/Manifest
+++ b/dev-python/boto3/Manifest
@@ -4,10 +4,12 @@ DIST boto3-1.35.5.gh.tar.gz 854016 BLAKE2B f94d738e310725cd5f9c7b405a094155f3ecf
 DIST boto3-1.35.6.gh.tar.gz 854351 BLAKE2B 0aea780d070a5a806bcb8196ebc3785eb1a1b5ad3cb9f1598a24bf80b4be5f8757b551a524afed9440deae505e427b97f9b79b1a7c30c7db977319ee317bb58c SHA512 81fce9301003a5b2f67107a7f6ebbd033a43a43c890be7ff3248136c1fcc826fd475f9860d3295f16900f199057e1a7da7be60554dc193826ecef6e64f97341d
 DIST boto3-1.35.7.gh.tar.gz 854615 BLAKE2B 4cf4fd926bc4175273df2007f1275e0781c199361cb8c419c7c34bc764e47d0c74f7f9c9de8d25a7052072a73ccdf0c3d2ec7fcab5b71a4107b2c22a1eef5700 SHA512 4e85d9d2004d6d74190f560b41cb6a4ace30b3ce4d09d5b390045874bedca1d0fc1756170bf81f615c81a371038fa7a94c407a3de417c0be6b33805bd32866e1
 DIST boto3-1.35.8.gh.tar.gz 855649 BLAKE2B 4d3a7740a3da49b0552fa9250decf74daaa78c33b21f96dcefd67025c16f5bb1ab2f67d5482f4434b74cdd75ecc7578378138a08bdd91cd10d5afc9d87ae4ecd SHA512 bb44beebd2eb4f5b49e94299abf79bd1b9bfe11ad2ce487a01e7dec0bfb31e9d343835e20608b63f05cdaabc96356740b53ce828310048c95874fcd290dbfd0d
+DIST boto3-1.35.9.gh.tar.gz 856164 BLAKE2B ff92b345ad9eeb2f74cdef93960c2aca1351b4aa5fd9a7f4d0302327269f421fa66e1804bb2536f634dc08671fd529810bc467184eb3b95bde69d818e6e58a88 SHA512 6dc461ca79753cbf875da2ef525a8c6bc12e14a5db3110cfbde81303dc27b8e5be42f468b4dc37a02b4face8344566ce9836ce69b325650dde4efcd1656e8127
 EBUILD boto3-1.34.158.ebuild 1198 BLAKE2B 99a7fa08055cee13f14557124398df39119bae2e4b684265d4647ad0ec83a502bb422365e3797ff5c0440c4b1c9866ede4c62b1876510178dc2e6a0b05ed8781 SHA512 c020cc5535d63c948dd456d9f4af4e97339cb36dc0bb2b2c53d3da0c8c62737e0846ff71d9f85ca9b2936a8a7bfc43b67c3114f91440e75c9870beaa8997107a
 EBUILD boto3-1.35.0.ebuild 1205 BLAKE2B f1dce08bbfa9b103deaf3f8fcc34e0ff6e7aaa8a7be0ea69727c268ff7da0a1ddfcddc24bde5c654fc3f0f09d3c5a801a23e19c37ae05c3ebcf3bf26ec909b73 SHA512 94863e2208e36b66149792688378242b66b5546735fde1c3ccea6ad4883ab08046a9fd566d9016d5fd9612c035a7af4d5af599b0c18bad7137bdd1db5e6848af
 EBUILD boto3-1.35.5.ebuild 1205 BLAKE2B f1dce08bbfa9b103deaf3f8fcc34e0ff6e7aaa8a7be0ea69727c268ff7da0a1ddfcddc24bde5c654fc3f0f09d3c5a801a23e19c37ae05c3ebcf3bf26ec909b73 SHA512 94863e2208e36b66149792688378242b66b5546735fde1c3ccea6ad4883ab08046a9fd566d9016d5fd9612c035a7af4d5af599b0c18bad7137bdd1db5e6848af
 EBUILD boto3-1.35.6.ebuild 1205 BLAKE2B f1dce08bbfa9b103deaf3f8fcc34e0ff6e7aaa8a7be0ea69727c268ff7da0a1ddfcddc24bde5c654fc3f0f09d3c5a801a23e19c37ae05c3ebcf3bf26ec909b73 SHA512 94863e2208e36b66149792688378242b66b5546735fde1c3ccea6ad4883ab08046a9fd566d9016d5fd9612c035a7af4d5af599b0c18bad7137bdd1db5e6848af
 EBUILD boto3-1.35.7.ebuild 1205 BLAKE2B f1dce08bbfa9b103deaf3f8fcc34e0ff6e7aaa8a7be0ea69727c268ff7da0a1ddfcddc24bde5c654fc3f0f09d3c5a801a23e19c37ae05c3ebcf3bf26ec909b73 SHA512 94863e2208e36b66149792688378242b66b5546735fde1c3ccea6ad4883ab08046a9fd566d9016d5fd9612c035a7af4d5af599b0c18bad7137bdd1db5e6848af
 EBUILD boto3-1.35.8.ebuild 1205 BLAKE2B f1dce08bbfa9b103deaf3f8fcc34e0ff6e7aaa8a7be0ea69727c268ff7da0a1ddfcddc24bde5c654fc3f0f09d3c5a801a23e19c37ae05c3ebcf3bf26ec909b73 SHA512 94863e2208e36b66149792688378242b66b5546735fde1c3ccea6ad4883ab08046a9fd566d9016d5fd9612c035a7af4d5af599b0c18bad7137bdd1db5e6848af
+EBUILD boto3-1.35.9.ebuild 1205 BLAKE2B f1dce08bbfa9b103deaf3f8fcc34e0ff6e7aaa8a7be0ea69727c268ff7da0a1ddfcddc24bde5c654fc3f0f09d3c5a801a23e19c37ae05c3ebcf3bf26ec909b73 SHA512 94863e2208e36b66149792688378242b66b5546735fde1c3ccea6ad4883ab08046a9fd566d9016d5fd9612c035a7af4d5af599b0c18bad7137bdd1db5e6848af
 MISC metadata.xml 493 BLAKE2B 7d6324fc877ffe1d20c5369c2af0b09a7028f94d28f1841188913d0d8be7ea699c9d3f92c624992c4c96bd69615d3a1211a2483c76c56b7d3082492e43512523 SHA512 44420d8c03d5986f990b76369edfa8dfd7659b4952db3ad946fd05392ec594628a28745ad888d055d4f074d5214f61fcffafe6c04c4ab54109d45ac0371582bd
diff --git a/dev-python/boto3/boto3-1.35.9.ebuild b/dev-python/boto3/boto3-1.35.9.ebuild
new file mode 100644
index 000000000000..8cba6d95740e
--- /dev/null
+++ b/dev-python/boto3/boto3-1.35.9.ebuild
@@ -0,0 +1,53 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit distutils-r1
+
+DESCRIPTION="The AWS SDK for Python"
+HOMEPAGE="
+	https://github.com/boto/boto3/
+	https://pypi.org/project/boto3/
+"
+SRC_URI="
+	https://github.com/boto/boto3/archive/${PV}.tar.gz
+		-> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux"
+
+RDEPEND="
+	>=dev-python/botocore-${PV}[${PYTHON_USEDEP}]
+	>=dev-python/jmespath-0.7.1[${PYTHON_USEDEP}]
+	>=dev-python/s3transfer-0.10.0[${PYTHON_USEDEP}]
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_prepare_all() {
+	# don't lock versions to narrow ranges
+	sed -e '/botocore/ d' \
+		-e '/jmespath/ d' \
+		-e '/s3transfer/ d' \
+		-i setup.py || die
+
+	# do not rely on bundled deps in botocore (sic!)
+	find -name '*.py' -exec sed -i \
+		-e 's:from botocore[.]vendored import:import:' \
+		-e 's:from botocore[.]vendored[.]:from :' \
+		{} + || die
+
+	distutils-r1_python_prepare_all
+}
+
+python_test() {
+	local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+	epytest tests/{functional,unit}
+}
diff --git a/dev-python/botocore/Manifest b/dev-python/botocore/Manifest
index 4f728e59ba05..8741d888f445 100644
--- a/dev-python/botocore/Manifest
+++ b/dev-python/botocore/Manifest
@@ -4,10 +4,12 @@ DIST botocore-1.35.5.gh.tar.gz 13303437 BLAKE2B 0a95351fbc93074bb0398871773120a1
 DIST botocore-1.35.6.gh.tar.gz 13305231 BLAKE2B 1c3716883b2cc8dd98e4391ff60039f14e0e0fcd076a3780b6ee18c216f004d6f1ed2e916681d28133ae9788fd5c721abbba6c44354442a6d7862074e7f8956a SHA512 6d2ab4264886e231cb0b65ea34d2757b29ba71fe227bf8dbff3474074d612f13b3e9fcfe17b9cb2f8f420bd962f1eefe7b8038ef5017060c6732ec5ed927906e
 DIST botocore-1.35.7.gh.tar.gz 13308318 BLAKE2B 4e92e22dde9a4b414a1cace9a21f8a536a0f386dd4b14bd594dc08dff3d05e8aa17c669222b07617db8b883ec79ab48a18d669619ff14400c09df26c0d3101fe SHA512 5188b485db0db1fdaf51ae1ff5c57caa114d0f08b04ef20cd821b5b13b661374dc4463694cf027c1ac25f903ea74be81464d0041c856e93315781398cfde611c
 DIST botocore-1.35.8.gh.tar.gz 13321226 BLAKE2B d4808db439d9fd6be7d759d7785b788269688a288d458e37f718ddbb23f92df92113f6d8cbe44b07c8be92f6a4ac8fa5951a58d68513c8ade02355731ed9696d SHA512 a9c38c7fcb89da6164aef60f47c9882730f613f3d05ffbaeedab7167d730b80670e43288bf66dbade46829c0ef9171a7141b4ba6332937dcff29fc06a78413b1
+DIST botocore-1.35.9.gh.tar.gz 13322670 BLAKE2B a472f5f599e96a45cb985ca105731ef61907c443bf56cac760f30b18bc5392bc25ae7587b6064c2ca0d5b4bd9b29a8ee8e3ae941a033413a8b723775c6ed6154 SHA512 5b5cc9abbfb13780a256b0904a18ece350ca206cf66d12dc809f685101b3fbe3131076faabf6bbb200c38482c037374f942a21c7611dca1d354c2537231631be
 EBUILD botocore-1.34.158.ebuild 1665 BLAKE2B 1171f3bdcbe2eada97adf58c2011691cb51300028737903ec51e9fea4d80943dc3e199f4a1671be350ca2cf921e5dbdd4e7c8ca4658261143646cf9c0c82f522 SHA512 db8027472dcb87b167d63ed89910783e104513361b9191f5e2e2928a2904493c22d9629aa206f61206c4f29c6a9c43e8208c57a9b9bf99b031101b915d326674
 EBUILD botocore-1.35.0.ebuild 1672 BLAKE2B 8e30dae387821aea270f5db3ece49d58df6706d6e4ced17b2a595e1bc3f40dc49f79811cc9a82ad935b34ab5a053d802ac6afce166fb4cca168affe6b47a6c23 SHA512 23b6b04cba2a0afccc82805c78853bec7ea4568c0c01122edc83e3fea544ce14841a41fb469acb6f5a7b8fc462060bda2e4cba19cd82a799b7261f61df880a5d
 EBUILD botocore-1.35.5.ebuild 1672 BLAKE2B 8e30dae387821aea270f5db3ece49d58df6706d6e4ced17b2a595e1bc3f40dc49f79811cc9a82ad935b34ab5a053d802ac6afce166fb4cca168affe6b47a6c23 SHA512 23b6b04cba2a0afccc82805c78853bec7ea4568c0c01122edc83e3fea544ce14841a41fb469acb6f5a7b8fc462060bda2e4cba19cd82a799b7261f61df880a5d
 EBUILD botocore-1.35.6.ebuild 1672 BLAKE2B 8e30dae387821aea270f5db3ece49d58df6706d6e4ced17b2a595e1bc3f40dc49f79811cc9a82ad935b34ab5a053d802ac6afce166fb4cca168affe6b47a6c23 SHA512 23b6b04cba2a0afccc82805c78853bec7ea4568c0c01122edc83e3fea544ce14841a41fb469acb6f5a7b8fc462060bda2e4cba19cd82a799b7261f61df880a5d
 EBUILD botocore-1.35.7.ebuild 1672 BLAKE2B 8e30dae387821aea270f5db3ece49d58df6706d6e4ced17b2a595e1bc3f40dc49f79811cc9a82ad935b34ab5a053d802ac6afce166fb4cca168affe6b47a6c23 SHA512 23b6b04cba2a0afccc82805c78853bec7ea4568c0c01122edc83e3fea544ce14841a41fb469acb6f5a7b8fc462060bda2e4cba19cd82a799b7261f61df880a5d
 EBUILD botocore-1.35.8.ebuild 1672 BLAKE2B 8e30dae387821aea270f5db3ece49d58df6706d6e4ced17b2a595e1bc3f40dc49f79811cc9a82ad935b34ab5a053d802ac6afce166fb4cca168affe6b47a6c23 SHA512 23b6b04cba2a0afccc82805c78853bec7ea4568c0c01122edc83e3fea544ce14841a41fb469acb6f5a7b8fc462060bda2e4cba19cd82a799b7261f61df880a5d
+EBUILD botocore-1.35.9.ebuild 1672 BLAKE2B 8e30dae387821aea270f5db3ece49d58df6706d6e4ced17b2a595e1bc3f40dc49f79811cc9a82ad935b34ab5a053d802ac6afce166fb4cca168affe6b47a6c23 SHA512 23b6b04cba2a0afccc82805c78853bec7ea4568c0c01122edc83e3fea544ce14841a41fb469acb6f5a7b8fc462060bda2e4cba19cd82a799b7261f61df880a5d
 MISC metadata.xml 499 BLAKE2B e5aaa7da26f200c09adfdf38b68f656bbccbec627cb5d966b280ac2165334e7eec659c89075bcace748f58e2ec3e7d2998e54a688d56ecea2d30653c67dfd35a SHA512 103c554d5dbd967bf9b6e418b3913d9235e7e910d012160909ce0715134ed2e37b06e6a345395f9d16ce08d1cf51f3ce458bce93c6a978fd3dca6610f2acdbd0
diff --git a/dev-python/botocore/botocore-1.35.9.ebuild b/dev-python/botocore/botocore-1.35.9.ebuild
new file mode 100644
index 000000000000..4f1ad852bdc1
--- /dev/null
+++ b/dev-python/botocore/botocore-1.35.9.ebuild
@@ -0,0 +1,76 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit distutils-r1
+
+DESCRIPTION="Low-level, data-driven core of boto 3"
+HOMEPAGE="
+	https://github.com/boto/botocore/
+	https://pypi.org/project/botocore/
+"
+SRC_URI="
+	https://github.com/boto/botocore/archive/${PV}.tar.gz
+		-> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux"
+
+RDEPEND="
+	<dev-python/jmespath-2[${PYTHON_USEDEP}]
+	dev-python/python-dateutil[${PYTHON_USEDEP}]
+	>=dev-python/urllib3-1.25.4[${PYTHON_USEDEP}]
+"
+# unbundled packages
+RDEPEND+="
+	dev-python/requests[${PYTHON_USEDEP}]
+	dev-python/six[${PYTHON_USEDEP}]
+"
+BDEPEND="
+	test? (
+		dev-python/jsonschema[${PYTHON_USEDEP}]
+	)
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+	# unpin deps
+	sed -i -e "s:>=.*':':" setup.py || die
+
+	# unbundle deps
+	rm -r botocore/vendored || die
+	find -name '*.py' -exec sed -i \
+		-e 's:from botocore[.]vendored import:import:' \
+		-e 's:from botocore[.]vendored[.]:from :' \
+		{} + || die
+
+	distutils-r1_src_prepare
+}
+
+python_test() {
+	local EPYTEST_DESELECT=(
+		# rely on bundled six
+		tests/functional/test_six_imports.py::test_no_bare_six_imports
+		tests/functional/test_six_threading.py::test_six_thread_safety
+	)
+
+	case ${EPYTHON} in
+		python3.13)
+			EPYTEST_DESELECT+=(
+				# memory use tests, probably fragile
+				tests/functional/leak/test_resource_leaks.py::TestDoesNotLeakMemory
+			)
+			;;
+	esac
+
+	local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+	epytest tests/{functional,unit}
+}
diff --git a/dev-python/cattrs/Manifest b/dev-python/cattrs/Manifest
index 1ef9610f121c..c05a5d41d5b1 100644
--- a/dev-python/cattrs/Manifest
+++ b/dev-python/cattrs/Manifest
@@ -1,6 +1,8 @@
 AUX cattrs-23.2.4_pre20240627-py313.patch 2699 BLAKE2B d57e952f73f866cb72d29568e58668de378a9b25042250a0a6c3af4b44674367edf13ff7de9c174100a7ecc308456f2785d6a31ad09dc30621d870356f58c694 SHA512 e234afaa0e73d14a5bc4712afe9838f06e7aafe8f1e9660d2ae4b08d450b9e72de6fe2da808a98b80324cad16124ae998f56e26b13c7bbee9e7cd1d1ae2757a6
 DIST cattrs-23.2.3.gh.tar.gz 612120 BLAKE2B a227cc50cb23a76931562f17444fcfb4a5532cac74f80b478a8abb6d113cbb0a06c471c3ca7ee256f74640486464762f4a13387ccfc1cd144cfd1a9bfecddd8e SHA512 76a75ea0893bb1549dd5178436c4823ae5b918c16f0d8195203c48e894438ec792cee77698d783f7e43c07445c46a6041a309c3d3bbcadcff95d9c4079e3d622
+DIST cattrs-24.1.0.gh.tar.gz 428347 BLAKE2B 21bb94de02b6fce1c456e0d66dbd38defdd1171d4eb815e92ddc9777b12a108e099a5ce0dce4e51c1175cc1771d517ae0d201ac7ff537fbddf2329dce6f88f51 SHA512 879fd9edef39ad325237439915aa2d92c346c9896d463a4c3835335c3b9fb8bc572834a7d7731ccf6b805e59dec481cfdfed50ae8d4899fa31118b6ac6926c1a
 DIST cattrs-6290cacdb7f9d195b4f96ce0ab036c8eebf35d94.gh.tar.gz 426769 BLAKE2B 61851be04434e55d627aac6fd73d72d9d4d8a150bedb6110f4b99068dd58ed29fd23ff083c595eb508b144546d8e4d1e926831dc51985775773ab86a86d98815 SHA512 f1034ae0c57a0618c6568ebac0696928e125121431e965c0ceeda82070a21b448630e3188cc03a8d7a44447126a4a2623b8604ef856a89268e1c0802761d89b9
 EBUILD cattrs-23.2.3-r1.ebuild 1798 BLAKE2B 70e936341c2184d9ac278fa09c8918e9a6f88e74803f20689afff78e00648a4ad07f0a822f862294fce2b7316565a5b3390119b9613385e0fef9693392672976 SHA512 071c341a7cb952d7b4e0d44f056a196c82a236078def096716faba86f74eb70b94cced234aac929b631a4dba471aa64d830236eb1bdb77a8e7806264f02c6c99
-EBUILD cattrs-23.2.4_pre20240627.ebuild 2775 BLAKE2B 6f4b681cbe0f3cc589592ff573f055fe4900282204d3a042bef9fee43433302ca8ba5fd0a4f029f1e302f8353017e051d85b176e7cf39fc6169b2e772b07e422 SHA512 a06f57fb52617d865078746229cc9e7a02337d3e6c35860ebec1585d7c5788a9571e1b3cd5b610cd5ebece3f093a239ba990c1bdd4c2bdb6165a0cf82ef252aa
+EBUILD cattrs-23.2.4_pre20240627.ebuild 3178 BLAKE2B e7b8a136728e246ed7b018ab0dab642bd21a7707420f79a88619855f978cf14518a45e4007b92429bb44577d2dbf8eee2b49bc8f55e60ae39057ce9b0ec13869 SHA512 cf54c418d306d0414d2bd6462a02b22673de23aacf3085469327a9c94c08f3841a53363bbc4a23849913606bd66e9587ebf1f9001f37c51596e360ed63dc50b9
+EBUILD cattrs-24.1.0.ebuild 3073 BLAKE2B 83bf63623c8bb93791bcf6f8deffa7c79d975d431b2b7d91c79a116dab67c0ce22dda69b4d8d5c3c417defc8c55e56039346716727e70e7836d65a96b2b52677 SHA512 f45fb4f2b4563b6e75db738149a2eff067f32630975b84ce4dd76dc035c925def8da4697698cc2da5c712c327aad0161ca57c4686683c905d8d0427cb4ae8ff6
 MISC metadata.xml 347 BLAKE2B 94165f2a8e62f3dc7e195f872944300ffff5ba23b9a7e6c30c18d61bc469ea8ff9b70e516f854bfc52d55a0fd27daff0df58145e34bfe26dbcde8070b8a22630 SHA512 5bb37b39b9574256358a623cff942a95162f5f9dcb32ddf28bd167504c7619be54488fae10044a5c765291f8fa28a5aa346973365dcca867be0eef4e232a4999
diff --git a/dev-python/cattrs/cattrs-23.2.4_pre20240627.ebuild b/dev-python/cattrs/cattrs-23.2.4_pre20240627.ebuild
index 92b15ea9501b..69ded594038b 100644
--- a/dev-python/cattrs/cattrs-23.2.4_pre20240627.ebuild
+++ b/dev-python/cattrs/cattrs-23.2.4_pre20240627.ebuild
@@ -73,6 +73,15 @@ python_test() {
 		tests/test_preconf.py::test_msgspec_json_unstruct_collection_overrides
 		tests/test_preconf.py::test_msgspec_json_unions
 		tests/test_preconf.py::test_msgspec_json_converter
+
+		# tests need updating for attrs-24*
+		# https://github.com/python-attrs/cattrs/issues/575
+		tests/test_baseconverter.py
+		tests/test_converter.py
+		tests/test_gen_dict.py::test_individual_overrides
+		tests/test_gen_dict.py::test_nodefs_generated_unstructuring_cl
+		tests/test_gen_dict.py::test_unmodified_generated_structuring
+		tests/test_structure_attrs.py::test_structure_simple_from_dict_default
 	)
 
 	if ! has_version "dev-python/orjson[${PYTHON_USEDEP}]"; then
diff --git a/dev-python/cattrs/cattrs-24.1.0.ebuild b/dev-python/cattrs/cattrs-24.1.0.ebuild
new file mode 100644
index 000000000000..f517b1a20aca
--- /dev/null
+++ b/dev-python/cattrs/cattrs-24.1.0.ebuild
@@ -0,0 +1,106 @@
+# Copyright 2022-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( pypy3 python3_{10..13} )
+
+inherit distutils-r1
+
+DESCRIPTION="Composable complex class support for attrs and dataclasses"
+HOMEPAGE="
+	https://pypi.org/project/cattrs/
+	https://github.com/python-attrs/cattrs/
+"
+SRC_URI="
+	https://github.com/python-attrs/cattrs/archive/v${PV}.tar.gz
+		-> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="test-rust"
+
+RDEPEND="
+	>=dev-python/attrs-20.1.0[${PYTHON_USEDEP}]
+	>=dev-python/typing-extensions-4.1.0[${PYTHON_USEDEP}]
+	$(python_gen_cond_dep '
+		dev-python/exceptiongroup[${PYTHON_USEDEP}]
+	' 3.10)
+"
+BDEPEND="
+	dev-python/hatch-vcs[${PYTHON_USEDEP}]
+	test? (
+		>=dev-python/cbor2-5.4.6[${PYTHON_USEDEP}]
+		>=dev-python/hypothesis-6.54.5[${PYTHON_USEDEP}]
+		>=dev-python/immutables-0.18[${PYTHON_USEDEP}]
+		>=dev-python/msgpack-1.0.2[${PYTHON_USEDEP}]
+		>=dev-python/pymongo-4.2.0[${PYTHON_USEDEP}]
+		>=dev-python/pyyaml-6.0[${PYTHON_USEDEP}]
+		>=dev-python/tomlkit-0.11.4[${PYTHON_USEDEP}]
+		>=dev-python/ujson-5.4.0[${PYTHON_USEDEP}]
+		test-rust? (
+			$(python_gen_cond_dep '
+				>=dev-python/orjson-3.5.2[${PYTHON_USEDEP}]
+			' 'python*')
+		)
+	)
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+PATCHES=(
+	# https://github.com/python-attrs/cattrs/pull/543
+	"${FILESDIR}/${PN}-23.2.4_pre20240627-py313.patch"
+)
+
+export SETUPTOOLS_SCM_PRETEND_VERSION=${PV}
+
+python_test() {
+	local EPYTEST_IGNORE=(
+		# requires msgspec
+		tests/preconf/test_msgspec_cpython.py
+	)
+	local EPYTEST_DESELECT=(
+		# these require msgspec
+		tests/test_preconf.py::test_msgspec_json_unstruct_collection_overrides
+		tests/test_preconf.py::test_msgspec_json_unions
+		tests/test_preconf.py::test_msgspec_json_converter
+
+		# tests need updating for attrs-24*
+		# https://github.com/python-attrs/cattrs/issues/575
+		tests/test_baseconverter.py
+		tests/test_converter.py
+		tests/test_gen_dict.py::test_individual_overrides
+		tests/test_gen_dict.py::test_nodefs_generated_unstructuring_cl
+		tests/test_gen_dict.py::test_unmodified_generated_structuring
+		tests/test_structure_attrs.py::test_structure_simple_from_dict_default
+	)
+
+	if ! has_version "dev-python/orjson[${PYTHON_USEDEP}]"; then
+		EPYTEST_DESELECT+=(
+			tests/test_preconf.py::test_orjson
+			tests/test_preconf.py::test_orjson_converter
+			tests/test_preconf.py::test_orjson_converter_unstruct_collection_overrides
+		)
+	fi
+
+	case ${EPYTHON} in
+		python3.13)
+			EPYTEST_DESELECT+=(
+				tests/preconf/test_pyyaml.py::test_pyyaml
+				tests/preconf/test_pyyaml.py::test_pyyaml_converter
+				tests/test_converter.py::test_simple_roundtrip
+				tests/test_gen_dict.py::test_unmodified_generated_structuring
+				tests/test_generics.py::test_unstructure_deeply_nested_generics_list
+				tests/test_unstructure_collections.py::test_collection_unstructure_override_mapping
+			)
+			;;
+	esac
+
+	local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+	epytest -o addopts= tests
+}
diff --git a/dev-python/cfn-lint/Manifest b/dev-python/cfn-lint/Manifest
index 993090e0af63..7a14bedfc234 100644
--- a/dev-python/cfn-lint/Manifest
+++ b/dev-python/cfn-lint/Manifest
@@ -1,7 +1,9 @@
 DIST cfn_lint-1.10.3.tar.gz 2418034 BLAKE2B f889112d5572401dd5333d1a9edcb277c6150bc58ba8d6e64322d4eb732be706386b795cb4abb4ec7a03855394b7c95f1f7048d2cd499fd2717f5cbe4458ee32 SHA512 b81a8afef2c2b5fcc3e9e5557908bd6510714421cae9e0a1319019ca23ba41b904e69888b9f84dcc5f612dfacf745071a79251c773b816b9e7d7b347e4e26586
 DIST cfn_lint-1.11.0.tar.gz 2414804 BLAKE2B 211dc6e9e7ad3e2ae9821753b5f1f5932fe74b9c89332e3463e58799cfcd19b7f5dbe3ff3323b26624652a2debd2e62aa135fc17c6253b32d24e88512416c3e0 SHA512 a2783d09461d4e480fffe3190aa00648568996679e0ea491ce2472276ad3bdeae3bea3fbb70d1d3e866d2b0cee18743a7b4b4163fae3db42175daaa9aa7769be
+DIST cfn_lint-1.11.1.tar.gz 2415408 BLAKE2B c164f6cd520e4106ff9cfaaffdcb66860c3e66060aad484a488f22a304c56c5a365389e63f948d647e37e10ead5f6c8e5bb435c842377e4db122805d7bab218c SHA512 c8295874345b2a561e521b732031558ff4d1de11fcd912940955301f0c4d1923d11d7d8f2cf5a90c3c540d3b28dbcd9f18fb01778fa9678e3fe6722d732d4014
 DIST cfn_lint-1.9.7.tar.gz 2519610 BLAKE2B a454027a85bb55770b91ab4d801ffad807a2b9200e88872e2149485bb17196e050e0eea02db9be6bd705f7b427d825b5510cd0e78ff4d0db2cefa988be138782 SHA512 b6fff3b56f78b85d7335d33fa93e41003311c60f008ce56ae3f373ec32b2105ad40bc68210bd15ee88cc4bcb9f6cd61bfb1367773ff870cc4ec1807aec011100
 EBUILD cfn-lint-1.10.3.ebuild 2176 BLAKE2B 07cacdbe24678c647596829bbfba09e70569c2b1f575c318581364c7e6cfe505cc12c0e4fe4174073e51aa123d2d5066189ff5058a008591b68b707cf36ca841 SHA512 97011ea77add065c2ff78d5cc6ced93c9e1251ee5da063afb7c957e2dde3639421e331ab31ef20571409f7f167bb4102bdbda8a4d463363c7ea34b1130ebfca6
 EBUILD cfn-lint-1.11.0.ebuild 2176 BLAKE2B 0204895222e1591f9f275af74dcdac3435fa5a6cdf34c46242e63829e40b9f2fcd493db355f11454df539555da529321ebbfff2a7326c9f0a0f40beb8cbf6c43 SHA512 b82cada00e1b5238ed40b0ea35fc3a1f84f3deced456412abcd668b46aa99e29c3a88091cd0252188afdb6cf0fed38846124bf073ba3c794d934dce3a14ce46a
+EBUILD cfn-lint-1.11.1.ebuild 2176 BLAKE2B 0204895222e1591f9f275af74dcdac3435fa5a6cdf34c46242e63829e40b9f2fcd493db355f11454df539555da529321ebbfff2a7326c9f0a0f40beb8cbf6c43 SHA512 b82cada00e1b5238ed40b0ea35fc3a1f84f3deced456412abcd668b46aa99e29c3a88091cd0252188afdb6cf0fed38846124bf073ba3c794d934dce3a14ce46a
 EBUILD cfn-lint-1.9.7.ebuild 2173 BLAKE2B e5d36838ac6fdbef143deed68652896c380d7d3a143a0c6f9b5e4efd38283f98a50f8169bbedba9fe826c1c306b56efc0f7f28c1a911cb85305748f996127c1a SHA512 262134549b6fa7a30a83feeed58ea5cfbb45a1f778b116238f5603c2e4e22243b5d63b2ce979c05a8d21990f3887e86dabc28f5ff08edb36cb44f2b866e53c3e
 MISC metadata.xml 583 BLAKE2B 9f73e2b92e5cfa2ad59f5c8e5d91bdd3aa9eba3fa722b93b388cffea42020db7e7441bab5749432812934a4514d3e9104e6d897e1d115afa5ed237757bd48c03 SHA512 1866a349855ae4e248498b7aabd6ce4c4e10ea58731df4bfa13500f61dc041da6dbd7420e7d6a78fad46d5cf00bd7ef2d0c4c7d6819a21b3a5031b0d49588a19
diff --git a/dev-python/cfn-lint/cfn-lint-1.11.1.ebuild b/dev-python/cfn-lint/cfn-lint-1.11.1.ebuild
new file mode 100644
index 000000000000..086f03ea08df
--- /dev/null
+++ b/dev-python/cfn-lint/cfn-lint-1.11.1.ebuild
@@ -0,0 +1,70 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="CloudFormation Linter"
+HOMEPAGE="
+	https://github.com/aws-cloudformation/cfn-lint/
+	https://pypi.org/project/cfn-lint/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+
+RDEPEND="
+	>=dev-python/aws-sam-translator-1.91.0[${PYTHON_USEDEP}]
+	dev-python/jsonpatch[${PYTHON_USEDEP}]
+	>=dev-python/jschema-to-python-1.2.3[${PYTHON_USEDEP}]
+	<dev-python/jsonschema-5[${PYTHON_USEDEP}]
+	>=dev-python/jsonschema-3.0[${PYTHON_USEDEP}]
+	dev-python/junit-xml[${PYTHON_USEDEP}]
+	<dev-python/networkx-4[${PYTHON_USEDEP}]
+	>dev-python/pyyaml-5.4[${PYTHON_USEDEP}]
+	>=dev-python/regex-2021.7.1[${PYTHON_USEDEP}]
+	>=dev-python/sarif-om-1.0.4[${PYTHON_USEDEP}]
+	>=dev-python/sympy-1.0.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+	test? (
+		dev-python/defusedxml[${PYTHON_USEDEP}]
+	)
+"
+
+distutils_enable_tests pytest
+
+src_prepare() {
+	# unpin the deps
+	sed -e 's:~=[0-9.]*::' -i pyproject.toml || die
+	distutils-r1_src_prepare
+}
+
+python_test() {
+	local EPYTEST_DESELECT=(
+		# TODO
+		test/unit/module/test_template.py::TestTemplate::test_build_graph
+		# requires git repo
+		test/unit/module/maintenance/test_update_documentation.py::TestUpdateDocumentation::test_update_docs
+		# Internet
+		test/unit/module/formatters/test_formatters.py::TestFormatters::test_sarif_formatter
+		test/unit/module/maintenance/test_update_resource_specs.py::TestUpdateResourceSpecs::test_update_resource_specs_python_3
+		# TODO: it looks as if AWS_DEFAULT_REGION didn't work
+		test/unit/module/core/test_run_cli.py::TestCli::test_bad_config
+		test/unit/module/core/test_run_cli.py::TestCli::test_override_parameters
+		test/unit/module/core/test_run_cli.py::TestCli::test_positional_template_parameters
+		test/unit/module/core/test_run_cli.py::TestCli::test_template_config
+		# different graphviz version?
+		test/unit/module/template/test_template.py::TestTemplate::test_build_graph
+	)
+
+	# from tox.ini
+	local -x AWS_DEFAULT_REGION=us-east-1
+	local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+	epytest
+}
diff --git a/dev-python/deepdiff/Manifest b/dev-python/deepdiff/Manifest
index 93dcfdc07995..f6818a6efce6 100644
--- a/dev-python/deepdiff/Manifest
+++ b/dev-python/deepdiff/Manifest
@@ -1,3 +1,5 @@
 DIST deepdiff-7.0.1.tar.gz 421718 BLAKE2B b6441b9c035db0cc6e4fa83811999e8a83b3faed2ea95bcbdad158486e583ea9d707595d2342f83d0c25f6a5c086a8070c714253e2db09fcaf43de1616d46cda SHA512 facc15beb82744a1b8baf29e0d8f06625e8d4ee4ed7ab5f1b131ad9d44134215651d1c6b19493c83532f612d81752df14aec2dbccc73cb5b994e0bafcaf5bbc2
+DIST deepdiff-8.0.1.tar.gz 427721 BLAKE2B 0725a87ef17f9e1984594ccca7d954d608cfa0a6ea2c17b03d679bf5cd67135a1c5e3f21d749c18f1f91a5537e9ddaf179fb5b0a5ea135776415f5c0d82be274 SHA512 240662fb3e2408383fae4f6d4e5707357285e0058828d754dd09a94d1ccc29b854381a542dc2042842c79a57307b02d9ad009cc3106b35b0058612fabc0bcf96
 EBUILD deepdiff-7.0.1.ebuild 1222 BLAKE2B ba4e525840a21fbbfe6127134ec6f5fac8125e048193ec65883297776132cabecd81a29d2cd146b38885bfae923c2a855b8d0fb50c951a726796760ef921461d SHA512 e2b56bc6e8d6ce2fe67dd4195f018eef90d1d736d7abd2fe1c2cf5ce041b7e885bfdb8f096a16e1fe3f236eea57b4531d2c4422366662b8d8f70dfe2d3ae0eaf
+EBUILD deepdiff-8.0.1.ebuild 1516 BLAKE2B 7e8fdef4c9721c4e44d473ad4782d9c72c6f23c6825e62147dc60a542a6a8a323a54ef18d617c85b4aea7b5dc562d66d1a4337b942c5deb424ce71803c9e9039 SHA512 b3bd523059d37428f02adb65d5fac857aa810d4dffb13063a95333e0ee2725d4bfeff64859ec7314d50bbe8f285b029510c50752cd78ac4c0fab21be7809d286
 MISC metadata.xml 485 BLAKE2B f26f45bd1e750536952bcedf941166ae9ed39bcaf5bd2377102fb9546f8cdca8bfe23f137fa71fc1c05adc6b602e4831c96c712f27cd45eed80801aa6d1f4daa SHA512 1b8cf1dfd77b6dcab39b1cc3385e3d1b371ac6e9074167f2ba8e43333410e671a760c25a6a4496cf45fb023243a644d15b213824bd6a33c39991ef251cc3e3da
diff --git a/dev-python/deepdiff/deepdiff-8.0.1.ebuild b/dev-python/deepdiff/deepdiff-8.0.1.ebuild
new file mode 100644
index 000000000000..f86520659dd2
--- /dev/null
+++ b/dev-python/deepdiff/deepdiff-8.0.1.ebuild
@@ -0,0 +1,68 @@
+# Copyright 2023-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A library for comparing dictionaries, iterables, strings and other objects"
+HOMEPAGE="
+	https://github.com/seperman/deepdiff/
+	https://pypi.org/project/deepdiff/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+
+RDEPEND="
+	>=dev-python/click-8.1.3[${PYTHON_USEDEP}]
+	>=dev-python/orderly-set-5.2.2[${PYTHON_USEDEP}]
+	>=dev-python/pyyaml-6.0[${PYTHON_USEDEP}]
+"
+
+DEPEND="
+	test? (
+		>=dev-python/jsonpickle-3.0.0[${PYTHON_USEDEP}]
+		>=dev-python/numpy-1.23.5[${PYTHON_USEDEP}]
+		dev-python/pydantic[${PYTHON_USEDEP}]
+		dev-python/python-dateutil[${PYTHON_USEDEP}]
+		dev-python/tomli-w[${PYTHON_USEDEP}]
+		$(python_gen_cond_dep '
+			dev-python/tomli[${PYTHON_USEDEP}]
+		' 3.10)
+	)
+"
+
+distutils_enable_tests pytest
+
+src_prepare() {
+	distutils-r1_src_prepare
+
+	# unpin deps
+	sed -i -e 's:==:>=:' requirements.txt || die
+}
+
+python_test() {
+	local EPYTEST_DESELECT=(
+		# benchmarks
+		tests/test_lfucache.py::TestLFUcache::test_lfu
+		# requires polars
+		tests/test_hash.py::TestDeepHashPrep::test_polars
+	)
+
+	case ${EPYTHON} in
+		python3.13)
+			EPYTEST_DESELECT+=(
+				# changed exception message
+				"tests/test_command.py::TestCommands::test_diff_command[t1_corrupt.json-t2.json-Expecting property name enclosed in double quotes-1]"
+			)
+			;;
+	esac
+
+	local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+	epytest
+}
diff --git a/dev-python/freetype-py/Manifest b/dev-python/freetype-py/Manifest
index 9eb794f4e143..22b447e9e135 100644
--- a/dev-python/freetype-py/Manifest
+++ b/dev-python/freetype-py/Manifest
@@ -1,3 +1,5 @@
 DIST freetype-py-2.4.0.zip 832493 BLAKE2B f5753b2cd29aa4441cd2eed5ff421815b543826cdfb6984ad8953377f6497bcd915128a7bf5b40ceb8060257624a75e5e0262276d892139b288da424553d77c1 SHA512 f9ddde5c9a96f75df96b13f7d021916b748c625c876b4f752fe28d93c1a5ceffea514e120f3f9a98955b89bb01d9892b1c38a3cee79737c0fb61a857c055b012
+DIST freetype-py-2.5.1.zip 851738 BLAKE2B 0dcb5b277a536a07bb232a9cf7332727166fe6724cba32b185ca85649fa7503654464797b9fcf514cd6d4c6260692f4ecf83a043c330f100c32940b4ff4d0fe2 SHA512 aef857c96080486f3ec06b0d246c86c6d5eccb3f85743e25944da9bcaa632e0e084b2e711a58ad510b1715cdff562eb063fc04ca2b1c2a70981df0373991d64a
 EBUILD freetype-py-2.4.0-r1.ebuild 599 BLAKE2B f09d03f57f7785b704dbd25ece4eed95d795edcd66372bc26097bc0ea2f14339c54c591fc95fb726d5bc61c19a66bd35aa67aa8c3987bc16d45a93058203e8b4 SHA512 359af9c27160f4637b4039568c8dbb28c7e2ddce91b7dbd71b3ea7a584d703aae4898ffbe8f6cd6912815c87fd40001335a7e9b04def3dd23386f0b3b0e1217e
+EBUILD freetype-py-2.5.1.ebuild 683 BLAKE2B c6f573ad52dce9db90d4f65c8c0626115649ad21f81a5516005eb3087b929bfb2f264666be53881d5ade9d0772aa7b4792328d635c1359671a233bc830bdc69e SHA512 63ad2ef9e556be5d7382aca0e043256e2f44137c75697b1e0648154b74966a18ac4d0a6d0f528d38db1a87caff13cc4e55f1494550f6a939047bcd9fac445afb
 MISC metadata.xml 374 BLAKE2B 0dfeebfa1061be042992b7c7df62dcb1404abe06436ad7be1debb6aca79b704ad0acce719859e748e55bfbe644d2be42d3f67e80e4a77b3d7b7e0643f7749c1f SHA512 078ccf09f2bcc80a8b7cbea6da3f05a89ad1552fa08908cc2ad52ddaea023f8370b47c8afb436ef226f6b65cf99d20914a11db7c60c4dba68c3edbb4c7728191
diff --git a/dev-python/freetype-py/freetype-py-2.5.1.ebuild b/dev-python/freetype-py/freetype-py-2.5.1.ebuild
new file mode 100644
index 000000000000..4017152792da
--- /dev/null
+++ b/dev-python/freetype-py/freetype-py-2.5.1.ebuild
@@ -0,0 +1,36 @@
+# Copyright 2023-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=standalone
+PYPI_NO_NORMALIZE=1
+PYTHON_COMPAT=( pypy3 python3_{10..13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="FreeType Python bindings"
+HOMEPAGE="
+	https://github.com/rougier/freetype-py/
+	https://pypi.org/project/freetype-py/
+"
+SRC_URI="$(pypi_sdist_url --no-normalize "${PN}" "${PV}" .zip)"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64"
+
+RDEPEND="
+	media-libs/freetype
+"
+BDEPEND="
+	app-arch/unzip
+	dev-python/setuptools[${PYTHON_USEDEP}]
+"
+
+distutils_enable_tests pytest
+
+python_test() {
+	local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+	epytest tests
+}
diff --git a/dev-python/gmpy/Manifest b/dev-python/gmpy/Manifest
index 53f98b7b532f..d09727e89187 100644
--- a/dev-python/gmpy/Manifest
+++ b/dev-python/gmpy/Manifest
@@ -4,5 +4,5 @@ DIST gmpy-2.1.5-py3.12.patch.gz 1817 BLAKE2B cbea3a9c662d52c5bfddb82ab5e920474a5
 DIST gmpy2-2.1.5.tar.gz 261709 BLAKE2B 50958868866fadc49c97534780fa491fadfaaea902f3fd4bd51f4e76a94602a6d030a1ee6685aac742e25b5fbe4865e1419307f7215c8fb553b166761d63607a SHA512 92e16359ee1df63faaeae4a3cbefe8cdbbc576d8eda377f08d59f12b70dfe9337a299686e85d1efee6c2f5b41fc4583643fecc68ea38a500c7f876c56fc169e7
 DIST gmpy2-2.2.1.tar.gz 234228 BLAKE2B 80188c6abd30ee5b5ebc4d233d3d97dd78be7f9d21d0649429e87b23d3e6d8b5b9269c792d481f24bd3b43d28e012bdd64ee6bb5d0137e3ac759742c845186c1 SHA512 2a3dc011295a373e10455e1f133aa3063cff24cdac0151cee9f29ce5855c3e44c3e3aab61bf13c11c9df1147b9183c6c387db1cb4dcb270b9dce1a9cb521f5dc
 EBUILD gmpy-2.1.5-r2.ebuild 1340 BLAKE2B c2766d29db5f879c09162038f18ac5ffeb15faf5f1a0dde37f5919f1c185cf58081e07a2ff1788e92ed83220f06a7a2c281c3539d5b66deabb69ee873114e7e6 SHA512 b491f37914e6d7dc9a37cb06338bf0b903067b537e6bc65c8a922e8a2a3ff7cb7d7097c5d7f2c22a9016cf8fd133c4de0cb9a3ff360ff497c7119939faa3fa98
-EBUILD gmpy-2.2.1.ebuild 847 BLAKE2B f79fbc6592b654d8f5971c5e34696927118e6ee5b7fe79a6967ef38a85e060c3f380ee95039c18def0d3cd9a0fc65c16aa5749b603b5626664db285f6ddc41c4 SHA512 39c3e19cc1cb723c66fb4fb03a244ca4e6beeec2da59619ccac638be8e8abcd8a24902b5de55275afd2863d650c549ff71aeab96f945125d19bc56426d7300d6
+EBUILD gmpy-2.2.1.ebuild 859 BLAKE2B 226e0950db1256272a3e469646bd2971a19024549e62cd5cb6b8dbc6f04505b6b9f12ccbce39859a0697128110feb88bdcb45449c56afc21f7cf6dba95be2d9f SHA512 9980b83389b1a1fa695f99df7b31ed3ef07a1ba1813aba537c4cf18d278d3b60d5aa87b5fee2f3657da333fa94d73f9c56a052c4bbefdb38168b783ce9f651f6
 MISC metadata.xml 687 BLAKE2B 9cf9e1c3dad11819000600a2ce28b5f140101cfa37553df7bf07edeb8513d7b8d80b15d561e37ca960a23d3470fc7f83608f9163d46b54fe7c41782302c53963 SHA512 eb1aacdf09d56ac73a1ce37d4562987c900f658bc517ccb6bd34cafefdf9a790d0e0d4318f70b57d68c5ec0c2832d0960b2bd619002fe690f484cd2702b77f79
diff --git a/dev-python/gmpy/gmpy-2.2.1.ebuild b/dev-python/gmpy/gmpy-2.2.1.ebuild
index 129514138749..1506e6bce11c 100644
--- a/dev-python/gmpy/gmpy-2.2.1.ebuild
+++ b/dev-python/gmpy/gmpy-2.2.1.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
 
 LICENSE="LGPL-3+"
 SLOT="2"
-KEYWORDS="amd64 arm arm64 ~loong ~ppc ppc64 ~riscv x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
+KEYWORDS="amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
 
 DEPEND="
 	>=dev-libs/mpc-1.0.2:=
diff --git a/dev-python/jsondiff/Manifest b/dev-python/jsondiff/Manifest
index bb72ef438bbb..60e16610490e 100644
--- a/dev-python/jsondiff/Manifest
+++ b/dev-python/jsondiff/Manifest
@@ -1,3 +1,5 @@
 DIST jsondiff-2.2.0.gh.tar.gz 22672 BLAKE2B 64af3c3f0aa9c7c6380af30ae303c230a04ba02d9e97d25b46348134312ea53d869e74c24a1b0d72983d731dda6d74a3fee3d89df6e9a6ef083321fe9b501ec3 SHA512 a1da92a1a38047947c2ee6057c641930c1b141889f992723c250a4444871170e2b10c892595a3bce026339b1d03c91d157cdf918fb36d4b916131bee5db969e5
+DIST jsondiff-2.2.1.gh.tar.gz 22715 BLAKE2B 598d999d6d2dd9a3a6abd8b34145420b2ee9c6b5bf4a686e1c4fe605d68c3ee588efda4db0a0127a13f10e4639b43661f297e83a314ee8a0c12e9408c8dfdcbb SHA512 e10ed1f1b11b877223936586c1805cb8b8ae3f487f913f4d33030ae6e87a06a54f1f9adfb2b50485d72123f2feb6b40aa019851a6c9fd83575cc0f0b814484f7
 EBUILD jsondiff-2.2.0.ebuild 827 BLAKE2B 7eb175b25ddd85feec668edfd93ad3f639c5f795ad279700531e98c2027e76aaf9bb98e202c31272af2a91aff3a82641da842b9279dee83dd53f144ac6029d00 SHA512 08bf3da86c1f7ad683963cdfe2f9dab04cc958cd07249216061f650bd146a189275203d6d2960ead9ec14cdd1cb7a9fa2e3a929c5d639942dbc77814f76417d1
+EBUILD jsondiff-2.2.1.ebuild 830 BLAKE2B 06855c48602171ab6a48d8e40fac0615d30274401c2c284b7454307bb71dc7dc8cb0c8f7bbbe957fe3a86b6608485e0b0a3e88a2bca0978a5d5a3a1462632bea SHA512 de41c4a480a657b920151e8f60f7d9730298092596cdd7aaf9e07ae442bb5d80d497383b1096f372aa006e0a4f280176d3b885e15cc15cc9288139e0490c1758
 MISC metadata.xml 561 BLAKE2B f11baa5f35a81e4fd69adde15b5a39d728e8137a112ef7c794e8d008d5de829ab5a333fcfdc2e1dd2156d91bb779db204a21c73eaad424e983c7865b33a81785 SHA512 238d5cedd70a0fd887f6007cbee0e11faf4b574b346fa91c66ee6d93e06571364fb80a0fbc13fe347f34e217e7589f5b61984c5ab0ead465d5e725d1792af4c5
diff --git a/dev-python/jsondiff/jsondiff-2.2.1.ebuild b/dev-python/jsondiff/jsondiff-2.2.1.ebuild
new file mode 100644
index 000000000000..1f6ddda4fc90
--- /dev/null
+++ b/dev-python/jsondiff/jsondiff-2.2.1.ebuild
@@ -0,0 +1,41 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit distutils-r1
+
+DESCRIPTION="Diff JSON and JSON-like structures in Python"
+HOMEPAGE="
+	https://github.com/xlwings/jsondiff/
+	https://pypi.org/project/jsondiff/
+"
+SRC_URI="
+	https://github.com/xlwings/${PN}/archive/${PV}.tar.gz
+		-> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86 ~amd64-linux ~x86-linux"
+
+RDEPEND="
+	dev-python/pyyaml[${PYTHON_USEDEP}]
+"
+BDEPEND="
+	dev-python/setuptools-scm[${PYTHON_USEDEP}]
+	test? (
+		dev-python/hypothesis[${PYTHON_USEDEP}]
+	)
+"
+
+distutils_enable_tests pytest
+
+python_prepare_all() {
+	distutils-r1_python_prepare_all
+
+	export SETUPTOOLS_SCM_PRETEND_VERSION=${PV}
+}
diff --git a/dev-python/mpmath/Manifest b/dev-python/mpmath/Manifest
index aaa2fbd4869a..865713bbaeab 100644
--- a/dev-python/mpmath/Manifest
+++ b/dev-python/mpmath/Manifest
@@ -1,5 +1,5 @@
 DIST mpmath-1.3.0.tar.gz 508106 BLAKE2B 9d4eebbbb6788dd3ee45c8c30068ef3512043dd09ab626cbaf69b0f6bdf057a6e8c53c34e3dda7627db923f0d536a0bebf83916d8942f4dde9546bb8e0046f33 SHA512 a68028150095d743eae9669a0f70cbe6b7bcb4d27dfad6b1a96575f0885ec7306459a2a464117bab18779883ee8b4293502b4bd0ebd8672767e1d08d38f8b202
 DIST mpmath-1.4.0a1.tar.gz 2063946 BLAKE2B 0c6a86b1c8dc9addc3eb82586d4c4182ae6a9318cbe45d4fc699b9fbf9539774ae30f11c2d50137a3aa16ed4b0c328990483c2ceea812f86751cfa3ce419de5c SHA512 260afb20faaa949b89054ced3b039e346086d47c6ea018c8d226a0c42d9aa8f792611fe709c894a0df6930a0703dc8cfcf814432eba7ac977a821effd8879903
-EBUILD mpmath-1.3.0-r1.ebuild 838 BLAKE2B 42d6393a012f3b9988178df3e4bd67ba2b404456d39cb597366239a58401ac1c9008252345ba2e679426f47ef5b3029a61a607c0bc20203316747f8dfd033e5c SHA512 f3ae1ea9545479b59a84fdc0db5cb43b32676345ec3a89421d5a5aea9514311a3f3712a75376623127e395af8fce3ca6ae07dc7f88d642777a7f073042a53218
-EBUILD mpmath-1.4.0_alpha1.ebuild 1730 BLAKE2B 174fed814ccb2fad8b89d1c40bffe659bb64d2360dd5499f476a1cfa9e5972974d7075ace1186d503589ad5305254b492975e63f8a7356839ad14c7e02a4cd97 SHA512 3ae0de4e8d8977bfed52b81dd0762265a2edfcd95d6f9e08a9bbb86bbe6df3d608b97f4aad9aedecbf411e4b57d3b6dcc2f09d01ef2ccc7c5b0e8d0504cb45cc
+EBUILD mpmath-1.3.0-r1.ebuild 850 BLAKE2B f94f4f57d1ca8e71f46ff147c434144a51a68819ea30f4c386ea5ea66f0a21d4be2bae6f7115579bd93272bb07dc3f96852eb04a07443b7eda45c6b4a5f0820f SHA512 38e41b3be0a9609164afa719ea01920936bf99321ccbfb6a47a78fac59c69f6581823bf640e250fc9b2824e059f55b7d22cc96e6e4f190a6ed1ec708452baaba
+EBUILD mpmath-1.4.0_alpha1.ebuild 1743 BLAKE2B e0506eef734c4a57e27a2c907f7f534521c56d453b2abf1b416863e5de9f77d66b900d532ac54a3f25b6bb9d5625bb04181b0ed93e3a6749681e5ea5011f8fa7 SHA512 9d35ba1f8bb6852a1e5d152f51f7602cfc30ded414b14641d5787b247d1398a4919b7e2dd51b76cf9a7f210d3b0baee88cb9927f2d56074ad12569585702faf1
 MISC metadata.xml 624 BLAKE2B 8526d1f6329f8cb4d2ee5a9ae73dc5bf3861adce5beaa6a0aaf5abb918de11ad1ab0c5c206331bd4eaeaa7bdeda0c6ea6a2007492825be0545caa121f41abd6c SHA512 dc4c6f5e82ce735e70bdc1bbfbc01f9c1d62c2d46c54a173287a59b90882aa09945da39bb41e7b28f6d0066851e2adf07f0b7033aa77cc5620491864e89f188e
diff --git a/dev-python/mpmath/mpmath-1.3.0-r1.ebuild b/dev-python/mpmath/mpmath-1.3.0-r1.ebuild
index d32b7d9264f8..de3fe7fa680e 100644
--- a/dev-python/mpmath/mpmath-1.3.0-r1.ebuild
+++ b/dev-python/mpmath/mpmath-1.3.0-r1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
 
 LICENSE="BSD"
 SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ~ppc ppc64 ~riscv x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
+KEYWORDS="amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
 
 distutils_enable_tests pytest
 
diff --git a/dev-python/mpmath/mpmath-1.4.0_alpha1.ebuild b/dev-python/mpmath/mpmath-1.4.0_alpha1.ebuild
index 9af7399b58f0..14b8e5ae5d42 100644
--- a/dev-python/mpmath/mpmath-1.4.0_alpha1.ebuild
+++ b/dev-python/mpmath/mpmath-1.4.0_alpha1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
 
 LICENSE="BSD"
 SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
+KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
 
 BDEPEND="
 	dev-python/setuptools-scm[${PYTHON_USEDEP}]
diff --git a/dev-python/orderly-set/Manifest b/dev-python/orderly-set/Manifest
new file mode 100644
index 000000000000..fb878e74355c
--- /dev/null
+++ b/dev-python/orderly-set/Manifest
@@ -0,0 +1,3 @@
+DIST orderly-set-5.2.2.gh.tar.gz 21460 BLAKE2B 5660d7550d5c79351fcc66e611ba776d6340d0fc1f3a5344f308cbc00a7b2c47045a1cfe8c6ac76c7976a65b17953362e91d60d87a7fbb02f36a5d67f074dfe9 SHA512 d480677c04f32e69cc9361dff383765fe2c9df971ad77cdcbab3b650a0bad27b9bd99144cd406d5185440d674bc838acb1c2ba3a4b115fcff2eba34c19589637
+EBUILD orderly-set-5.2.2.ebuild 815 BLAKE2B d89b929940823f0fe3ac4521faf7bb5e0313acb7cd9fd091fb2d5c3eee96afe3770c5c10de5ba3e516eb620af448ade74f631647803459e0d53326accc04788b SHA512 0386b9d624402ba2ca6075ab4c1991997399922dd00ebcd7ca1c62105603623b894cb33422b38ba98d7adc9df1acd882db32d1a5a13bc5cd46e021a7367e970b
+MISC metadata.xml 377 BLAKE2B 5124dc952172cd06b437978c6a582709313744a032c6c71a784965478120dd203f66846de0b873306230f40666ec9754f7e5eb48532258c0c7a6e31fe9c615a9 SHA512 6125fc7aefee5dbd6c97edd0922e530746f1d4618173d9c3cdc582c92f8a092037c7e69b4084cea47ba81cc7e38e8134dedf60dd3aec6f2dfe305be39519434c
diff --git a/dev-python/orderly-set/metadata.xml b/dev-python/orderly-set/metadata.xml
new file mode 100644
index 000000000000..7d4c31d1ff3b
--- /dev/null
+++ b/dev-python/orderly-set/metadata.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+	<maintainer type="project">
+		<email>python@gentoo.org</email>
+	</maintainer>
+	<stabilize-allarches/>
+	<upstream>
+		<remote-id type="github">seperman/orderly-set</remote-id>
+		<remote-id type="pypi">orderly-set</remote-id>
+	</upstream>
+</pkgmetadata>
diff --git a/dev-python/orderly-set/orderly-set-5.2.2.ebuild b/dev-python/orderly-set/orderly-set-5.2.2.ebuild
new file mode 100644
index 000000000000..8b0953ce7def
--- /dev/null
+++ b/dev-python/orderly-set/orderly-set-5.2.2.ebuild
@@ -0,0 +1,35 @@
+# Copyright 2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( pypy3 python3_{10..13} )
+
+inherit distutils-r1
+
+DESCRIPTION="A package containing multiple implementations of Ordered Set"
+HOMEPAGE="
+	https://github.com/seperman/orderly-set/
+	https://pypi.org/project/orderly-set/
+"
+# incomplete test directory
+# https://github.com/seperman/orderly-set/pull/3
+SRC_URI="
+	https://github.com/seperman/orderly-set/archive/${PV}.tar.gz
+		-> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+
+distutils_enable_tests pytest
+
+src_prepare() {
+	distutils-r1_src_prepare
+
+	# unconditional mypy dep for a test that is not even run
+	# https://github.com/seperman/orderly-set/pull/5
+	sed -i -e '/mypy\.api/d' tests/*.py || die
+}
diff --git a/dev-python/pikepdf/Manifest b/dev-python/pikepdf/Manifest
index 95d932c22acc..80653640f5ec 100644
--- a/dev-python/pikepdf/Manifest
+++ b/dev-python/pikepdf/Manifest
@@ -1,20 +1,7 @@
-AUX pikepdf-9.0.0-py313.patch 881 BLAKE2B 4975d95cdffe2874a9c8e85a80e3906935b5a92ee935713fbdc3fc794cd603902984dc513fcc1ac38070f78579d037e534689cd43bef9ab11d44569270f24660 SHA512 4d43874e79e6b7a88299519e0b496db70d07968a388d012000a03f5bf53f15f9d1a539f64d6e150f9921bfc2bfc98e5c45ffb91e3c3a6b35130a0fe7ce1d2925
-DIST pikepdf-8.11.2.tar.gz 2870263 BLAKE2B 6cf3666baca5d20b125efc3f6d8cfe7f96b9334b8a39da67fe3f4185f41232d8a18bf902f21bfe33e4259b7fb61e7dc462a247c76bf4564a3bdf0ea987119d91 SHA512 57bf5d16aaf9367eef9407f7f406a5ee74f2060d276ab861379c74c2193d02b2e3cca0925ee29813791bb36fae8dbbba4a9b16a7f4c2d19c67c21bbe7bb3f80f
-DIST pikepdf-8.14.0.tar.gz 2870612 BLAKE2B be0fd5a8d48fccc7695c45acc28cbda8252529d0687197c261e077e8c3a63e3597e504bf2aae2ab09648c0f127228d517bfa630ed77ea90bc28c8f3463854779 SHA512 f0e073df952cd850e0529fa798743a09f249a998450be1393b109b21850cf86b80c8813b55db778dc4e265df48af7619fccfac30ec9195c3ac724b8c7724e858
-DIST pikepdf-8.15.1.tar.gz 2870723 BLAKE2B 958bb2a417e2f1c9e5e4448b47cdadffb10e82841cc8173503881a86e92e85c05f800a8ad6936f32ee53e6f7a8cd62ee9e28e251de1f32a7cdce055139ec5fa3 SHA512 ae6b0b8bdf7e395943caf503f1d498861bd2719185e6382a522b8c0d4e38413a1b070e912367852bc5735d29b8453d05c57ff384ede825830722470445a534f6
-DIST pikepdf-8.4.1.tar.gz 2853305 BLAKE2B 2298514159db17ba49b8e2fa2407d60de50273bea111ece704251d99193bdc4c8ed77f624237a49c3f4f129e3b14ac4ddd1006cf3024bcbf822bc5523e0fee35 SHA512 6989e8a3888f612e453ec1ea8425c0ca35ccfee19ae5e8c32df136ebc3fbb7728d9fe5beaacb4e392a20c9037a1009fc8f8d53d73634427fb0df9103626e34fa
-DIST pikepdf-9.0.0.tar.gz 2868331 BLAKE2B 6735938fd2c0e8bb6a5fb40896350a2caa2ee20f8982010574a4e682c8ff19d01bc6773d30f78e2d4a5d58496de9dfa8fe9584f1c954205ed4832753addbd373 SHA512 15248d523cebdfbfcd7a5f8b6144b7dc8371612bd77ba3847af1ce626b5d87780911346d3c61bfe7cef545a19f1863c1a4048b35ace56f2cb62dcb962272829d
-DIST pikepdf-9.1.0.tar.gz 2869103 BLAKE2B 39750e280caa2393b69a5c3c841afa9cbb0d5701a20ae9ca4e9a57088cae47e2dd33ca8b605b0b096df131b578a4cdc71eb8696d12b2817426b35a8b13668460 SHA512 0fbf1ca151b6a234cd23a5148c9e8e4e033c5da5c935b4786fe6167555da7016c55b124dd2f9e8dc414c9782829f38412227820229a8459cc9dbe03220620fae
 DIST pikepdf-9.1.1.tar.gz 2869514 BLAKE2B b196a61d599db1355695d40ac69e09ea7a020cb10c246685792b7f6f7854b5dce63dd2f675a542fa256ac713c7a7ce49ba7ddd248fbe901fe267641df399ca74 SHA512 0b3c2c89d9226212806791e00470c2c64147f0738d26bfe9c5288414cf515760213e3cdc70a62ef3f53a0ee43b7d8e2cc0076f14fe22bdbac2ff50e0a8984164
 DIST pikepdf-9.1.2.tar.gz 2869865 BLAKE2B 74b64d628f12a5335a9dfbe2e15fbbd0a39e266100bcc8b33e94c954aab91150f46649b181bf049cd1084a6d2412ea9485cc57d4d6a23a4678a5ea55ebbb7357 SHA512 676d68f05a506b6aa69e1b01d03164de6731d17b48d2cd4b123221ebe27aef04a75d458c897c53d504a0b3aa7d0bc3e78aaf707a3cfdcdf8d31ee5e537188bd3
 DIST pikepdf-9.2.0.tar.gz 2905389 BLAKE2B f38335075db489007eba582d57a72fd5fa268f89105dc528131c14d53547673cbffa96b376ba27e9b04dac3bab6770e80bb0ac865e7549eb1c00e4ea4eb3ba27 SHA512 0e2c5e647ccb24691c11eeb41569a8f7250fb8ca55a5c76aa1ae250c9fc49cd2bfe73db6f599928b14d46a678ef71b6e6f430e134d9891139176b90a2f853e17
-EBUILD pikepdf-8.11.2-r1.ebuild 1731 BLAKE2B 91700e32086a03e75469137f0fb3e274bfbbe312c073dc6826bce7fbae9a3e2ce35ca4ba1e5eaf9c5922d380785dbdbae216f7da03e127b084f88c0ebeb5cb75 SHA512 5a6be61c7de31a7e7eecab18f3e63cf07229055c49def8bac7e9668110b4e813a612180e75392aea44ac1e8dbd5dfea1f6dd98b83d8d067039ee95496fe1778a
-EBUILD pikepdf-8.14.0-r1.ebuild 1732 BLAKE2B 9b5b7f80f737a410c8909b068403fe314ac5eee0e6fadcdd1dce1c60283188e39f61cc3484bcd972dba64747674a3f0adf06487a58d45b3fdd263f5e2f8e1e93 SHA512 0faa15815c04cd3b60584fcd421c19ef0e2688311ea051916456bb19ccaab2b0d950d1095f752615bfa818703ad24541eab8d7b91263569761f7a2f6b1fa0809
-EBUILD pikepdf-8.15.1-r1.ebuild 1829 BLAKE2B 3d6a77e3f8934c2902e669307dff6ba003bc0cf9f0bef5f1e9fe7255c477dc67a548ad6f836f1d0e133c7d254dbb65de597c7388a31fffe619a2e5ebfbf0938f SHA512 da843f22d717fb2d2815a0e8620c7f20e3ac317be63de75d72026fa9eabce8bef70b79a534812e38206b4e28aec1cfbaf5da388c81c36d66e36b0938b9b57097
-EBUILD pikepdf-8.4.1-r1.ebuild 1627 BLAKE2B 721f4410738d2c5d43de3d0923654a657a21da7950ecf7f47bfb918d647fe3cfa39725451ef0431a80480114e62bf3c6d941f0f8f03418c1c5a0b979049f6b72 SHA512 c6850e079ae3baff68fcb5ee0bdbac6fb60985ca3026084c5cb94f17d884531261f12ecfc24a043b61bc652205ac22dd2cf7c1359a39f84ae6f087666ad7b3ce
-EBUILD pikepdf-9.0.0.ebuild 2073 BLAKE2B b344d8d1b7e60f47ceb882079054665412f20d5edcc8c8f8bf1cc98db252b4aec48d24d77d3ccb92483268d3e9b7d53099265dd6ddca5429a24ed98b6d929593 SHA512 06759b8cdb78b6655bddeb1313bf99d951a591ad323957bf6b32066f49fb8794acf1e169ac1d6c9a3da024b9a20948b3cf945b8ffe877939f35f6b33873601a8
-EBUILD pikepdf-9.1.0.ebuild 1951 BLAKE2B 6dab9a829f96bc2c0c806942a745c1879e2005b602094fac0cb515d03404b964c6219dcff480dbc15422f470e89e06b35f6295cbcd953109a5f63a8d537a95de SHA512 dd634dd434d3e1fecd21775dfe33175ac9dca6062d6ba57264eba6fa55628230656c22f3d50d136f29e71f13af853ffb88ed0f4b412a128d5f5c2b8ec2950e0e
-EBUILD pikepdf-9.1.1.ebuild 1945 BLAKE2B 9333885e6217e81815c919785075e08967e2616e2cf480eded864bff0c1bd68291d649b6097f534572c295c41402dd153fec9e24ee04d52110598e39120cf79d SHA512 22dc6a44f40a4df4ee4acc2eb4748f565a593dc2dfae38f08fb1fbc60da11d6b6a8653de531042b996539da8eee126492dc218cd1c3f03ead83e52e78c2a0b9b
+EBUILD pikepdf-9.1.1.ebuild 1943 BLAKE2B c4cdc0ff7964d4f015913107f256ef51c5bf2a7baf787d80754f556cd05b2102b3f7bee538be5081a1bb4f7675f1c08696a736749eb2084415f134ec982beece SHA512 1ec577c0648aa625963b1d97a2c1a73d5d53be8eaa183c439aa6bdc6e7fa843517bf5ac851e2efd7c0c28b0c919f837b253c3e0044937f07aa4bce52fe975044
 EBUILD pikepdf-9.1.2.ebuild 1951 BLAKE2B 6dab9a829f96bc2c0c806942a745c1879e2005b602094fac0cb515d03404b964c6219dcff480dbc15422f470e89e06b35f6295cbcd953109a5f63a8d537a95de SHA512 dd634dd434d3e1fecd21775dfe33175ac9dca6062d6ba57264eba6fa55628230656c22f3d50d136f29e71f13af853ffb88ed0f4b412a128d5f5c2b8ec2950e0e
 EBUILD pikepdf-9.2.0.ebuild 1951 BLAKE2B 8dcce346d498b254e30a9de0715b6412ee6c2cf1adee252e3f709b137417db6e227e37a86414708c5620041ec474d17e5c8e3895e23a05977f82735ca0dd5e8f SHA512 3a4801545d05bd635f454bad961f4add8a1523993a4f58534efedf77114f0570060f13f091c6c9ffa18955b579f1d3ef74a461e665dadaac31141a7d94ed54f8
 MISC metadata.xml 687 BLAKE2B 07c94d9dac5323202f955fd9c1e5a6fc78518a0a6f703c54c73b70e774900c41a4823beb3f8be7068d83878d1e60df0d7e30efd53bbc1ba31019477de82b092f SHA512 1be3ec00342e8079363db0c57f75ae88bd05e873869fbbb27442e9fe98eb6917c55b4eaf03ed22c4c44ca3aec9b84839cbc254202460a3266bbc42ff8f0f84b3
diff --git a/dev-python/pikepdf/files/pikepdf-9.0.0-py313.patch b/dev-python/pikepdf/files/pikepdf-9.0.0-py313.patch
deleted file mode 100644
index d0415daec69c..000000000000
--- a/dev-python/pikepdf/files/pikepdf-9.0.0-py313.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 6831e87bb94322b7ca53964a57ba575861b5916c Mon Sep 17 00:00:00 2001
-From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
-Date: Wed, 19 Jun 2024 18:35:06 -0400
-Subject: [PATCH] Fix tests with Python 3.13
-
-The exception message changed to:
-```
-property '' of 'Page' object has no deleter
-```
----
- tests/test_page.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/tests/test_page.py b/tests/test_page.py
-index 3e5cc345..05455a93 100644
---- a/tests/test_page.py
-+++ b/tests/test_page.py
-@@ -293,7 +293,7 @@ def test_page_attrs(graph):
- 
-     del graph.pages[0].Resources
-     with pytest.raises(
--        AttributeError, match=r"can't delete|property of 'Page' object has no deleter"
-+        AttributeError, match=r"can't delete|property( '')? of 'Page' object has no deleter"
-     ):
-         del graph.pages[0].obj
-     del graph.pages[0]['/Contents']
diff --git a/dev-python/pikepdf/pikepdf-8.11.2-r1.ebuild b/dev-python/pikepdf/pikepdf-8.11.2-r1.ebuild
deleted file mode 100644
index bbd2842097b5..000000000000
--- a/dev-python/pikepdf/pikepdf-8.11.2-r1.ebuild
+++ /dev/null
@@ -1,67 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{10..12} pypy3 )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Python library to work with pdf files based on qpdf"
-HOMEPAGE="
-	https://github.com/pikepdf/pikepdf/
-	https://pypi.org/project/pikepdf/
-"
-
-LICENSE="MPL-2.0"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~ppc ppc64 ~riscv ~s390 sparc x86"
-
-# Check QPDF_MIN_VERSION in pyproject.toml on bumps, as well as
-# https://qpdf.readthedocs.io/en/stable/release-notes.html.
-DEPEND="
-	>=app-text/qpdf-11.7.0:0=
-"
-RDEPEND="
-	${DEPEND}
-	dev-python/deprecated[${PYTHON_USEDEP}]
-	>=dev-python/lxml-4.0[${PYTHON_USEDEP}]
-	dev-python/packaging[${PYTHON_USEDEP}]
-	>=dev-python/pillow-10.0.1[lcms,${PYTHON_USEDEP}]
-"
-BDEPEND="
-	>=dev-python/pybind11-2.10.1[${PYTHON_USEDEP}]
-	>=dev-python/setuptools-scm-7.0.5[${PYTHON_USEDEP}]
-	test? (
-		>=dev-python/attrs-20.2.0[${PYTHON_USEDEP}]
-		>=dev-python/hypothesis-6.36[${PYTHON_USEDEP}]
-		>=dev-python/numpy-1.21.0[${PYTHON_USEDEP}]
-		>=dev-python/pillow-5.0.0[${PYTHON_USEDEP},jpeg,lcms,tiff]
-		>=dev-python/psutil-5.9[${PYTHON_USEDEP}]
-		>=dev-python/pytest-timeout-2.1.0[${PYTHON_USEDEP}]
-		>=dev-python/python-dateutil-2.8.1[${PYTHON_USEDEP}]
-		$(python_gen_cond_dep '
-			dev-python/tomli[${PYTHON_USEDEP}]
-		' 3.10)
-		media-libs/tiff[zlib]
-	)
-"
-
-distutils_enable_tests pytest
-
-EPYTEST_DESELECT=(
-	# fragile to system load
-	tests/test_image_access.py::test_random_image
-)
-
-src_prepare() {
-	sed -e '/-n auto/d' -i pyproject.toml || die
-	distutils-r1_src_prepare
-}
-
-python_test() {
-	local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
-	epytest -p timeout
-}
diff --git a/dev-python/pikepdf/pikepdf-8.14.0-r1.ebuild b/dev-python/pikepdf/pikepdf-8.14.0-r1.ebuild
deleted file mode 100644
index 342767bd45fb..000000000000
--- a/dev-python/pikepdf/pikepdf-8.14.0-r1.ebuild
+++ /dev/null
@@ -1,67 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{10..12} pypy3 )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Python library to work with pdf files based on qpdf"
-HOMEPAGE="
-	https://github.com/pikepdf/pikepdf/
-	https://pypi.org/project/pikepdf/
-"
-
-LICENSE="MPL-2.0"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~loong ~ppc ppc64 ~riscv ~s390 sparc x86"
-
-# Check QPDF_MIN_VERSION in pyproject.toml on bumps, as well as
-# https://qpdf.readthedocs.io/en/stable/release-notes.html.
-DEPEND="
-	>=app-text/qpdf-11.5.0:0=
-"
-RDEPEND="
-	${DEPEND}
-	dev-python/deprecated[${PYTHON_USEDEP}]
-	>=dev-python/lxml-4.0[${PYTHON_USEDEP}]
-	dev-python/packaging[${PYTHON_USEDEP}]
-	>=dev-python/pillow-10.0.1[lcms,${PYTHON_USEDEP}]
-"
-BDEPEND="
-	>=dev-python/pybind11-2.10.1[${PYTHON_USEDEP}]
-	>=dev-python/setuptools-scm-7.0.5[${PYTHON_USEDEP}]
-	test? (
-		>=dev-python/attrs-20.2.0[${PYTHON_USEDEP}]
-		>=dev-python/hypothesis-6.36[${PYTHON_USEDEP}]
-		>=dev-python/numpy-1.21.0[${PYTHON_USEDEP}]
-		>=dev-python/pillow-5.0.0[${PYTHON_USEDEP},jpeg,lcms,tiff]
-		>=dev-python/psutil-5.9[${PYTHON_USEDEP}]
-		>=dev-python/pytest-timeout-2.1.0[${PYTHON_USEDEP}]
-		>=dev-python/python-dateutil-2.8.1[${PYTHON_USEDEP}]
-		$(python_gen_cond_dep '
-			dev-python/tomli[${PYTHON_USEDEP}]
-		' 3.10)
-		media-libs/tiff[zlib]
-	)
-"
-
-distutils_enable_tests pytest
-
-EPYTEST_DESELECT=(
-	# fragile to system load
-	tests/test_image_access.py::test_random_image
-)
-
-src_prepare() {
-	sed -e '/-n auto/d' -i pyproject.toml || die
-	distutils-r1_src_prepare
-}
-
-python_test() {
-	local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
-	epytest -p timeout
-}
diff --git a/dev-python/pikepdf/pikepdf-8.15.1-r1.ebuild b/dev-python/pikepdf/pikepdf-8.15.1-r1.ebuild
deleted file mode 100644
index c889e6cca1d6..000000000000
--- a/dev-python/pikepdf/pikepdf-8.15.1-r1.ebuild
+++ /dev/null
@@ -1,71 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{10..12} pypy3 )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Python library to work with pdf files based on qpdf"
-HOMEPAGE="
-	https://github.com/pikepdf/pikepdf/
-	https://pypi.org/project/pikepdf/
-"
-
-LICENSE="MPL-2.0"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~ppc ppc64 ~riscv ~s390 sparc x86"
-IUSE="big-endian"
-
-# Check QPDF_MIN_VERSION in pyproject.toml on bumps, as well as
-# https://qpdf.readthedocs.io/en/stable/release-notes.html.
-DEPEND="
-	>=app-text/qpdf-11.5.0:0=
-"
-RDEPEND="
-	${DEPEND}
-	dev-python/deprecated[${PYTHON_USEDEP}]
-	>=dev-python/lxml-4.0[${PYTHON_USEDEP}]
-	dev-python/packaging[${PYTHON_USEDEP}]
-	>=dev-python/pillow-10.0.1[lcms,${PYTHON_USEDEP}]
-"
-BDEPEND="
-	>=dev-python/pybind11-2.10.1[${PYTHON_USEDEP}]
-	>=dev-python/setuptools-scm-7.0.5[${PYTHON_USEDEP}]
-	test? (
-		>=dev-python/attrs-20.2.0[${PYTHON_USEDEP}]
-		>=dev-python/hypothesis-6.36[${PYTHON_USEDEP}]
-		>=dev-python/numpy-1.21.0[${PYTHON_USEDEP}]
-		>=dev-python/pillow-5.0.0[${PYTHON_USEDEP},jpeg,lcms,tiff]
-		>=dev-python/psutil-5.9[${PYTHON_USEDEP}]
-		>=dev-python/pytest-timeout-2.1.0[${PYTHON_USEDEP}]
-		>=dev-python/python-dateutil-2.8.1[${PYTHON_USEDEP}]
-		!big-endian? (
-			>=dev-python/python-xmp-toolkit-2.0.1[${PYTHON_USEDEP}]
-		)
-		$(python_gen_cond_dep '
-			dev-python/tomli[${PYTHON_USEDEP}]
-		' 3.10)
-		media-libs/tiff[zlib]
-	)
-"
-
-distutils_enable_tests pytest
-
-EPYTEST_DESELECT=(
-	# fragile to system load
-	tests/test_image_access.py::test_random_image
-)
-
-src_prepare() {
-	sed -e '/-n auto/d' -i pyproject.toml || die
-	distutils-r1_src_prepare
-}
-
-python_test() {
-	local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
-	epytest -p timeout
-}
diff --git a/dev-python/pikepdf/pikepdf-8.4.1-r1.ebuild b/dev-python/pikepdf/pikepdf-8.4.1-r1.ebuild
deleted file mode 100644
index 96db3b598947..000000000000
--- a/dev-python/pikepdf/pikepdf-8.4.1-r1.ebuild
+++ /dev/null
@@ -1,61 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{10..12} pypy3 )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Python library to work with pdf files based on qpdf"
-HOMEPAGE="
-	https://github.com/pikepdf/pikepdf/
-	https://pypi.org/project/pikepdf/
-"
-
-LICENSE="MPL-2.0"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ppc ppc64 ~riscv ~s390 sparc x86"
-
-# Check QPDF_MIN_VERSION in pyproject.toml on bumps, as well as
-# https://qpdf.readthedocs.io/en/stable/release-notes.html.
-DEPEND="
-	>=app-text/qpdf-11.5.0:0=
-"
-RDEPEND="
-	${DEPEND}
-	dev-python/deprecation[${PYTHON_USEDEP}]
-	>=dev-python/lxml-4.0[${PYTHON_USEDEP}]
-	dev-python/packaging[${PYTHON_USEDEP}]
-	>=dev-python/pillow-9.0[lcms,${PYTHON_USEDEP}]
-"
-BDEPEND="
-	>=dev-python/pybind11-2.10.1[${PYTHON_USEDEP}]
-	>=dev-python/setuptools-scm-7.0.5[${PYTHON_USEDEP}]
-	test? (
-		>=dev-python/attrs-20.2.0[${PYTHON_USEDEP}]
-		>=dev-python/hypothesis-6.36[${PYTHON_USEDEP}]
-		>=dev-python/numpy-1.21.0[${PYTHON_USEDEP}]
-		>=dev-python/pillow-5.0.0[${PYTHON_USEDEP},jpeg,lcms,tiff]
-		>=dev-python/psutil-5.9[${PYTHON_USEDEP}]
-		>=dev-python/pytest-timeout-2.1.0[${PYTHON_USEDEP}]
-		>=dev-python/python-dateutil-2.8.1[${PYTHON_USEDEP}]
-		$(python_gen_cond_dep '
-			dev-python/tomli[${PYTHON_USEDEP}]
-		' 3.{8..10})
-	)
-"
-
-distutils_enable_tests pytest
-
-EPYTEST_DESELECT=(
-	# fragile to system load
-	tests/test_image_access.py::test_random_image
-)
-
-src_prepare() {
-	sed -e '/-n auto/d' -i pyproject.toml || die
-	distutils-r1_src_prepare
-}
diff --git a/dev-python/pikepdf/pikepdf-9.0.0.ebuild b/dev-python/pikepdf/pikepdf-9.0.0.ebuild
deleted file mode 100644
index 0ffb2c3ac36f..000000000000
--- a/dev-python/pikepdf/pikepdf-9.0.0.ebuild
+++ /dev/null
@@ -1,79 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{10..13} pypy3 )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Python library to work with pdf files based on qpdf"
-HOMEPAGE="
-	https://github.com/pikepdf/pikepdf/
-	https://pypi.org/project/pikepdf/
-"
-
-LICENSE="MPL-2.0"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~loong ppc ppc64 ~riscv ~s390 sparc x86"
-IUSE="big-endian"
-
-# Check QPDF_MIN_VERSION in pyproject.toml on bumps, as well as
-# https://qpdf.readthedocs.io/en/stable/release-notes.html.
-DEPEND="
-	>=app-text/qpdf-11.5.0:0=
-"
-RDEPEND="
-	${DEPEND}
-	dev-python/deprecated[${PYTHON_USEDEP}]
-	>=dev-python/lxml-4.0[${PYTHON_USEDEP}]
-	dev-python/packaging[${PYTHON_USEDEP}]
-	>=dev-python/pillow-10.0.1[lcms,${PYTHON_USEDEP}]
-"
-BDEPEND="
-	>=dev-python/pybind11-2.10.1[${PYTHON_USEDEP}]
-	>=dev-python/setuptools-scm-7.0.5[${PYTHON_USEDEP}]
-	test? (
-		>=dev-python/attrs-20.2.0[${PYTHON_USEDEP}]
-		>=dev-python/hypothesis-6.36[${PYTHON_USEDEP}]
-		>=dev-python/numpy-1.21.0[${PYTHON_USEDEP}]
-		>=dev-python/pillow-5.0.0[${PYTHON_USEDEP},jpeg,lcms,tiff]
-		>=dev-python/psutil-5.9[${PYTHON_USEDEP}]
-		>=dev-python/pytest-timeout-2.1.0[${PYTHON_USEDEP}]
-		>=dev-python/python-dateutil-2.8.1[${PYTHON_USEDEP}]
-		!big-endian? (
-			>=dev-python/python-xmp-toolkit-2.0.1[${PYTHON_USEDEP}]
-		)
-		$(python_gen_cond_dep '
-			dev-python/tomli[${PYTHON_USEDEP}]
-		' 3.10)
-		media-libs/tiff[zlib]
-	)
-"
-
-distutils_enable_tests pytest
-
-EPYTEST_DESELECT=(
-	# fragile to system load
-	tests/test_image_access.py::test_random_image
-	tests/test_image_access.py::test_image_save_compare
-	tests/test_image_access.py::test_palette_nonrgb
-)
-
-src_prepare() {
-	local PATCHES=(
-		# https://github.com/pikepdf/pikepdf/commit/6831e87bb94322b7ca53964a57ba575861b5916c
-		"${FILESDIR}/${P}-py313.patch"
-	)
-
-	distutils-r1_src_prepare
-
-	sed -e '/-n auto/d' -i pyproject.toml || die
-}
-
-python_test() {
-	local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
-	epytest -p timeout
-}
diff --git a/dev-python/pikepdf/pikepdf-9.1.0.ebuild b/dev-python/pikepdf/pikepdf-9.1.0.ebuild
deleted file mode 100644
index 83a7ea2c9370..000000000000
--- a/dev-python/pikepdf/pikepdf-9.1.0.ebuild
+++ /dev/null
@@ -1,74 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{10..13} pypy3 )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Python library to work with pdf files based on qpdf"
-HOMEPAGE="
-	https://github.com/pikepdf/pikepdf/
-	https://pypi.org/project/pikepdf/
-"
-
-LICENSE="MPL-2.0"
-SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
-IUSE="big-endian"
-
-# Check QPDF_MIN_VERSION in pyproject.toml on bumps, as well as
-# https://qpdf.readthedocs.io/en/stable/release-notes.html.
-DEPEND="
-	>=app-text/qpdf-11.5.0:0=
-"
-RDEPEND="
-	${DEPEND}
-	dev-python/deprecated[${PYTHON_USEDEP}]
-	>=dev-python/lxml-4.0[${PYTHON_USEDEP}]
-	dev-python/packaging[${PYTHON_USEDEP}]
-	>=dev-python/pillow-10.0.1[lcms,${PYTHON_USEDEP}]
-"
-BDEPEND="
-	>=dev-python/pybind11-2.10.1[${PYTHON_USEDEP}]
-	>=dev-python/setuptools-scm-7.0.5[${PYTHON_USEDEP}]
-	test? (
-		>=dev-python/attrs-20.2.0[${PYTHON_USEDEP}]
-		>=dev-python/hypothesis-6.36[${PYTHON_USEDEP}]
-		>=dev-python/numpy-1.21.0[${PYTHON_USEDEP}]
-		>=dev-python/pillow-5.0.0[${PYTHON_USEDEP},jpeg,lcms,tiff]
-		>=dev-python/psutil-5.9[${PYTHON_USEDEP}]
-		>=dev-python/pytest-timeout-2.1.0[${PYTHON_USEDEP}]
-		>=dev-python/python-dateutil-2.8.1[${PYTHON_USEDEP}]
-		!big-endian? (
-			>=dev-python/python-xmp-toolkit-2.0.1[${PYTHON_USEDEP}]
-		)
-		$(python_gen_cond_dep '
-			dev-python/tomli[${PYTHON_USEDEP}]
-		' 3.10)
-		media-libs/tiff[zlib]
-	)
-"
-
-distutils_enable_tests pytest
-
-src_prepare() {
-	distutils-r1_src_prepare
-
-	sed -e '/-n auto/d' -i pyproject.toml || die
-}
-
-python_test() {
-	local EPYTEST_DESELECT=(
-		# fragile to system load
-		tests/test_image_access.py::test_random_image
-		tests/test_image_access.py::test_image_save_compare
-		tests/test_image_access.py::test_palette_nonrgb
-	)
-
-	local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
-	epytest -p timeout
-}
diff --git a/dev-python/pikepdf/pikepdf-9.1.1.ebuild b/dev-python/pikepdf/pikepdf-9.1.1.ebuild
index 78302009aa2c..e104fff9ae40 100644
--- a/dev-python/pikepdf/pikepdf-9.1.1.ebuild
+++ b/dev-python/pikepdf/pikepdf-9.1.1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
 
 LICENSE="MPL-2.0"
 SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ppc ppc64 ~riscv ~s390 sparc x86"
 IUSE="big-endian"
 
 # Check QPDF_MIN_VERSION in pyproject.toml on bumps, as well as
diff --git a/dev-python/plotly/Manifest b/dev-python/plotly/Manifest
index 46655e3318fb..cc4c9723455e 100644
--- a/dev-python/plotly/Manifest
+++ b/dev-python/plotly/Manifest
@@ -1,5 +1,7 @@
 AUX plotly-5.23.0-numpy-2.patch 3564 BLAKE2B c45b31eaf9a6621780ef8a85b6aed4190bcb26c950554c2bf9c2e8bcf8c158952dfb917b8625bbd61a2a1837a871e9d8a3ae37b387c9408ceeaa655384b11e98 SHA512 deb96bdf408c58edfdba724708e527653939d353ecdeee1b9a8494eee313dc3a2ac21680349b20738b58744fafbaa2e5ac3dde2b6150ed4a1e61407a9222ea4b
 AUX plotly-5.8.0-fix-versioneer-import.patch 541 BLAKE2B 51ff6cbab8d9124243445f758aa4b976b7c26e1d3ce633e943bff133b81c0a7587feeb9d5e98a63f319c6afed8dc06e06fafe765ffd51fec245215c849fb4955 SHA512 db4743e538dddfe66e4c9c766698844af4d09c68188afefe92b6419adfe7cc0b1e9c1266d702d590b0b8dfc14bffbc8f08262ead0bff4dae3b5c71fa1259a4b9
 DIST plotly.py-5.23.0.gh.tar.gz 31606651 BLAKE2B f34d1df464cac49ab834674be8815b97535d8f59e4263d8f68d82f2c2c52976a26b13fe9275f4a90fe0c0848449807dcd8342c0e5309d4b39d61b39cb31d8db5 SHA512 96573bf5952b29a75d2c87029c1041f05d08f4f891d63d5999372d64c211abc5982308dcfbf7590981cd0666ae84ccbee8c9a22e8e2b97571fc8c6a4e634cdbc
+DIST plotly.py-5.24.0.gh.tar.gz 32084853 BLAKE2B 87371902c0f654a16e0d2b97655614b99e05511a298839b244d3147bd2330b70275d1235f4b75eb3bb1dc13289e4d6dab71ec68710d59f1cec467e05e998c609 SHA512 42071af552f666dcc98efe4995a156212971ca92a6320e18861c6e804ab5cd0641c8b772958d3080780aab48e779fc02a13c327c18b36c5077cd137f59f86aff
 EBUILD plotly-5.23.0.ebuild 3259 BLAKE2B b2c27f40284de1ef4c198048fa51827c4d369ea28c63635be36e8ff3654f96ebeda984fe88b1d2b594cd3210fb30b5e3ac2f172e43f50c5a07975dd22af1c153 SHA512 b692b4ba981169be69be3f255d54fcfabcaafcd5f84a9543131001663628923c4d6433b73133f1038869ca1abf7b1a652f663470fab5db8e67b63e6a5122e65b
+EBUILD plotly-5.24.0.ebuild 3312 BLAKE2B f1af97627771591ddd9cf23dfbb302bc4afa1eb37d389f7850242e411829e1df2bc304fa58507b3cdd1a65b668eb72f547ff02b0c032679793b843319ee01db0 SHA512 8d02865e8505ca4dab0d3316d4a3ca637f68b3ae9fd277bf17bcb650112c5b51958d85199dfd6d56b8805132fe12e05c46877eea7bba0138f76a056af087d229
 MISC metadata.xml 627 BLAKE2B 453adb04f4caba9790fe5223635245c8bca7ca5c6dc1930f09537045580b88b5fa1649e47158b13be6cc5cb09b4479a47690e37ef13208b47a95f82d14793a91 SHA512 a5183e9d217d1312e8d383ccb4ade66b92575492b6c8ed8987e3af18e9e456836b62b2d572ce62f9e01aae47b4a2bcbd12f79b4bb6acabfe69c2b63b20315bd3
diff --git a/dev-python/plotly/plotly-5.24.0.ebuild b/dev-python/plotly/plotly-5.24.0.ebuild
new file mode 100644
index 000000000000..1c80d1f50eae
--- /dev/null
+++ b/dev-python/plotly/plotly-5.24.0.ebuild
@@ -0,0 +1,119 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..12} )
+DISTUTILS_USE_PEP517=setuptools
+
+inherit distutils-r1
+
+MY_P=plotly.py-${PV}
+DESCRIPTION="Browser-based graphing library for Python"
+HOMEPAGE="
+	https://plotly.com/python/
+	https://github.com/plotly/plotly.py/
+	https://pypi.org/project/plotly/
+"
+SRC_URI="
+	https://github.com/plotly/plotly.py/archive/refs/tags/v${PV}.tar.gz
+		-> ${MY_P}.gh.tar.gz
+"
+S="${WORKDIR}/${MY_P}/packages/python/plotly"
+# The tests are not included in the PyPI tarball, to use the GitHub tarball
+# we have to skip npm, which means that the resulting install will
+# unfortunately lack the jupyterlab extension.
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+
+RDEPEND="
+	dev-python/packaging[${PYTHON_USEDEP}]
+	>=dev-python/tenacity-6.2.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+	dev-python/versioneer[${PYTHON_USEDEP}]
+	test? (
+		dev-python/ipykernel[${PYTHON_USEDEP}]
+		dev-python/ipython[${PYTHON_USEDEP}]
+		dev-python/ipywidgets[${PYTHON_USEDEP}]
+		dev-python/jupyter[${PYTHON_USEDEP}]
+		dev-python/jupyterlab[${PYTHON_USEDEP}]
+		dev-python/matplotlib[${PYTHON_USEDEP}]
+		dev-python/numpy[${PYTHON_USEDEP}]
+		dev-python/pandas[${PYTHON_USEDEP}]
+		dev-python/pillow[${PYTHON_USEDEP}]
+		dev-python/psutil[${PYTHON_USEDEP}]
+		dev-python/requests[${PYTHON_USEDEP}]
+		dev-python/pytz[${PYTHON_USEDEP}]
+		dev-python/scipy[${PYTHON_USEDEP}]
+		dev-python/shapely[${PYTHON_USEDEP}]
+		dev-python/statsmodels[${PYTHON_USEDEP}]
+		dev-python/xarray[${PYTHON_USEDEP}]
+		dev-python/scikit-image[${PYTHON_USEDEP}]
+	)
+"
+
+# There are sphinx docs but we are missing a bunch of dependencies.
+# distutils_enable_sphinx ../../../doc/apidoc
+distutils_enable_tests pytest
+
+# README ends up a broken symlink
+DOCS=()
+
+python_prepare_all() {
+	local PATCHES=(
+		# https://github.com/plotly/plotly.py/pull/4622
+		"${FILESDIR}/${PN}-5.23.0-numpy-2.patch"
+	)
+
+	distutils-r1_python_prepare_all
+
+	# unbundle versioneer
+	rm versioneer.py || die
+	# Do not try to fetch stuff with npm
+	export SKIP_NPM=1
+}
+
+python_test() {
+	local EPYTEST_IGNORE=(
+		# kaleido not packaged
+		plotly/tests/test_optional/test_kaleido
+
+		# plotly-orca not packaged
+		plotly/tests/test_orca
+	)
+
+	local EPYTEST_DESELECT=(
+		# kaleido not packaged
+		plotly/tests/test_orca/test_to_image.py::test_bytesio
+
+		# fails in non-isolated env
+		test_init/test_dependencies_not_imported.py::test_dependencies_not_imported
+		test_init/test_lazy_imports.py::test_lazy_imports
+
+		# Minor matplotlib incompatibility
+		plotly/matplotlylib/mplexporter/tests/test_basic.py::test_legend_dots
+		plotly/matplotlylib/mplexporter/tests/test_utils.py::test_linestyle
+
+		# TODO
+		plotly/tests/test_io/test_to_from_plotly_json.py::test_sanitize_json
+
+		# two subtests that require 'vaex' and 'polars' respectively
+		plotly/tests/test_optional/test_px/test_px_input.py::test_build_df_from_vaex_and_polars
+		plotly/tests/test_optional/test_px/test_px_input.py::test_build_df_with_hover_data_from_vaex_and_polars
+
+		# the usual recursion problem
+		plotly/tests/test_optional/test_utils/test_utils.py::test_masked_constants_example
+	)
+
+	local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+	epytest
+}
+
+python_install_all() {
+	distutils-r1_python_install_all
+
+	mv "${ED}"/{usr/etc,etc} || die
+}
diff --git a/dev-python/pycares/Manifest b/dev-python/pycares/Manifest
index 9ea4711f0b86..c2c7e0774694 100644
--- a/dev-python/pycares/Manifest
+++ b/dev-python/pycares/Manifest
@@ -1,3 +1,3 @@
 DIST pycares-4.4.0.tar.gz 821630 BLAKE2B c2bddc54db9cd6ba92d7c4fb3809609a8a3526bab68e4cf48f0fee2e7473828f70ca696be11b904e9c3f9241de8b13568cd0317c8cb305a4aca7356f1b74cfb5 SHA512 db387f21975d015e0fcb01972ffb018476d51331a7a49bb4c0bf23ccfa13dff3f8b9c21d5f11da8ece3018debf36b1cddea032ef860353203cf38ab2b3d01e8a
-EBUILD pycares-4.4.0.ebuild 1224 BLAKE2B d61c30786dc7365f98f6a917aed981ba285909632f9f6dac06bc340e79aa466e5aa9edeeeea6a5a6eba6177fcd5f955376a23ed737b7de79399a7529dc2ba896 SHA512 6247dba873a6ef6d1ce22371204c981b873f1a68c8c9a042bd956ad62b62bd8fda67431cdf4a92a452f755d5e183a946bb37c3cc9c7fa4424461267a7109fb22
+EBUILD pycares-4.4.0.ebuild 1250 BLAKE2B cd5644c38eb1ef629acf29b8b55145a01ce1c6155aba46c41d0351d5444518b4c2ed66bd187e8b60b07e33faceeea2566caabcc40c6f1832ea6eabd0e72e91e6 SHA512 728ab6ac95be3c03204f8f57c8f6f96ec58006f31931d44948b0b892667173286cf6b19e21569ab6f2dab8f1f2a332055b7503a70e3d9b660111db77ec6f00cd
 MISC metadata.xml 444 BLAKE2B a68f545c6f704176b98ebb3665e2f56e4879016ea4ffa4f342954d568d6fe76ad67bcf9d521f694b8fc0f199bff50969eb646554fff4a78f8644ac44edda0cdf SHA512 fe893795f2031639d9fa27efcb8afbb5a3e0ac2eb2a05f0465391813d60fba07372633e40136ce38eb429bae95d1ae5dccecd0aba228537553524343133dd202
diff --git a/dev-python/pycares/pycares-4.4.0.ebuild b/dev-python/pycares/pycares-4.4.0.ebuild
index faaac6052fe0..3cc6a95b3491 100644
--- a/dev-python/pycares/pycares-4.4.0.ebuild
+++ b/dev-python/pycares/pycares-4.4.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
 
 LICENSE="MIT"
 SLOT="0"
-KEYWORDS="amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
 IUSE="test"
 # Tests fail with network-sandbox, since they try to resolve google.com
 PROPERTIES="test_network"
diff --git a/dev-python/pydantic-core/Manifest b/dev-python/pydantic-core/Manifest
index acfad228c99a..c53e2554d946 100644
--- a/dev-python/pydantic-core/Manifest
+++ b/dev-python/pydantic-core/Manifest
@@ -71,6 +71,7 @@ DIST proc-macro2-1.0.86.crate 48958 BLAKE2B 4b89e07f23af8328dbb34fe2b3f1b202f1e6
 DIST pydantic_core-2.18.4.tar.gz 385098 BLAKE2B 6bea502397c327f38a000e9ea3b59b7d7f9fde5336562a081c6cdf88d92fe5e420eecec696ee432f1c6c5ec5dad8173f250897c4ae681a367ad28617724843f0 SHA512 01bdf79a79468e2a6a66f41830b98dc0adfb6d87b221e57e1da5a27b4068dea906aa987b9a7eca3bdc107e97e6bfa9ea164c527bbe2ceb683419ef147747b786
 DIST pydantic_core-2.20.1.tar.gz 388371 BLAKE2B d8c66cddd93fe4a56a901e5f06fe86c0c87b11397567e5400bf89e5884e13c98d37bbdc42ccd0bdd67c552370c17ed26d9a7897303544a816022d8a47ee8bc18 SHA512 fb5362a07282a54be9cbcf0773b5492dc1773c71d96979586885d920d794b13860a32a8165e7b5e023f9f0f7a3c85aa5098dc66d6626d5d290d3ab63fa70453f
 DIST pydantic_core-2.23.0.tar.gz 398665 BLAKE2B 4d62c6956f8309d8e03d3838dd9da7045b64f69836117b82bc0453ca2765053f37e8760076dcb9163729fcca7cfa36b2c7750031d4b5df7eda8234e99485c0f0 SHA512 84e7f5d8c2e1085575284d9d386194abe959b09c1b3bd6f16b79ac06b2a9104b52e01d1758f6a056590e138e2a33e73eaaf9539cb24a4ffbd1916e41cf8b81b8
+DIST pydantic_core-2.23.1.tar.gz 399302 BLAKE2B 36dbdb817ae44aa19572c85f380499ae60e5722863de728b5b67c11627b352ac9dd14120cbb471f9dbd3ba8e8ad20a0356d52e950d4d6df2b01996c3fa95f97a SHA512 d09bec6d1452a6cc6b947cea7744a49860bde00b9481c37dc5c72b0ba4426fa0cd6eb73e080cdc4d69c986094d5ad0c02171d23b3199ba7ad60aafe205bc2a97
 DIST pyo3-0.21.2.crate 504574 BLAKE2B 1b8bf374d1b61e3e4bedce6344338126051a6d951ea87d258e5ed92d4c0e13b0202f2e7e56500277c54743dd16c9b4587f436cf2058567501c8a9ac7c6b6c17a SHA512 5f88cda423e82b62698a74ceaa31fc27e5c1f1d417928accddb2e00337d163fda622f774ae6e24c1cb73c467d6b01e9a2ba866e4454338b1fbfc892ae14ffc53
 DIST pyo3-0.22.0.crate 535742 BLAKE2B 772a4f8b718bbec32faa3dac4cad07a5b452fb366280753c3316d932663bf367192483fb5cd0bd405321128e67157b982eaa89264685739a141e021f0f7e2b72 SHA512 44e0237fd3a8d4c7b082c48a5c8a52d8f4cc4673d134f680e29504bb46d870015fa210da34de4c1998defbcd4afdf2aaea4e148fbe093e4b2c8b0d064cd48da4
 DIST pyo3-0.22.2.crate 538342 BLAKE2B faf347695117f9fe0ebe5cd7f6aa1b0dcfe718343875d6c06438046deccc1075f104d2a2413dcda41ae9827bc363aa147057b45968f6634f577a6a4510a4bb8e SHA512 e8bae09059f50ffe477dad44499cedeaf3a734665f0fd8e8bd4b44f48578d21e4bdb8d55ceea00c5a27da750761842ddf89cfcecdecb2e7a4a17ab192259be9c
@@ -170,4 +171,5 @@ DIST zerovec-derive-0.10.3.crate 19438 BLAKE2B 9f7df8a4e4a0b62ab25aed967b26509db
 EBUILD pydantic-core-2.18.4.ebuild 3289 BLAKE2B b9449f3cb7c97c29db006b02d3d80f7dde78bc4907d9296ab524cf2052fed4e5139af9c0430552eb9ea586e670a7c4dba31d328e7b51fe1870deb47e2dfd58be SHA512 7d125b78b32cec6ce33932013b338107f8afe85e73b07f262bcd06fabe7bf34c388393d27d8c1c645dc372b8f5d65dc3fabe28827a61419435a47f2ab5c34a80
 EBUILD pydantic-core-2.20.1.ebuild 2939 BLAKE2B 9cb79f9eb31432014884bd1b817fe95f2f53cf0e07f10b4f421750b3900e8e1580b10aa0c729e75a54d9a2b2cc1204b6115d5e1ead25db074823353e93065668 SHA512 49f5e96b79b2a5b00fbec93dbe24717c083e855d389facc90a73e076c6ca42c16aaa1d04564c8f1cb55e2a27ec1593a168bdc9c6e9f52f780eaae102cc7974cd
 EBUILD pydantic-core-2.23.0.ebuild 3491 BLAKE2B f744b1c2afb5b6ef5b5e7780375ef6708e72f9bb26abc6ddeb1aa85e812b53c176c5d664a3472ac266e489808975ed950c095e086274196d179654b80f7d8839 SHA512 53240efa637d6414668d55d5f91c0b26e07ffd1f307767a723d90d004d8b1940197f121c90ef58f1a36a037302e1b0f6b0bfee854142b85e3e69c9a9b60bbf47
+EBUILD pydantic-core-2.23.1.ebuild 3513 BLAKE2B d6cc852c1829d88db41bb10fc94d640445db2c88396579e818a9dca1406b117bdc113fd5299239198d0f3df7a441cc919cc19ee73156a62e64cc7242faed20c1 SHA512 4f709fb86c1a909e5218c63e124d2b99eeafb9f32337feca54884b4cbb5b3dc43c0e68ccb10a6d8c9fb718be04f3cd2929c55f168a10d96b4dff55120d36c0a4
 MISC metadata.xml 379 BLAKE2B ac0fa1abd0aac6436f234dfbfdb1517cdef2f7636c019a16257619d1a1a95a31b67061daa6606b47b68332d03bd213fa9bf67017b0e4af9733a26ab4828cf206 SHA512 7e3b5785628be025efc5360924e31a5a5becab941c9db255357b966dd5d3aca733e96485e92e78533bcde95379c59c36a601d4b407550c5ff1c649f09c3a21a6
diff --git a/dev-python/pydantic-core/pydantic-core-2.23.1.ebuild b/dev-python/pydantic-core/pydantic-core-2.23.1.ebuild
new file mode 100644
index 000000000000..6c5c58be8e4e
--- /dev/null
+++ b/dev-python/pydantic-core/pydantic-core-2.23.1.ebuild
@@ -0,0 +1,167 @@
+# Copyright 2023-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=maturin
+PYTHON_COMPAT=( pypy3 python3_{10..13} )
+
+CRATES="
+	ahash@0.8.11
+	aho-corasick@1.1.3
+	autocfg@1.3.0
+	base64@0.22.1
+	bitvec@1.0.1
+	cc@1.0.101
+	cfg-if@1.0.0
+	displaydoc@0.2.5
+	enum_dispatch@0.3.13
+	equivalent@1.0.1
+	form_urlencoded@1.2.1
+	funty@2.0.0
+	getrandom@0.2.15
+	hashbrown@0.14.5
+	heck@0.5.0
+	hex@0.4.3
+	icu_collections@1.5.0
+	icu_locid@1.5.0
+	icu_locid_transform@1.5.0
+	icu_locid_transform_data@1.5.0
+	icu_normalizer@1.5.0
+	icu_normalizer_data@1.5.0
+	icu_properties@1.5.1
+	icu_properties_data@1.5.0
+	icu_provider@1.5.0
+	icu_provider_macros@1.5.0
+	idna@0.5.0
+	idna@1.0.1
+	indexmap@2.2.6
+	indoc@2.0.5
+	itoa@1.0.11
+	jiter@0.5.0
+	lexical-parse-float@0.8.5
+	lexical-parse-integer@0.8.6
+	lexical-util@0.8.5
+	libc@0.2.155
+	litemap@0.7.3
+	memchr@2.7.4
+	memoffset@0.9.1
+	num-bigint@0.4.6
+	num-integer@0.1.46
+	num-traits@0.2.19
+	once_cell@1.19.0
+	percent-encoding@2.3.1
+	portable-atomic@1.6.0
+	proc-macro2@1.0.86
+	pyo3-build-config@0.22.2
+	pyo3-ffi@0.22.2
+	pyo3-macros-backend@0.22.2
+	pyo3-macros@0.22.2
+	pyo3@0.22.2
+	python3-dll-a@0.2.10
+	quote@1.0.36
+	radium@0.7.0
+	regex-automata@0.4.7
+	regex-syntax@0.8.4
+	regex@1.10.5
+	rustversion@1.0.17
+	ryu@1.0.18
+	serde@1.0.204
+	serde_derive@1.0.204
+	serde_json@1.0.121
+	smallvec@1.13.2
+	speedate@0.14.4
+	stable_deref_trait@1.2.0
+	static_assertions@1.1.0
+	strum@0.26.3
+	strum_macros@0.26.4
+	syn@2.0.68
+	synstructure@0.13.1
+	tap@1.0.1
+	target-lexicon@0.12.14
+	tinystr@0.7.6
+	tinyvec@1.6.1
+	tinyvec_macros@0.1.1
+	unicode-bidi@0.3.15
+	unicode-ident@1.0.12
+	unicode-normalization@0.1.23
+	unindent@0.2.3
+	url@2.5.2
+	utf16_iter@1.0.5
+	utf8_iter@1.0.4
+	uuid@1.9.1
+	version_check@0.9.5
+	wasi@0.11.0+wasi-snapshot-preview1
+	write16@1.0.0
+	writeable@0.5.5
+	wyz@0.5.1
+	yoke-derive@0.7.4
+	yoke@0.7.4
+	zerocopy-derive@0.7.34
+	zerocopy@0.7.34
+	zerofrom-derive@0.1.4
+	zerofrom@0.1.4
+	zerovec-derive@0.10.3
+	zerovec@0.10.4
+"
+
+inherit cargo distutils-r1 pypi
+
+DESCRIPTION="Core validation logic for pydantic written in Rust"
+HOMEPAGE="
+	https://github.com/pydantic/pydantic-core/
+	https://pypi.org/project/pydantic-core/
+"
+SRC_URI+="
+	${CARGO_CRATE_URIS}
+"
+
+LICENSE="MIT"
+# Dependent crate licenses
+LICENSE+="
+	Apache-2.0-with-LLVM-exceptions MIT Unicode-3.0 Unicode-DFS-2016
+	|| ( Apache-2.0 Boost-1.0 )
+"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+	>=dev-python/typing-extensions-4.7.1[${PYTHON_USEDEP}]
+"
+BDEPEND="
+	>=virtual/rust-1.70.0
+	test? (
+		>=dev-python/dirty-equals-0.5.0[${PYTHON_USEDEP}]
+		>=dev-python/hypothesis-6.63.0[${PYTHON_USEDEP}]
+		>=dev-python/pytest-mock-3.10.0[${PYTHON_USEDEP}]
+		>=dev-python/pytest-timeout-2.1.0[${PYTHON_USEDEP}]
+		>=dev-python/pydantic-1.10.4[${PYTHON_USEDEP}]
+	)
+"
+
+distutils_enable_tests pytest
+
+QA_FLAGS_IGNORED="usr/lib.*/py.*/site-packages/pydantic_core/_pydantic_core.*.so"
+
+src_prepare() {
+	sed -i -e '/--benchmark/d' pyproject.toml || die
+	sed -i -e '/^strip/d' Cargo.toml || die
+	distutils-r1_src_prepare
+}
+
+python_test() {
+	local EPYTEST_IGNORE=(
+		tests/benchmarks
+	)
+	local EPYTEST_DESELECT=(
+		# TODO: recursion till segfault
+		tests/serializers/test_functions.py::test_recursive_call
+	)
+
+	local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+	rm -rf pydantic_core || die
+	# tests link to libpython, so they fail to link on pypy3
+	[[ ${EPYTHON} != pypy3 ]] && cargo_src_test
+	epytest -p pytest_mock -p timeout -o xfail_strict=False
+}
diff --git a/dev-python/pypy-exe-bin/Manifest b/dev-python/pypy-exe-bin/Manifest
index 0c3b5f6ac2db..84769910a2f5 100644
--- a/dev-python/pypy-exe-bin/Manifest
+++ b/dev-python/pypy-exe-bin/Manifest
@@ -6,5 +6,14 @@ DIST pypy-exe-7.3.16-1.ppc64le-musl.gpkg.tar 6707200 BLAKE2B 3d3a3d0c0fef3a69c6c
 DIST pypy-exe-7.3.16-1.ppc64le.gpkg.tar 11038720 BLAKE2B 1a7aa31d9ec59a3aeb57c254d2b9efde9d02aba1663683999f1ebae95b2ad0c68a2fc8e4806420b1ad9f45ce4767f8e048b9607d1f124291770a99b423ae799f SHA512 5659cdb5a4a001d9c878670b0f5e7d06e6aa55d8fab403ab80a98e6b362bb8185b01fe4af092cc9042a1762ca52cc0ce81937c84240d08ebb84071cd860559e2
 DIST pypy-exe-7.3.16-1.x86-musl.gpkg.tar 9912320 BLAKE2B c6a42ce64cfda1a148af49e0876b640fb3ecaa7e70b5d5b22e58b9796c11b0e4d9fb5536927b7b20b05b9eaa2210333cb1b1be81581483a21a7a3699e5721e01 SHA512 8964ece7482218e06ab65b790f8f1fcf15a94c270daa9a2381b35ae335717a02f0b32947578fa03f0905a0783cb5fcf3ef03cb87a7ceaa7110c8593e483a971e
 DIST pypy-exe-7.3.16-1.x86.gpkg.tar 9861120 BLAKE2B b83fa9e3c3bbbd7c49ea2fdceabd7125e0db36ee20c2b71969833512f69070e07a1485ab830261f34e2571dbd48b9b65ffb580e9f8ae4b667626ca81b560c493 SHA512 eb2be6886126c675fc85458d34a0bcdd1da1415c843448e39d413b80d363698cb48b3b68bf8869b5ef898f0543966ab501bd4db545d7659705c279bf4de29ae6
+DIST pypy-exe-7.3.17-1.amd64-musl.gpkg.tar 12974080 BLAKE2B 965c086bb660e50c8c58a2c4ffdb9d762d7d99a4c2bc619af4c7b5916dce263170809f75af24f34f7ea8d60f4c1aea8dace5102493363e0fc4d55bd994234cf5 SHA512 731c5f4f9680466e848ee08e3e459773fef5d36622092b4479852aed3ef069a0a544a7711312b65b2c40e3cb96e56037301d09b51ec775842d67e8416ea0200c
+DIST pypy-exe-7.3.17-1.amd64.gpkg.tar 12881920 BLAKE2B ade52bb94ef78629ca6154b8e149e4cb1af72efae3c1f30217659532b68aac50e083c378d029c25f9ec5c6d7323467fcba91af1c1d1d9f6ba375669b2df9099a SHA512 4d4861858daa9046fb036cd489dd6a13e5490034aadc60bdc49e05a3edee4b95578a41b635bc3b95a7eb5ff59375585a44956914a9003765fab2585750118848
+DIST pypy-exe-7.3.17-1.arm64-musl.gpkg.tar 10977280 BLAKE2B fc56e03dc73a2c1881f6adcfa30eee3069a3ffc7b7efc77e85703bb831f2b183f794104f39934e78b29f4e1fea42f520200e456fe9902fe13efdfcaaba5dba67 SHA512 28af13342a8f0d9c435106b0f7c991ddaecdd995ff1f3c84cdc85ae78d69e6d7088e488776eb10f933aec20b0ce0522a2c4b2ef6efddff6fdab5a5e6c3e80d63
+DIST pypy-exe-7.3.17-1.arm64.gpkg.tar 10905600 BLAKE2B f6eafea6599d466f7acf8296ef59b3b2e8ca55b9dee69088dcd13067b3b0ceeca7baeff9ebf1b316b8db8f041046f9989c37b3ce26b194cce76e702fd4957872 SHA512 e44012949a4ac94b5d5b70577de531e0c52faed280c5c4666d2fb398f24458241117fa4844b323446e4df3801e2fa16fa252f729d25e5cd4ca5adc32a995dd21
+DIST pypy-exe-7.3.17-1.ppc64le-musl.gpkg.tar 6696960 BLAKE2B 805d8fb087b8123437fc1bda16c6686d36cf51a574e3a5dd2d245a42f5bc3574315875f84bf4cb88c9c388d1cd8879332d76913228619900643b4beb592efe87 SHA512 cb886d1f14cd01f53deb5a6f80d7ee0f0298722fd43c897970179165c8aecede86526f77ad185558e9bb2fe8384d88f16d1a75d45e50f1a4f35448c545fb4dac
+DIST pypy-exe-7.3.17-1.ppc64le.gpkg.tar 11110400 BLAKE2B b8e3f503f448226c7d59942281cb64fe4bd648a5777ec483de0f549221ddcf71f347f88b9c11070f8875657851e07cfdf4e9ef634e811c0a3dda664cd04543ca SHA512 e4e2f16e2eed8946a1ad07ba3d4ba8677beeda3731b46838a5284e6309b3966ddf8fa9992c4519b19797f633d2288d4f231fc41e992e83683de0ad7b239c5d22
+DIST pypy-exe-7.3.17-1.x86-musl.gpkg.tar 9891840 BLAKE2B 3391ad3558baa88741a38549e12666ee669d5949f234e104e5687001928aaf7836573192ded6342fd690337589da10d4f45389c02d15cf3bc10ebc4a7de2d12c SHA512 cf30b7c8f779317126ced75d84b383644a4d90cc65a9d2e75019dd68bb29079fdb0e96312c26ee3f7185f6c64e3a7a0c21d66fdcf18a5c68ce87936dd49d6043
+DIST pypy-exe-7.3.17-1.x86.gpkg.tar 9850880 BLAKE2B 08487e276cf616c5c9191a0a29cc6a297f9eab5ce8382d591b01e7da3239b4bef482bba1566b17ca85f3729b4d5ae6bef6d13940b5e7b1dcd9a7b03d7eaec2ac SHA512 70f6660321483361a1de6e5ccf2854daf892282858d2a0a00ce3055103d7f90f1788cea4b5b18913f11c17ce0f6c999551ee5374f897717d33eb06e913310960
 EBUILD pypy-exe-bin-7.3.16.ebuild 1981 BLAKE2B 9a1fdbb307258d44bb18d872406426ca154e3a029e5e54a06d7b420bec290b08e7d2cc12ecad688b7b67b1c4b62781c91e2eea0af2c716bfcaec698c136f60bf SHA512 74ec12199918322c5b3f14a8ac974e82c2830670cd8c3302d05c247d1a2bd57419be2222216213837937a0c2007af4c99d470b8a29a2df4d3d3f7ad8dc5ab814
+EBUILD pypy-exe-bin-7.3.17.ebuild 1979 BLAKE2B 1a61227eabd91bf8c5c55ec2615c1aeb7387eac9495236ea79b16aae374d8b1751d8b412d4f0ee58e59b19f147f5770d399180adda80f359508ddd5a83c13db6 SHA512 1af9827ac1a1a6864f2adaed742491fdd364efb8cc91359daeabfa0dc9725e4ab679a06f8ef315745d87a8af9509a69860292a2347030211fa815a09ebe776dd
 MISC metadata.xml 315 BLAKE2B da5ed341c55250028587ffb479a27b7ec31eb0f8bd0e11b8a98a374e23d989f7d5bcce647ca9c78cd12f64b6b83dd0568c4f3a992a6c8c5089c52cef9de87441 SHA512 ebe1c4d655c49fd20127dd240b603f1b99d67c0a6d21c7eb37bee48f4ec6bba50648816ea2b1b746af58fcf8de576d24fe355ecfa2de07ebaa0265ade2ea38ba
diff --git a/dev-python/pypy-exe-bin/pypy-exe-bin-7.3.17.ebuild b/dev-python/pypy-exe-bin/pypy-exe-bin-7.3.17.ebuild
new file mode 100644
index 000000000000..c45dc2f35843
--- /dev/null
+++ b/dev-python/pypy-exe-bin/pypy-exe-bin-7.3.17.ebuild
@@ -0,0 +1,82 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit pax-utils unpacker
+
+MY_P=pypy-exe-${PV}-1
+DESCRIPTION="PyPy executable (pre-built version)"
+HOMEPAGE="
+	https://pypy.org/
+	https://github.com/pypy/pypy/
+"
+SRC_URI="
+	elibc_glibc? (
+		amd64? (
+			https://dev.gentoo.org/~mgorny/binpkg/amd64/pypy/dev-python/pypy-exe/${MY_P}.gpkg.tar
+				-> ${MY_P}.amd64.gpkg.tar
+		)
+		arm64? (
+			https://dev.gentoo.org/~mgorny/binpkg/arm64/pypy/dev-python/pypy-exe/${MY_P}.gpkg.tar
+				-> ${MY_P}.arm64.gpkg.tar
+		)
+		ppc64? (
+			https://dev.gentoo.org/~mgorny/binpkg/ppc64le/pypy/dev-python/pypy-exe/${MY_P}.gpkg.tar
+				-> ${MY_P}.ppc64le.gpkg.tar
+		)
+		x86? (
+			https://dev.gentoo.org/~mgorny/binpkg/x86/pypy/dev-python/pypy-exe/${MY_P}.gpkg.tar
+				-> ${MY_P}.x86.gpkg.tar
+		)
+	)
+	elibc_musl? (
+		amd64? (
+			https://dev.gentoo.org/~mgorny/binpkg/amd64-musl/pypy/dev-python/pypy-exe/${MY_P}.gpkg.tar
+				-> ${MY_P}.amd64-musl.gpkg.tar
+		)
+		arm64? (
+			https://dev.gentoo.org/~mgorny/binpkg/arm64-musl/pypy/dev-python/pypy-exe/${MY_P}.gpkg.tar
+				-> ${MY_P}.arm64-musl.gpkg.tar
+		)
+		ppc64? (
+			https://dev.gentoo.org/~mgorny/binpkg/ppc64le-musl/pypy/dev-python/pypy-exe/${MY_P}.gpkg.tar
+				-> ${MY_P}.ppc64le-musl.gpkg.tar
+		)
+		x86? (
+			https://dev.gentoo.org/~mgorny/binpkg/x86-musl/pypy/dev-python/pypy-exe/${MY_P}.gpkg.tar
+				-> ${MY_P}.x86-musl.gpkg.tar
+		)
+	)
+"
+S="${WORKDIR}"
+
+LICENSE="MIT"
+SLOT="${PV%_p*}"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86"
+
+# sys-devel/gcc for libgcc_s.so
+RDEPEND="
+	app-arch/bzip2:0/1
+	dev-libs/expat:0/0
+	dev-libs/libffi:0/8
+	sys-libs/ncurses:0/6
+	>=sys-libs/zlib-1.1.3:0/1
+	virtual/libintl:0/0
+	elibc_glibc? (
+		sys-devel/gcc
+		>=sys-libs/glibc-2.35
+	)
+	!dev-python/pypy-exe:${SLOT}
+"
+
+QA_PREBUILT="
+	usr/lib/pypy2.7/pypy-c-${SLOT}
+"
+
+src_install() {
+	insinto /
+	doins -r */image/usr
+	fperms +x "/usr/lib/pypy2.7/pypy-c-${SLOT}"
+	pax-mark m "${ED}/usr/lib/pypy2.7/pypy-c-${SLOT}"
+}
diff --git a/dev-python/pypy-exe/Manifest b/dev-python/pypy-exe/Manifest
index 118fcd6f7c77..b604977d0dbf 100644
--- a/dev-python/pypy-exe/Manifest
+++ b/dev-python/pypy-exe/Manifest
@@ -1,4 +1,7 @@
 DIST pypy2.7-gentoo-patches-7.3.16.tar.xz 5312 BLAKE2B b265dd7afee097ad66bacd9df01514eed6bb30afe19410b2594ee7c2d61ababc67e11c0dd0392a0b1f81e0bc609963cde044834ab24e67d007d101b8aa8052cb SHA512 0d0309f3ed7314f6d310b0e34eedbbfdcc5a75d9bbd59b9071e567968bb10925549435776fab5bc7ec97e2b3422921dc282619427f930d89df6c7bc98ea701c1
+DIST pypy2.7-gentoo-patches-7.3.17.tar.xz 5324 BLAKE2B 866f172a6df6f0e94a98c611b37ae58635623e33a47619a5e44658d3908337a3f9029ff7de6997f760c3f1679fc83bfc6ddfb66852c492a581b3336b5eec3ed2 SHA512 6ce5266d0748f3c18a5546aa2bd8479ecb45923eb7df8a140a195e7f7b44999b9167ffdd44f7fd789ddd3a62cd77cb917863b0144180a1127befce1f290e650a
 DIST pypy2.7-v7.3.16-src.tar.bz2 19843601 BLAKE2B 9c37a03561fcdf742eccde760f6cadcbc2e1b140dd6d3e67856cc072e0c3db85759c398f590ed44fb4e4ed2f5f7745d5589cb9a95cefcbec79f3b1be6c4956e1 SHA512 131635433e53d4d86730a3daf1ad81799a7dd1117511618cc2607ac7234ce3aa5c833400df09cbd3376a391e125d6d2ec3471f120f81a6d53700f5c3d087793c
+DIST pypy2.7-v7.3.17-src.tar.bz2 19907140 BLAKE2B de62ebc4e8102867effdecddca64c19c40458b112a6a56ac0c95247047b9f5437a5da68dffb51c14c21bce463c2ca489c6e6a4f86e8cc597b57df2eca707081e SHA512 82b2b9dbf0ea32c405ddc53d98a3a7a153f494d286e8719a0c40960168aadc0f49c3b313416488338f7f51c8fdb58120de41b1d47a8c8eda7db6d4ec4273b4eb
 EBUILD pypy-exe-7.3.16.ebuild 4149 BLAKE2B bf785cb4c08173ea4f3a69b193b7c7945b6ef24471665c5fc7226c68b73a9083f444acd7511ec2db881980623fc9847126a8de57ff8514bd17b3997787a60929 SHA512 68db0c972d9e62985689186f59a1e1ef46402ed651a518a5438e82683fd189810460c737953ef9b14b76a4ddc7db9e588f6d53ced55e11b551c65ab40153048b
+EBUILD pypy-exe-7.3.17.ebuild 4147 BLAKE2B cec68f9b8ce62ee53e6a73f5d1050dd8cea9b8856ecb78e4f0c862209d0e4a7c1471eb3cd8de1b4aca3f290d9053f197c659e98e83cc004ac9bd4910ad6fbd83 SHA512 2088539e52ba4a8f3bbc8846db084866bccf1f944a9b842689c118d54ce28b1c6fadf5c48c2433c54933cf9e5081b1ca24b1ea264c05258b71ccb2423b5b1818
 MISC metadata.xml 572 BLAKE2B cfcd1422ec312338fd876bc4747a962ac3c4bd06e28a3891489b065fba4c7be2daa6955f51e8136d9b8cf7b68bb7eb887b6f419ee9fd626ebd6db204acb7995d SHA512 c79250d47e3d5c99c2c903bfc185449cc41f88e2b923b8eae1401e83c0f23fa1a12ad85f50b6e25844e805e543ae897ccf43185a1bdf9f992dff765249e55bc1
diff --git a/dev-python/pypy-exe/pypy-exe-7.3.17.ebuild b/dev-python/pypy-exe/pypy-exe-7.3.17.ebuild
new file mode 100644
index 000000000000..1d0e028d87c8
--- /dev/null
+++ b/dev-python/pypy-exe/pypy-exe-7.3.17.ebuild
@@ -0,0 +1,181 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit check-reqs pax-utils toolchain-funcs
+
+PYPY_PV=${PV%_p*}
+MY_P=pypy2.7-v${PYPY_PV/_}
+PATCHSET="pypy2.7-gentoo-patches-${PV/_}"
+
+DESCRIPTION="PyPy executable (build from source)"
+HOMEPAGE="
+	https://pypy.org/
+	https://github.com/pypy/pypy/
+"
+SRC_URI="
+	https://downloads.python.org/pypy/${MY_P}-src.tar.bz2
+	https://buildbot.pypy.org/pypy/${MY_P}-src.tar.bz2
+	https://dev.gentoo.org/~mgorny/dist/python/${PATCHSET}.tar.xz
+"
+S="${WORKDIR}/${MY_P}-src"
+
+LICENSE="MIT"
+SLOT="${PYPY_PV}"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86 ~amd64-linux ~x86-linux"
+IUSE="bzip2 +jit low-memory ncurses cpu_flags_x86_sse2"
+
+DEPEND="
+	>=sys-libs/zlib-1.1.3:0=
+	dev-libs/libffi:0=
+	virtual/libintl:0=
+	dev-libs/expat:0=
+	bzip2? ( app-arch/bzip2:0= )
+	ncurses? ( sys-libs/ncurses:0= )
+"
+RDEPEND="
+	${DEPEND}
+	!dev-python/pypy-exe-bin:${PYPY_PV}
+"
+# don't enforce the dep on dev-python/pypy with USE=low-memory
+# since it's going to cause circular dep with unhelpful error message
+BDEPEND="
+	!low-memory? (
+		|| (
+			dev-python/pypy
+			dev-lang/python:2.7
+		)
+	)
+"
+
+check_env() {
+	if ! has_version -b dev-python/pypy; then
+		if use low-memory; then
+			eerror "USE=low-memory requires (a prior version of) dev-python/pypy"
+			eerror "installed."
+		else
+			ewarn "CPython 2.7 will be used to perform the translation.  Upstream"
+			ewarn "recommends using (a prior version of) dev-python/pypy instead."
+		fi
+		elog "You can install a prebuilt version of PyPy first using e.g.:"
+		elog "  $ emerge -1v dev-python/pypy dev-python/pypy-exe-bin"
+
+		if use low-memory; then
+			die "dev-python/pypy needs to be installed for USE=low-memory"
+		fi
+	fi
+
+	if use low-memory; then
+		CHECKREQS_MEMORY="1750M"
+		use amd64 && CHECKREQS_MEMORY="3500M"
+	else
+		CHECKREQS_MEMORY="3G"
+		use amd64 && CHECKREQS_MEMORY="6G"
+	fi
+
+	check-reqs_pkg_pretend
+}
+
+pkg_pretend() {
+	[[ ${MERGE_TYPE} != binary ]] && check_env
+}
+
+pkg_setup() {
+	[[ ${MERGE_TYPE} != binary ]] && check_env
+}
+
+src_prepare() {
+	local PATCHES=(
+		"${WORKDIR}/${PATCHSET}"
+	)
+	default
+}
+
+src_configure() {
+	tc-export CC
+
+	local jit_backend
+	if use jit; then
+		jit_backend='--jit-backend='
+
+		# We only need the explicit sse2 switch for x86.
+		# On other arches we can rely on autodetection which uses
+		# compiler macros. Plus, --jit-backend= doesn't accept all
+		# the modern values...
+
+		if use x86; then
+			if use cpu_flags_x86_sse2; then
+				jit_backend+=x86
+			else
+				jit_backend+=x86-without-sse2
+			fi
+		else
+			jit_backend+=auto
+		fi
+	fi
+
+	local args=(
+		--no-shared
+		$(usex jit -Ojit -O2)
+
+		${jit_backend}
+
+		pypy/goal/targetpypystandalone
+	)
+
+	# Avoid linking against libraries disabled by use flags
+	local opts=(
+		bzip2:bz2
+		ncurses:_minimal_curses
+	)
+
+	local opt
+	for opt in "${opts[@]}"; do
+		local flag=${opt%:*}
+		local mod=${opt#*:}
+
+		args+=(
+			$(usex ${flag} --withmod --withoutmod)-${mod}
+		)
+	done
+
+	local interp
+	if use low-memory || has_version -b dev-python/pypy; then
+		einfo "Using already-installed PyPy to perform the translation."
+		interp=( pypy )
+		if use low-memory; then
+			local -x PYPY_GC_MAX_DELTA=200MB
+			interp+=( --jit loop_longevity=300 )
+		fi
+	else
+		einfo "Using CPython 2.7 to perform the translation."
+		interp=( python2.7 )
+
+		# reuse bundled pycparser to avoid external dep
+		mkdir -p "${T}"/pymod/cffi || die
+		: > "${T}"/pymod/cffi/__init__.py || die
+		cp -r lib_pypy/cffi/_pycparser "${T}"/pymod/cffi/ || die
+		local -x PYTHONPATH=${T}/pymod:${PYTHONPATH}
+	fi
+
+	# translate into the C sources
+	# we're going to build them ourselves since otherwise pypy does not
+	# free up the unneeded memory before spawning the compiler
+	set -- "${interp[@]}" rpython/bin/rpython --batch --source "${args[@]}"
+	echo -e "\033[1m${@}\033[0m"
+	"${@}" || die "translation failed"
+}
+
+src_compile() {
+	emake -C "${T}"/usession*-0/testing_1
+}
+
+src_install() {
+	local dest=/usr/lib/pypy2.7
+	exeinto "${dest}"
+	newexe "${T}"/usession*-0/testing_1/pypy-c pypy-c-${PYPY_PV}
+	insinto "${dest}"/include/${PYPY_PV}
+	doins include/pypy_*
+	pax-mark m "${ED}${dest}/pypy-c-${PYPY_PV}"
+}
diff --git a/dev-python/pypy/Manifest b/dev-python/pypy/Manifest
index b7ef555ba2fd..43ccda9404a5 100644
--- a/dev-python/pypy/Manifest
+++ b/dev-python/pypy/Manifest
@@ -1,4 +1,7 @@
 DIST pypy2.7-gentoo-patches-7.3.16.tar.xz 5312 BLAKE2B b265dd7afee097ad66bacd9df01514eed6bb30afe19410b2594ee7c2d61ababc67e11c0dd0392a0b1f81e0bc609963cde044834ab24e67d007d101b8aa8052cb SHA512 0d0309f3ed7314f6d310b0e34eedbbfdcc5a75d9bbd59b9071e567968bb10925549435776fab5bc7ec97e2b3422921dc282619427f930d89df6c7bc98ea701c1
+DIST pypy2.7-gentoo-patches-7.3.17.tar.xz 5324 BLAKE2B 866f172a6df6f0e94a98c611b37ae58635623e33a47619a5e44658d3908337a3f9029ff7de6997f760c3f1679fc83bfc6ddfb66852c492a581b3336b5eec3ed2 SHA512 6ce5266d0748f3c18a5546aa2bd8479ecb45923eb7df8a140a195e7f7b44999b9167ffdd44f7fd789ddd3a62cd77cb917863b0144180a1127befce1f290e650a
 DIST pypy2.7-v7.3.16-src.tar.bz2 19843601 BLAKE2B 9c37a03561fcdf742eccde760f6cadcbc2e1b140dd6d3e67856cc072e0c3db85759c398f590ed44fb4e4ed2f5f7745d5589cb9a95cefcbec79f3b1be6c4956e1 SHA512 131635433e53d4d86730a3daf1ad81799a7dd1117511618cc2607ac7234ce3aa5c833400df09cbd3376a391e125d6d2ec3471f120f81a6d53700f5c3d087793c
+DIST pypy2.7-v7.3.17-src.tar.bz2 19907140 BLAKE2B de62ebc4e8102867effdecddca64c19c40458b112a6a56ac0c95247047b9f5437a5da68dffb51c14c21bce463c2ca489c6e6a4f86e8cc597b57df2eca707081e SHA512 82b2b9dbf0ea32c405ddc53d98a3a7a153f494d286e8719a0c40960168aadc0f49c3b313416488338f7f51c8fdb58120de41b1d47a8c8eda7db6d4ec4273b4eb
 EBUILD pypy-7.3.16.ebuild 7116 BLAKE2B fe3d6e44dd3f162f7f4bc8ce3365f518db8b83573dfb0755617fdedce637540515e0f759498a1dbfc91b456db5b51461004a4a191f97153b6f2cf58f93257df8 SHA512 8a59e6cd8cf2a6839d9e831541ef49bbac6f8988636a37c2e0a38b42c5f49358114c7fb6f70c88abc2c71d4c1eb6ee42bdb087bd98c47ebd6aca907eacaa24f0
+EBUILD pypy-7.3.17.ebuild 7114 BLAKE2B 9d5674897956695bc63dc808ef2601cbd6456a2b8c97d7736a3d994725af4efc3b9b58dfbec36115e9d26e30bdc1906c1e40c60f28cadbe96977e2822dd2f226 SHA512 52d8cccb070de415cdcc425ea36a4a93a17233899c6a99393592600e0ed06b78d784fa230f369f02f6a05694fa4719ebfa8a3fe3a5cdab53bb2f4b6e831ddf7a
 MISC metadata.xml 622 BLAKE2B 91a78c7c4050edc5e4f42da93c5233fbaeff11133708650ed5c29c1e44eb4b038679f4ab3f87f38f5e61eb89107def4bde09cd5d73e3dd1638b0e9565febde97 SHA512 75bddcaf5fe5c33523a78b5bd9b66a8d97b61d50f11ca8765cf7ecf4e962e88586476d1fdb8b7d33e9562a5cfd4b3fc446ccf07f62d25fe38f04c58485c8654c
diff --git a/dev-python/pypy/pypy-7.3.17.ebuild b/dev-python/pypy/pypy-7.3.17.ebuild
new file mode 100644
index 000000000000..6b22f2365c0c
--- /dev/null
+++ b/dev-python/pypy/pypy-7.3.17.ebuild
@@ -0,0 +1,306 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit pax-utils
+
+PYPY_PV=${PV%_p*}
+MY_P=pypy2.7-v${PYPY_PV/_}
+PATCHSET="pypy2.7-gentoo-patches-${PV/_rc/rc}"
+
+DESCRIPTION="A fast, compliant alternative implementation of the Python language"
+HOMEPAGE="
+	https://pypy.org/
+	https://github.com/pypy/pypy/
+"
+SRC_URI="
+	https://downloads.python.org/pypy/${MY_P}-src.tar.bz2
+	https://buildbot.pypy.org/pypy/${MY_P}-src.tar.bz2
+	https://dev.gentoo.org/~mgorny/dist/python/${PATCHSET}.tar.xz
+"
+S="${WORKDIR}/${MY_P}-src"
+
+LICENSE="MIT"
+# pypy -c 'import sysconfig; print sysconfig.get_config_var("SOABI")'
+SLOT="0/73"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86 ~amd64-linux ~x86-linux"
+IUSE="bzip2 full-stdlib gdbm +jit ncurses sqlite tk"
+RESTRICT="test"
+
+RDEPEND="
+	|| (
+		>=dev-python/pypy-exe-bin-${PYPY_PV}:${PYPY_PV}
+		>=dev-python/pypy-exe-${PYPY_PV}:${PYPY_PV}[bzip2?,ncurses?]
+	)
+	dev-libs/openssl:0=
+	gdbm? ( sys-libs/gdbm:0= )
+	sqlite? ( dev-db/sqlite:3= )
+	tk? (
+		dev-lang/tk:0=
+		dev-tcltk/tix:0=
+	)
+"
+DEPEND="
+	${RDEPEND}
+"
+
+src_prepare() {
+	local PATCHES=(
+		"${WORKDIR}/${PATCHSET}"
+	)
+	default
+}
+
+src_compile() {
+	# copy over to make sys.prefix happy
+	cp -p "${BROOT}"/usr/lib/pypy2.7/pypy-c-${PYPY_PV} pypy-c || die
+	cp -p "${BROOT}"/usr/lib/pypy2.7/include/${PYPY_PV}/* include/ || die
+	# (not installed by pypy)
+	rm pypy/module/cpyext/include/_numpypy/numpy/README || die
+	mv pypy/module/cpyext/include/* include/ || die
+	mv pypy/module/cpyext/parse/*.h include/ || die
+	pax-mark m pypy-c
+
+	# verify the subslot
+	local soabi=$(
+		./pypy-c - <<-EOF
+			import sysconfig
+			print sysconfig.get_config_var("SOABI")
+		EOF
+	)
+	[[ ${soabi#pypy-} == ${SLOT#*/} ]] || die "update subslot to ${soabi}"
+
+	einfo "Generating caches and CFFI modules ..."
+
+	if use full-stdlib; then
+		# Generate Grammar and PatternGrammar pickles.
+		./pypy-c - <<-EOF || die "Generation of Grammar and PatternGrammar pickles failed"
+			import lib2to3.pygram
+			import lib2to3.patcomp
+			lib2to3.patcomp.PatternCompiler()
+		EOF
+
+		# Generate cffi modules
+		# Please keep in sync with pypy/tool/build_cffi_imports.py!
+		cffi_targets=( pypy_util ssl audioop syslog pwdgrp resource )
+		use gdbm && cffi_targets+=( gdbm )
+		use ncurses && cffi_targets+=( curses )
+		use sqlite && cffi_targets+=( sqlite3 )
+		use tk && cffi_targets+=( tkinter/tklib )
+
+		local t
+		# all modules except tkinter output to .
+		# tkinter outputs to the correct dir ...
+		cd lib_pypy || die
+		for t in "${cffi_targets[@]}"; do
+			# tkinter doesn't work via -m
+			../pypy-c "_${t}_build.py" || die "Failed to build CFFI bindings for ${t}"
+		done
+
+		# Verify that CFFI module list is up-to-date
+		local expected_cksum=-7df4eab0
+		local local_cksum=$(
+			../pypy-c - <<-EOF
+				import binascii
+				import json
+				from pypy_tools.build_cffi_imports import cffi_build_scripts as x
+				print("%08x" % (binascii.crc32(json.dumps(x)),))
+			EOF
+		)
+		if [[ ${local_cksum} != ${expected_cksum} ]]; then
+			die "Please verify cffi_targets and update checksum to ${local_cksum}"
+		fi
+
+		# Cleanup temporary objects
+		find -name "_cffi_*.[co]" -delete || die
+		find -type d -empty -delete || die
+	fi
+}
+
+src_test() {
+	# (unset)
+	local -x PYTHONDONTWRITEBYTECODE=
+	local -x COLUMNS=80
+
+	local ignored_tests=(
+		# network
+		--ignore=lib-python/2.7/test/test_urllibnet.py
+		--ignore=lib-python/2.7/test/test_urllib2net.py
+		# lots of free space
+		--ignore=lib-python/2.7/test/test_zipfile64.py
+
+		# broken by expat-2.4.5
+		--ignore=lib-python/2.7/test/test_minidom.py
+		--ignore=lib-python/2.7/test/test_xml_etree.py
+		--ignore=lib-python/2.7/test/test_xml_etree_c.py
+	)
+
+	./pypy-c ./pypy/test_all.py --pypy=./pypy-c -vv \
+		"${ignored_tests[@]}" lib-python || die
+}
+
+src_install() {
+	local dest=/usr/lib/pypy2.7
+	einfo "Installing PyPy ..."
+	dosym pypy-c-${PYPY_PV} "${dest}/pypy-c"
+	insinto "${dest}"
+	# preserve mtimes to avoid obsoleting caches
+	insopts -p
+	if use full-stdlib; then
+		doins -r include lib_pypy lib-python
+
+		# replace copied headers with symlinks
+		for x in "${BROOT}"/usr/lib/pypy2.7/include/${PYPY_PV}/*; do
+			dosym "${PYPY_PV}/${x##*/}" "${dest}/include/${x##*/}"
+		done
+
+		if ! use gdbm; then
+			rm -r "${ED}${dest}"/lib_pypy/gdbm.py \
+				"${ED}${dest}"/lib-python/*2.7/test/test_gdbm.py || die
+		fi
+		if ! use sqlite; then
+			rm -r "${ED}${dest}"/lib-python/*2.7/sqlite3 \
+				"${ED}${dest}"/lib_pypy/_sqlite3.py \
+				"${ED}${dest}"/lib-python/*2.7/test/test_sqlite.py || die
+		fi
+		if ! use tk; then
+			rm -r "${ED}${dest}"/lib-python/*2.7/{idlelib,lib-tk} \
+				"${ED}${dest}"/lib_pypy/_tkinter \
+				"${ED}${dest}"/lib-python/*2.7/test/test_{tcl,tk,ttk*}.py || die
+		fi
+	else
+		# install only the absolutely minimal subset of modules needed
+		# for pypy3 build
+		local lib_py_modules=(
+			# base modules needed to even start pypy (and import site)
+			codecs.py
+			copy_reg.py
+			encodings
+			genericpath.py
+			linecache.py
+			os.py
+			pkgutil.py
+			posixpath.py
+			re.py
+			runpy.py
+			site.py
+			sre_compile.py
+			sre_constants.py
+			sre_parse.py
+			stat.py
+			string.py
+			sysconfig.py
+			traceback.py
+			warnings.py
+			UserDict.py
+
+			# needed for python_optimize
+			compileall.py
+			getopt.py
+			py_compile.py
+			struct.py
+
+			# needed for rpython
+			argparse.py
+			atexit.py
+			base64.py
+			bdb.py
+			bisect.py
+			cmd.py
+			code.py
+			codeop.py
+			collections.py
+			colorsys.py
+			contextlib.py
+			copy.py
+			ctypes
+			dis.py
+			fnmatch.py
+			functools.py
+			gettext.py
+			hashlib.py
+			heapq.py
+			inspect.py
+			io.py
+			json
+			keyword.py
+			locale.py
+			logging
+			new.py
+			opcode.py
+			optparse.py
+			pdb.py
+			pickle.py
+			platform.py
+			pprint.py
+			random.py
+			repr.py
+			shlex.py
+			shutil.py
+			StringIO.py
+			subprocess.py
+			tempfile.py
+			textwrap.py
+			threading.py
+			tokenize.py
+			weakref.py
+			zipfile.py
+		)
+
+		local distutils_modules=(
+			# needed by site
+			__init__.py
+			errors.py
+			sysconfig.py
+			sysconfig_cpython.py
+			sysconfig_pypy.py
+		)
+
+		local lib_pypy_modules=(
+			# needed by site
+			_sysconfigdata.py
+
+			# needed by rpython
+			cffi
+			_ctypes
+			_ffi.py
+			_functools.py
+			_sha.py
+			_sha256.py
+			_sha512.py
+
+			# NB: we're deliberately skipping _hashlib to avoid some deps
+		)
+
+		cd lib-python/2.7 || die
+		insinto "${dest}/lib-python/2.7"
+		doins -r "${lib_py_modules[@]}"
+		cd - >/dev/null || die
+
+		cd lib-python/2.7/distutils || die
+		insinto "${dest}/lib-python/2.7/distutils"
+		doins -r "${distutils_modules[@]}"
+		cd - >/dev/null || die
+
+		cd lib_pypy || die
+		insinto "${dest}/lib_pypy"
+		doins -r "${lib_pypy_modules[@]}"
+		cd - >/dev/null || die
+	fi
+
+	dosym ../lib/pypy2.7/pypy-c /usr/bin/pypy
+	dodoc README.rst
+
+	local -x PYTHON=${ED}${dest}/pypy-c-${PYPY_PV}
+	# temporarily copy to build tree to facilitate module builds
+	cp -p "${BROOT}${dest}/pypy-c-${PYPY_PV}" "${PYTHON}" || die
+
+	einfo "Byte-compiling Python standard library..."
+	"${PYTHON}" -m compileall \
+		-x 'bad_coding|badsyntax|make_ssl_data|lib2to3/tests/data' \
+		-q -f -d "${dest}" "${ED}/${dest}" || die
+
+	# remove to avoid collisions
+	rm "${PYTHON}" || die
+}
diff --git a/dev-python/pypy3/Manifest b/dev-python/pypy3/Manifest
index 50ad4b5bf620..8b25ec885d36 100644
--- a/dev-python/pypy3/Manifest
+++ b/dev-python/pypy3/Manifest
@@ -1,2 +1,3 @@
 EBUILD pypy3-7.3.16.ebuild 583 BLAKE2B 5ba38cc1ca041e6f7cbcb152c0673ee3566d4a1eb708d5277b4ffb621c2c082fa6b3bd0f2620b6cfb310584abaafa84c84722bca7a6ec3567a4b8c4d6b8221f9 SHA512 f67c2c9d20329ca2bcd5c3044bf71b4bfac7628f21829ac7c4d9929f44aa1e849b0b418b445e35985d4e28872596971624ddebb9fc2fc16308c421faa38fd5dc
+EBUILD pypy3-7.3.17.ebuild 581 BLAKE2B 2fedd21c5c8aca099b2b63f4575ef2592a57177d82ec945d8488d292fd38a12c27bd39a305a547c7cb8ab0fbf67580197b6c18e3aba330f9ea25db2d996be703 SHA512 9fa7e2114458ace8ac3f8c8040f8d6f5e45f4fc147c9196cd7565c32a869be7582330e8a3d484ecef5d7c3e3780a8bf4c145ea6922f601ce2bf51f17d44494c6
 MISC metadata.xml 317 BLAKE2B 9da451fe362dc5c1f6b3412b33065ab6e316e5ae49fd8e6a8e7485cd5cb7440c316c7c5c9b504a69c4f21a6370317edfe11f388238665133b8557a26acbfe1eb SHA512 96039ea2033b920e595e05c8749ee7e316e951bc6ff544a2f4d175d862cf7537401cbba1d4535f20245bbcac32d5ce1261d04aee412953401b513ecc5e7217bc
diff --git a/dev-python/pypy3/pypy3-7.3.17.ebuild b/dev-python/pypy3/pypy3-7.3.17.ebuild
new file mode 100644
index 000000000000..4aa3928c48c5
--- /dev/null
+++ b/dev-python/pypy3/pypy3-7.3.17.ebuild
@@ -0,0 +1,26 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYVER=3.10
+DESCRIPTION="A fast, compliant alternative implementation of the Python (${PYVER}) language"
+HOMEPAGE="
+	https://pypy.org/
+	https://foss.heptapod.net/pypy/pypy/
+"
+S=${WORKDIR}
+
+LICENSE="MIT"
+SLOT="0/pypy310-pp73-384"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86 ~amd64-linux ~x86-linux"
+IUSE="+gdbm ncurses sqlite tk"
+
+RDEPEND="
+	=dev-python/pypy3_10-${PV}*:${SLOT}[gdbm?,ncurses?,sqlite?,tk?]
+"
+
+src_install() {
+	dodir /usr/bin
+	dosym pypy${PYVER} /usr/bin/pypy3
+}
diff --git a/dev-python/pypy3_10-exe-bin/Manifest b/dev-python/pypy3_10-exe-bin/Manifest
index 942e897f19b5..d0ba6af00c99 100644
--- a/dev-python/pypy3_10-exe-bin/Manifest
+++ b/dev-python/pypy3_10-exe-bin/Manifest
@@ -6,5 +6,14 @@ DIST pypy3_10-exe-7.3.16-1.ppc64le-musl.gpkg.tar 6819840 BLAKE2B a3ae523a26a187b
 DIST pypy3_10-exe-7.3.16-1.ppc64le.gpkg.tar 10352640 BLAKE2B 53d2804ef1a95de1edf4765261deb4c53accf59b8b2d827b2dec24a279424629322a701bd3942d05e4e13f52e796c119c237d32bf334287daad8664e1e76e67a SHA512 8016ed28f076936e3477d75d47e20af79fb97d138f924c514fcd32a02ad4b9bf3eb0d09a82d08f99843b102b4a048b78a694963e223a936b029ab903a5c60a21
 DIST pypy3_10-exe-7.3.16-1.x86-musl.gpkg.tar 9093120 BLAKE2B 56a349615ce67c3e581da65ac3b52cdc412760aea689d4b8bf6b9f5d2a4285ac67557ee6791363a0faaa1ba10f20b9d761529f278f3737b304e79682353bf1fc SHA512 cf9a8e4475c2d3c8d7c3756c7b4a61fd4effde3010b33f67aa40354658952dcf2ee7d05f6db7912bf8015dd76cf7bb08bfc7d9aea2f168bec23acab9a9068239
 DIST pypy3_10-exe-7.3.16-1.x86.gpkg.tar 9093120 BLAKE2B ef908156f0dd9376495330fe0278aa2565c5428bfe46aaeb9f11dabee2ee998969028296cef3e5b71e6d8963bd7573ddded8583e3410f4c66b7b1f17a9cb52aa SHA512 d65132d4a89f7f0764095fee1a3f10d4b7821ba45745a3576179ff2e74f24f38538fe5df6812e654cecc71fe7feecec4e2b9518c8b51aea9b66d43dca935949e
+DIST pypy3_10-exe-7.3.17-1.amd64-musl.gpkg.tar 12103680 BLAKE2B 4b542d95bf6a3bc214b4e8adcde98d49b717676f7e22f1347b976570cc852fc70a832224fdae8093cb5b2c47b2aa3075c65dc6bba93720fd2146c6670cf97eea SHA512 b0782c86646f24856c9868a493b19fc9af3596bc703504f09c153f1d11938a6dcded68664459d4043b86638b0e30440ac272bf13b85fd91021112dc663b56c9a
+DIST pypy3_10-exe-7.3.17-1.amd64.gpkg.tar 12134400 BLAKE2B e7ddd040e6f7d0b76aeb6dce53e86924e5e72d5ea7928aba103613dd40cd7c8e4d6fb3837437b3ffd2467b117c4851a84db2e4f5eeda36c26a6450d26e7ef20c SHA512 674be340c85e23a18c5b2a7af05093949606a314042fa282b4ea2b8c8c0c99d57a511ea8623a9d2eab23be711db8fdcd3ff5dc71a71b8c59288a861e6e43aae1
+DIST pypy3_10-exe-7.3.17-1.arm64-musl.gpkg.tar 10229760 BLAKE2B c25bd05035b225b09c59ecac3c24e4c770f254b2286be4967a2e7f674c0d524e55fe66fad76ae18d1a8b2297c0d06d9757590e69900028bdbf299037327f83f1 SHA512 0f5be025d421dc822235ff0ad9c317f22671d6b20fb3ea2bdd860ca48306a854e94469f7aeaf4ca395e6ea01e6ef1969b7cae6ae311db1823b4fae1616a8c2c0
+DIST pypy3_10-exe-7.3.17-1.arm64.gpkg.tar 10229760 BLAKE2B a670d2328d248fe3c897c59af4f5b5b4e2ab86966332232053bba1585377a824a1b69b7f4608e4ac96effb17edffe00c54d00a4aada74301cb720cde7cf9ce51 SHA512 590bae38189f42a708573a6194bd074d54f2b8794d5ba0fb9139130e285528e1cf922e4f3969b17d5aff7e4f5b56809622ea145a8eb32d6fa6e1740deb00dc99
+DIST pypy3_10-exe-7.3.17-1.ppc64le-musl.gpkg.tar 6819840 BLAKE2B 1cc0c5c2c82f831526480b78dc8230305b531908c7ddb7590e07769de602b8aaa3448bc221fa8b824e6dd6a0af7d2d0be5583451004150476f71730d42462251 SHA512 65d85f8c2c4c3997dc15723b7c857fb9f781e6fb992ab18f53e49f812dea63b7e70695364abda7a866d3304e84a5c59797881b9ec5159eb86acb7e44ad31bf9a
+DIST pypy3_10-exe-7.3.17-1.ppc64le.gpkg.tar 10393600 BLAKE2B da4c97f4d5ee546d776ba937d3736033ded7f5cc0a17e39fd657952b834fe6c002d3c33cfc7b16572f07dd0421040d4bb82e897a101ac129a6082961d0d02c7d SHA512 c49c67eee76f604146aadfcc600312e028bb9f6a24560eefd1dec7e9e0c7304e0a1ce89fdf6229b50b51cd17fb50b89815d937ccac3ef5fcc1ef8ff99af5f237
+DIST pypy3_10-exe-7.3.17-1.x86-musl.gpkg.tar 9103360 BLAKE2B 80202a4f66bec51176c29f2506a28ac296e63dd89102c68f62cfb868f455ac51a1e49557962c271e2a99b41001ad21b56790bb05aead361d59b7bea2c526721f SHA512 d7345e886c0ab4c8de987f5daaaddaa9983864e6343f3f64e85607ed897530f19fae653d412eb076b232ff6e7d52fdda4da0b05b4b4767ac1ac669a512e6fe6c
+DIST pypy3_10-exe-7.3.17-1.x86.gpkg.tar 9154560 BLAKE2B c388c0bed60fafddf5edc2f0bae19e04e643cc1ca44bd99f2b7b84c8b71d1a685faa48886aab3b5b2137b90ae3ebfa7b41fc6f98bcd99203f7997299ec52f274 SHA512 5c2ab169b5ece9c7c8fb9972ac74cf2aa8c5f385fd805800183ed8c0845540185065aff388b2d0ad56d901365454979c9051e70ec5ff2a9f7059b2812555f8ff
 EBUILD pypy3_10-exe-bin-7.3.16.ebuild 2068 BLAKE2B 0332db45eafd5c35c0496dea1b16a1c27c152684de0c9c1597cde5be063edd31c54490563c483aa8bf414784df83d754fe18c1b80dca37136f6b965bad443992 SHA512 0ffe92f81cce9369a52ffe44053dbda0eeed9f3ba7425a9ca85cda5513fc5cc027b8ac5f63727d9dadd5b652cc736bc6f867fda6096f024614fcc093cd1cc2ca
+EBUILD pypy3_10-exe-bin-7.3.17.ebuild 2066 BLAKE2B a80acf76af49d6590e836a79307dfa2b7952d2418e8a342142729162c7c20a57577fe8469d07140cf528d2aa53d3d77cc29935cb323d7df7e99faf75cc7fece7 SHA512 c99d04eb8bc8fd68ec559038844c43ded933492c3c5daaa234f19b08b304f9f77e74878c122926dbe68996dc2c25d84fc9bee9bd510546dc9b9bfde161df9d81
 MISC metadata.xml 315 BLAKE2B da5ed341c55250028587ffb479a27b7ec31eb0f8bd0e11b8a98a374e23d989f7d5bcce647ca9c78cd12f64b6b83dd0568c4f3a992a6c8c5089c52cef9de87441 SHA512 ebe1c4d655c49fd20127dd240b603f1b99d67c0a6d21c7eb37bee48f4ec6bba50648816ea2b1b746af58fcf8de576d24fe355ecfa2de07ebaa0265ade2ea38ba
diff --git a/dev-python/pypy3_10-exe-bin/pypy3_10-exe-bin-7.3.17.ebuild b/dev-python/pypy3_10-exe-bin/pypy3_10-exe-bin-7.3.17.ebuild
new file mode 100644
index 000000000000..19930957bb48
--- /dev/null
+++ b/dev-python/pypy3_10-exe-bin/pypy3_10-exe-bin-7.3.17.ebuild
@@ -0,0 +1,85 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit pax-utils unpacker
+
+PYVER=3.10
+MY_P=pypy3_10-exe-${PV}-1
+
+DESCRIPTION="PyPy3.10 executable (pre-built version)"
+HOMEPAGE="
+	https://pypy.org/
+	https://github.com/pypy/pypy/
+"
+SRC_URI="
+	elibc_glibc? (
+		amd64? (
+			https://dev.gentoo.org/~mgorny/binpkg/amd64/pypy/dev-python/pypy3_10-exe/${MY_P}.gpkg.tar
+				-> ${MY_P}.amd64.gpkg.tar
+		)
+		arm64? (
+			https://dev.gentoo.org/~mgorny/binpkg/arm64/pypy/dev-python/pypy3_10-exe/${MY_P}.gpkg.tar
+				-> ${MY_P}.arm64.gpkg.tar
+		)
+		ppc64? (
+			https://dev.gentoo.org/~mgorny/binpkg/ppc64le/pypy/dev-python/pypy3_10-exe/${MY_P}.gpkg.tar
+				-> ${MY_P}.ppc64le.gpkg.tar
+		)
+		x86? (
+			https://dev.gentoo.org/~mgorny/binpkg/x86/pypy/dev-python/pypy3_10-exe/${MY_P}.gpkg.tar
+				-> ${MY_P}.x86.gpkg.tar
+		)
+	)
+	elibc_musl? (
+		amd64? (
+			https://dev.gentoo.org/~mgorny/binpkg/amd64-musl/pypy/dev-python/pypy3_10-exe/${MY_P}.gpkg.tar
+				-> ${MY_P}.amd64-musl.gpkg.tar
+		)
+		arm64? (
+			https://dev.gentoo.org/~mgorny/binpkg/arm64-musl/pypy/dev-python/pypy3_10-exe/${MY_P}.gpkg.tar
+				-> ${MY_P}.arm64-musl.gpkg.tar
+		)
+		ppc64? (
+			https://dev.gentoo.org/~mgorny/binpkg/ppc64le-musl/pypy/dev-python/pypy3_10-exe/${MY_P}.gpkg.tar
+				-> ${MY_P}.ppc64le-musl.gpkg.tar
+		)
+		x86? (
+			https://dev.gentoo.org/~mgorny/binpkg/x86-musl/pypy/dev-python/pypy3_10-exe/${MY_P}.gpkg.tar
+				-> ${MY_P}.x86-musl.gpkg.tar
+		)
+	)
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="MIT"
+SLOT="${PV%_p*}"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86"
+
+# sys-devel/gcc for libgcc_s.so
+RDEPEND="
+	app-arch/bzip2:0/1
+	dev-libs/expat:0/0
+	dev-libs/libffi:0/8
+	sys-libs/ncurses:0/6
+	>=sys-libs/zlib-1.1.3:0/1
+	virtual/libintl:0/0
+	elibc_glibc? (
+		sys-devel/gcc
+		>=sys-libs/glibc-2.35
+	)
+	!dev-python/pypy3_10-exe:${SLOT}
+"
+
+PYPY_PV=${PV%_p*}
+QA_PREBUILT="
+	usr/bin/pypy${PYVER}-c-${PYPY_PV}
+"
+
+src_install() {
+	insinto /
+	doins -r image/usr
+	fperms +x "/usr/bin/pypy${PYVER}-c-${PYPY_PV}"
+	pax-mark m "${ED}/usr/bin/pypy${PYVER}-c-${PYPY_PV}"
+}
diff --git a/dev-python/pypy3_10-exe/Manifest b/dev-python/pypy3_10-exe/Manifest
index 28f444794752..6f6a838ae73e 100644
--- a/dev-python/pypy3_10-exe/Manifest
+++ b/dev-python/pypy3_10-exe/Manifest
@@ -1,4 +1,7 @@
 DIST pypy3.10-gentoo-patches-7.3.16.tar.xz 4752 BLAKE2B a5cd87f30c0b20bf5d49c3b5c979c12231d6b67750e777d4488093094d5998e6f0d9adba51c04704eb31d621089aeb12ee5a6b0a58dad0ecda0d60d2ecbdab6d SHA512 e2779841a3e56e384134416ce2a10e1e00a11d7c720023506370fb9f54363da6b7300b4019c121aa1874152b62d9679ebcd3dd679fd0dbd2bf524520990b6f38
+DIST pypy3.10-gentoo-patches-7.3.17.tar.xz 10340 BLAKE2B a9d7dc6a578dc50339574b2fcfff19e390293adfc8412592e4683fdd3ff415ed8da3ff809b00037659a6e218dc0b26efead7a2ae3c54b2c3487222144d5d9633 SHA512 b192685cc100cfb723492d29e89a522bb4ff041c78cbdfd170414e19713cf2a21c39ab8d4e1e9ca47da2559b2fed6df14f1122f96bc50dd117550c357046889a
 DIST pypy3.10-v7.3.16-src.tar.bz2 23358556 BLAKE2B 4eddae47dea1005b9450b9d3d23bd90782dffecdc252eff4fd3195a61e0e7ebbdafaf4c4b5d318c88534f152c1110c3bc4f76f43a7e711a859dd4330841a0e0b SHA512 5b941e3b5c7b0c7a50413e16122bad3e167dcc4ee159ce53e9716e9d5af79d600823f3d7442b7562bb568ff027723e22904fc0840dc06bd26e3da38c93cc5b94
+DIST pypy3.10-v7.3.17-src.tar.bz2 23350562 BLAKE2B 0a7a091976b352de61057f238fa386f767dd4d2fbcdcc0b4376066c20c2ad35d3818fa6e9e163ab5fd341856802e8ad1e2891decf5948c13cdb26726cd42019e SHA512 46e30845bbc73cf56f5033a24d3583253ce198522f3a28ae4e789884063ba167d401fc08ae7fc8c7769feed9cd942a8ab38961c8b8794d7fae8f9955479faa96
 EBUILD pypy3_10-exe-7.3.16.ebuild 2951 BLAKE2B 753525823db90ddf87c15a11be7ca912142aa595efd627eae56e69f87d460cc2b70b837c1dec3545d6c3573aeae32cfa82f9fdae7291ef4c39bded06ece2960c SHA512 b06ace901bf477a2194fa77a4701f2435ef7315db11e3d94feb8f7eb7a0744dfc67b6fd81d7310746060d51794bce38e21805cbb658e1bcf5f816945db0f44e3
+EBUILD pypy3_10-exe-7.3.17.ebuild 2949 BLAKE2B d5e8a1421cd55932ff020a94895fb4f40c1e34ba07af07c7e3e58c6523ae158d2dafe2b2f9d0864301de369d2f9c3dc4fa35a6c8a8c42aff148a77d4ae468633 SHA512 e763f991a8a1e9074b6e3069922389ce7c3426cf96530bac31f4152ff445c6847401d1423d03bfde2c749a13850c9e64a7886ff7c252f64972020528ec0f8a8b
 MISC metadata.xml 572 BLAKE2B cfcd1422ec312338fd876bc4747a962ac3c4bd06e28a3891489b065fba4c7be2daa6955f51e8136d9b8cf7b68bb7eb887b6f419ee9fd626ebd6db204acb7995d SHA512 c79250d47e3d5c99c2c903bfc185449cc41f88e2b923b8eae1401e83c0f23fa1a12ad85f50b6e25844e805e543ae897ccf43185a1bdf9f992dff765249e55bc1
diff --git a/dev-python/pypy3_10-exe/pypy3_10-exe-7.3.17.ebuild b/dev-python/pypy3_10-exe/pypy3_10-exe-7.3.17.ebuild
new file mode 100644
index 000000000000..4f66473fa95e
--- /dev/null
+++ b/dev-python/pypy3_10-exe/pypy3_10-exe-7.3.17.ebuild
@@ -0,0 +1,136 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit check-reqs flag-o-matic pax-utils toolchain-funcs
+
+PYPY_PV=${PV%_p*}
+PYVER=3.10
+MY_P="pypy${PYVER}-v${PYPY_PV/_}"
+PATCHSET="pypy${PYVER}-gentoo-patches-${PV}"
+
+DESCRIPTION="PyPy3.10 executable (build from source)"
+HOMEPAGE="
+	https://pypy.org/
+	https://github.com/pypy/pypy/
+"
+SRC_URI="
+	https://downloads.python.org/pypy/${MY_P}-src.tar.bz2
+	https://buildbot.pypy.org/pypy/${MY_P}-src.tar.bz2
+	https://dev.gentoo.org/~mgorny/dist/python/${PATCHSET}.tar.xz
+"
+S="${WORKDIR}/${MY_P}-src"
+
+LICENSE="MIT"
+SLOT="${PYPY_PV}"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86 ~amd64-linux ~x86-linux"
+IUSE="+jit low-memory ncurses cpu_flags_x86_sse2"
+
+RDEPEND="
+	app-arch/bzip2:0=
+	dev-libs/expat:0=
+	dev-libs/libffi:0=
+	>=sys-libs/zlib-1.1.3:0=
+	virtual/libintl:0=
+	ncurses? ( sys-libs/ncurses:0= )
+	!dev-python/pypy3_10-exe-bin:${SLOT}
+"
+DEPEND="
+	${RDEPEND}
+"
+BDEPEND="
+	dev-python/pypy
+	virtual/pkgconfig
+"
+
+check_env() {
+	if use low-memory; then
+		CHECKREQS_MEMORY="1750M"
+		use amd64 && CHECKREQS_MEMORY="3500M"
+	else
+		CHECKREQS_MEMORY="3G"
+		use amd64 && CHECKREQS_MEMORY="6G"
+	fi
+
+	check-reqs_pkg_pretend
+}
+
+pkg_pretend() {
+	[[ ${MERGE_TYPE} != binary ]] && check_env
+}
+
+pkg_setup() {
+	[[ ${MERGE_TYPE} != binary ]] && check_env
+}
+
+src_prepare() {
+	local PATCHES=(
+		"${WORKDIR}/${PATCHSET}"
+	)
+	default
+}
+
+src_configure() {
+	tc-export CC
+
+	# Yes, yuck, but it's being worked on upstream (bug #918971).
+	# https://foss.heptapod.net/pypy/pypy/-/issues/4042
+	append-flags $(test-flags-CC -Wno-error=incompatible-pointer-types)
+
+	local jit_backend
+	if use jit; then
+		jit_backend='--jit-backend='
+
+		# We only need the explicit sse2 switch for x86.
+		# On other arches we can rely on autodetection which uses
+		# compiler macros. Plus, --jit-backend= doesn't accept all
+		# the modern values...
+
+		if use x86; then
+			if use cpu_flags_x86_sse2; then
+				jit_backend+=x86
+			else
+				jit_backend+=x86-without-sse2
+			fi
+		else
+			jit_backend+=auto
+		fi
+	fi
+
+	local args=(
+		--no-shared
+		$(usex jit -Ojit -O2)
+
+		${jit_backend}
+
+		pypy/goal/targetpypystandalone
+		--withmod-bz2
+		$(usex ncurses --with{,out}mod-_minimal_curses)
+	)
+
+	local interp=( pypy )
+	if use low-memory; then
+		local -x PYPY_GC_MAX_DELTA=200MB
+		interp+=( --jit loop_longevity=300 )
+	fi
+
+	# translate into the C sources
+	# we're going to build them ourselves since otherwise pypy does not
+	# free up the unneeded memory before spawning the compiler
+	set -- "${interp[@]}" rpython/bin/rpython --batch --source "${args[@]}"
+	echo -e "\033[1m${@}\033[0m"
+	"${@}" || die "translation failed"
+}
+
+src_compile() {
+	emake -C "${T}"/usession*-0/testing_1
+}
+
+src_install() {
+	cd "${T}"/usession*-0 || die
+	newbin "testing_1/pypy${PYVER}-c" "pypy${PYVER}-c-${PYPY_PV}"
+	insinto "/usr/include/pypy${PYVER}/${PYPY_PV}"
+	doins *.h
+	pax-mark m "${ED}/usr/bin/pypy${PYVER}-c-${PYPY_PV}"
+}
diff --git a/dev-python/pypy3_10/Manifest b/dev-python/pypy3_10/Manifest
index 8673780a7e9d..08c1570f8ab1 100644
--- a/dev-python/pypy3_10/Manifest
+++ b/dev-python/pypy3_10/Manifest
@@ -1,8 +1,11 @@
 DIST pypy3.10-gentoo-patches-7.3.16.tar.xz 4752 BLAKE2B a5cd87f30c0b20bf5d49c3b5c979c12231d6b67750e777d4488093094d5998e6f0d9adba51c04704eb31d621089aeb12ee5a6b0a58dad0ecda0d60d2ecbdab6d SHA512 e2779841a3e56e384134416ce2a10e1e00a11d7c720023506370fb9f54363da6b7300b4019c121aa1874152b62d9679ebcd3dd679fd0dbd2bf524520990b6f38
 DIST pypy3.10-gentoo-patches-7.3.16_p1.tar.xz 7696 BLAKE2B d51dd45ec0fd2fd2d8e8f6afb6fdb227268d86ca03885991c085aa3b374bdbe01c909cd9c25981a89955c3fcfaf258f09470b5a5649b9235a74f37dadb9a891e SHA512 b71168518a103cccff4740efb51dfad4eaaf647d81aff727805f5ee9e2fdc6971749b69c17c72e7fd04c97bbf37777180870eb17077fb742f20130b4b00ed712
 DIST pypy3.10-gentoo-patches-7.3.16_p2.tar.xz 10348 BLAKE2B 93b2672e935e4a23e9fff70848f377211b4a0aff55384ffac59ba3b376af9d1ab1d1b3529a5148490dd6e8da55cc038390efa7e4120c60c7ea77d158da88b5bf SHA512 0bff294d8a0ed576204c00ef7befec0c960cef50eaf1130056aaed2a5dac63a8045db977c5fb4ff9c5eb1863e8df2cb9f4d608ab88cd6ffcc8bd4ab13f5d6ab2
+DIST pypy3.10-gentoo-patches-7.3.17.tar.xz 10340 BLAKE2B a9d7dc6a578dc50339574b2fcfff19e390293adfc8412592e4683fdd3ff415ed8da3ff809b00037659a6e218dc0b26efead7a2ae3c54b2c3487222144d5d9633 SHA512 b192685cc100cfb723492d29e89a522bb4ff041c78cbdfd170414e19713cf2a21c39ab8d4e1e9ca47da2559b2fed6df14f1122f96bc50dd117550c357046889a
 DIST pypy3.10-v7.3.16-src.tar.bz2 23358556 BLAKE2B 4eddae47dea1005b9450b9d3d23bd90782dffecdc252eff4fd3195a61e0e7ebbdafaf4c4b5d318c88534f152c1110c3bc4f76f43a7e711a859dd4330841a0e0b SHA512 5b941e3b5c7b0c7a50413e16122bad3e167dcc4ee159ce53e9716e9d5af79d600823f3d7442b7562bb568ff027723e22904fc0840dc06bd26e3da38c93cc5b94
+DIST pypy3.10-v7.3.17-src.tar.bz2 23350562 BLAKE2B 0a7a091976b352de61057f238fa386f767dd4d2fbcdcc0b4376066c20c2ad35d3818fa6e9e163ab5fd341856802e8ad1e2891decf5948c13cdb26726cd42019e SHA512 46e30845bbc73cf56f5033a24d3583253ce198522f3a28ae4e789884063ba167d401fc08ae7fc8c7769feed9cd942a8ab38961c8b8794d7fae8f9955479faa96
 EBUILD pypy3_10-7.3.16.ebuild 6330 BLAKE2B a1bcc9080b3c0def956587509c10266550bf023963d2aadf812573ea7efdcabe3ce09092701f11753ea45464f29cd9725f50fb9d47332a234ec08b2bc90b6d90 SHA512 5c8010fee5d31f303514bd33a831d1f756543940c76e6dae0ed2b9a43bdda656321ea8b3245e4318ddd9bd33688307e3a17bd4b1a3cf6db5b9e43a1c75924f28
 EBUILD pypy3_10-7.3.16_p1.ebuild 6330 BLAKE2B a1bcc9080b3c0def956587509c10266550bf023963d2aadf812573ea7efdcabe3ce09092701f11753ea45464f29cd9725f50fb9d47332a234ec08b2bc90b6d90 SHA512 5c8010fee5d31f303514bd33a831d1f756543940c76e6dae0ed2b9a43bdda656321ea8b3245e4318ddd9bd33688307e3a17bd4b1a3cf6db5b9e43a1c75924f28
 EBUILD pypy3_10-7.3.16_p2.ebuild 6330 BLAKE2B a1bcc9080b3c0def956587509c10266550bf023963d2aadf812573ea7efdcabe3ce09092701f11753ea45464f29cd9725f50fb9d47332a234ec08b2bc90b6d90 SHA512 5c8010fee5d31f303514bd33a831d1f756543940c76e6dae0ed2b9a43bdda656321ea8b3245e4318ddd9bd33688307e3a17bd4b1a3cf6db5b9e43a1c75924f28
+EBUILD pypy3_10-7.3.17.ebuild 6328 BLAKE2B 9cbd5073fe863d95bd92d86086891f6fd1b1ec6ab9891ce5ca068a2e2a283554cb55931b50efe8f9161c8e266a986c916324cbdd8cf7ff6696ea95bab3c50182 SHA512 b3fbd4e63d90ee288b11e74aa19fee5dc8e248514463631364f0c57b580dfd68974708bbea15106c030aa7fcd72c4b913f44b86cf37501fb425fb02d3ca70cdc
 MISC metadata.xml 529 BLAKE2B 4121978ab7ed8811781be50eb702082b54ce8e2da22b1cf24f009a64d14b1c644f1420467e7f74d48b65e9644b9100d6e55bd5da0907565a4dd0ba6fc4d029ee SHA512 c862efc8092df86bcf1399abb86081709829b9d3ce9564f8a4d0d8d5d59a4089f79a70156efc093fdf08a2b563cffc8c5aa3f51e33c87456369ae75a5cef3f1a
diff --git a/dev-python/pypy3_10/pypy3_10-7.3.17.ebuild b/dev-python/pypy3_10/pypy3_10-7.3.17.ebuild
new file mode 100644
index 000000000000..8b160362ba6a
--- /dev/null
+++ b/dev-python/pypy3_10/pypy3_10-7.3.17.ebuild
@@ -0,0 +1,212 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit multiprocessing pax-utils toolchain-funcs
+
+PYPY_PV=${PV%_p*}
+PYVER=3.10
+MY_P="pypy${PYVER}-v${PYPY_PV/_}"
+PATCHSET="pypy${PYVER}-gentoo-patches-${PV/_rc/rc}"
+
+DESCRIPTION="A fast, compliant alternative implementation of the Python (${PYVER}) language"
+HOMEPAGE="
+	https://pypy.org/
+	https://github.com/pypy/pypy/
+"
+SRC_URI="
+	https://downloads.python.org/pypy/${MY_P}-src.tar.bz2
+	https://buildbot.pypy.org/pypy/${MY_P}-src.tar.bz2
+	https://dev.gentoo.org/~mgorny/dist/python/${PATCHSET}.tar.xz
+"
+S="${WORKDIR}/${MY_P}-src"
+
+LICENSE="MIT"
+# pypy3 -c 'import sysconfig; print(sysconfig.get_config_var("SOABI"))'
+# also check pypy/interpreter/pycode.py -> pypy_incremental_magic
+SLOT="0/pypy310-pp73-384"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86 ~amd64-linux ~x86-linux"
+IUSE="+ensurepip gdbm +jit ncurses sqlite tk"
+# many tests are failing upstream
+# see https://buildbot.pypy.org/summary?branch=py${PYVER}
+RESTRICT="test"
+
+RDEPEND="
+	|| (
+		>=dev-python/${PN}-exe-${PYPY_PV}:${PYPY_PV}[bzip2(+),ncurses?]
+		>=dev-python/${PN}-exe-bin-${PYPY_PV}:${PYPY_PV}
+	)
+	dev-lang/python-exec[python_targets_pypy3(-)]
+	dev-libs/openssl:0=
+	dev-python/gentoo-common
+	ensurepip? ( dev-python/ensurepip-wheels )
+	gdbm? ( sys-libs/gdbm:0= )
+	sqlite? ( dev-db/sqlite:3= )
+	tk? (
+		dev-lang/tk:0=
+		dev-tcltk/tix:0=
+	)
+"
+DEPEND="
+	${RDEPEND}
+"
+
+src_prepare() {
+	local PATCHES=(
+		"${WORKDIR}/${PATCHSET}"
+	)
+
+	default
+}
+
+src_configure() {
+	tc-export CC
+}
+
+src_compile() {
+	mkdir bin || die
+	# switch to the layout expected for cffi module builds
+	mkdir include/pypy${PYVER} || die
+	# copy over to make sys.prefix happy
+	cp -p "${BROOT}"/usr/bin/pypy${PYVER}-c-${PYPY_PV} pypy${PYVER}-c || die
+	cp -p "${BROOT}"/usr/include/pypy${PYVER}/${PYPY_PV}/* include/pypy${PYVER}/ || die
+	# (not installed by pypy-exe)
+	rm pypy/module/cpyext/include/_numpypy/numpy/README || die
+	mv pypy/module/cpyext/include/* include/pypy${PYVER}/ || die
+	mv pypy/module/cpyext/parse/*.h include/pypy${PYVER}/ || die
+	pax-mark m pypy${PYVER}-c
+
+	# verify the subslot
+	local soabi=$(
+		./pypy${PYVER}-c - <<-EOF
+			import importlib.util
+			import sysconfig
+			soabi = sysconfig.get_config_var("SOABI")
+			magic = importlib.util._RAW_MAGIC_NUMBER & 0xffff
+			print(f"{soabi}-{magic}")
+		EOF
+	)
+	[[ ${soabi} == ${SLOT#*/} ]] || die "update subslot to ${soabi}"
+
+	# Add epython.py to the distribution
+	echo 'EPYTHON="pypy3"' > lib-python/3/epython.py || die
+
+	einfo "Generating caches and CFFI modules ..."
+
+	# Generate sysconfig data
+	local host_gnu_type=$(sh pypy/tool/release/config.guess)
+	local overrides=(
+		HOST_GNU_TYPE "${host_gnu_type:-unknown}"
+		INCLUDEPY "${EPREFIX}/usr/include/pypy${PYVER}"
+		LIBDIR "${EPREFIX}/usr/$(get_libdir)"
+		TZPATH "${EPREFIX}/usr/share/zoneinfo"
+		WHEEL_PKG_DIR "${EPREFIX}/usr/lib/python/ensurepip"
+	)
+	./pypy${PYVER}-c -m sysconfig --generate-posix-vars "${overrides[@]}" || die
+	local outdir
+	outdir=$(<pybuilddir.txt) || die
+	cp "${outdir}"/_sysconfigdata__*.py lib-python/3/ || die
+
+	# Generate Grammar and PatternGrammar pickles.
+	./pypy${PYVER}-c - <<-EOF || die "Generation of Grammar and PatternGrammar pickles failed"
+		import lib2to3.pygram
+		import lib2to3.patcomp
+		lib2to3.patcomp.PatternCompiler()
+	EOF
+
+	# Generate cffi modules
+	# Please keep in sync with lib_pypy/pypy_tools/build_cffi_imports.py!
+	# (NB: we build CFFI modules first to avoid error log when importing
+	# build_cffi_imports).
+	cffi_targets=(
+		pypy_util blake2/_blake2 sha3/_sha3 ssl
+		audioop syslog pwdgrp resource lzma posixshmem
+		ctypes_test testmultiphase
+	)
+	use gdbm && cffi_targets+=( gdbm )
+	use ncurses && cffi_targets+=( curses )
+	use sqlite && cffi_targets+=( sqlite3 )
+	use tk && cffi_targets+=( tkinter/tklib )
+
+	local t
+	# all modules except tkinter output to .
+	# tkinter outputs to the correct dir ...
+	cd lib_pypy || die
+	for t in "${cffi_targets[@]}"; do
+		# tkinter doesn't work via -m
+		../pypy${PYVER}-c "_${t}_build.py" || die "Failed to build CFFI bindings for ${t}"
+	done
+	# testcapi does not have a "build" script
+	../pypy${PYVER}-c -c "import _testcapi" || die
+
+	# Verify that CFFI module list is up-to-date
+	local expected_cksum=a4138e48
+	local local_cksum=$(
+		../pypy${PYVER}-c - <<-EOF
+			import binascii
+			import json
+			from pypy_tools.build_cffi_imports import cffi_build_scripts as x
+			print("%08x" % (binascii.crc32(json.dumps(x).encode()),))
+		EOF
+	)
+	if [[ ${local_cksum} != ${expected_cksum} ]]; then
+		die "Please verify cffi_targets and update checksum to ${local_cksum}"
+	fi
+
+	# Cleanup temporary objects
+	find \( -name "*_cffi.c" -o -name '*.o' \) -delete || die
+	find -type d -empty -delete || die
+}
+
+src_install() {
+	einfo "Installing PyPy ..."
+	dodir /usr/bin
+	dosym pypy${PYVER}-c-${PYPY_PV} /usr/bin/pypy${PYVER}
+	insinto /usr/lib/pypy${PYVER}
+	# preserve mtimes to avoid obsoleting caches
+	insopts -p
+	doins -r lib-python/3/. lib_pypy/.
+	insinto /usr/include
+	doins -r include/pypy${PYVER}
+
+	# replace copied headers with symlinks
+	for x in "${BROOT}"/usr/include/pypy${PYVER}/${PYPY_PV}/*; do
+		dosym "${PYPY_PV}/${x##*/}" "/usr/include/pypy${PYVER}/${x##*/}"
+	done
+
+	dodoc README.rst
+
+	local dest=/usr/lib/pypy${PYVER}
+	rm -r "${ED}${dest}"/ensurepip/_bundled || die
+	if ! use ensurepip; then
+		rm -r "${ED}${dest}"/ensurepip || die
+	fi
+	if ! use gdbm; then
+		rm -r "${ED}${dest}"/_gdbm* || die
+	fi
+	if ! use sqlite; then
+		rm -r "${ED}${dest}"/sqlite3 \
+			"${ED}${dest}"/_sqlite3* \
+			"${ED}${dest}"/test/test_sqlite.py || die
+	fi
+	if ! use tk; then
+		rm -r "${ED}${dest}"/{idlelib,tkinter} \
+			"${ED}${dest}"/_tkinter \
+			"${ED}${dest}"/test/test_{tcl,tk,ttk*}.py || die
+	fi
+	dosym ../python/EXTERNALLY-MANAGED "${dest}/EXTERNALLY-MANAGED"
+
+	local -x PYTHON=${ED}/usr/bin/pypy${PYVER}-c-${PYPY_PV}
+	# temporarily copy to build tree to facilitate module builds
+	cp -p "${BROOT}/usr/bin/pypy${PYVER}-c-${PYPY_PV}" "${PYTHON}" || die
+
+	einfo "Byte-compiling Python standard library..."
+	# exclude list from CPython Makefile.pre.in
+	"${PYTHON}" -m compileall -j "$(makeopts_jobs)" -o 0 -o 1 -o 2 \
+		-x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
+		--hardlink-dupes -q -f -d "${dest}" "${ED}${dest}" || die
+
+	# remove to avoid collisions
+	rm "${PYTHON}" || die
+}
diff --git a/dev-python/python-cinderclient/Manifest b/dev-python/python-cinderclient/Manifest
index c19533968ffc..8b3b91655d78 100644
--- a/dev-python/python-cinderclient/Manifest
+++ b/dev-python/python-cinderclient/Manifest
@@ -1,3 +1,5 @@
 DIST python-cinderclient-9.5.0.tar.gz 236811 BLAKE2B 60d450ea31357d366c0c18b6715a36f51a9700393c2e5bb0967cd86706dd552fb2deaee428816019e87bd2c272b2f9342118b1f770370ce5aba062d3ebd292ce SHA512 efcc0f4b32e1d6f8d696137c416aeed6fc4f2a69b6fa59d47f0c46dc7d38d1f2bbc5ea35d1bcbac0604e9db8b75d256d47a76d17d040b6e84fca6069a65df8d8
+DIST python-cinderclient-9.6.0.tar.gz 237239 BLAKE2B 34080bcc739db3df9fbf2b45115726df6c435ade39b9d92b8752db06a661db8d6ad92005d1358ae4f0bb313db663bbb1e6e7fc1fde0373941eee39921b22a9b3 SHA512 f2dec3927063c40046c72e090f95f996a16582c09cca8de320fedf80037e4c8dea231c8b48d3fc1ad085b89f43afc413c477e162f231940616f3373d4f86d4ee
 EBUILD python-cinderclient-9.5.0.ebuild 1272 BLAKE2B d4d0969e69b83e3a539ec432e1768fe6f5f4941fead678b43b1635f01b9da7efe011a1bd323683c2fedd424ca88bf82d050fb900bda01c9eb5cd5e6fab37ad2a SHA512 d894f2d437662a8f7674fa3c8c98059af426660666253944d8aaf75d0521c2097fb3d2f5631358c403d5387158e81b30fb1007adc0ca3cbb75c88c9ac689b45c
+EBUILD python-cinderclient-9.6.0.ebuild 1275 BLAKE2B 30df52bfe14c91fe586c5fa7435d95315a6d875258eac69ddd0915241af32c6304b959916a607dd17f56d8a638df028493327e54294e6cd45ded7b36a24dd345 SHA512 0758dc8bd99d4cae30a6edab7ad249e13cc84b826bf431936a6886038e8f78f1ebddc2f316ab658ffea9adc036d8f6fd4e85bfbc12262ef1f15f2d8a7ca36ef4
 MISC metadata.xml 727 BLAKE2B 0017cc08edf25f27b8a2816bc3ce1374148a17522bf2c5ea643ad10cde9f5779b1b6bf1e3c91627db76d2f77b8dcbfc87a29fb2cdd8064b3140fb14d1e6e00a1 SHA512 e30e64371f7a5f5fa506396f2edbbc7f862a585c7fe9af4f6fe63e99d4bbe9f9bf3a1f002a62c40ab9d75bd90ab99446bb80bf7f2fedf5b37287eeb54e5dacbe
diff --git a/dev-python/python-cinderclient/python-cinderclient-9.6.0.ebuild b/dev-python/python-cinderclient/python-cinderclient-9.6.0.ebuild
new file mode 100644
index 000000000000..cab20f180eb5
--- /dev/null
+++ b/dev-python/python-cinderclient/python-cinderclient-9.6.0.ebuild
@@ -0,0 +1,48 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_NO_NORMALIZE=1
+PYTHON_COMPAT=( python3_{10..12} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A client for the OpenStack Cinder API"
+HOMEPAGE="
+	https://opendev.org/openstack/python-cinderclient/
+	https://github.com/openstack/python-cinderclient/
+	https://pypi.org/project/python-cinderclient/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86"
+
+RDEPEND="
+	>=dev-python/keystoneauth1-4.3.1[${PYTHON_USEDEP}]
+	>=dev-python/oslo-i18n-5.0.1[${PYTHON_USEDEP}]
+	>=dev-python/oslo-utils-4.8.0[${PYTHON_USEDEP}]
+	>=dev-python/pbr-5.5.0[${PYTHON_USEDEP}]
+	>=dev-python/prettytable-0.7.2[${PYTHON_USEDEP}]
+	>=dev-python/requests-2.25.1[${PYTHON_USEDEP}]
+	>=dev-python/stevedore-3.3.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+	dev-python/pbr[${PYTHON_USEDEP}]
+	test? (
+		dev-python/ddt[${PYTHON_USEDEP}]
+		dev-python/fixtures[${PYTHON_USEDEP}]
+		dev-python/oslo-serialization[${PYTHON_USEDEP}]
+		dev-python/requests-mock[${PYTHON_USEDEP}]
+		dev-python/testtools[${PYTHON_USEDEP}]
+	)
+"
+
+distutils_enable_tests unittest
+
+python_test() {
+	# functional tests require cloud instance access
+	eunittest -b cinderclient/tests/unit
+}
diff --git a/dev-python/python-ironicclient/Manifest b/dev-python/python-ironicclient/Manifest
index 67a9555af8bf..d9dd2d7570ae 100644
--- a/dev-python/python-ironicclient/Manifest
+++ b/dev-python/python-ironicclient/Manifest
@@ -1,5 +1,7 @@
 DIST python-ironicclient-5.6.0.tar.gz 229569 BLAKE2B 2db608463479fc5bb7061562d8617d96244e80276790ae2829373d9ba02412027658c33c5f22d6fd921bf84599584c588c462b4480d294e288dc063f7c73e274 SHA512 133de151e5a884c0c9840b72236f5d99e5e197889ed2e80545174d8754b09e65c370c6a97c367ed4c4ca76f593e665e6481cd45c266fdf3ba7fc348307539907
 DIST python-ironicclient-5.7.0.tar.gz 230550 BLAKE2B a4571693ce95608d7403113e56df62961eb040ee924ff8d45ebacf41a924cb489157a48043d768e4e5691477bd2dbf24a658a59703e84c61871be5f4d9700dbf SHA512 f819a2be1301da821eb340da789dd188dea33fb48b2ea2f3ec740eb04b66cf121fc1f72f592e3f17cd38be30b9afedf4209dbe725eaa772938a9977a83e84506
+DIST python-ironicclient-5.8.0.tar.gz 235768 BLAKE2B 254e70bf1a007bcc1fbd5c13f8a650c473f294ab218c01b8b69b66a4518fdbd35b4dd1cdda808342efde92ebebbe25e7221b0e97492b0c2d6095d0107f05d0d7 SHA512 fa96807bb17907f9ae9a761c9dcd4e87e5fed5d73a978da0e0e8536574277032c52fd96675bf7738271616e3f2897b67dba4d8ac3731ff0785ed2b8a91acb900
 EBUILD python-ironicclient-5.6.0.ebuild 1491 BLAKE2B 4957593a8aed035684f7346c36a54c1f1fb23dbe73797d041bc1a99cc60e22978041de578aad0bdf139d55a7008f94661030ceb1c0167b6e9468d1d53979e851 SHA512 2aeeb46e65cf912ec02b6ff88030a2c748f8bc50aec2c8869ed298dba0ec555e866819d8f97bf5c791420f1bd17bb25baac5ec77dd200a737021ec3a4f86d89e
 EBUILD python-ironicclient-5.7.0.ebuild 1494 BLAKE2B 507e164fddb7b4f9c696f94ba74a94ffb5396357f4231d9987fa507e9bd2788def5686944d05e72ad8d634538d6ea4d8bb2ca0fd2bc43e860937929427cdceb0 SHA512 423fcd4c5e79368402c6e2561d519f16060db865aba6be0ab992b4f641ba9b7cf6987a4b2d1aab639804a88b5011f9975906c8c01f0d8990662cced70e49ebee
+EBUILD python-ironicclient-5.8.0.ebuild 1494 BLAKE2B 507e164fddb7b4f9c696f94ba74a94ffb5396357f4231d9987fa507e9bd2788def5686944d05e72ad8d634538d6ea4d8bb2ca0fd2bc43e860937929427cdceb0 SHA512 423fcd4c5e79368402c6e2561d519f16060db865aba6be0ab992b4f641ba9b7cf6987a4b2d1aab639804a88b5011f9975906c8c01f0d8990662cced70e49ebee
 MISC metadata.xml 531 BLAKE2B 0dc9961528a2fda61466eace2d8069b75dbb362b32d5adc3f50dd8b6c9daf5bb2690bc145e30d96807cb063c450e98824d783d566c2db96f036cc227f025dbc4 SHA512 99b57932cfbc2fc5e6607b167991964c17376504f07e7d3741900940d512a40a9c5dda73c0f87cc9b3718159d7aced0360831ef9c11ba063d11febda0786f943
diff --git a/dev-python/python-ironicclient/python-ironicclient-5.8.0.ebuild b/dev-python/python-ironicclient/python-ironicclient-5.8.0.ebuild
new file mode 100644
index 000000000000..036a407a0b35
--- /dev/null
+++ b/dev-python/python-ironicclient/python-ironicclient-5.8.0.ebuild
@@ -0,0 +1,49 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=pbr
+PYPI_NO_NORMALIZE=1
+PYTHON_COMPAT=( python3_{10..11} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Python bindings for the Ironic API"
+HOMEPAGE="
+	https://opendev.org/openstack/python-ironicclient/
+	https://github.com/openstack/python-ironicclient/
+	https://pypi.org/project/python-ironicclient/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="
+	>=dev-python/pbr-2.0.0[${PYTHON_USEDEP}]
+	>=dev-python/cliff-2.8.0[${PYTHON_USEDEP}]
+	>=dev-python/dogpile-cache-0.8.0[${PYTHON_USEDEP}]
+	>=dev-python/jsonschema-3.2.0[${PYTHON_USEDEP}]
+	>=dev-python/keystoneauth1-3.11.0[${PYTHON_USEDEP}]
+	>=dev-python/openstacksdk-0.18.0[${PYTHON_USEDEP}]
+	>=dev-python/osc-lib-2.0.0[${PYTHON_USEDEP}]
+	>=dev-python/oslo-utils-3.33.0[${PYTHON_USEDEP}]
+	>=dev-python/platformdirs-3[${PYTHON_USEDEP}]
+	>=dev-python/pyyaml-3.13.0[${PYTHON_USEDEP}]
+	>=dev-python/requests-2.14.2[${PYTHON_USEDEP}]
+	>=dev-python/stevedore-1.20.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+	test? (
+		>=dev-python/fixtures-3.0.0[${PYTHON_USEDEP}]
+		>=dev-python/requests-mock-1.2.0[${PYTHON_USEDEP}]
+		>=dev-python/oslotest-3.2.0[${PYTHON_USEDEP}]
+		>=dev-python/testtools-2.2.0[${PYTHON_USEDEP}]
+		>=dev-python/tempest-17.1.0[${PYTHON_USEDEP}]
+		>=dev-python/ddt-1.0.1[${PYTHON_USEDEP}]
+		>=dev-python/python-openstackclient-3.12.0[${PYTHON_USEDEP}]
+	)
+"
+
+distutils_enable_tests unittest
diff --git a/dev-python/python-snappy/Manifest b/dev-python/python-snappy/Manifest
index 265eeb91a9b0..8a8be269941c 100644
--- a/dev-python/python-snappy/Manifest
+++ b/dev-python/python-snappy/Manifest
@@ -1,3 +1,5 @@
 DIST python_snappy-0.7.2.tar.gz 9108 BLAKE2B a0f23b286f97de2d61afc51dcba188d77d0c0099b7cba26c7a0e2bc4da41045fc6a4a95d3adf3ef80d16300a7d35a66955552cf5693c0a0a38b73478b864d266 SHA512 c585e9e953c2bf2cb7d3f24ae9745d267b334d681ca44b7d842de2405df19b24af0f6915f0274de2a86e74fdcfef3715e5c27765243d84459216476c31aaa437
+DIST python_snappy-0.7.3.tar.gz 9337 BLAKE2B fbc0afbf01cb97b00855e94d3f13b8a3c92dc4a6ed6f078f1838ebb90c6643548477a880c910b07a2d5a7ee59d260be6a9dfb53719c34b7884b2071724154d85 SHA512 bb4cf220a3819622038e7aebf5100ac5126b9d42db15f4e89bd123088d1e62bab56488969adccea3a45719d760b1ed77f493051859f90fb8fc397cfe0661dd74
 EBUILD python-snappy-0.7.2.ebuild 547 BLAKE2B 5044828a80b49b07c94fca5acff0b569c3a84e9e6bd3fd2207ef46b79f37e435ef7b2f30ec645dc78401564626bbb17c136c7242816eeb76041021c0a5c1f9e6 SHA512 25828bceea30e4a920f641fbe798dda14fabe7158b3e26dc9d3e193cbfc18fcf92744511b4301e46288baebd53f780701b48a492d9942c1a28a6ebb9fcaa0f9f
+EBUILD python-snappy-0.7.3.ebuild 551 BLAKE2B c540d54b00a19fbaaa7cd6385eff084a4408bf5ab7a0bd5fa164450cfb53d0a11785dde33081d1f8be240566ff77a3f9db53a4d8e2ce84ee59e9b8da72a9d9a5 SHA512 a6ddc06194efb6faeb96329032765aad6bc2e184da17cdb5b6812bf6c11b06e7cf55a2c0d33cc78fe8a5bcfb2383aa94ef98ff82ae9dec350be43a2c04d8da50
 MISC metadata.xml 377 BLAKE2B a539bd7584f20f7cf958969645a9c1898d7fa415d5fbab3ed0062513bedfc516342ea7d889ccf7d4f6c3eff3f6006a33355fcc9165f105f9748bc078408bfeeb SHA512 f2fae6ee6ff65e8aaa78bb2ddec004589d4ea4c5ee724fb56f009c20080d24591e64a24b0cc9b99bec04ea0d27bf92ac0aa35ebc9a4433cb2bff8ed56891d697
diff --git a/dev-python/python-snappy/python-snappy-0.7.3.ebuild b/dev-python/python-snappy/python-snappy-0.7.3.ebuild
new file mode 100644
index 000000000000..44d2eee97a7e
--- /dev/null
+++ b/dev-python/python-snappy/python-snappy-0.7.3.ebuild
@@ -0,0 +1,25 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( pypy3 python3_{10..13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Python library for the snappy compression library from Google"
+HOMEPAGE="
+	https://github.com/intake/python-snappy/
+	https://pypi.org/project/python-snappy/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~sparc ~x86"
+
+RDEPEND="
+	>=dev-python/cramjam-2.6.0[${PYTHON_USEDEP}]
+"
+
+distutils_enable_tests unittest
diff --git a/dev-python/setuptools-rust/Manifest b/dev-python/setuptools-rust/Manifest
index 3bb7f7332f02..c3951133ecc2 100644
--- a/dev-python/setuptools-rust/Manifest
+++ b/dev-python/setuptools-rust/Manifest
@@ -164,6 +164,6 @@ DIST windows_x86_64_msvc-0.48.0.crate 671422 BLAKE2B abb063610dcc38581657133182b
 DIST windows_x86_64_msvc-0.48.5.crate 798412 BLAKE2B 8abc0721e2fb337fe17c91d278947d36122d9045b839ba0cf3e690202d242265b676f23cc301da5f9d98c56ca4ecb76f7d6f072ee71bf986a1deca87020b90e5 SHA512 fa1c5cd14ca2ff0082e2504cf59d317dc4dc6f7138d35c12f95d4476a9c13d8b7f5537d0ee251eee7c99411ad31b22263171b7fbd391daa5d3ea3488ceaa61a0
 DIST windows_x86_64_msvc-0.52.5.crate 827905 BLAKE2B fd5dac198bfbf29878cb461a7338c289c9af16ea80b3e5fa567980d2a6a5ea6a1cd83729ce6fd67e4da171873083dbeb1d6e16a287620f0245201f9cb29c29b4 SHA512 81176090dc725d7fe3867e6322fdc4a4065168580847b35e6f8da345f685c4f66a81e35cd1880dbaabdd4cdc82446dde9d6a0e583cf0b7fe47dda8bc8002f1c6
 EBUILD setuptools-rust-1.10.0.ebuild 3674 BLAKE2B e2b1b81b5f9e8b82be821db82b6a478fe3125605bc7ac2b49a0db8b3497ea0a86bab378ffdfbc1ff3d840ecd4335e03433fc9a0f1c59ade083a98ced227ab427 SHA512 f8542a6b5388922130b15067f3e746338165bff500145c398907e8a32980e1d5666d1b9e305aa8a1093d61f3f578e4f63c82a56fa807fd62595139aa93ac100c
-EBUILD setuptools-rust-1.10.1.ebuild 3668 BLAKE2B 7ca5bbc3407bf5550e4eaccab10fe51db2036a42eeee2f147ca45a752365e69b77fa519a1b3eaff100356926d6a72f875e64b5689083116e01ce56680be25d75 SHA512 78eb611305341f9c5baae37fbe2262fb020aeb14e28b8821b837402fc79fef6d81bbc1ee4a15494edef0c99f5ce88d7a7ef79d49e198dd76cc0b2a14c0adb515
+EBUILD setuptools-rust-1.10.1.ebuild 3667 BLAKE2B b443bb7d22b290ba1f03960e01cd13596099ee166e4fad78c7b4ddd5ccb70b8b4b3f2c8c681d041560d8ff3381b166f0f0ecb713a565aad0bcd77ef6900c5bcb SHA512 27a18532b60670b37441e9eafb18fed9c537d30c2fd918b654116bbd21a0a026cbd1c3c8e6b4967fb919aeff560bd48aa1c14d79f8dd1d588758001884b2cf98
 EBUILD setuptools-rust-1.9.0-r1.ebuild 4124 BLAKE2B 43dfea454dedab8bf450715b7cab1d76235b99c6005e492b4236cc66b5ed0c5faffc36cabf1c4f2888dde6dc3835be88265aa89a7764797c0155c0d9e47a05c2 SHA512 d4bc8e743c33c6e2297eef9728a20ef828f2da1c367bce148a4e9231da1cfc32655fb9a52fda4f4eb509788f41708fb1fc199af6432dba27502aa02129a3739b
 MISC metadata.xml 476 BLAKE2B c8f0ef0779f0a4412a7d9b97e1bb03e3bfb3c031209f489a100b30402d99224014e379712989afd0cb76c85be301dcf9a51e21e8f9195262c5920dd1db0703d1 SHA512 af74755e9e8fb61cbded2dc3e63cd20f95393ef2650bed9f81e299f7759ae79c63b45df8048cd0fe25397ec7db10156be681fa5278606a20481f78d5279b815b
diff --git a/dev-python/setuptools-rust/setuptools-rust-1.10.1.ebuild b/dev-python/setuptools-rust/setuptools-rust-1.10.1.ebuild
index af63cc5abfa4..674e4ab204b9 100644
--- a/dev-python/setuptools-rust/setuptools-rust-1.10.1.ebuild
+++ b/dev-python/setuptools-rust/setuptools-rust-1.10.1.ebuild
@@ -116,7 +116,7 @@ SRC_URI="
 # crates are used at test time only, update via pycargoebuild -L -i ...
 LICENSE="MIT"
 SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86"
 IUSE="test"
 RESTRICT="!test? ( test )"
 
diff --git a/dev-python/sphinx-autoapi/Manifest b/dev-python/sphinx-autoapi/Manifest
index 3ac67979c32f..6ebb6f3d26f2 100644
--- a/dev-python/sphinx-autoapi/Manifest
+++ b/dev-python/sphinx-autoapi/Manifest
@@ -1,3 +1,5 @@
 DIST sphinx-autoapi-3.2.1.gh.tar.gz 68891 BLAKE2B b31db0f584498a96d3bf7e57fa92abd884d3b8bb8812236a8491685f0fc81d212e114ae1663e316ba7ba14dee082dd4aeab19941f3d6ab85de95399f3736f596 SHA512 e1920a79ce8954a9da1d33fd46e5c1968990e5cfd960a8c97ac344d3d6dd97c06dbbafb3144e67d223f6504b233e0cf59328f015d918264df12b00aed8e34f8f
+DIST sphinx-autoapi-3.3.0.gh.tar.gz 70367 BLAKE2B 8e4efd0722b8ffff31816839b88fc1dadd0bbb10143a2361cd040f5bafa806d128b288a0acd77b9cc881c7e45a47e2802f666486f07f705d0aa0312ae840da9c SHA512 fec162717137ff71d196feeecdb84a3fa953471c06a0bf8a586cc5d5f6ecece09b6ac20928039e8cfbd4eeb060e6cf0c1e633ffed2509ad760f1796bd1e10a47
 EBUILD sphinx-autoapi-3.2.1.ebuild 1200 BLAKE2B 6d592fea773727b4882b9a746b8ccfa698cdaad175f5f5f69c4402033f421e9f11405f705159bf0fb919c344b789a2e1b04b072f10fd6ba015b72b5c998dd56e SHA512 ad99a6e142a665cfa937f9cfbb28ade0a05c769fd21ac4f574e392c59f5e73351e463ce73320809c3c6beaa14831daec3e37615828bbc99628b9dfe2b076be29
+EBUILD sphinx-autoapi-3.3.0.ebuild 1204 BLAKE2B 3f9e2e6a0d06b2c1b4ff703f44335f08cc4ad0680e50b42061be6faf3794180cff23e708546bdca7ab79233b43d1675deaae31e19e621e524d77138d5dae312d SHA512 29b68725683c54a6e3c5a930badcf5269185b3650b7aac19d4b8302de12fb612821d86116224112fc6e1fbc8594c060801cd3a50b0adb6624285c421f426dafb
 MISC metadata.xml 769 BLAKE2B 6f85e487a2d2def289bb54a6addc2338bb8af85b323ec1c95851945f9c407ec22bfadd8079ac8b6e00cfbc85caa0e2b09d82329f1f87a365fc44b69c7bcd9a20 SHA512 68f02a5f98234c2a5cb15aa04ce90077b154a7e3a7a69dc0a1d0a6b5c7b42c60624878a7e2fff1576c8b586fc15e7ef042942274d4e8473835bb3d8bfdbd8393
diff --git a/dev-python/sphinx-autoapi/sphinx-autoapi-3.3.0.ebuild b/dev-python/sphinx-autoapi/sphinx-autoapi-3.3.0.ebuild
new file mode 100644
index 000000000000..2dfb0a4c4c8b
--- /dev/null
+++ b/dev-python/sphinx-autoapi/sphinx-autoapi-3.3.0.ebuild
@@ -0,0 +1,50 @@
+# Copyright 2022-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit distutils-r1
+
+DESCRIPTION="A new approach to API documentation in Sphinx"
+HOMEPAGE="
+	https://sphinx-autoapi.readthedocs.io/
+	https://github.com/readthedocs/sphinx-autoapi/
+	https://pypi.org/project/sphinx-autoapi/
+"
+# sdist is missing docs, as of 2.1.0
+SRC_URI="
+	https://github.com/readthedocs/sphinx-autoapi/archive/v${PV}.tar.gz
+		-> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86"
+
+RDEPEND="
+	>=dev-python/astroid-3.0.0[${PYTHON_USEDEP}]
+	dev-python/pyyaml[${PYTHON_USEDEP}]
+	>=dev-python/sphinx-6.1.0[${PYTHON_USEDEP}]
+"
+
+BDEPEND+="
+	test? ( dev-python/beautifulsoup4[${PYTHON_USEDEP}] )
+"
+
+DOCS=( README.rst CHANGELOG.rst )
+
+distutils_enable_tests pytest
+
+python_test() {
+	local EPYTEST_DESELECT=(
+		# Internet
+		tests/python/test_pyintegration.py::TestPEP695::test_integration
+		tests/python/test_pyintegration.py::TestPipeUnionModule::test_integration
+		"tests/test_integration.py::TestExtensionErrors::test_extension_setup_errors[dotnetexample"
+	)
+
+	distutils-r1_python_test
+}
diff --git a/dev-python/sphinx-autodoc-typehints/Manifest b/dev-python/sphinx-autodoc-typehints/Manifest
index ddadc59121e6..75382512fb59 100644
--- a/dev-python/sphinx-autodoc-typehints/Manifest
+++ b/dev-python/sphinx-autodoc-typehints/Manifest
@@ -1,3 +1,5 @@
 DIST sphinx_autodoc_typehints-2.2.3.tar.gz 40394 BLAKE2B eece3fd99898bf6c93561b0269a7cae2d9b5bd7868ef3d9cd61868b57b9435ef255731db7fdbde2cf05b1f1ed1c8864060fd15ad5b44bbd122f2c2d4fd264aeb SHA512 8a39129ae3e90703c7de8d25c7616256b4d203f6e3c6971f382265361236e7606fa16169e189ca47cd4f1dfdf27a98a16c7b92ce409e2431886e4dacd0159fcf
+DIST sphinx_autodoc_typehints-2.3.0.tar.gz 40709 BLAKE2B ef1b606cf6a643f87271fb033bac4d06f83b2be9f73b765064757ff0c1dceb2124841b2f6bb674deb20e39a4d19386fea8c85f0cdb417eeb3d84da19e2bf609e SHA512 f4ee3e0eb51fd63d4cf31f2eed9b9d06cc2dc48a3f3427763e86dba8910ea02c9e31bd8d30e8d0b3494e71fb104d51904400ce96d71270e1e422f44a317de80a
 EBUILD sphinx-autodoc-typehints-2.2.3.ebuild 1067 BLAKE2B 218eb8d8c6d1fc4b5458751c276e99de75efd1d4466452910499021cdc1f1a9418f97203a4ddd163aad458ad81d89973e26ff8b401e660b925137e840d832cb3 SHA512 a17094710d36c11e9c4f0eb656fab4464277019dcd2f88baf131e4dfc580bcc9cb002f94bcb2c1aeba2d38d6d0d3c7893eafd07c8502a7ecebe94c85fbfcc1bf
+EBUILD sphinx-autodoc-typehints-2.3.0.ebuild 1074 BLAKE2B c22a1519062f4fd3cd5e9fa4e2f9d71ee093fa358ebf6b9e000b243d92251fb366c76099c9e95be13e2e542d4e91a3ea180a9a6293781dab0d5db1b6aa04b537 SHA512 3774856f78cd0f7d64067af2a8409986b3df143eae5010eaa15403434fcd5f4e9ab2029e180dd290b32a3f21de330f962f3617585c1dbc714fae8b247f7bc31d
 MISC metadata.xml 682 BLAKE2B f8b48894f28411a17c73956bb75d43906c893b33d3dc611dfcc46e7a71ac43824aa54f660ab4f49c9870248b2b9ff405a2a3229f92975337e69201868eed3378 SHA512 87a0ea2b2e4cb2b5f0d1593b2c4bd96b46dabb8baae71a6ba18cfd83dedb2a1d5f0ae0f8711144967a5d44015e9ae7ca013dc0aa54e20604633ae062d95649ef
diff --git a/dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-2.3.0.ebuild b/dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-2.3.0.ebuild
new file mode 100644
index 000000000000..f6053e2167f7
--- /dev/null
+++ b/dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-2.3.0.ebuild
@@ -0,0 +1,44 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Type hints support for the Sphinx autodoc extension"
+HOMEPAGE="
+	https://github.com/tox-dev/sphinx-autodoc-typehints/
+	https://pypi.org/project/sphinx-autodoc-typehints/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ia64 ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+	>=dev-python/sphinx-7.1.2[${PYTHON_USEDEP}]
+"
+# skipping optional test dep on dev-python/nptyping as that package
+# is horribly broken and on its way out
+BDEPEND="
+	dev-python/hatch-vcs[${PYTHON_USEDEP}]
+	test? (
+		>=dev-python/sphobjinv-2.3.1[${PYTHON_USEDEP}]
+		>=dev-python/typing-extensions-4.5[${PYTHON_USEDEP}]
+	)
+"
+
+distutils_enable_tests pytest
+
+python_test() {
+	local EPYTEST_DESELECT=(
+		# this package is addicted to Internet
+		tests/test_sphinx_autodoc_typehints.py::test_format_annotation
+	)
+
+	local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+	epytest
+}
diff --git a/dev-python/spyder-kernels/Manifest b/dev-python/spyder-kernels/Manifest
index 233047bf7818..23b5dac5b9c4 100644
--- a/dev-python/spyder-kernels/Manifest
+++ b/dev-python/spyder-kernels/Manifest
@@ -1,5 +1,7 @@
 DIST spyder_kernels-2.5.2.tar.gz 99972 BLAKE2B 178f175fe03fd2b7871681ae30d10b62a4daf9ee606477eab4f88a4d81d2692b80cdcf4f9b6d46c4cfc0394b98d798e93dda870a3f1cbe6f77e243fd2b06d97c SHA512 4cf5462d6a6e72bf13f9890fbc5a4008788e132ee3315b0ad01a00beff6b78c63f47b7b5d19be601b64984196cc1a5c4706a4c5bbe878d938e487ae9ddd9f1fc
+DIST spyder_kernels-3.0.0.tar.gz 242868 BLAKE2B 7cf667ce42d9f0a1c6b0df337c98a702588c546eeedfeb8150cea560c7ba5f0049ccb76f1342584f7a6cf9bf400ed2d1dbbad12f5b39ae3a3343e3449aed3414 SHA512 42c176d6c8c410b375342c2fed07dd5ff6440e857dac06097d55c1f3d34bed6d51873833523b798316f100d3f226f78cf76d661a30c7e968683eaad622d5c994
 DIST spyder_kernels-3.0.0b9.tar.gz 242468 BLAKE2B b85c35f3b0fdffcb9105a6ff15388aeb0ea08f22647d654c37b9b7003d516310039dcb2d0cb41668f0903302b330dae289d9a7063ad9f970ac757f549b871a8d SHA512 c3c68b3a7c5bbd337b4461cedc388e8a9196e9ee72c2208036abe376d1621ab5db93c23935d1bf2d711a2d0de99d06599e2e0f102dc7a5d75d5c55f13cdb2a2e
 EBUILD spyder-kernels-2.5.2.ebuild 1938 BLAKE2B 85ae2fa2e266e20923cb90294ed0a91dd1f729c0e46483278527381dff6d948ddedcf09686194490f2fb045b2a9b3abcedb25ba5a3855323660b40eeebee8aa0 SHA512 7b29642447e6923f811be91a0ca7c09dec9d832f37cde4e927e5a9999179025566ba8b2e96233765a601d9754eec9831290c4243dad685609c907abd604ae374
+EBUILD spyder-kernels-3.0.0.ebuild 2882 BLAKE2B adf24d7b2746fb27df16e3cd5502d9830fcd2b1498486afb72e4e4e55929df65c3cb1102119dda92120d255baf4974782b2b4d9900fe6789b830731bf2dd9a97 SHA512 aed5bb88974594d894b67e1599d0c26f440c90500f02f85bfc3a1d461f7f7a0e60b303d711448f907b833e910c9e8fdadd1a8f8277df56b640e3271bf9b698b2
 EBUILD spyder-kernels-3.0.0_beta9.ebuild 2701 BLAKE2B 2a434017cadbf4c4b5962b6457ee4a51baa914253c2a21f4e388a4cb704cdf72d77aad767751d306f8abe151a979e24f0ae1de20199ee38b9d20a1bef3cb9aef SHA512 1cc51a63842cff621a6afc90e572abe1903d45005faa4356f021a808f8309731504064788628c03a511ec7f97ead1a0cd0348db47771d9e22f6067e98651cab8
 MISC metadata.xml 545 BLAKE2B 52be79edfbfdd86e7f895c53d088399b649901b76c7b69cf6363dfba6954971ce75b14624c2fc4254810112e32721e215255d59035f70850e1c1073f9784e65b SHA512 62ad725aab52d7071ccd5297bd15fcdd5e02e97854fc412a43b5c97b7995c77661251994850616743ce39eee0d0673b3bd4189b00876ed6124bf1871f6fb100c
diff --git a/dev-python/spyder-kernels/spyder-kernels-3.0.0.ebuild b/dev-python/spyder-kernels/spyder-kernels-3.0.0.ebuild
new file mode 100644
index 000000000000..0ff0db0d70d8
--- /dev/null
+++ b/dev-python/spyder-kernels/spyder-kernels-3.0.0.ebuild
@@ -0,0 +1,92 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( pypy3 python3_{10..12} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Kernels used by spyder on its ipython console"
+HOMEPAGE="
+	https://github.com/spyder-ide/spyder-kernels/
+	https://pypi.org/project/spyder-kernels/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="
+	dev-python/cloudpickle[${PYTHON_USEDEP}]
+	<dev-python/ipykernel-7[${PYTHON_USEDEP}]
+	>=dev-python/ipykernel-6.29.3[${PYTHON_USEDEP}]
+	<dev-python/ipython-9[${PYTHON_USEDEP}]
+	>dev-python/ipython-8.13.0[${PYTHON_USEDEP}]
+	<dev-python/jupyter-client-9[${PYTHON_USEDEP}]
+	>=dev-python/jupyter-client-7.4.9[${PYTHON_USEDEP}]
+	dev-python/matplotlib-inline[${PYTHON_USEDEP}]
+	>=dev-python/pyxdg-0.26[${PYTHON_USEDEP}]
+	>=dev-python/pyzmq-24.0.0[${PYTHON_USEDEP}]
+	>=dev-python/wurlitzer-1.0.3[${PYTHON_USEDEP}]
+"
+
+BDEPEND="
+	test? (
+		dev-python/cython[${PYTHON_USEDEP}]
+		dev-python/django[${PYTHON_USEDEP}]
+		dev-python/flaky[${PYTHON_USEDEP}]
+		dev-python/matplotlib[${PYTHON_USEDEP}]
+		dev-python/mock[${PYTHON_USEDEP}]
+		dev-python/numpy[${PYTHON_USEDEP}]
+		dev-python/scipy[${PYTHON_USEDEP}]
+		dev-python/pillow[${PYTHON_USEDEP}]
+		$(python_gen_cond_dep '
+			dev-python/h5py[${PYTHON_USEDEP}]
+			dev-python/pandas[${PYTHON_USEDEP}]
+			dev-python/xarray[${PYTHON_USEDEP}]
+		' 'python*')
+	)
+"
+
+distutils_enable_tests pytest
+
+python_test() {
+	local EPYTEST_DESELECT=(
+		# we no longer package distributed, and also removed dependency on dask
+		spyder_kernels/console/tests/test_console_kernel.py::test_dask_multiprocessing
+
+		# RuntimeError: There is no current event loop in thread 'MainThread'.
+		# https://bugs.gentoo.org/834893
+		spyder_kernels/console/tests/test_console_kernel.py::test_cwd_in_sys_path
+		spyder_kernels/console/tests/test_console_kernel.py::test_multiprocessing
+		spyder_kernels/console/tests/test_console_kernel.py::test_multiprocessing_2
+		spyder_kernels/console/tests/test_console_kernel.py::test_runfile
+		spyder_kernels/console/tests/test_console_kernel.py::test_np_threshold
+		spyder_kernels/console/tests/test_console_kernel.py::test_turtle_launch
+		spyder_kernels/console/tests/test_console_kernel.py::test_matplotlib_inline
+
+		# pydicom only packaged in ::sci at the moment
+		spyder_kernels/utils/tests/test_iofuncs.py::test_load_dicom_files
+	)
+	local EPYTEST_IGNORE=()
+
+	if ! has_version "dev-python/pandas[${PYTHON_USEDEP}]"; then
+		EPYTEST_IGNORE+=(
+			# require pandas
+			spyder_kernels/utils/tests/test_nsview.py
+		)
+	fi
+
+	if ! has_version "dev-python/h5py[${PYTHON_USEDEP}]"; then
+		EPYTEST_DESELECT+=(
+			# require hdf5
+			spyder_kernels/utils/tests/test_iofuncs.py::test_save_load_hdf5_files
+			spyder_kernels/utils/tests/test_dochelpers.py
+		)
+	fi
+
+	local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+	epytest
+}
diff --git a/dev-python/sqlalchemy/Manifest b/dev-python/sqlalchemy/Manifest
index 36aee3509df0..3208ec193f7f 100644
--- a/dev-python/sqlalchemy/Manifest
+++ b/dev-python/sqlalchemy/Manifest
@@ -4,7 +4,7 @@ DIST SQLAlchemy-2.0.29.tar.gz 9543967 BLAKE2B 04425618b6e0bcf98a7a32a4a6b1c09212
 DIST SQLAlchemy-2.0.31.tar.gz 9524110 BLAKE2B 521137ceaedd91a063bd336001e25a2946a3fefbc61c619b9b18c32f6e4dd2ff541e7cf3f0e0144024c0a6fe2c7aec743d1315b66c7da752d47abd81a6ab8ab4 SHA512 2e5f559ee2d1f28003a7436a6cb1997f22348447765422f4847adb3c5fc20b759d8c5c99ad4dae1c1f7863f3bc72f699e19b48d7797917a9a64ff4050e61d3d1
 DIST SQLAlchemy-2.0.32.tar.gz 9546691 BLAKE2B b6b28fa513e9dc6066db210cee8cbc94dd7c5dfd4f391d4a0ac6987241213afa547458b99df6373b2d1771e264fcedd1186fbd5a483382a7d09185f0f2fa9052 SHA512 12ac1804ba2ad9218d5307f4da87bf7c78b75525bd4b32770e77326eff6fc2ea679e595a1d367f8def3ab7e02ca954622ff16490c277ba6b8edca21efda7da62
 EBUILD sqlalchemy-1.4.52.ebuild 3436 BLAKE2B 60b2e39902de5052fefb003514f3fb232cfd23ade139e8c5fc4d2b625d8fd65a40b22d6ae2593c7ee6ea12d1ce1dd4b192dc95cde3485671f292d96e3bd8999f SHA512 1c3c8bbd5459690c689ada1cfa9c89cf58298c6ade58117b9331ce99f3a7df8307f8976baaf03911ba3c828da05cd6c8b743cd2bd5120a7dbcf9e42b35fcc7a1
-EBUILD sqlalchemy-1.4.53.ebuild 3438 BLAKE2B 605188ce1c6b4f09199f6cb497cb2336b7825d8dfc856efcc86013bc4afea44f44e2109bc4ca41b8773fedde1940bacbcdb840c34eba87944e4aadbdc355dde7 SHA512 d55cf6da538cd2737a425d0d302f2364cc81c32e90d1a8e75f4a5565d956c92e225d73295b2a6d77de13ee4e2d50af8e61faeccfab688153623232f4b433a32d
+EBUILD sqlalchemy-1.4.53.ebuild 3437 BLAKE2B 47754cd23746113310cc0042cce769cd923205a62874521b53f9cc7bdbe0dcc3e2a384c2ca7c1c060b657e28872be4d7500d74946efae43006cfcd0949b0f57e SHA512 83519c2618215d5d35560277a30927693209f532816fa4912f8dd73b7881f98b81c4cc18ecf6d8d9e6a979b4b9610f6d4784167800ed758b112a4a9d95946b9a
 EBUILD sqlalchemy-2.0.29.ebuild 3954 BLAKE2B 9bce2efb81f5909ecb56762d4ab38fa16384109148131c76389b5bdf4f7644e1a6ed01a388d11a1cc975d7b55380e17cc7256bd38237f3b1cfe3c4634067ae97 SHA512 b655ead9dbfd58766b379a9f6f546185fd497ef478de0e323a5d87d8d5bd5698e5d503cb151a5c57c3b60241800826d53ec9779a38a2f4ac629b567809379c33
 EBUILD sqlalchemy-2.0.31.ebuild 3997 BLAKE2B 2f4a659420129953f37cdd70de61707e1161dd88400318d2d701c32aab4e647b2cbf2f26a0a5a76beb9d351830b2e762e9a675fc3e423908da324c816003284b SHA512 c66c8f7d0512cfc4f9612bdea6738fe8d68eb1e49004f7b0aac2d1af6e9443927a82ba0a8e1e14dc5d9a800dd8b0b5bc5751ee7a5652a39915bc0c7f14500449
 EBUILD sqlalchemy-2.0.32.ebuild 4104 BLAKE2B c622833ac25e1315ebb1d8db4d7c656619e08043d2313005533bbc2375eeaf8db8ff1616b6ad2abb0ec6cf6b69085740bfd422d0744223e599c2c7803464b2fd SHA512 b8d1e0eb7ab4638ffc4ca88851ed9f6a12b595a91a70650a531d2923c67d58ce17b542d8d48ab04a9733a14941f507b5ef2ebae0d55ee67a2de2ae19bc5c95b3
diff --git a/dev-python/sqlalchemy/sqlalchemy-1.4.53.ebuild b/dev-python/sqlalchemy/sqlalchemy-1.4.53.ebuild
index 252f78d3c4b0..c0eebfd288af 100644
--- a/dev-python/sqlalchemy/sqlalchemy-1.4.53.ebuild
+++ b/dev-python/sqlalchemy/sqlalchemy-1.4.53.ebuild
@@ -22,7 +22,7 @@ S="${WORKDIR}/${MY_PN}-${PV}"
 
 LICENSE="MIT"
 SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"
 IUSE="examples +sqlite test"
 
 BDEPEND="
diff --git a/dev-python/stripe/Manifest b/dev-python/stripe/Manifest
index 588cfcb46d62..07d04ae9b70f 100644
--- a/dev-python/stripe/Manifest
+++ b/dev-python/stripe/Manifest
@@ -1,5 +1,7 @@
 DIST stripe-10.7.0.tar.gz 1311319 BLAKE2B c593f9478e180b8965e6d4c93c58f0e539c0821b79c48893d65fa59f4a31d29eece26ab74113f251fa5da0620358bb45e9030e1a64aa17d189974f7c6250cfcf SHA512 2f0c6082cf292068a8790c7080e60c2b7fef2a16b5cf9fd31dabd1e7428b6317941cb64b32c7710d165a5b6b2da1c5899e5cfa88e354bc88c49c9513c25c58a4
 DIST stripe-10.8.0.tar.gz 1312236 BLAKE2B 72c8c111f86388a0e19ed5c5688ac8c8e5437251b1972aa4316dadccbecad03ad7db625c73110d6c617553eae15e1a5a7c571ff209ffa1ca4fa40f091c171361 SHA512 520df4a0866defc2efdaf4ad0aa5351df04669e9283298ff862a78f4d5894e5422eba48b4bb0654e1a1a41973dcd245bc4e37c3166210135c5864470fc0f7db8
+DIST stripe-10.9.0.tar.gz 1312738 BLAKE2B 6be3b40695842c164620a8abab4a8753c44cb68dcd39b7e8f62e5a359ae5ffa0faa6a8890a1b0965dd1b1f32c95fa857abe44003c94043d2e76c59a9d52fc152 SHA512 39946c7efcf7597347835495f80810987f6812be337b2f9d84bebe029b2f6d326c9a73ef0c06f3c86786f59a1fb7d227e6a0cb800b8101216df6d0fb05709ea8
 EBUILD stripe-10.7.0.ebuild 2479 BLAKE2B cd82ab86384acbeb76004d802a3d4f9f340f1fa1deb652e2cc18be4330c90dbce911925b0ae818f2e77569159ee9317995fa442b6fcc3f499b1d39ccd949101d SHA512 33ee1c037303d01e6b46961c28a890d6e8dcddb4ab07621db0bf6e347cc98d393b246077a9da4c6031b8871152fd2c520a8d63761def4e971a213e31f4885d1a
 EBUILD stripe-10.8.0.ebuild 2482 BLAKE2B d41cf1130ba524c02435e623798554a866081bd5b1932ad5bac674b789ae68df6cb444b3a968ab13cefd73da7205c69860939f4cebdc28ad62680cea45dd53a9 SHA512 ece77ea1c315f239297549734c61b1e9645ba881bc2eb487ebf50cfe213f847e3fbc5551a148e8ad2d43db5ddb66e1d05d49732192204ee94881b1cca7d2b7e7
+EBUILD stripe-10.9.0.ebuild 2482 BLAKE2B d41cf1130ba524c02435e623798554a866081bd5b1932ad5bac674b789ae68df6cb444b3a968ab13cefd73da7205c69860939f4cebdc28ad62680cea45dd53a9 SHA512 ece77ea1c315f239297549734c61b1e9645ba881bc2eb487ebf50cfe213f847e3fbc5551a148e8ad2d43db5ddb66e1d05d49732192204ee94881b1cca7d2b7e7
 MISC metadata.xml 673 BLAKE2B 6b85b1f88713d2365274fcff21648748039b48028b3c34c1192e16ca12d0f3b4d14ab13c7c2a744c381898ea0c1304bda8be52d3fadddc1a1b787f010b001398 SHA512 e3178927a69d14f59673acc5eaedda59db5a07e2145ed6fb0597363b60183cb3e7a7b0feefc1d4c9095d52ed96e0be32ef5dc23ad0c20fd6e6b33c830177c0be
diff --git a/dev-python/stripe/stripe-10.9.0.ebuild b/dev-python/stripe/stripe-10.9.0.ebuild
new file mode 100644
index 000000000000..dce53ce91aee
--- /dev/null
+++ b/dev-python/stripe/stripe-10.9.0.ebuild
@@ -0,0 +1,92 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Stripe Python bindings"
+HOMEPAGE="
+	https://github.com/stripe/stripe-python/
+	https://pypi.org/project/stripe/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE="telemetry"
+
+RDEPEND="
+	>=dev-python/requests-2.20[${PYTHON_USEDEP}]
+	>=dev-python/typing-extensions-4.5.0[${PYTHON_USEDEP}]
+"
+# please bump dev-util/stripe-mock dep to the latest version on every bump
+BDEPEND="
+	test? (
+		>=dev-util/stripe-mock-0.188.0
+		dev-python/aiohttp[${PYTHON_USEDEP}]
+		dev-python/anyio[${PYTHON_USEDEP}]
+		dev-python/httpx[${PYTHON_USEDEP}]
+		dev-python/pytest-mock[${PYTHON_USEDEP}]
+		dev-python/trio[${PYTHON_USEDEP}]
+		net-misc/curl
+	)
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+DOCS=( LONG_DESCRIPTION.rst CHANGELOG.md README.md )
+
+src_prepare() {
+	distutils-r1_src_prepare
+
+	if ! use telemetry; then
+		sed -i -e '/enable_telemetry/s:True:False:' stripe/__init__.py || die
+	fi
+}
+
+python_test() {
+	local EPYTEST_DESELECT=(
+		# exception message mismatch with aiohttp-3.10.0
+		"tests/test_integration.py::TestIntegration::test_async_timeout[asyncio-aiohttp]"
+	)
+
+	local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+	epytest tests -p anyio -p pytest_mock
+}
+
+src_test() {
+	local stripe_mock_port=12111
+	local stripe_mock_max_port=12121
+	local stripe_mock_logfile="${T}/stripe_mock_${EPYTHON}.log"
+	# Try to start stripe-mock until we find a free port
+	while [[ ${stripe_mock_port} -le ${stripe_mock_max_port} ]]; do
+		ebegin "Trying to start stripe-mock on port ${stripe_mock_port}"
+		stripe-mock --http-port "${stripe_mock_port}" &> "${stripe_mock_logfile}" &
+		local stripe_mock_pid=${!}
+		sleep 2
+		# Did stripe-mock start?
+		curl --fail -u "sk_test_123:" \
+			"http://127.0.0.1:${stripe_mock_port}/v1/customers" &> /dev/null
+		eend ${?} "Port ${stripe_mock_port} unavailable"
+		if [[ ${?} -eq 0 ]]; then
+			einfo "stripe-mock running on port ${stripe_mock_port}"
+			break
+		fi
+		(( stripe_mock_port++ ))
+	done
+	if [[ ${stripe_mock_port} -gt ${stripe_mock_max_port} ]]; then
+		eerror "Unable to start stripe-mock for tests"
+		die "Please see the logfile located at: ${stripe_mock_logfile}"
+	fi
+
+	local -x STRIPE_MOCK_PORT=${stripe_mock_port}
+	distutils-r1_src_test
+
+	# Tear down stripe-mock
+	kill "${stripe_mock_pid}" || die "Unable to stop stripe-mock"
+}
diff --git a/dev-python/twisted/Manifest b/dev-python/twisted/Manifest
index 30b1585a620e..2e8e9050984c 100644
--- a/dev-python/twisted/Manifest
+++ b/dev-python/twisted/Manifest
@@ -7,5 +7,5 @@ DIST twisted-24.3.0.tar.gz 3500456 BLAKE2B b2cebb2f3482dbeba250786b1977ddbb09e1a
 DIST twisted-24.7.0.tar.gz 3516844 BLAKE2B 169347260b473ea1c50806ce50324ebd51388186098886ccaad1f94e55f6b14eb7a7fc42728dbeaf4b5649d0e6dc1e4624cd5ab6d79feeaa733e18d09cfd689f SHA512 cd5a993c8f1dfdc82597bdc095e07c1016a2a86d1ce5b011b27f9f760db428fcba4579dda5733244979827f9c772c2480d1d419d2d24ae7af8697e2b8e852f62
 DIST twisted-regen-cache.gz 911 BLAKE2B ffd3fcda6c67ffe6fd3ef581c8d507548396b66ed0708e9a5c790095e579c0d5f0f71596acf05712989da2ddef2b8d437eca973bc4d80ef8a9fa852915f38305 SHA512 95a9b931c73017d16d1b5e6b41345dddffe62b6af1a8e93b5e40d06d3d15be17b0dd0181c767ffeeb791534d463764ef9e066fa6c2ee2ac4b53c86d1da8fce03
 EBUILD twisted-24.3.0.ebuild 4272 BLAKE2B 7781c1b0d434f67a36f64cea21bff67d3afd92f7636bc1d39429cff3537f1707963f03494721d210f311f3c4482cbe3d140290e25bc6932a72f501a86638453e SHA512 9c38da941311f9ac89e30933d6513ca79d8f1dd0a0c348757715bc82d4affcf911783eb6b7661b1b01b57f66ad8981dbf57a4851c82e1ea7ed9e6ae5040cd54d
-EBUILD twisted-24.7.0.ebuild 4704 BLAKE2B 2af2edb34d4673cb4ea6356c6092802960380b0c9dbd7e9c7fe8f962d52a95277c37b4dc83280537ea48aecbcfaf3dcdbb42254f0edc1ead9ab1dd5d51ecec10 SHA512 20a6c0b8a1baadffc169e7b67f8aa6d90a6cf189e41a81a5f8eb00f5a66cde16975811000fee20802f4aca17c53ac8314b2146432c00d65c35bd632587836d22
+EBUILD twisted-24.7.0.ebuild 4703 BLAKE2B 21fa9710ee102061095e005a2e0cf81172dcaafeb24e6cffe5a1cb7015d67a93c5e7f6289f674133a843d488ef618cef359a85bd00de464b5416ac58abbf98cf SHA512 31ab6c46ef0819166211e07edcefba37814cbc7c012f5e411810163b3342ad1fcd9d839a96b344bab4aad28ff01ee8d0da8c0dcefece8dc117ca4d18ba932b0a
 MISC metadata.xml 1231 BLAKE2B 60cd09e34c32152e6f08727c1281c65e871a51e64310a62a3104342fcb0e87e96b10cd4c7601668f054f9a2cb01fdf8ebeca3ed86b61ae2496a4d941897aa296 SHA512 800d9cd783d95cecb268362619deb346783149fa9226df714f9ce990da2d45edd3c8e5669e24ad15dfdf986a5816a5361c00f13719bb0dee3e6ae1578a889339
diff --git a/dev-python/twisted/twisted-24.7.0.ebuild b/dev-python/twisted/twisted-24.7.0.ebuild
index ace722083e85..c8ea06995968 100644
--- a/dev-python/twisted/twisted-24.7.0.ebuild
+++ b/dev-python/twisted/twisted-24.7.0.ebuild
@@ -22,7 +22,7 @@ SRC_URI+="
 
 LICENSE="MIT"
 SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~arm64-macos ~x64-macos"
 IUSE="conch http2 serial ssl test"
 RESTRICT="!test? ( test )"
 
-- 
cgit v1.2.3