summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
authorLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2025-09-27 07:06:29 +0000
committerLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2025-09-27 07:06:29 +0000
commit3a66d6fb9b029114cad69929d75a4207900ef77b (patch)
tree40f519efe399763f81361bea5b8be498990bb29d /dev-python
parent957793f7a75ced6788bd13ce9e33cf57740bbc27 (diff)
downloadbaldeagleos-repo-3a66d6fb9b029114cad69929d75a4207900ef77b.tar.gz
baldeagleos-repo-3a66d6fb9b029114cad69929d75a4207900ef77b.tar.xz
baldeagleos-repo-3a66d6fb9b029114cad69929d75a4207900ef77b.zip
Adding metadata
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/boto3/Manifest1
-rw-r--r--dev-python/boto3/boto3-1.40.40.ebuild53
-rw-r--r--dev-python/botocore/Manifest1
-rw-r--r--dev-python/botocore/botocore-1.40.40.ebuild67
-rw-r--r--dev-python/cmd2/Manifest1
-rw-r--r--dev-python/cmd2/cmd2-3.0.0_rc1.ebuild56
-rw-r--r--dev-python/dulwich/Manifest1
-rw-r--r--dev-python/dulwich/dulwich-0.24.2.ebuild118
-rw-r--r--dev-python/hcloud/Manifest1
-rw-r--r--dev-python/hcloud/hcloud-2.7.0.ebuild51
-rw-r--r--dev-python/jupyterlab/Manifest1
-rw-r--r--dev-python/jupyterlab/jupyterlab-4.4.9.ebuild76
-rw-r--r--dev-python/libcst/Manifest1
-rw-r--r--dev-python/libcst/libcst-1.8.5.ebuild190
-rw-r--r--dev-python/notebook/Manifest1
-rw-r--r--dev-python/notebook/notebook-7.4.6.ebuild63
-rw-r--r--dev-python/phonenumbers/Manifest1
-rw-r--r--dev-python/phonenumbers/phonenumbers-9.0.15.ebuild39
-rw-r--r--dev-python/pyperclip/Manifest1
-rw-r--r--dev-python/pyperclip/pyperclip-1.11.0.ebuild61
-rw-r--r--dev-python/redis/Manifest1
-rw-r--r--dev-python/redis/redis-7.0.0_beta2.ebuild107
-rw-r--r--dev-python/securesystemslib/Manifest1
-rw-r--r--dev-python/securesystemslib/securesystemslib-1.3.1.ebuild41
-rw-r--r--dev-python/sigstore-protobuf-specs/sigstore-protobuf-specs-0.5.0.ebuild2
-rw-r--r--dev-python/simplejson/Manifest1
-rw-r--r--dev-python/simplejson/simplejson-3.20.2.ebuild37
-rw-r--r--dev-python/spyder-kernels/Manifest1
-rw-r--r--dev-python/spyder-kernels/spyder-kernels-3.1.0_beta2.ebuild85
-rw-r--r--dev-python/sqlglot/Manifest3
-rw-r--r--dev-python/sqlglot/sqlglot-27.17.0.ebuild175
-rw-r--r--dev-python/sqlglot/sqlglot-27.19.0.ebuild (renamed from dev-python/sqlglot/sqlglot-27.16.3.ebuild)0
-rw-r--r--dev-python/starlette/starlette-0.47.3.ebuild2
-rw-r--r--dev-python/types-docutils/types-docutils-0.22.0.20250919.ebuild2
-rw-r--r--dev-python/types-psutil/types-psutil-7.0.0.20250822.ebuild2
-rw-r--r--dev-python/types-setuptools/types-setuptools-80.9.0.20250822.ebuild2
-rw-r--r--dev-python/typing-extensions/typing-extensions-4.15.0.ebuild2
-rw-r--r--dev-python/xcffib/Manifest1
-rw-r--r--dev-python/xcffib/xcffib-1.11.1.ebuild45
39 files changed, 1111 insertions, 183 deletions
diff --git a/dev-python/boto3/Manifest b/dev-python/boto3/Manifest
index 09742f2c2d39..7bf932417a7e 100644
--- a/dev-python/boto3/Manifest
+++ b/dev-python/boto3/Manifest
@@ -12,3 +12,4 @@ DIST boto3-1.40.36.gh.tar.gz 1002110 BLAKE2B 2e6e4a3d0d0c5a835f2f0ac8189c696e7df
DIST boto3-1.40.37.gh.tar.gz 1002433 BLAKE2B 1455b91f685be5a50daa48de432998ad77e2d810106e55f9bc216506f85321220ec2882221ad1b41eb54d71675e0513ba1689c3ef83ba068fc361d063643ccbf SHA512 fe8fe11752acf1ca3d9814ac4512f3516890996036d825de3c248bbe72873e1509181fa4e7ab2e16f2d22bf0ba02f90409835aa111cdd37bf882abe4b2a00624
DIST boto3-1.40.38.gh.tar.gz 1002682 BLAKE2B 079377e6d6d5fb0f4622b9a8023fecce859cb4ee6fa4d971e32b4f41113ac0d170a4a511c781e8361d5be7ef677db207914620f228eff571a090fcb26e46092d SHA512 b63d594175a2d68a6d9e86bb59094360827ff312e9b31b88d64fc385fa4571dcff03de35ec725280881862e9a53637de6fb2c80450e8831da464b73de9206a67
DIST boto3-1.40.39.gh.tar.gz 1002988 BLAKE2B 944ac6019c461af48526851d526cc397bd300b8e396d5935828564ed2be483971a132b29325d171d82f3bf89c22347dc1ac5ec0f0fb7ba5d4057ccc22a523990 SHA512 ca48b1e4115b55a3309636fc7d3dcea8e59a5705775455513ea74acfb958dc7d770f908d0c7c2bbbc04f6661085cfd15dbf9ef9c4d94c4ad7dc690ed5d680ac5
+DIST boto3-1.40.40.gh.tar.gz 1003705 BLAKE2B b7a555bb3ce92d01a14f3bc43a689452ed7f1cdef7e8f165ed4ee9b5625ab8c064c4ba541c67f301d938d6a3886301f1c563c0f77a72bae19c88ff60f35fdcfa SHA512 47172d50ce7203abb5e85e7e66da93e388a6f28a244fe0e654f619dee5388961d080ff04ff7126c09bc52af7c3f03cd4c334fc757bc63fbfb2572cab668b7b26
diff --git a/dev-python/boto3/boto3-1.40.40.ebuild b/dev-python/boto3/boto3-1.40.40.ebuild
new file mode 100644
index 000000000000..90fb2a42e6e5
--- /dev/null
+++ b/dev-python/boto3/boto3-1.40.40.ebuild
@@ -0,0 +1,53 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{11..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="The AWS SDK for Python"
+HOMEPAGE="
+ https://github.com/boto/boto3/
+ https://pypi.org/project/boto3/
+"
+SRC_URI="
+ https://github.com/boto/boto3/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux"
+
+RDEPEND="
+ >=dev-python/botocore-${PV}[${PYTHON_USEDEP}]
+ >=dev-python/jmespath-0.7.1[${PYTHON_USEDEP}]
+ >=dev-python/s3transfer-0.14.0[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ # don't lock versions to narrow ranges
+ sed -e '/botocore/ d' \
+ -e '/jmespath/ d' \
+ -e '/s3transfer/ d' \
+ -i setup.py || die
+
+ # do not rely on bundled deps in botocore (sic!)
+ find -name '*.py' -exec sed -i \
+ -e 's:from botocore[.]vendored import:import:' \
+ -e 's:from botocore[.]vendored[.]:from :' \
+ {} + || die
+
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ epytest tests/{functional,unit}
+}
diff --git a/dev-python/botocore/Manifest b/dev-python/botocore/Manifest
index 7c45bbcaa9d7..52e22d7a61c7 100644
--- a/dev-python/botocore/Manifest
+++ b/dev-python/botocore/Manifest
@@ -12,3 +12,4 @@ DIST botocore-1.40.36.gh.tar.gz 15147138 BLAKE2B 857c7632ff97bd7d75e56e4ac0347a3
DIST botocore-1.40.37.gh.tar.gz 15152557 BLAKE2B b0ed767f10514f099730e08ef6c858838c1f2f14c55a104b9210803a94761b20b0d5ca62e21a891382c77ebac1f654c25ae14389b97ec4d196894ddb6c81bfb1 SHA512 adbc792f180bb26c3aaf48c36d9e12978e7a74d23383b02b791128fc7d07c2114888020c39a8dc5c2918ad42ab658813f9836bee181dec20d85e9129c743834c
DIST botocore-1.40.38.gh.tar.gz 15154440 BLAKE2B a43db5c4fc5998b4160f4f07a933a4157df833c65762bcf73fab6fdf9d44978d6c139bd0a3d6967640fb7114b3fa048f78aebd420f47c207b7af52cfd1bd4371 SHA512 681575e86ff0efc53008e160637c36c84197c4d043039b8cc42bb144b651bc1186c7183a96a02ac12ecf6cf184dd7cc30277af17e878b4b03be03df31d322a79
DIST botocore-1.40.39.gh.tar.gz 15154528 BLAKE2B d5f580048ede0cda636ca74a18fafe100e6c70ba690721e3c8c30d7abbd5a1641549e926a67780c082e192bb653e8d54cfa1c2189ad2a5fe2a835cfe88bb3d9a SHA512 5032f1e6903d62c89df28c15586595f478d679e54c47088dd715a2005cf91c7353620d7b572d073232a7f023d574f16ceb51cc4449038178ac6c5cc342c1df3b
+DIST botocore-1.40.40.gh.tar.gz 15161555 BLAKE2B 099fc06007aedcb65b73de369b00d799ce7166f7ba4838a75abb2158f13dceade699b47eb5bff3cde48b7e5316eb12c2ba08ab22cf642bbaf26907454fe1e393 SHA512 4625752f7d2593a12451d257002dabc8ec3aa84267a1466a8e5e767878aae0bf875ae82d899fffc6b740ac957cd08fbd1baafdb4b82c2ebbaaf6f5d14db5eba6
diff --git a/dev-python/botocore/botocore-1.40.40.ebuild b/dev-python/botocore/botocore-1.40.40.ebuild
new file mode 100644
index 000000000000..a931fcaefec4
--- /dev/null
+++ b/dev-python/botocore/botocore-1.40.40.ebuild
@@ -0,0 +1,67 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{11..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="Low-level, data-driven core of boto 3"
+HOMEPAGE="
+ https://github.com/boto/botocore/
+ https://pypi.org/project/botocore/
+"
+SRC_URI="
+ https://github.com/boto/botocore/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~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_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ # unpin deps
+ sed -i -e "s:>=.*':':" setup.py || die
+
+ # unbundle deps
+ rm -r botocore/vendored || die
+ find -name '*.py' -exec sed -i \
+ -e 's:from botocore[.]vendored import:import:' \
+ -e 's:from botocore[.]vendored[.]:from :' \
+ {} + || die
+
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # rely on bundled six
+ tests/functional/test_six_imports.py::test_no_bare_six_imports
+ tests/functional/test_six_threading.py::test_six_thread_safety
+ )
+
+ epytest tests/{functional,unit}
+}
diff --git a/dev-python/cmd2/Manifest b/dev-python/cmd2/Manifest
index 0c3e77cb51a9..e99538982e96 100644
--- a/dev-python/cmd2/Manifest
+++ b/dev-python/cmd2/Manifest
@@ -2,3 +2,4 @@ DIST cmd2-2.6.2.tar.gz 592373 BLAKE2B 917ecd684c60c0a6c1b273ef52fa1e317f71522dfd
DIST cmd2-2.7.0.tar.gz 593131 BLAKE2B 2488c3c9d8e770fca8046fbd5d9537349cfd2b45cb32ed5775cd0b451ae25425909fadb7414d202aa52587e691e2ef8a39b3fe691e345497a0523e17281228df SHA512 6d2e7f3c9e125782da8983fb27a53d5db0c0cc35a8c86eb129961596ff3ff5751622894ee8fb355b0330de3b2cbb7cf18eddaba2ad0b8781e80b479cf53a1c89
DIST cmd2-3.0.0b1.tar.gz 1017844 BLAKE2B 607ec848de6cfb35682cd8b3a8271d1232c463f3b623a1f6fb17f801b85474d4896c1e85058519d3e946c0fcb9ea4c3fdfe4e4d69dff14918817f02cdb4ee4d6 SHA512 c7443bccb36b7d0bc688f434a1fe77962cd31f33c21ca4dc11847e8e9590bc15920d0afbbcef322f54fe1759de023cea463fb16b4318df140a0e7fb06e561699
DIST cmd2-3.0.0b2.tar.gz 1007751 BLAKE2B 006373e3ff2d57c67e5824089c408dacd45567e9e654760ac552b5f9628ed97cf580a2878d1426ddf6d1e7aed287633b969e13acc8eb6304957425f180a55a64 SHA512 98b533fc9a826c3df27a33fda527e46b25fde0e2caa2b94f7668b4ea1c56ea3eaa496f7f5664bc9c2ccd4ffdef6382fb060c9b73d254e9bdaa29047ec26de535
+DIST cmd2-3.0.0rc1.tar.gz 1001904 BLAKE2B 5be49c9cb1d474df7c25b0be719f203c5ffdf2d3fb76c28dacc7c1144105c05a4d97d163725cb522c4aae3d12b69c865945d26d66b4ae34fbecd34e735b76918 SHA512 bdbf01757657be026f8ff3fa54a827aadc07ae0f56190cc217c54aab3a25ba536bca3d703dd6ea6f4dad1bab0fe66fb0fdfc0df9d559907b11696f57af98a5e8
diff --git a/dev-python/cmd2/cmd2-3.0.0_rc1.ebuild b/dev-python/cmd2/cmd2-3.0.0_rc1.ebuild
new file mode 100644
index 000000000000..6d473f17d099
--- /dev/null
+++ b/dev-python/cmd2/cmd2-3.0.0_rc1.ebuild
@@ -0,0 +1,56 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{11..14} )
+
+inherit distutils-r1 optfeature virtualx pypi
+
+DESCRIPTION="Extra features for standard library's cmd module"
+HOMEPAGE="
+ https://github.com/python-cmd2/cmd2/
+ https://pypi.org/project/cmd2/
+"
+
+LICENSE="MIT"
+SLOT="0"
+
+RDEPEND="
+ >=dev-python/pyperclip-1.8[${PYTHON_USEDEP}]
+ >=dev-python/rich-14.1.0[${PYTHON_USEDEP}]
+ >=dev-python/rich-argparse-1.7.1[${PYTHON_USEDEP}]
+"
+# pyperclip uses clipboard backends in the following preference order:
+# pygtk, xclip, xsel, klipper, qtpy, pyqt5, pyqt4.
+# klipper is known to be broken in Xvfb, and therefore causes test
+# failures. to avoid them, we must ensure that one of the backends
+# preferred to it is available (i.e. xclip or xsel).
+BDEPEND="
+ dev-python/setuptools-scm[${PYTHON_USEDEP}]
+ test? (
+ || (
+ x11-misc/xclip
+ x11-misc/xsel
+ )
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-{mock,rerunfailures} )
+distutils_enable_tests pytest
+
+src_test() {
+ # tests rely on very specific text wrapping...
+ local -x COLUMNS=80
+ virtx distutils-r1_src_test
+}
+
+python_test() {
+ # TODO: tests_isolated?
+ nonfatal epytest -o addopts= --reruns=5 tests || die
+}
+
+pkg_postinst() {
+ optfeature "IPython shell integration" dev-python/ipython
+}
diff --git a/dev-python/dulwich/Manifest b/dev-python/dulwich/Manifest
index 23e450dc466e..0e8e35299319 100644
--- a/dev-python/dulwich/Manifest
+++ b/dev-python/dulwich/Manifest
@@ -1,6 +1,7 @@
DIST autocfg-1.5.0.crate 18729 BLAKE2B 27580e39b366c6fca02c9db09997b6415c409f12068f1249184268bf96fd85ba659e25ec730f99e10caf452f96c486f3d7442bf09c4552b5f39519b21d6f88cc SHA512 f279856f234d39d369623576acf9546a1ca24d7fe449f36d4fb93ea75a7efaf2c4015b9616a69bbbed358c5e5882e16b045352f046aa4c049b3d13b1e8257b08
DIST dulwich-0.23.2.tar.gz 704361 BLAKE2B 2ba377c86a96069efa93f0e227297ba679bf04b346fe799f7b36a54bb38b51b9178c407d373a5f3e4adc4188d268ac3705a16ef98e84758cc3b8c2eaff1f5ecd SHA512 b3da400f7b89b0afd1ad14623a2a8765f2c36131f2b401ed2267637d961a65e9be32c6bb56c555d7c649d8d828088a83b433a66669b48e2a295b782fffcf9c22
DIST dulwich-0.24.1.tar.gz 806136 BLAKE2B fc8f8534c8df24cdd3c2ec6b8ce0a8c85d68fbc12aba057d1853973ea7b4a2cc0637dafa8e7c4d369b08e2d2cf5e145d323af1f23ea2afd95195072e421b3963 SHA512 705096f4822fbf8530deed78bbf2c41bf9143b19432e93a428343d0faf1ae25f6865fa777c0f1c35c94f3e6bc8fd12ab1b6f6bdaa80694bde4926846ec4f1934
+DIST dulwich-0.24.2.tar.gz 883284 BLAKE2B 4ab3488c864c835b97a60d73bad69ec3fab9303770b8edfb672aa1a3f7ee2d7331e473a194fab0dc6c6cd5c7f8be39291e00a82ee2c97be0b787fb082f644db2 SHA512 baff0ecd16669c442f567f295ec4a459af47ee59c47f6f1cf79f0b619e9774d92504b9b0e6f0d1b64fb5a4038df9522251d2f34aada2d56c217ea401df22c22f
DIST heck-0.5.0.crate 11517 BLAKE2B 5365ec43b2239a76b33a174f1a4292ece4147f9d382a68c6c60db78fdc8bad0afb1d51a65bcb25e96675372faa4ea37c318265030b0546ba51942f7c929e1835 SHA512 f044fc9c3d22466629fd8f772ec0555350fd611c0cfadca51d99a3d2f10e155f77c1091916c8a95a6b9b499f366c2e99a5fbf45b010f988bfb9b2501bf9f6a76
DIST indoc-2.0.6.crate 17164 BLAKE2B 1a6cff95bc12ea885ef36b935bf4f1c7870d65be0ff31ffc67dcab904fa80215c1254c1803c5d0c5686252addfad3512e9e1ec79d3edcba026a879f4706926d1 SHA512 e2ea2e5c8226c802bbe0631c1a99d2edd088cbafbf978b2a7b71c7c7f47754c6d4653f466e286441b61cc46def1c7f7a02d4785caab93a61dd785211dba7d1a9
DIST libc-0.2.174.crate 779933 BLAKE2B 20ffcbbcad6961e732521940f0595039dc0576d85b2d3b2ad3f1decd37571132a4cd7505b2e108078a4379fc4cec46290b5633bcbcc6e7009c3b474c1a852628 SHA512 243f2ffd5741ef859e4dc5b7ee0396071943b1d10429efcaecb322957e256c4be88a7a649029dfd47e6456acc73ee257893fb6c4e8b4d0fe66a12bc5d1c13c73
diff --git a/dev-python/dulwich/dulwich-0.24.2.ebuild b/dev-python/dulwich/dulwich-0.24.2.ebuild
new file mode 100644
index 000000000000..511e952d582d
--- /dev/null
+++ b/dev-python/dulwich/dulwich-0.24.2.ebuild
@@ -0,0 +1,118 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+CARGO_OPTIONAL=1
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+CRATES="
+ autocfg@1.5.0
+ heck@0.5.0
+ indoc@2.0.6
+ libc@0.2.174
+ memchr@2.7.5
+ memoffset@0.9.1
+ once_cell@1.21.3
+ portable-atomic@1.11.1
+ proc-macro2@1.0.95
+ pyo3-build-config@0.25.1
+ pyo3-ffi@0.25.1
+ pyo3-macros-backend@0.25.1
+ pyo3-macros@0.25.1
+ pyo3@0.25.1
+ quote@1.0.40
+ syn@2.0.104
+ target-lexicon@0.13.2
+ unicode-ident@1.0.18
+ unindent@0.2.4
+"
+
+inherit cargo distutils-r1 pypi
+
+DESCRIPTION="Pure-Python implementation of the Git file formats and protocols"
+HOMEPAGE="
+ https://github.com/jelmer/dulwich/
+ https://pypi.org/project/dulwich/
+"
+SRC_URI+="
+ native-extensions? (
+ ${CARGO_CRATE_URIS}
+ )
+"
+
+LICENSE="GPL-2+ Apache-2.0"
+LICENSE+=" native-extensions? ("
+# Dependent crate licenses
+LICENSE+=" Apache-2.0-with-LLVM-exceptions MIT Unicode-3.0"
+LICENSE+=" )"
+
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
+IUSE="doc examples +native-extensions test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-python/urllib3-2.2.2[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ >=dev-python/typing-extensions-4.0[${PYTHON_USEDEP}]
+ ' 3.11)
+"
+BDEPEND="
+ native-extensions? (
+ ${RUST_DEPEND}
+ dev-python/setuptools-rust[${PYTHON_USEDEP}]
+ )
+ test? (
+ ${RDEPEND}
+ dev-python/fastimport[${PYTHON_USEDEP}]
+ dev-python/gpgmepy[${PYTHON_USEDEP}]
+ dev-python/paramiko[${PYTHON_USEDEP},server(+)]
+ )
+"
+
+distutils_enable_sphinx docs
+
+QA_FLAGS_IGNORED="usr/lib.*/py.*/site-packages/dulwich/_.*.so"
+
+pkg_setup() {
+ # avoid rust_pkg_setup which will die when there's no Rust found
+ if use native-extensions ; then
+ rust_pkg_setup # implicitly inherited through cargo
+ fi
+}
+
+src_unpack() {
+ cargo_src_unpack
+}
+
+python_compile() {
+ unset PURE
+ # TODO: enable Rust extensions
+ if ! use native-extensions; then
+ local -x PURE=1
+ fi
+
+ distutils-r1_python_compile
+}
+
+python_test() {
+ # remove interference from the tests that do stuff like user.name
+ unset GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL GIT_AUTHOR_DATE
+ unset GIT_COMMITTER_NAME GIT_COMMITTER_EMAIL GIT_COMMITTER_DATE
+ unset EMAIL
+ # Do not use make check which rebuilds the extension and uses -Werror,
+ # causing unexpected failures.
+ "${EPYTHON}" -m unittest -v tests.test_suite ||
+ die "tests failed with ${EPYTHON}"
+}
+
+python_install_all() {
+ if use examples; then
+ docompress -x "/usr/share/doc/${PF}/examples"
+ dodoc -r examples
+ fi
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/hcloud/Manifest b/dev-python/hcloud/Manifest
index 5a4fdea4b0c2..fc5ba9f3f7a2 100644
--- a/dev-python/hcloud/Manifest
+++ b/dev-python/hcloud/Manifest
@@ -1,2 +1,3 @@
DIST hcloud-python-2.5.4.gh.tar.gz 123092 BLAKE2B 0b5f9ae2c7c3d67c902e2d8b4d8915512eb253742ec49472d35183e7560dd96fd8c877c302b3d207a9ffe9650fefa6981a49519ea3256d3e18cf0c483a5e83bc SHA512 c824425e6d7be48b47fcc647a56c60bdfce18736fc4d0cfcc93f5a58e3b60f8cf1f28e892c27044c564eca7609c5c6a4a7d36070926be4104f012c422539a2a9
DIST hcloud-python-2.6.0.gh.tar.gz 122385 BLAKE2B d9b753f8483e1ee799d8fb08dcdb54096f7ddaff8ecab02ee8bac09996dd25bcaf1d6b2c3a63dd14d663833e1eb8212983252454000bef79e0faef999bb1576b SHA512 e913b90b8b279cdcd90bb2d698196eb413151c5dda16eb5ec8a3fb7c4d8eadb30e85b7e4b7458c121a130d6c2faad802f52daf81babfd8bc7d80bc2d6fad13bb
+DIST hcloud-python-2.7.0.gh.tar.gz 123649 BLAKE2B b15811993189521ae6b33bf46936316e562e6fd402cd5839d60f9c6b48ba46526781d5a13e113cd24a61ba586420f9d8a797084c66d9256faf5e1bd4aacacb72 SHA512 6f33ee7cc2f3473f76ffdeb28a485bc42c9cbde4bce9262d732238b56d846a21c87479f4cea01bc70b7ac950898446cfe57be533cc6d478debdee01175aa299c
diff --git a/dev-python/hcloud/hcloud-2.7.0.ebuild b/dev-python/hcloud/hcloud-2.7.0.ebuild
new file mode 100644
index 000000000000..9c2cd55dbc9d
--- /dev/null
+++ b/dev-python/hcloud/hcloud-2.7.0.ebuild
@@ -0,0 +1,51 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{11..14} )
+
+inherit distutils-r1
+
+MY_P=hcloud-python-${PV}
+DESCRIPTION="Official Hetzner Cloud python library"
+HOMEPAGE="
+ https://github.com/hetznercloud/hcloud-python/
+ https://pypi.org/project/hcloud/
+"
+# sdist is missing doc assets as of 1.19.0
+# https://github.com/hetznercloud/hcloud-python/pull/183
+SRC_URI="
+ https://github.com/hetznercloud/hcloud-python/archive/v${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="examples"
+
+RDEPEND="
+ >=dev-python/python-dateutil-2.7.5[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.20[${PYTHON_USEDEP}]
+"
+
+distutils_enable_sphinx docs \
+ dev-python/myst-parser \
+ dev-python/sphinx-rtd-theme
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+EPYTEST_IGNORE=(
+ # Integration tests need docker:
+ # https://github.com/hetznercloud/hcloud-python/blob/master/.travis.yml#L16
+ tests/integration
+)
+
+python_install_all() {
+ use examples && dodoc -r examples
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/jupyterlab/Manifest b/dev-python/jupyterlab/Manifest
index e973bb7b1960..3ada867c377d 100644
--- a/dev-python/jupyterlab/Manifest
+++ b/dev-python/jupyterlab/Manifest
@@ -2,3 +2,4 @@ DIST jupyterlab-4.3.7.tar.gz 21827544 BLAKE2B 6aa1886b3fa9e67c8e4978e90cf5b0e844
DIST jupyterlab-4.4.6.tar.gz 23040936 BLAKE2B 4c0bb10bcca57a4b339771a44067939a39b2efb3dd38dd355c83665eda550de0c05897357d2b84fc2e029c237d8fb634a66d8799692cfd9fbf632a2b544cb562 SHA512 49b5fe3689130a34a14d6f3999818ab25ecb89618de795053b6cdd8d7694c78327bd2972cd05dc2b666698d7ea0336ae755ce207a4de7c9d0a394c78584e1887
DIST jupyterlab-4.4.7.tar.gz 22965570 BLAKE2B e1e2f3dd7fdcfa85525e76bd55965bc9d9ddb482df536c0f9fdd7d1ba189c37956561464b22ab2d95ddacdbd2a5f8cc365d8fc838d19444abb50e7ec8cf1a740 SHA512 2062b72b2a9610bc002a6e5099c3441f3d13af841c2cbabc5e931e0a4b8bafead812cf29982dc4d9f8e4a58302d42fe7c90e96cd7fab776568c1d62cb0f6883d
DIST jupyterlab-4.4.8.tar.gz 22967507 BLAKE2B 86a79c2ac95a5d037c232b6d97d03d0c5f4a32ae762af11bac31e49a2140ba0e0967f92cd7e5d7e116e8d35ec2144a2e9dce8a04c0d25aa7882794ef0579c1f8 SHA512 3752b7bfc2a9b289cb0577b5b472055835aee83ed214e32445cd48d77a0d34d12bfce1fc2513e909e5fc573f934edd87c1b8775a4ce94dc03e1ad25550673980
+DIST jupyterlab-4.4.9.tar.gz 22966654 BLAKE2B 9861da955decd362e983d3f1652837d8164d79656ece03c702c06044cfb566a6edc3fce1fe25270075369ef6a80fde2275e30370472eb1f362b93e6ccc093b60 SHA512 06b47a3b917bfb8e809bc9fa1ae57dddab001aac8a17da454f56f8ce23777ec71b345b4c439a9cc690bea58132a95339445ba6c6fe0e8520dc4f575fdae0a754
diff --git a/dev-python/jupyterlab/jupyterlab-4.4.9.ebuild b/dev-python/jupyterlab/jupyterlab-4.4.9.ebuild
new file mode 100644
index 000000000000..7ce4df82ddcc
--- /dev/null
+++ b/dev-python/jupyterlab/jupyterlab-4.4.9.ebuild
@@ -0,0 +1,76 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 pypi xdg
+
+DESCRIPTION="JupyterLab computational environment"
+HOMEPAGE="
+ https://jupyter.org/
+ https://github.com/jupyterlab/jupyterlab/
+ https://pypi.org/project/jupyterlab/
+"
+
+LICENSE="BSD MIT GPL-3 Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+
+RDEPEND="
+ >=dev-python/async-lru-1.0.0[${PYTHON_USEDEP}]
+ >=dev-python/httpx-0.28.0[${PYTHON_USEDEP}]
+ >=dev-python/ipykernel-6.5.0[${PYTHON_USEDEP}]
+ >=dev-python/jinja2-3.0.3[${PYTHON_USEDEP}]
+ dev-python/jupyter-core[${PYTHON_USEDEP}]
+ >=dev-python/jupyter-lsp-2.0.0[${PYTHON_USEDEP}]
+ >=dev-python/jupyter-server-2.4.0[${PYTHON_USEDEP}]
+ <dev-python/jupyter-server-3[${PYTHON_USEDEP}]
+ >=dev-python/jupyterlab-server-2.27.1[${PYTHON_USEDEP}]
+ <dev-python/jupyterlab-server-3[${PYTHON_USEDEP}]
+ >=dev-python/notebook-shim-0.2[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ >=dev-python/setuptools-41.1.0[${PYTHON_USEDEP}]
+ >=dev-python/tornado-6.2.0[${PYTHON_USEDEP}]
+ dev-python/traitlets[${PYTHON_USEDEP}]
+ net-libs/nodejs[npm]
+"
+
+BDEPEND="
+ dev-python/hatch-jupyter-builder[${PYTHON_USEDEP}]
+ test? (
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/requests-cache[${PYTHON_USEDEP}]
+ dev-python/virtualenv[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_DESELECT=(
+ # These tests call npm and want internet
+ jupyterlab/tests/test_jupyterlab.py::TestExtension::test_uninstall_core_extension
+ jupyterlab/tests/test_jupyterlab.py::TestExtension::test_install_and_uninstall_pinned_folder
+ jupyterlab/tests/test_jupyterlab.py::TestExtension::test_install_and_uninstall_pinned
+ jupyterlab/tests/test_jupyterlab.py::TestExtension::test_build_custom_minimal_core_config
+ jupyterlab/tests/test_jupyterlab.py::TestExtension::test_build_custom
+ jupyterlab/tests/test_jupyterlab.py::TestExtension::test_build_check
+ jupyterlab/tests/test_jupyterlab.py::TestExtension::test_build
+ jupyterlab/tests/test_build_api.py::TestBuildAPI::test_clear
+ jupyterlab/tests/test_build_api.py::TestBuildAPI::test_build
+)
+
+EPYTEST_IGNORE=(
+ jupyterlab/tests/test_announcements.py
+)
+
+EPYTEST_PLUGINS=( pytest-{console-scripts,jupyter,tornasync,timeout} )
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+# TODO: package sphinx_copybutton
+#distutils_enable_sphinx docs/source dev-python/sphinx-rtd-theme dev-python/myst-parser
+
+python_install_all() {
+ distutils-r1_python_install_all
+ mv "${ED}/usr/etc" "${ED}/etc" || die
+}
diff --git a/dev-python/libcst/Manifest b/dev-python/libcst/Manifest
index 9a4284a9fbad..c0c6d19510e3 100644
--- a/dev-python/libcst/Manifest
+++ b/dev-python/libcst/Manifest
@@ -34,6 +34,7 @@ DIST js-sys-0.3.77.crate 55538 BLAKE2B 8a4c04a8e93bf5dab63784a24320a314cc5cb629d
DIST libc-0.2.149.crate 715592 BLAKE2B 21dd5d4f9351f3c75790077c7b025046db665f2d48d7a72cda7667bc60febf79d82708cf7d39a323a594397cd590bd3d2a2f85349b4473b90ea4da918382ed0a SHA512 0def64d400d473d6eed30e985522d36801ee6472b15f90e74dc4592e0a8ffbaf30b731be280de52b30255cf60aeca8efe817b67049227dc7000c807e007d7289
DIST libcst-1.8.2.tar.gz 881534 BLAKE2B e68e0af99c3db0e1280529bce2dacccea5c01a5d19635d195c13c128c8f485d8e4ac621de34f51a25daaa342aee58c5d0af238affb674a30465deabceda654ed SHA512 dd501de64e13dcb6cbfa4ebe8c89513cf8b2d27fa97d34b02553c1462c3052bc65253cf55a1bce1124e87108bdc834f7e7f5bc1180217a678304efa1130e2a3e
DIST libcst-1.8.4.tar.gz 884416 BLAKE2B e633723a4c59fdee07f27e51fd161971aa69f99c087613a016205c43eadb75e54078a233a0f0350eb514bc8d77463eac8f450ba752c6c8b037e03863a3f2f465 SHA512 3d6f96d75e05853c92e1ee10a146d86b405f0d3286049f7676c6f7b81f6bd0c3de8b9e7948f4a589748187d76b04a5759a1e14627e47f067d8df2e56195054ec
+DIST libcst-1.8.5.tar.gz 884582 BLAKE2B b79c7c91050d5401c50cdcdbb8e9f8784dfe06d6a100795c20d67595f209f84996be4a46cc1f82ed7768212b829a245205f1846f202c7e60969a8a744676cd92 SHA512 30070d7f4ed973934b37e58313fe27d66402877f9db3ff644ad488978758053bdc41d7d073441bce4466f92ec9a3b01ecd4e7e58462a84cc55ddf46c0ee0c7b2
DIST log-0.4.17.crate 38028 BLAKE2B b46be3719fc0a53e50b1f342762e188587e9f1ceb692c72473ce2663edfb8253742d30024e68c1444780ab7fc0e2d5b0601b8ea7228dc3405a9342a57548e605 SHA512 2477d88db42b1d92c30708d88823212e236f613b3465e85eb425f83f8d16fadfaf0352f06c2999a1852102edd2f6ffb10ecb539d8a3b6c48f552a25622ccffa2
DIST memchr-2.7.4.crate 96670 BLAKE2B da38114beca670467c3e1fbf4e415af6f22d52e3223715d52e181babb89b872b46511563985bcc16d7ff4e82f812c6e83ad904b0fe2501b14445119dfa8240e6 SHA512 8d0e8b9c30208897d4b1b920f1bdcccd0c2b75d92a06abe4a1b2407938768abb6487d63de56c6a80419798fe69517210643dfaf11f5f5540185f0eccf220adb2
DIST memoffset-0.6.5.crate 7686 BLAKE2B 9a797388702389076c426052c3d54dc62802d5db8bc5c9c83990429f2ffaec4fab4c7dd3f09cd0704d1ea555e87976563bb43408ba54b5e66ce7e406d4604009 SHA512 11bdd9185b99dfee8e659e051b09ee301c7142a372a8117864745a5085c015436d2efbb1478192886f09cbc562529e209d2e3325d94938a64bc75b1d91d2bf3f
diff --git a/dev-python/libcst/libcst-1.8.5.ebuild b/dev-python/libcst/libcst-1.8.5.ebuild
new file mode 100644
index 000000000000..079f560791ef
--- /dev/null
+++ b/dev-python/libcst/libcst-1.8.5.ebuild
@@ -0,0 +1,190 @@
+# Copyright 2024-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+RUST_MIN_VER="1.80.0"
+CRATES="
+ aho-corasick@1.0.4
+ anes@0.1.6
+ annotate-snippets@0.11.5
+ anstyle@1.0.10
+ autocfg@1.1.0
+ bumpalo@3.12.0
+ cast@0.3.0
+ cfg-if@1.0.0
+ ciborium-io@0.2.0
+ ciborium-ll@0.2.0
+ ciborium@0.2.0
+ clap@4.5.38
+ clap_builder@4.5.38
+ clap_lex@0.7.4
+ criterion-plot@0.5.0
+ criterion@0.6.0
+ crossbeam-deque@0.8.1
+ crossbeam-epoch@0.9.9
+ crossbeam-utils@0.8.10
+ difference@2.0.0
+ either@1.6.1
+ equivalent@1.0.1
+ glob@0.3.0
+ half@1.8.2
+ hashbrown@0.14.5
+ heck@0.5.0
+ indexmap@2.4.0
+ indoc@2.0.4
+ itertools@0.10.5
+ itertools@0.13.0
+ itertools@0.14.0
+ itoa@1.0.2
+ js-sys@0.3.77
+ libc@0.2.149
+ log@0.4.17
+ memchr@2.7.4
+ memoffset@0.6.5
+ memoffset@0.9.0
+ num-traits@0.2.15
+ once_cell@1.16.0
+ oorandom@11.1.3
+ paste@1.0.15
+ peg-macros@0.8.5
+ peg-runtime@0.8.5
+ peg@0.8.5
+ plotters-backend@0.3.7
+ plotters-svg@0.3.7
+ plotters@0.3.7
+ portable-atomic@1.4.3
+ proc-macro2@1.0.95
+ pyo3-build-config@0.25.1
+ pyo3-ffi@0.25.1
+ pyo3-macros-backend@0.25.1
+ pyo3-macros@0.25.1
+ pyo3@0.25.1
+ quote@1.0.40
+ rayon-core@1.13.0
+ rayon@1.11.0
+ regex-automata@0.4.9
+ regex-syntax@0.8.5
+ regex@1.11.2
+ rustversion@1.0.21
+ ryu@1.0.10
+ same-file@1.0.6
+ scopeguard@1.1.0
+ serde@1.0.208
+ serde_derive@1.0.208
+ serde_json@1.0.125
+ serde_spanned@0.6.7
+ syn@2.0.101
+ target-lexicon@0.13.2
+ target-triple@0.1.4
+ termcolor@1.1.3
+ thiserror-impl@2.0.12
+ thiserror@2.0.12
+ tinytemplate@1.2.1
+ toml@0.8.19
+ toml_datetime@0.6.8
+ toml_edit@0.22.20
+ trybuild@1.0.105
+ unicode-ident@1.0.18
+ unicode-width@0.2.0
+ unindent@0.2.3
+ walkdir@2.3.2
+ wasm-bindgen-backend@0.2.100
+ wasm-bindgen-macro-support@0.2.100
+ wasm-bindgen-macro@0.2.100
+ wasm-bindgen-shared@0.2.100
+ wasm-bindgen@0.2.100
+ web-sys@0.3.77
+ winapi-i686-pc-windows-gnu@0.4.0
+ winapi-util@0.1.5
+ winapi-x86_64-pc-windows-gnu@0.4.0
+ winapi@0.3.9
+ winnow@0.6.18
+"
+
+inherit cargo distutils-r1 pypi
+
+DESCRIPTION="A concrete syntax tree with AST-like properties for Python"
+HOMEPAGE="
+ https://github.com/Instagram/LibCST/
+ https://pypi.org/project/libcst/
+"
+SRC_URI+="
+ ${CARGO_CRATE_URIS}
+"
+
+LICENSE="MIT Apache-2.0 PSF-2"
+# Dependent crate licenses
+LICENSE+=" Apache-2.0 Apache-2.0-with-LLVM-exceptions MIT Unicode-3.0"
+SLOT="0"
+KEYWORDS="~amd64 ~riscv"
+
+RDEPEND="
+ >=dev-python/pyyaml-5.2[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ dev-python/setuptools-rust[${PYTHON_USEDEP}]
+ dev-python/setuptools-scm[${PYTHON_USEDEP}]
+ test? (
+ dev-python/black[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+QA_FLAGS_IGNORED="usr/lib/py.*/site-packages/libcst/native.*"
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # do not require the freethreading fork for regular 3.13
+ sed -i -e '/pyyaml-ft/d' pyproject.toml || die
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # TODO
+ libcst/codemod/tests/test_codemod_cli.py::TestCodemodCLI::test_codemod_formatter_error_input
+ )
+ local EPYTEST_IGNORE=(
+ # fuzzing, require hypothesmith
+ libcst/tests/test_fuzz.py
+ # require pyre-check
+ libcst/metadata/tests/test_type_inference_provider.py
+ # requires `python -m libcst.codegen.generate` which has extra
+ # deps and needs patching to work in our venv
+ # TODO: figure out if we don't need that for revdeps anyway
+ libcst/codegen/tests/test_codegen_clean.py
+ )
+
+ case ${EPYTHON} in
+ pypy3*)
+ EPYTEST_DESELECT+=(
+ # https://github.com/Instagram/LibCST/issues/1278
+ libcst/codemod/commands/tests/test_rename_typing_generic_aliases.py::TestRenameCommand::test_rename_typing_generic_alias
+ )
+ ;;
+ esac
+
+ cd "${BUILD_DIR}/install$(python_get_sitedir)" || die
+ # fixtures
+ ln -s "${S}/native" . || die
+
+ nonfatal epytest
+ local ret=${?}
+
+ rm native || die
+
+ [[ ${ret} -ne 0 ]] && die "Tests failed on ${EPYTHON}"
+}
+
+python_test_all() {
+ cd native || die
+ cargo_src_test
+}
diff --git a/dev-python/notebook/Manifest b/dev-python/notebook/Manifest
index 41595e565c78..35f84368fee3 100644
--- a/dev-python/notebook/Manifest
+++ b/dev-python/notebook/Manifest
@@ -1,3 +1,4 @@
DIST notebook-7.3.3.tar.gz 12758099 BLAKE2B e5e988a166b5124f95cc050a4d9402778108c084325024c8ed3829780665d7149a06cccd4ab80d33e572b0b98d9088751d2a9313f10a940e8d82b5eb14db25f3 SHA512 e0f476c5a91edba48dc43b25417946983c46d5b4beaac6531ebf7af02bc4a9f2bae09b7d7524d7ad6e33c262769c1dc40c36f4593cfc70b8c98f41f40a75f8a2
DIST notebook-7.4.4.tar.gz 13883628 BLAKE2B a5673563176a14c4272b60662be6ca7c909bf18645a2e19c45cc6f5816da4f0b262365f8370219f6fc92456ed4ec01299b88d705b08630eee741955c3c274cc8 SHA512 56a58c0126c52f311dca0118abe8c40624bf0a19fa3c7c0ef210b506a69cf1fb6711b0f752766902e3eb0cb840d273307e0930a0b48047826facb806294a5aeb
DIST notebook-7.4.5.tar.gz 13888993 BLAKE2B 0b757a44e704b486360f564bbadb733723af9803e71611537fe70f2bc42c5636769b5f4656f82dbea1b711e7e1dc1479fd4dcc0e28a5dec657984e912c6d9862 SHA512 37e8c840bee87a8983601a38764f1ffb68f21fbed693363af886739baa1bfc522835c957811a066ea7c80b6b55df23d90bce079faf3e2869ba2ba57c528a9489
+DIST notebook-7.4.6.tar.gz 13937087 BLAKE2B 62679c3abb2220a00575b6dcf749a157604b67d58d352186748be7fece1b8b7a798a70ed5c07f85fa5b6d3f7d144929e43e572d2fff0f365251897a413827013 SHA512 ad6cdfcab3851840ef4fb36e6fe97ba738e050a4f8f4c5c35f63310acfb4290635ef2570545d36f2a5ecb4410b599ae0fe9cd9ffff292718d39e40fb27db9254
diff --git a/dev-python/notebook/notebook-7.4.6.ebuild b/dev-python/notebook/notebook-7.4.6.ebuild
new file mode 100644
index 000000000000..8b121b5f081b
--- /dev/null
+++ b/dev-python/notebook/notebook-7.4.6.ebuild
@@ -0,0 +1,63 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+PYTHON_REQ_USE="threads(+)"
+
+inherit distutils-r1 pypi xdg-utils
+
+DESCRIPTION="Jupyter Interactive Notebook"
+HOMEPAGE="
+ https://jupyter.org/
+ https://github.com/jupyter/notebook/
+ https://pypi.org/project/notebook/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+
+RDEPEND="
+ >=dev-python/jupyter-server-2.4.0[${PYTHON_USEDEP}]
+ <dev-python/jupyter-server-3[${PYTHON_USEDEP}]
+ >=dev-python/jupyterlab-4.4.5[${PYTHON_USEDEP}]
+ <dev-python/jupyterlab-4.5[${PYTHON_USEDEP}]
+ >=dev-python/jupyterlab-server-2.27.1[${PYTHON_USEDEP}]
+ <dev-python/jupyterlab-server-3[${PYTHON_USEDEP}]
+ >=dev-python/notebook-shim-0.2[${PYTHON_USEDEP}]
+ <dev-python/notebook-shim-0.3[${PYTHON_USEDEP}]
+ >=dev-python/tornado-6.2.0[${PYTHON_USEDEP}]
+"
+
+BDEPEND="
+ dev-python/hatch-jupyter-builder[${PYTHON_USEDEP}]
+ >=dev-python/jupyterlab-4.4[${PYTHON_USEDEP}]
+ <dev-python/jupyterlab-4.5[${PYTHON_USEDEP}]
+ test? (
+ dev-python/ipykernel[${PYTHON_USEDEP}]
+ dev-python/nbval[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/requests-unixsocket[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-{console-scripts,jupyter,timeout,tornasync} )
+distutils_enable_tests pytest
+
+python_install_all() {
+ distutils-r1_python_install_all
+ mv "${ED}/usr/etc" "${ED}/etc" || die
+}
+
+pkg_postinst() {
+ xdg_desktop_database_update
+ xdg_icon_cache_update
+}
+
+pkg_postrm() {
+ xdg_desktop_database_update
+ xdg_icon_cache_update
+}
diff --git a/dev-python/phonenumbers/Manifest b/dev-python/phonenumbers/Manifest
index da3d3d4727ec..fe8a3725e3d8 100644
--- a/dev-python/phonenumbers/Manifest
+++ b/dev-python/phonenumbers/Manifest
@@ -1,3 +1,4 @@
DIST python-phonenumbers-9.0.12.gh.tar.gz 4915140 BLAKE2B 4929e25d0525c12321e71c4b7c3262fa22ea3484c4a5522f3995af737dc3c81aedaf44ad9954ac41e7c815d752108c77ae078294b753d70a67358901dff6b87c SHA512 67ab051e45156f635ad37a075abdeb2b04094de4faa964902e4b15bd78736264f27f3b880aceaa54a3b47e6f78129b4c196824446a82dfe2c6ec11ad7dddc074
DIST python-phonenumbers-9.0.13.gh.tar.gz 4915436 BLAKE2B f49fd90cbdd761d3aa0f91d78a47af2d83975adc85d54e569788999237bf1edd7c0daefedf5f460b32e6d0469222990a362f2192839dbd0a54ad9d33e76a89f5 SHA512 fe37883632624cf4c80cabdfc6f7e9fd14c1ae486b15a697865d09e8b5dd1d4392ea173d37d3070e8a91d0290798b2dd37428e03f34cde232c69d04cccf9a844
DIST python-phonenumbers-9.0.14.gh.tar.gz 4915730 BLAKE2B ffe5247f06e715e8d654625aaa69a7c66cb89150fc815860e89a5ffc5b73fc56996bbbb6adf629cb19ae672dd86885bf1c9779d387fc466167e179e7ee725cb7 SHA512 f02928c81784fbf30e1f2da016375cea65d09590590ba8b34d1f04705f18015f14220181c9d425449a4d0e0ff9886911eedb83ed6b15700c3d1751befd768235
+DIST python-phonenumbers-9.0.15.gh.tar.gz 4916342 BLAKE2B bffc78b6c480c4dcb5c5c1b64e6ea0909d573e4758ac7614371d495bd892c8f10b00bb927e35781da5291ef7a2bd2bc6cf151c8ca340b18f80b06a3c5bad9901 SHA512 cfd7d65d95ffa340a52fe6de28197495e02886d5c452b7a98b713d9324252724a99ce00a21ff740fb9a4a64706b67e5d2f7db75a05764a5db6b2c447d8157391
diff --git a/dev-python/phonenumbers/phonenumbers-9.0.15.ebuild b/dev-python/phonenumbers/phonenumbers-9.0.15.ebuild
new file mode 100644
index 000000000000..a4046879a533
--- /dev/null
+++ b/dev-python/phonenumbers/phonenumbers-9.0.15.ebuild
@@ -0,0 +1,39 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{11..14} )
+
+inherit distutils-r1
+
+MY_P=python-${P}
+DESCRIPTION="Python port of Google's libphonenumber"
+HOMEPAGE="
+ https://github.com/daviddrysdale/python-phonenumbers/
+ https://pypi.org/project/phonenumbers/
+"
+SRC_URI="
+ https://github.com/daviddrysdale/python-phonenumbers/archive/v${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}/python
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+ test? (
+ dev-python/protobuf[${PYTHON_USEDEP}]
+ )
+"
+
+DOCS=( ../README.md )
+
+python_test() {
+ "${EPYTHON}" testwrapper.py -v || die "Tests failed with ${EPYTHON}"
+}
diff --git a/dev-python/pyperclip/Manifest b/dev-python/pyperclip/Manifest
index da0abfbb4aea..2bf438cfc091 100644
--- a/dev-python/pyperclip/Manifest
+++ b/dev-python/pyperclip/Manifest
@@ -1,2 +1,3 @@
DIST pyperclip-1.10.0.tar.gz 12193 BLAKE2B 0733fb724c32b927a29dcabec739454b2b2546cce1ac4235a1999b9c73c01272ffa9be6670780a7a3e8416d1de9a202364ce17c340bc116987dd3bc824de0a2d SHA512 eebb717e78817b34ef932fa916ae24f56ab2f064b2d20541dff06b192f69e3b33d007fe0a49b1b4ba5aeb9a633bab3139a215fce5016bf88013803713c7d402e
+DIST pyperclip-1.11.0.tar.gz 12185 BLAKE2B 31ff9747fb084046a8afb62a8799dfccdad8372cb771109cbf6d075df63e23e0a26c48afe56f850b2bbf671336ee942c26dd3f8e661523533d4cef282ead2e15 SHA512 3756e75db1dc321dafe3677956d6d84b7c730bfd282f0293931e7dc5a468f3abaf8397a5f02bee4473953026d0ac373b835fe1972b7f5fe69e661195007901ab
DIST pyperclip-1.9.0.tar.gz 20961 BLAKE2B a489268724b7beb82ec6b28c11cbb5fe04393a800297e4f71aace7232c13b68ce05092ca949f5cdc8257343b8e8f8b3cbd5227aa03a53e32eaeba8f3146108e2 SHA512 19865ebdcce99817f92994d14e26e1cd321d85da89f3177794a93981321ac3e39c937cccbcd00c866ccb30591d4720cd97a39fd266ef8378e3a21471ee69606f
diff --git a/dev-python/pyperclip/pyperclip-1.11.0.ebuild b/dev-python/pyperclip/pyperclip-1.11.0.ebuild
new file mode 100644
index 000000000000..1304cb64d9a6
--- /dev/null
+++ b/dev-python/pyperclip/pyperclip-1.11.0.ebuild
@@ -0,0 +1,61 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{11..14} )
+
+inherit distutils-r1 virtualx pypi
+
+DESCRIPTION="A cross-platform clipboard module for Python"
+HOMEPAGE="
+ https://github.com/asweigart/pyperclip/
+ https://pypi.org/project/pyperclip/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~mips ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ || (
+ x11-misc/xsel
+ x11-misc/xclip
+ kde-plasma/plasma-workspace
+ dev-python/pyqt5[${PYTHON_USEDEP}]
+ dev-python/qtpy[${PYTHON_USEDEP}]
+ )
+"
+# test at least one backend
+BDEPEND="
+ test? (
+ ${RDEPEND}
+ )
+"
+
+src_prepare() {
+ local PATCHES=(
+ "${FILESDIR}/${PN}-1.9.0-fix-test.patch"
+ )
+
+ # stupid windows
+ find -type f -exec sed -i -e 's:\r$::' {} + || die
+
+ distutils-r1_src_prepare
+
+ # klipper is hard to get working, and once we make it work,
+ # it breaks most of the other backends
+ # wl-copy requires wayland, not Xvfb
+ sed -e 's:_executable_exists("\(klipper\|wl-copy\)"):False:' \
+ -i tests/test_pyperclip.py || die
+}
+
+python_test() {
+ "${EPYTHON}" tests/test_pyperclip.py -vv ||
+ die "Tests fail on ${EPYTHON}"
+}
+
+src_test() {
+ virtx distutils-r1_src_test
+}
diff --git a/dev-python/redis/Manifest b/dev-python/redis/Manifest
index 50650ccf34d1..018519ef59cd 100644
--- a/dev-python/redis/Manifest
+++ b/dev-python/redis/Manifest
@@ -1,3 +1,4 @@
DIST redis-py-6.3.0.gh.tar.gz 4878636 BLAKE2B e6eb22f563c197bb30538636aa0aff3cb5b1921805f9d7312214cbf06673e9eca6bef2d6dad805ed9382ac72922f78a47aa3fe476aa468d259b1abf0278bb9e0 SHA512 066d68e04477885d078ff825d33ca2f6a9d87ea5e7b80d76153edc47908b8216abab18f905b1e10bff9efd3f4f4d3c3905c372e411328da069a36712ab5b4215
DIST redis-py-6.4.0.gh.tar.gz 4878820 BLAKE2B 672421ec98cec3c908f3980fb995433e2e52137d9e6786b43fe7d6412884e6774d234698cac96f9a96a6176e14c55cc2742b3697b70c1d9a308a8a6ee0e5b8ce SHA512 94df8fb65e991d98be6e776b8c889d73615f5b1ab8727a9b5f6982f50ef441bc2c3aff0db3383cd8001df2fd525f98513046f7a1ff7f067fc16c479aecf507ae
DIST redis-py-7.0.0b1.gh.tar.gz 4917679 BLAKE2B 673ccf60415a81de80dd460f783602adf182b9d778a30d88ddd16b326d1e9a2ca539d9dfe8d935f6c86affdeaa590882c244d8216b2c606d4562038f6a9b96f7 SHA512 d68ac25f39a83a02b70c41d35fd481f272320f206cb8d595b3af5d7a407af81212e770c13d1591d619044e97beee9264660bcb997761b4b5807bbf97f04979f4
+DIST redis-py-7.0.0b2.gh.tar.gz 4922253 BLAKE2B 975a277e078e4591fdb24ea924c59c9d92f968840631086598dda28eb112be23b78f0c63ad1dae395275aa89a0178afa85f582a0c82a5ba7358059a4a4d9a3d7 SHA512 8898f886fa8bac12a45b689aee7951584a80994a5cacdf506f28810c33520515e75acef6bb35158fe6ab7a21d52f5e44b3b5bd729f5f1f4774534d2bc7101ac9
diff --git a/dev-python/redis/redis-7.0.0_beta2.ebuild b/dev-python/redis/redis-7.0.0_beta2.ebuild
new file mode 100644
index 000000000000..45f6c05ddcd4
--- /dev/null
+++ b/dev-python/redis/redis-7.0.0_beta2.ebuild
@@ -0,0 +1,107 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1
+
+MY_P=redis-py-${PV/_beta/b}
+DESCRIPTION="Python client for Redis key-value store"
+HOMEPAGE="
+ https://github.com/redis/redis-py/
+ https://pypi.org/project/redis/
+"
+SRC_URI="
+ https://github.com/redis/redis-py/archive/v${PV/_beta/b}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="MIT"
+SLOT="0"
+
+BDEPEND="
+ test? (
+ dev-db/redis
+ dev-python/numpy[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-{asyncio,timeout} )
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # Flaky test
+ tests/test_pubsub.py::TestPubSubDeadlock::test_pubsub_deadlock
+ # require extra redis modules that apparently aren't packaged
+ # on Gentoo
+ tests/{,test_asyncio/}test_bloom.py
+ tests/{,test_asyncio/}test_graph.py
+ tests/{,test_asyncio/}test_json.py
+ tests/{,test_asyncio/}test_timeseries.py
+ # apparently available only in "Redis Stack 7.2 RC3 or later"
+ tests/test_commands.py::TestRedisCommands::test_tfunction_load_delete
+ tests/test_commands.py::TestRedisCommands::test_tfunction_list
+ tests/test_commands.py::TestRedisCommands::test_tfcall
+ # TODO
+ tests/test_commands.py::TestRedisCommands::test_lolwut
+ tests/test_commands.py::TestRedisCommands::test_module
+ tests/test_commands.py::TestRedisCommands::test_module_loadex
+ tests/test_commands.py::TestRedisCommands::test_zrank_withscore
+ tests/test_commands.py::TestRedisCommands::test_zrevrank_withscore
+ tests/test_commands.py::TestRedisCommands::test_xinfo_consumers
+ tests/test_asyncio/test_commands.py::TestRedisCommands::test_zrank_withscore
+ tests/test_asyncio/test_commands.py::TestRedisCommands::test_zrevrank_withscore
+ tests/test_asyncio/test_commands.py::TestRedisCommands::test_xinfo_consumers
+ tests/test_asyncio/test_pubsub.py::TestPubSubAutoReconnect::test_reconnect_socket_error[pool-hiredis-listen]
+ # requires sentinel?
+ tests/{,test_asyncio/}test_sentinel.py
+ # require REDIS_ENDPOINTS_CONFIG_PATH, except there's zero documentation
+ # or examples of what this is
+ tests/test_scenario/test_hitless_upgrade.py::TestPushNotifications
+ tests/test_scenario/test_maint_notifications.py::TestPushNotifications
+ )
+ local EPYTEST_IGNORE=(
+ # fails over missing certs, we don't do cluster anyway
+ tests/test_asyncio/test_cluster.py
+ # require redis_entraid
+ tests/test_asyncio/test_credentials.py
+ tests/test_credentials.py
+ )
+
+ # TODO: try to run more servers?
+ epytest -m "not redismod and not onlycluster and not replica and not ssl"
+}
+
+src_test() {
+ local redis_pid="${T}"/redis.pid
+ local redis_port=6379
+
+ if has_version ">=dev-db/redis-7"; then
+ local extra_conf="
+ enable-debug-command yes
+ enable-module-command yes
+ "
+ fi
+
+ # Spawn Redis itself for testing purposes
+ einfo "Spawning Redis"
+ einfo "NOTE: Port ${redis_port} must be free"
+ "${EPREFIX}"/usr/sbin/redis-server - <<- EOF || die "Unable to start redis server"
+ daemonize yes
+ pidfile ${redis_pid}
+ port ${redis_port}
+ bind 127.0.0.1 ::1
+ ${extra_conf}
+ EOF
+
+ # Run the tests
+ distutils-r1_src_test
+
+ # Clean up afterwards
+ kill "$(<"${redis_pid}")" || die
+}
diff --git a/dev-python/securesystemslib/Manifest b/dev-python/securesystemslib/Manifest
index ec2247efec2e..86a6ad731391 100644
--- a/dev-python/securesystemslib/Manifest
+++ b/dev-python/securesystemslib/Manifest
@@ -1 +1,2 @@
DIST securesystemslib-1.3.0.tar.gz 934551 BLAKE2B c25af7fe36445fa9b8296d833edc5b51e8a33b71a05b987bd04f27955c54dff5a02a82cd1c45a1dd63cb4f39c84d933ad99941a3993142f576c64f17b93cdaa7 SHA512 26ebeabba4e1ef24c3ae7944b2e18a7534753f8073b6cb433b8d0c9c7d0e8df4df589984f508797bc6de7398b84e9889b50db98de311d06fb1a99b6b5ceb4488
+DIST securesystemslib-1.3.1.tar.gz 934782 BLAKE2B 773cd13be7514805355ae0a73826bc368d2daba9b5484090b24c928f6de686de4a85e2cf79128c1ef2953b355f860c0f8cea96a494667a9825a1d7a6ada194f1 SHA512 9b82bad7c69f74ef9559aad678100b7e72433b21148286437dd05e5c177489ee36909f29923a18eaa75aed84c8c3eb94b20d9a88f41207d811dfbe2ebc89c1f3
diff --git a/dev-python/securesystemslib/securesystemslib-1.3.1.ebuild b/dev-python/securesystemslib/securesystemslib-1.3.1.ebuild
new file mode 100644
index 000000000000..46e7a246f943
--- /dev/null
+++ b/dev-python/securesystemslib/securesystemslib-1.3.1.ebuild
@@ -0,0 +1,41 @@
+# Copyright 2024-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Cryptographic routines for Secure Systems Lab projects at NYU"
+HOMEPAGE="
+ https://github.com/secure-systems-lab/securesystemslib/
+ https://pypi.org/project/securesystemslib/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~x86"
+
+RDEPEND="
+ >=dev-python/cryptography-40.0.0[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+# TODO: unbundle https://github.com/pyca/ed25519 (wtf? not on PyPI?)
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # requires pyspx
+ tests/test_signer.py::TestSphincs::test_sphincs
+ )
+ local EPYTEST_IGNORE=(
+ # requires PyKCS11
+ tests/test_hsm_signer.py
+ )
+
+ epytest tests
+}
diff --git a/dev-python/sigstore-protobuf-specs/sigstore-protobuf-specs-0.5.0.ebuild b/dev-python/sigstore-protobuf-specs/sigstore-protobuf-specs-0.5.0.ebuild
index 91d183b0922a..bdc007a0a94a 100644
--- a/dev-python/sigstore-protobuf-specs/sigstore-protobuf-specs-0.5.0.ebuild
+++ b/dev-python/sigstore-protobuf-specs/sigstore-protobuf-specs-0.5.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64"
+KEYWORDS="amd64"
RDEPEND="
~dev-python/betterproto-2.0.0_beta7[${PYTHON_USEDEP}]
diff --git a/dev-python/simplejson/Manifest b/dev-python/simplejson/Manifest
index 1da450c6eb50..283a85ad5d7d 100644
--- a/dev-python/simplejson/Manifest
+++ b/dev-python/simplejson/Manifest
@@ -1 +1,2 @@
DIST simplejson-3.20.1.tar.gz 85591 BLAKE2B dc79cc7ad25c8119abe240d2b5ce4ed72c56b7b371e20084a208a3a1556f8f8171adf440d09b20a4eaf9ef77b5c7782785912fe265f8f8bb66b73b95b5e7aeaa SHA512 4f565530b6695bc7a1dded86a7694498f862fd21b614e097fc00deb7b5a9ced76a6669f22b862692e202cc19676bd94ca6588fb3a7df4af8c073d3344c7bbd3b
+DIST simplejson-3.20.2.tar.gz 85784 BLAKE2B f4ccb67d50aa0c9462fa205d7960e0b255c12bbe2dba7dec5b6ecd989604166690122af11c0a21b55272272131ea0cc5c8d1edabf8cfbceedc1af9abfea10227 SHA512 78e5066d75752797e39da5627c3deeedbcaf98aaf62444123b05e9b7cc251a8c1e21b8c45137f6cbcfed3052f569401d9e2120e8625721737f66dc6dae273416
diff --git a/dev-python/simplejson/simplejson-3.20.2.ebuild b/dev-python/simplejson/simplejson-3.20.2.ebuild
new file mode 100644
index 000000000000..9b9c636d5eb4
--- /dev/null
+++ b/dev-python/simplejson/simplejson-3.20.2.ebuild
@@ -0,0 +1,37 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Simple, fast, extensible JSON encoder/decoder for Python"
+HOMEPAGE="
+ https://github.com/simplejson/simplejson/
+ https://pypi.org/project/simplejson/
+"
+
+LICENSE="|| ( MIT AFL-2.1 )"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
+IUSE="+native-extensions"
+
+DOCS=( README.rst CHANGES.txt )
+
+distutils_enable_tests unittest
+
+src_configure() {
+ # native-extensions are always disabled on PyPy
+ # https://github.com/simplejson/simplejson/blob/master/setup.py#L121
+ export DISABLE_SPEEDUPS=$(usex native-extensions 0 1)
+ use native-extensions && export REQUIRE_SPEEDUPS=1
+}
+
+python_test() {
+ cd "${BUILD_DIR}/install$(python_get_sitedir)" || die
+ eunittest
+}
diff --git a/dev-python/spyder-kernels/Manifest b/dev-python/spyder-kernels/Manifest
index ae96e9e74e24..68b1fea6eda1 100644
--- a/dev-python/spyder-kernels/Manifest
+++ b/dev-python/spyder-kernels/Manifest
@@ -1,2 +1,3 @@
DIST spyder-kernels-3.0.5.gh.tar.gz 240411 BLAKE2B 28600b359fc12f8b3ffe01545a98b2fd3ec7f832e7ca5aa58f809825d7f1060ecc5929a72d615c2543b6b34685ee03b521cd087dd58725315a68e1188b72cd3c SHA512 4aaf57e7e4dc7c985f2c0e64aad6080370f1cf012ef72f49dcaaa5daed4b6b5e0c5cbcde88e127b136c87e3ae17314212dd56f89801edd87382da8d06caa9662
DIST spyder-kernels-3.1.0b1.gh.tar.gz 245633 BLAKE2B 533f7f2ce40281a90d301f4da8744053eefeed268ef334ee227187d54c7548a606a60df3862e76ccac42721192e4a67248a0d77091dd7c27e1b4be18050dc5d8 SHA512 586fe10a38d193c287aef1d80053fb10da4bf132ac7074432edf0ea90683ef8fbcbbad75cf3346390add69de64fe259f839129e2735c30b4235615874edcd676
+DIST spyder-kernels-3.1.0b2.gh.tar.gz 245703 BLAKE2B 29d0d06508c6fb29f11a1582dacb66342300558acc133e9c10e0ce635b64772d0ce6a02527feca9b1e99bd47357e39d26d196210a62f98a0388eaea5e37ff76a SHA512 415cee50e26c0e659fa1c231952c3511e5c7d1db716eff1cfe34d63067bae01266cf678e9bd1ed3a244316a414d51b439ae186a9bbc78a79d886b4c815da1518
diff --git a/dev-python/spyder-kernels/spyder-kernels-3.1.0_beta2.ebuild b/dev-python/spyder-kernels/spyder-kernels-3.1.0_beta2.ebuild
new file mode 100644
index 000000000000..99fbd7b3a6dc
--- /dev/null
+++ b/dev-python/spyder-kernels/spyder-kernels-3.1.0_beta2.ebuild
@@ -0,0 +1,85 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+inherit distutils-r1
+
+MY_P=${P/_beta/b}
+DESCRIPTION="Kernels used by spyder on its ipython console"
+HOMEPAGE="
+ https://github.com/spyder-ide/spyder-kernels/
+ https://pypi.org/project/spyder-kernels/
+"
+SRC_URI="https://github.com/spyder-ide/${PN}/archive/refs/tags/v${PV/_beta/b}.tar.gz -> ${MY_P}.gh.tar.gz"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="MIT"
+SLOT="0"
+
+RDEPEND="
+ dev-python/cloudpickle[${PYTHON_USEDEP}]
+ <dev-python/ipykernel-7[${PYTHON_USEDEP}]
+ >=dev-python/ipykernel-6.29.3[${PYTHON_USEDEP}]
+ <dev-python/ipython-10[${PYTHON_USEDEP}]
+ >=dev-python/ipython-9.5.0[${PYTHON_USEDEP}]
+ <dev-python/jupyter-client-9[${PYTHON_USEDEP}]
+ >=dev-python/jupyter-client-7.4.9[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ >=dev-python/pyxdg-0.26[${PYTHON_USEDEP}]
+ >=dev-python/pyzmq-24.0.0[${PYTHON_USEDEP}]
+ >=dev-python/traitlets-5.14.3[${PYTHON_USEDEP}]
+ >=dev-python/wurlitzer-1.0.3[${PYTHON_USEDEP}]
+"
+
+BDEPEND="
+ test? (
+ dev-python/cython[${PYTHON_USEDEP}]
+ dev-python/django[${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*')
+ )
+"
+
+EPYTEST_PLUGINS=( anyio pytest-rerunfailures )
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # pydicom only packaged in ::sci at the moment
+ spyder_kernels/utils/tests/test_iofuncs.py::test_load_dicom_files
+
+ # require polars
+ spyder_kernels/console/tests/test_console_kernel.py::test_get_value_with_polars
+ spyder_kernels/utils/tests/test_nsview.py::test_polars_dataframe
+ )
+ 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
+
+ epytest
+}
diff --git a/dev-python/sqlglot/Manifest b/dev-python/sqlglot/Manifest
index 0225fd4ba8cf..117f08150357 100644
--- a/dev-python/sqlglot/Manifest
+++ b/dev-python/sqlglot/Manifest
@@ -1,5 +1,4 @@
DIST sqlglot-26.33.0-crates.tar.xz 8859792 BLAKE2B abb2051b392c53dc3caa705ddd8df7076819a26dcdaa89fa3760559a79578db01e86943c2d0ffb8006263c2dca3aa50d20023eae9d772f8ebd12a8a2d3266cdd SHA512 7cca439a06433a62bcd4a2af33d240f46e9b5240cc158edbc654efb37a464aa0f1ebbe9749b2fc6352127b4809b63af2341fac6240050c414e578ae99444ba5d
DIST sqlglot-26.33.0.tar.gz 5353340 BLAKE2B 18ace866ec89ced24911803497e8cb5c55fc6c157bf62b893e90df914b8be3360403ffff67f196080cdef9b9b9078b86d471494ae9768e7947a8b4d5d39e49af SHA512 df38e899d59bdd07aca0e5370833133308f9c5be4d0c990bf8112a48776fae034b622938aba968769aa5dc5e2957d56da48c89045b91b2d33783e6e25acc4a7b
-DIST sqlglot-27.16.3.tar.gz 5471626 BLAKE2B ec8f0a831767380362c4c2fe31d3e63355904bbe8a063172efe5f1b893fbc5fce98f9540e9a89136070db6beebe0ac4384b894e0fb103a8bd2c014a917b60b3f SHA512 b9aae79f96b2a7d797c762ab471737b29fa7760798e9121490db2f16a953a67baeb71c0d3e86d77ff00e311a2240503d1155f16669905847d91a5d4eedf18574
-DIST sqlglot-27.17.0.tar.gz 5474967 BLAKE2B ff7cb2e2551ec1e78688fec29685d4e75313136a9c575b7b5bd27eb022db91c44417ca467285a89a30ff6d8aad2f99f1d2b3bca1113ace32dd53ae089883d9d5 SHA512 76aaa80b59e3b0ae831b3965824cf92072b63b1573a9eb6204aea7764c186b1c926a47c72c8e169ed0fb42b01b0784e408e32795befddc230ab08023257f820b
DIST sqlglot-27.18.0.tar.gz 5478250 BLAKE2B 6b15843587ece336e4e92d5ec425ce28cace71c5b32f4451d8e7213661e3ed3b99c34f599f3db370d6b8764cd71a635e9cb666678a283c1d069e858c0644fab2 SHA512 542c3f9d48f47e4504d9adef64e703d03895be4139579534062e342b7717b0f776f072a1885f309536f88d11b28290c5bb37dfe5ce7b73e843051a87e4166a20
+DIST sqlglot-27.19.0.tar.gz 5479756 BLAKE2B 72ea02627fe22d6cbe7d40b9c61b93d9eb1f8f8c038efebefc922b6abec73ade89a01cac41acba1c841b91494fa3077544280777e399ef8d07bef8251900f751 SHA512 91e5b252557f7d03fded6625724676617fec9ab5614bae226c2200fea7ba95cdbfe52a224a6274b0cd7d646f58276685e3bd43b3c4180c946d1c1ad7158482ba
diff --git a/dev-python/sqlglot/sqlglot-27.17.0.ebuild b/dev-python/sqlglot/sqlglot-27.17.0.ebuild
deleted file mode 100644
index 9a517e6a4e70..000000000000
--- a/dev-python/sqlglot/sqlglot-27.17.0.ebuild
+++ /dev/null
@@ -1,175 +0,0 @@
-# Copyright 2023-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-CRATES="
- aho-corasick@1.1.3
- anes@0.1.6
- anstyle@1.0.10
- autocfg@1.1.0
- bumpalo@3.16.0
- cast@0.3.0
- cfg-if@1.0.0
- ciborium-io@0.2.2
- ciborium-ll@0.2.2
- ciborium@0.2.2
- clap@4.5.23
- clap_builder@4.5.23
- clap_lex@0.7.4
- criterion-plot@0.5.0
- criterion@0.5.1
- crossbeam-deque@0.8.6
- crossbeam-epoch@0.9.18
- crossbeam-utils@0.8.21
- crunchy@0.2.2
- either@1.13.0
- half@2.4.1
- heck@0.5.0
- hermit-abi@0.4.0
- indoc@2.0.4
- is-terminal@0.4.13
- itertools@0.10.5
- itoa@1.0.14
- js-sys@0.3.76
- libc@0.2.169
- log@0.4.22
- memchr@2.7.4
- memoffset@0.9.0
- num-traits@0.2.19
- once_cell@1.19.0
- oorandom@11.1.4
- plotters-backend@0.3.7
- plotters-svg@0.3.7
- plotters@0.3.7
- portable-atomic@1.9.0
- proc-macro2@1.0.89
- pyo3-build-config@0.25.0
- pyo3-ffi@0.25.0
- pyo3-macros-backend@0.25.0
- pyo3-macros@0.25.0
- pyo3@0.25.0
- quote@1.0.37
- rayon-core@1.12.1
- rayon@1.10.0
- regex-automata@0.4.9
- regex-syntax@0.8.5
- regex@1.11.1
- rustc-hash@2.1.0
- ryu@1.0.18
- same-file@1.0.6
- serde@1.0.216
- serde_derive@1.0.216
- serde_json@1.0.133
- syn@2.0.87
- target-lexicon@0.13.2
- tinytemplate@1.2.1
- unicode-ident@1.0.12
- unindent@0.2.3
- walkdir@2.5.0
- wasm-bindgen-backend@0.2.99
- wasm-bindgen-macro-support@0.2.99
- wasm-bindgen-macro@0.2.99
- wasm-bindgen-shared@0.2.99
- wasm-bindgen@0.2.99
- web-sys@0.3.76
- winapi-util@0.1.9
- windows-sys@0.52.0
- windows-sys@0.59.0
- windows-targets@0.52.6
- windows_aarch64_gnullvm@0.52.6
- windows_aarch64_msvc@0.52.6
- windows_i686_gnu@0.52.6
- windows_i686_gnullvm@0.52.6
- windows_i686_msvc@0.52.6
- windows_x86_64_gnu@0.52.6
- windows_x86_64_gnullvm@0.52.6
- windows_x86_64_msvc@0.52.6
-"
-
-CARGO_OPTIONAL=1
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{11..14} )
-CRATE_PV=26.33.0
-
-inherit cargo distutils-r1 pypi optfeature
-
-DESCRIPTION="An easily customizable SQL parser and transpiler"
-HOMEPAGE="
- https://sqlglot.com/
- https://github.com/tobymao/sqlglot/
- https://pypi.org/project/sqlglot/
-"
-SRC_URI+="
- native-extensions? (
- https://github.com/gentoo-crate-dist/sqlglot/releases/download/v${CRATE_PV}/sqlglot-${CRATE_PV}-crates.tar.xz
- )
-"
-
-LICENSE="MIT"
-LICENSE+=" native-extensions? ("
-# Dependent crate licenses
-LICENSE+="
- Apache-2.0 Apache-2.0-with-LLVM-exceptions MIT Unicode-DFS-2016
-"
-LICENSE+=" )"
-SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~x86"
-IUSE="+native-extensions"
-
-BDEPEND="
- native-extensions? (
- ${RUST_DEPEND}
- dev-util/maturin[${PYTHON_USEDEP}]
- )
- test? (
- dev-python/pytz[${PYTHON_USEDEP}]
- )
-"
-
-EPYTEST_PLUGINS=()
-distutils_enable_tests pytest
-
-QA_FLAGS_IGNORED="usr/lib.*/py.*/site-packages/sqlglotrs/sqlglotrs.*.so"
-
-pkg_setup() {
- use native-extensions && rust_pkg_setup
-}
-
-src_unpack() {
- cargo_src_unpack
-}
-
-python_compile() {
- distutils-r1_python_compile
-
- if use native-extensions; then
- local DISTUTILS_USE_PEP517=maturin
- local DISTUTILS_UPSTREAM_PEP517=maturin
- cd sqlglotrs || die
- distutils-r1_python_compile
- cd - >/dev/null || die
- fi
-}
-
-python_test() {
- local EPYTEST_IGNORE=(
- # Tests require pyspark or duckdb which aren't in the tree.
- # Pandas would be a requirement normally, but it gets ignored by proxy.
- "tests/dataframe/integration/test_dataframe.py"
- "tests/dataframe/integration/test_grouped_data.py"
- "tests/dataframe/integration/test_session.py"
- "tests/test_executor.py"
- "tests/test_optimizer.py"
- )
-
- # make sure not to use an earlier installed version
- local -x SQLGLOTRS_TOKENIZER=$(usex native-extensions 1 0)
- rm -rf sqlglotrs || die
- epytest
-}
-
-pkg_postinst() {
- optfeature "simplifying timedelta expressions" dev-python/python-dateutil
-}
diff --git a/dev-python/sqlglot/sqlglot-27.16.3.ebuild b/dev-python/sqlglot/sqlglot-27.19.0.ebuild
index 9a517e6a4e70..9a517e6a4e70 100644
--- a/dev-python/sqlglot/sqlglot-27.16.3.ebuild
+++ b/dev-python/sqlglot/sqlglot-27.19.0.ebuild
diff --git a/dev-python/starlette/starlette-0.47.3.ebuild b/dev-python/starlette/starlette-0.47.3.ebuild
index bfefa18a13ce..cf07a480d9be 100644
--- a/dev-python/starlette/starlette-0.47.3.ebuild
+++ b/dev-python/starlette/starlette-0.47.3.ebuild
@@ -24,7 +24,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
<dev-python/anyio-5[${PYTHON_USEDEP}]
diff --git a/dev-python/types-docutils/types-docutils-0.22.0.20250919.ebuild b/dev-python/types-docutils/types-docutils-0.22.0.20250919.ebuild
index 9fdbbf2b35dd..29b3eac5da76 100644
--- a/dev-python/types-docutils/types-docutils-0.22.0.20250919.ebuild
+++ b/dev-python/types-docutils/types-docutils-0.22.0.20250919.ebuild
@@ -13,4 +13,4 @@ HOMEPAGE="https://pypi.org/project/types-docutils/"
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~x86"
+KEYWORDS="amd64 ~arm64 x86"
diff --git a/dev-python/types-psutil/types-psutil-7.0.0.20250822.ebuild b/dev-python/types-psutil/types-psutil-7.0.0.20250822.ebuild
index da0f9d713bcd..27dbe28429dc 100644
--- a/dev-python/types-psutil/types-psutil-7.0.0.20250822.ebuild
+++ b/dev-python/types-psutil/types-psutil-7.0.0.20250822.ebuild
@@ -13,4 +13,4 @@ HOMEPAGE="https://pypi.org/project/types-psutil/"
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
diff --git a/dev-python/types-setuptools/types-setuptools-80.9.0.20250822.ebuild b/dev-python/types-setuptools/types-setuptools-80.9.0.20250822.ebuild
index 078677754317..2086c497e4d7 100644
--- a/dev-python/types-setuptools/types-setuptools-80.9.0.20250822.ebuild
+++ b/dev-python/types-setuptools/types-setuptools-80.9.0.20250822.ebuild
@@ -13,4 +13,4 @@ HOMEPAGE="https://pypi.org/project/types-setuptools/"
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
diff --git a/dev-python/typing-extensions/typing-extensions-4.15.0.ebuild b/dev-python/typing-extensions/typing-extensions-4.15.0.ebuild
index aa49586f5f76..5d3015a99ea2 100644
--- a/dev-python/typing-extensions/typing-extensions-4.15.0.ebuild
+++ b/dev-python/typing-extensions/typing-extensions-4.15.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="PSF-2"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/xcffib/Manifest b/dev-python/xcffib/Manifest
index e1ba95ff2c0d..6ab57662f2d5 100644
--- a/dev-python/xcffib/Manifest
+++ b/dev-python/xcffib/Manifest
@@ -1,2 +1,3 @@
DIST xcffib-1.10.0.tar.gz 111521 BLAKE2B bceb78b64d4bd22ef350756e630bb8bb640e1bcb0823168d1134d7465b93c895a70e5ebde0c9665d0f0582207e72653865b814790c45914a14bb2f20e37ff461 SHA512 db9754967a2cd6ae6ae7db5e72a40f6c9f412f3834160fd3ff8a21a286b574e2f307dc807603c9015512e3bc757b65947aa6e0088a73a7c504423f394fe41066
+DIST xcffib-1.11.1.tar.gz 111547 BLAKE2B 4ebe6f16e674a11f9e0039ead6437670d76472211fef3cfa628ff14888d2ae82b27b9003273a46254dd54c73b919f42b99178af231539eea7dcd240bc49246ef SHA512 3e64911dbf6b3b4dc5de4b36e92366aa396bbd5eaf7b22e7ae077e573c5ee3b251fbc44b2f6878616989dcd00c445df61612147649121f6ea76a3384506bf2a5
DIST xcffib-1.9.0.tar.gz 110472 BLAKE2B 040adb746726a10d6149e8f914a60fad1e4eca2b52711ff261de040bff35c64a748c5781ddd70a756f1c41cfbfc785fff62a86f65e3fa99243eef5e474809e0c SHA512 c0b1c3606c8430e83fb980d4c006b6be1eee91aaf6f40b8159dbdad50b2e596dc85372a83eae85e34a702cbdde98eb7219a260fb520b0ddfb16d897722b64fe0
diff --git a/dev-python/xcffib/xcffib-1.11.1.ebuild b/dev-python/xcffib/xcffib-1.11.1.ebuild
new file mode 100644
index 000000000000..7413aae31ed7
--- /dev/null
+++ b/dev-python/xcffib/xcffib-1.11.1.ebuild
@@ -0,0 +1,45 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A drop in replacement for xpyb, an XCB python binding"
+HOMEPAGE="
+ https://github.com/tych0/xcffib/
+ https://pypi.org/project/xcffib/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+DEPEND="
+ x11-libs/libxcb
+"
+RDEPEND="
+ $(python_gen_cond_dep '
+ >=dev-python/cffi-1.1.0:=[${PYTHON_USEDEP}]
+ ' 'python*')
+ ${DEPEND}
+"
+BDEPEND="
+ test? (
+ x11-base/xorg-server[xvfb]
+ x11-apps/xeyes
+ )
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_test() {
+ rm -rf xcffib || die
+ epytest
+}