summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
authorLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2025-06-01 06:59:07 +0000
committerLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2025-06-01 06:59:07 +0000
commitd8ecf180f6d1a41cde23e78dd6a90fca9309fd76 (patch)
tree7c20cf0c148a0855dc5f07f2b3e95bace5cee7a6 /dev-python
parente709146bfe0a78864c489db0165a0156151b5b7a (diff)
downloadbaldeagleos-repo-d8ecf180f6d1a41cde23e78dd6a90fca9309fd76.tar.gz
baldeagleos-repo-d8ecf180f6d1a41cde23e78dd6a90fca9309fd76.tar.xz
baldeagleos-repo-d8ecf180f6d1a41cde23e78dd6a90fca9309fd76.zip
Adding metadata
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/aiohttp-oauthlib/aiohttp-oauthlib-0.1.0.ebuild8
-rw-r--r--dev-python/aiohttp/Manifest1
-rw-r--r--dev-python/aiohttp/aiohttp-3.12.6.ebuild155
-rw-r--r--dev-python/aioresponses/aioresponses-0.7.8.ebuild2
-rw-r--r--dev-python/aiounittest/aiounittest-1.5.0-r1.ebuild33
-rw-r--r--dev-python/aiounittest/files/aiounittest-1.5.0-py314.patch41
-rw-r--r--dev-python/audioop-lts/Manifest1
-rw-r--r--dev-python/audioop-lts/audioop-lts-0.2.1.ebuild27
-rw-r--r--dev-python/audioop-lts/metadata.xml9
-rw-r--r--dev-python/audioread/audioread-3.0.1-r1.ebuild48
-rw-r--r--dev-python/audioread/files/audioread-3.0.1-optional-deprecated-modules.patch208
-rw-r--r--dev-python/black/black-25.1.0.ebuild4
-rw-r--r--dev-python/cattrs/Manifest1
-rw-r--r--dev-python/cattrs/cattrs-25.1.0.ebuild80
-rw-r--r--dev-python/cli-ui/cli-ui-0.19.0.ebuild2
-rw-r--r--dev-python/cmd2/Manifest1
-rw-r--r--dev-python/cmd2/cmd2-2.6.0.ebuild58
-rw-r--r--dev-python/curtsies/curtsies-0.4.2-r1.ebuild40
-rw-r--r--dev-python/curtsies/curtsies-0.4.2.ebuild4
-rw-r--r--dev-python/curtsies/files/curtsies-0.4.2-py314.patch28
-rw-r--r--dev-python/dependency-groups/dependency-groups-1.3.1.ebuild2
-rw-r--r--dev-python/dill/Manifest1
-rw-r--r--dev-python/dill/dill-0.4.0.ebuild23
-rw-r--r--dev-python/dogpile-cache/dogpile-cache-1.4.0.ebuild2
-rw-r--r--dev-python/ensurepip-pip/ensurepip-pip-25.1.1.ebuild2
-rw-r--r--dev-python/gitpython/gitpython-3.1.44.ebuild5
-rw-r--r--dev-python/hypothesis/Manifest1
-rw-r--r--dev-python/hypothesis/hypothesis-6.132.0.ebuild130
-rw-r--r--dev-python/ipython/Manifest2
-rw-r--r--dev-python/ipython/ipython-8.37.0.ebuild158
-rw-r--r--dev-python/ipython/ipython-9.3.0.ebuild148
-rw-r--r--dev-python/isort/isort-6.0.1.ebuild5
-rw-r--r--dev-python/jedi/jedi-0.19.2.ebuild8
-rw-r--r--dev-python/knowit/knowit-0.5.6.ebuild2
-rw-r--r--dev-python/langdetect/Manifest2
-rw-r--r--dev-python/langdetect/files/langdetect-1.0.9-explicit-config.patch13
-rw-r--r--dev-python/langdetect/langdetect-1.0.9.ebuild6
-rw-r--r--dev-python/langdetect/metadata.xml10
-rw-r--r--dev-python/lap/Manifest1
-rw-r--r--dev-python/lap/lap-0.5.12.ebuild45
-rw-r--r--dev-python/lap/metadata.xml9
-rw-r--r--dev-python/matplotlib/matplotlib-3.10.3.ebuild2
-rw-r--r--dev-python/parso/parso-0.8.4-r1.ebuild42
-rw-r--r--dev-python/pip/pip-25.1.1.ebuild2
-rw-r--r--dev-python/pyacoustid/pyacoustid-1.3.0-r1.ebuild51
-rw-r--r--dev-python/python-tests/python-tests-3.13.3_p1.ebuild2
-rw-r--r--dev-python/pythran/pythran-0.18.0.ebuild2
-rw-r--r--dev-python/pytoolconfig/pytoolconfig-1.3.1.ebuild3
-rw-r--r--dev-python/pyxdg/files/pyxdg-0.28-py3.14.patch89
-rw-r--r--dev-python/pyxdg/pyxdg-0.28-r2.ebuild32
-rw-r--r--dev-python/sarif-om/sarif-om-1.0.4-r1.ebuild6
-rw-r--r--dev-python/snakeoil/Manifest1
-rw-r--r--dev-python/snakeoil/snakeoil-0.10.11.ebuild30
-rw-r--r--dev-python/snakeoil/snakeoil-9999.ebuild3
-rw-r--r--dev-python/stevedore/stevedore-5.4.1.ebuild2
-rw-r--r--dev-python/terminaltables3/terminaltables3-4.0.0.ebuild2
-rw-r--r--dev-python/traitlets/traitlets-5.14.3.ebuild10
-rw-r--r--dev-python/vdirsyncer/vdirsyncer-0.19.3.ebuild2
58 files changed, 1547 insertions, 60 deletions
diff --git a/dev-python/aiohttp-oauthlib/aiohttp-oauthlib-0.1.0.ebuild b/dev-python/aiohttp-oauthlib/aiohttp-oauthlib-0.1.0.ebuild
index de331ee1f827..1c27573e07fe 100644
--- a/dev-python/aiohttp-oauthlib/aiohttp-oauthlib-0.1.0.ebuild
+++ b/dev-python/aiohttp-oauthlib/aiohttp-oauthlib-0.1.0.ebuild
@@ -1,14 +1,14 @@
-# Copyright 1999-2024 Gentoo Authors
+# 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} )
+PYTHON_COMPAT=( python3_{11..14} )
inherit distutils-r1
-DESCRIPTION="This project provides first-class OAuth library support for aiohttp"
+DESCRIPTION="oauthlib for aiohttp clients"
HOMEPAGE="https://git.sr.ht/~whynothugo/aiohttp-oauthlib"
SRC_URI="https://git.sr.ht/~whynothugo/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/${PN}-v${PV}"
@@ -26,3 +26,5 @@ BDEPEND="
"
export SETUPTOOLS_SCM_PRETEND_VERSION=${PV}
+
+distutils_enable_tests import-check
diff --git a/dev-python/aiohttp/Manifest b/dev-python/aiohttp/Manifest
index d4cbe135dc5b..40ceced3a38f 100644
--- a/dev-python/aiohttp/Manifest
+++ b/dev-python/aiohttp/Manifest
@@ -3,3 +3,4 @@ DIST aiohttp-3.11.18.tar.gz 7678653 BLAKE2B 5886778fd0456ef40f1da5abd3d6a3864db0
DIST aiohttp-3.12.0.tar.gz 7762804 BLAKE2B 2fa51165917038cc8442cc4dab74373b47862cc1eca54a33e2a4b0f46c0362ca984614fec8615b4d89f065af039de9576b00c1c5b566c1758d608ef1e43702dc SHA512 8b3ad37b9aa73eb8961a397cc62dadea8ff286e2de1d91d9cb94f9ac86ae0fbd0127a6fa2867710f2e9accae1093892da4b87c17d5e7c24f8031670a3585d41b
DIST aiohttp-3.12.2.tar.gz 7780423 BLAKE2B 47c7dccb2666c4641bbcfdba4f13f2f423e84d3043163dd9c2436aa32ccb2698b2a6ceb7c0ccf5defc98c1fb5799b39849a0a25f8aa37aaa4aab186b2b936c68 SHA512 8c6aed54ae385962fb1ad34f6f80f322612d7aec6c65845c56e8047b6b4e4102f9044964ac34ed765a09799bb6753e980ce51bf8194ce2e1ec7a9d8dd7c5cbd1
DIST aiohttp-3.12.4.tar.gz 7781788 BLAKE2B ccaa2656ef0e68687bad17608557413d8139b516e9e56dde473147f2c449ff1066878934a3a77b796e304c8ce0d48bf81c13ca65468187fdd686e51426fe8f9c SHA512 86e88a3be0d6a4993dbcf5a28bebbe19ded15466d539c6933cf2c8990bb684d436673685e419662efe1655a315e31642a60805d348ead9eeda909522720b8434
+DIST aiohttp-3.12.6.tar.gz 7784449 BLAKE2B 1ebc5b2e991e8ccd9b37552d0b3ae80debfcc6d7000dc83e9ba308b25e9694ad1c1a9aff34469eef4bc2faa0b9d25d971ab854891fb1c63823266cb54693dddb SHA512 e73e57cf185bdf52e020856c9254be407663d75eeeb52e6ac3c0d57a77719d82539006347980319c7eed79ff8f3692355ade00d82929ed11a35ddb718b1cebca
diff --git a/dev-python/aiohttp/aiohttp-3.12.6.ebuild b/dev-python/aiohttp/aiohttp-3.12.6.ebuild
new file mode 100644
index 000000000000..e6c262fbcc0a
--- /dev/null
+++ b/dev-python/aiohttp/aiohttp-3.12.6.ebuild
@@ -0,0 +1,155 @@
+# 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="HTTP client/server for asyncio"
+HOMEPAGE="
+ https://github.com/aio-libs/aiohttp/
+ https://pypi.org/project/aiohttp/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~riscv ~x86"
+IUSE="+native-extensions test-rust"
+
+DEPEND="
+ native-extensions? (
+ $(python_gen_cond_dep '
+ net-libs/llhttp:=
+ ' 'python3*')
+ )
+"
+RDEPEND="
+ ${DEPEND}
+ >=dev-python/aiodns-3.3.0[${PYTHON_USEDEP}]
+ >=dev-python/aiohappyeyeballs-2.5.0[${PYTHON_USEDEP}]
+ >=dev-python/aiosignal-1.1.2[${PYTHON_USEDEP}]
+ >=dev-python/attrs-17.3.0[${PYTHON_USEDEP}]
+ dev-python/brotlicffi[${PYTHON_USEDEP}]
+ >=dev-python/frozenlist-1.1.1[${PYTHON_USEDEP}]
+ >=dev-python/multidict-4.5.0[${PYTHON_USEDEP}]
+ >=dev-python/propcache-0.2.0[${PYTHON_USEDEP}]
+ >=dev-python/yarl-1.17.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ native-extensions? (
+ >=dev-python/cython-3.1.1[${PYTHON_USEDEP}]
+ dev-python/pkgconfig[${PYTHON_USEDEP}]
+ )
+ test? (
+ dev-python/blockbuster[${PYTHON_USEDEP}]
+ dev-python/freezegun[${PYTHON_USEDEP}]
+ dev-python/isal[${PYTHON_USEDEP}]
+ dev-python/pytest-mock[${PYTHON_USEDEP}]
+ dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
+ dev-python/pytest-xdist[${PYTHON_USEDEP}]
+ dev-python/re-assert[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/time-machine[${PYTHON_USEDEP}]
+ ' 'python3*')
+ dev-python/zlib-ng[${PYTHON_USEDEP}]
+ www-servers/gunicorn[${PYTHON_USEDEP}]
+ test-rust? (
+ dev-python/trustme[${PYTHON_USEDEP}]
+ )
+ )
+"
+
+DOCS=( CHANGES.rst CONTRIBUTORS.txt README.rst )
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # increase the timeout a little
+ sed -e '/abs=/s/0.001/0.01/' -i tests/test_helpers.py || die
+ # xfail_strict fails on py3.10
+ sed -i -e '/--cov/d' -e '/pytest_cov/d' -e '/xfail_strict/d' setup.cfg || die
+ sed -i -e 's:-Werror::' Makefile || die
+ # remove vendored llhttp
+ rm -r vendor || die
+}
+
+python_configure() {
+ # check for .install-cython, so that we do this only once
+ if [[ ! -f .install-cython && ${EPYTHON} != pypy3 ]] &&
+ use native-extensions
+ then
+ # force rehashing first
+ emake requirements/.hash/cython.txt.hash
+ > .update-pip || die
+ > .install-cython || die
+ emake cythonize
+ fi
+}
+
+python_compile() {
+ local -x AIOHTTP_USE_SYSTEM_DEPS=1
+ # implicitly disabled for pypy3
+ if ! use native-extensions; then
+ local -x AIOHTTP_NO_EXTENSIONS=1
+ fi
+
+ distutils-r1_python_compile
+}
+
+python_test() {
+ local EPYTEST_IGNORE=(
+ # proxy is not packaged
+ tests/test_proxy_functional.py
+ # python_on_whales is not packaged
+ tests/autobahn/test_autobahn.py
+ # benchmarks
+ tests/test_benchmarks_client.py
+ tests/test_benchmarks_client_request.py
+ tests/test_benchmarks_client_ws.py
+ tests/test_benchmarks_cookiejar.py
+ tests/test_benchmarks_http_websocket.py
+ tests/test_benchmarks_http_writer.py
+ tests/test_benchmarks_web_fileresponse.py
+ tests/test_benchmarks_web_middleware.py
+ tests/test_benchmarks_web_response.py
+ tests/test_benchmarks_web_urldispatcher.py
+ )
+
+ local EPYTEST_DESELECT=(
+ # Internet
+ tests/test_client_session.py::test_client_session_timeout_zero
+ tests/test_connector.py::test_tcp_connector_ssl_shutdown_timeout_passed_to_create_connection
+ # broken by irrelevant deprecation warnings
+ tests/test_circular_imports.py::test_no_warnings
+ )
+
+ case ${EPYTHON} in
+ python3.14)
+ EPYTEST_DESELECT+=(
+ # TODO
+ tests/test_cookiejar.py::test_pickle_format
+ # different exception message
+ tests/test_client_functional.py::test_aiohttp_request_coroutine
+ )
+ ;;
+ esac
+
+ # upstream unconditionally blocks building C extensions
+ # on PyPy3 but the test suite needs an explicit switch
+ if [[ ${EPYTHON} == pypy3* ]] || ! use native-extensions; then
+ local -x AIOHTTP_NO_EXTENSIONS=1
+ fi
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ local -x PYTEST_PLUGINS=pytest_mock,xdist.plugin
+ rm -rf aiohttp || die
+ epytest -m "not internal and not dev_mode" \
+ -p rerunfailures --reruns=5
+}
diff --git a/dev-python/aioresponses/aioresponses-0.7.8.ebuild b/dev-python/aioresponses/aioresponses-0.7.8.ebuild
index 3dc103f4c58e..2bd0767b0bbc 100644
--- a/dev-python/aioresponses/aioresponses-0.7.8.ebuild
+++ b/dev-python/aioresponses/aioresponses-0.7.8.ebuild
@@ -4,7 +4,7 @@
EAPI=8
DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+PYTHON_COMPAT=( python3_{11..14} )
inherit distutils-r1 pypi
diff --git a/dev-python/aiounittest/aiounittest-1.5.0-r1.ebuild b/dev-python/aiounittest/aiounittest-1.5.0-r1.ebuild
new file mode 100644
index 000000000000..d70f8d9423a9
--- /dev/null
+++ b/dev-python/aiounittest/aiounittest-1.5.0-r1.ebuild
@@ -0,0 +1,33 @@
+# Copyright 2023-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1
+
+DESCRIPTION="Test asyncio code more easily"
+HOMEPAGE="
+ https://github.com/kwarunek/aiounittest/
+ https://pypi.org/project/aiounittest/
+"
+SRC_URI="
+ https://github.com/kwarunek/aiounittest/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ dev-python/wrapt[${PYTHON_USEDEP}]
+"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-1.5.0-py314.patch
+)
+
+distutils_enable_tests pytest
diff --git a/dev-python/aiounittest/files/aiounittest-1.5.0-py314.patch b/dev-python/aiounittest/files/aiounittest-1.5.0-py314.patch
new file mode 100644
index 000000000000..0c80380c0afc
--- /dev/null
+++ b/dev-python/aiounittest/files/aiounittest-1.5.0-py314.patch
@@ -0,0 +1,41 @@
+https://github.com/kwarunek/aiounittest/issues/28
+https://github.com/kwarunek/aiounittest/pull/29
+
+From 603ca4f57ee2f580d59066600e0ca886efcf8700 Mon Sep 17 00:00:00 2001
+From: Karolina Surma <ksurma@redhat.com>
+Date: Wed, 28 May 2025 10:59:13 +0200
+Subject: [PATCH] asyncio.get_event_loop() doesn't create a new loop since
+ Python 3.14
+
+---
+ aiounittest/case.py | 2 +-
+ tests/test_asynctestcase_get_event_loop.py | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/aiounittest/case.py b/aiounittest/case.py
+index d4e302b..441eed0 100644
+--- a/aiounittest/case.py
++++ b/aiounittest/case.py
+@@ -70,7 +70,7 @@ def get_event_loop(self):
+ class MyTest(aiounittest.AsyncTestCase):
+
+ def get_event_loop(self):
+- self.my_loop = asyncio.get_event_loop()
++ self.my_loop = asyncio.new_event_loop()
+ return self.my_loop
+
+
+diff --git a/tests/test_asynctestcase_get_event_loop.py b/tests/test_asynctestcase_get_event_loop.py
+index 91736ef..5d5de9c 100644
+--- a/tests/test_asynctestcase_get_event_loop.py
++++ b/tests/test_asynctestcase_get_event_loop.py
+@@ -27,7 +27,7 @@ async def async_nested_exc():
+ class TestAsyncCaseWithCustomLoop(aiounittest.AsyncTestCase):
+
+ def get_event_loop(self):
+- self.my_loop = asyncio.get_event_loop()
++ self.my_loop = asyncio.new_event_loop()
+ return self.my_loop
+
+ async def test_await_async_add(self):
+
diff --git a/dev-python/audioop-lts/Manifest b/dev-python/audioop-lts/Manifest
new file mode 100644
index 000000000000..591d0a973f3c
--- /dev/null
+++ b/dev-python/audioop-lts/Manifest
@@ -0,0 +1 @@
+DIST audioop_lts-0.2.1.tar.gz 30204 BLAKE2B 924d05bbfc0cd42fd9ca2cff175db5cc4024641e4cf5ac72200e8178a1806a7a4e4230b931a9a2b096fe5ccc3594ebc3fbdabc716b2e2db06e9fb7d737c639de SHA512 e0fb4c7fcec4dacaa38a2fb2cf69bff3eab8c78150429f3af54192bff7b98c574f3e65960c65d554104c1290e86806f295e7ada434c33b47abb383c644eb2c4b
diff --git a/dev-python/audioop-lts/audioop-lts-0.2.1.ebuild b/dev-python/audioop-lts/audioop-lts-0.2.1.ebuild
new file mode 100644
index 000000000000..af9a4b88d2fa
--- /dev/null
+++ b/dev-python/audioop-lts/audioop-lts-0.2.1.ebuild
@@ -0,0 +1,27 @@
+# Copyright 2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+DISTUTILS_EXT=1
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="An LTS port of Python's audioop module"
+HOMEPAGE="
+ https://github.com/AbstractUmbra/audioop
+ https://pypi.org/project/audioop-lts/
+"
+
+LICENSE="PSF-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+
+distutils_enable_tests pytest
+
+python_test() {
+ rm -rf audioop || die
+ epytest
+}
diff --git a/dev-python/audioop-lts/metadata.xml b/dev-python/audioop-lts/metadata.xml
new file mode 100644
index 000000000000..7ad11570cc7d
--- /dev/null
+++ b/dev-python/audioop-lts/metadata.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>python@gentoo.org</email>
+ </maintainer>
+
+ <origin>gentoo-staging</origin>
+</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/audioread/audioread-3.0.1-r1.ebuild b/dev-python/audioread/audioread-3.0.1-r1.ebuild
new file mode 100644
index 000000000000..d34d6bfbf1be
--- /dev/null
+++ b/dev-python/audioread/audioread-3.0.1-r1.ebuild
@@ -0,0 +1,48 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=flit
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Wrapper for audio file decoding using FFmpeg or GStreamer"
+HOMEPAGE="
+ https://github.com/beetbox/audioread/
+ https://pypi.org/project/audioread/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+IUSE="ffmpeg gstreamer mad"
+
+RDEPEND="
+ $(python_gen_cond_dep '
+ dev-python/audioop-lts[${PYTHON_USEDEP}]
+ ' python3_13)
+ ffmpeg? (
+ media-video/ffmpeg
+ )
+ gstreamer? (
+ dev-python/pygobject:3[${PYTHON_USEDEP}]
+ media-libs/gstreamer:1.0
+ media-plugins/gst-plugins-meta:1.0
+ )
+ mad? (
+ dev-python/pymad[${PYTHON_USEDEP}]
+ )
+"
+BDEPEND="
+ test? (
+ dev-python/pymad[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+PATCHES=(
+ "${FILESDIR}"/audioread-3.0.1-optional-deprecated-modules.patch
+)
diff --git a/dev-python/audioread/files/audioread-3.0.1-optional-deprecated-modules.patch b/dev-python/audioread/files/audioread-3.0.1-optional-deprecated-modules.patch
new file mode 100644
index 000000000000..ee65344c8e9f
--- /dev/null
+++ b/dev-python/audioread/files/audioread-3.0.1-optional-deprecated-modules.patch
@@ -0,0 +1,208 @@
+https://bugs.gentoo.org/952317
+https://github.com/beetbox/audioread/issues/144
+https://github.com/beetbox/audioread/pull/148
+
+(Cherrypicked)
+
+From 1ddd63b3ba6bcb11ef993c7da18db0fc83af84b7 Mon Sep 17 00:00:00 2001
+From: Brian McFee <brian.mcfee@nyu.edu>
+Date: Wed, 29 Jan 2025 12:51:27 -0500
+Subject: [PATCH 1/4] implemented flexible legacy codec handling
+
+--- a/audioread/rawread.py
++++ b/audioread/rawread.py
+@@ -13,11 +13,10 @@
+ # included in all copies or substantial portions of the Software.
+
+ """Uses standard-library modules to read AIFF, AIFF-C, and WAV files."""
+-import aifc
+ import audioop
+ import struct
+-import sunau
+ import wave
++import warnings
+
+ from .exceptions import DecodeError
+ from .base import AudioFile
+@@ -54,20 +53,13 @@ def byteswap(s):
+ class RawAudioFile(AudioFile):
+ """An AIFF, WAV, or Au file that can be read by the Python standard
+ library modules ``wave``, ``aifc``, and ``sunau``.
++
++ On Python 3.13 and later, ``aifc`` and ``sunau`` support require
++ installing the ``standard-aifc`` and ``standard-sunau`` packages, respectively.
+ """
+ def __init__(self, filename):
+ self._fh = open(filename, 'rb')
+
+- try:
+- self._file = aifc.open(self._fh)
+- except aifc.Error:
+- # Return to the beginning of the file to try the next reader.
+- self._fh.seek(0)
+- else:
+- self._needs_byteswap = True
+- self._check()
+- return
+-
+ try:
+ self._file = wave.open(self._fh)
+ except wave.Error:
+@@ -78,15 +70,38 @@ class RawAudioFile(AudioFile):
+ self._check()
+ return
+
++ # The following are deprecated formats and may not be supported
+ try:
+- self._file = sunau.open(self._fh)
+- except sunau.Error:
+- self._fh.seek(0)
+- pass
++ import aifc
++ except ImportError:
++ warnings.warn("aifc module not found; AIFF files will not be supported. "
++ "You may need to install the standard-aifc package.")
+ else:
+- self._needs_byteswap = True
+- self._check()
+- return
++ try:
++ self._file = aifc.open(self._fh)
++ except aifc.Error:
++ # Return to the beginning of the file to try the next reader.
++ self._fh.seek(0)
++ else:
++ self._needs_byteswap = True
++ self._check()
++ return
++
++ try:
++ import sunau
++ except ImportError:
++ warnings.warn("sunau module not found; Au files will not be supported. "
++ "You may need to install the standard-sunau package.")
++ else:
++ try:
++ self._file = sunau.open(self._fh)
++ except sunau.Error:
++ self._fh.seek(0)
++ pass
++ else:
++ self._needs_byteswap = True
++ self._check()
++ return
+
+ # None of the three libraries could open the file.
+ self._fh.close()
+--- a/pyproject.toml
++++ b/pyproject.toml
+@@ -8,7 +8,7 @@ authors = [
+ {name = "Adrian Sampson", email = "adrian@radbox.org"}
+ ]
+ readme = "README.rst"
+-requires-python = ">=3.6"
++requires-python = ">=3.8"
+ dynamic = ["version", "description"]
+ urls.Home = "https://github.com/beetbox/audioread"
+ classifiers = [
+@@ -19,9 +19,15 @@ classifiers = [
+ 'Programming Language :: Python :: 3.9',
+ 'Programming Language :: Python :: 3.10',
+ 'Programming Language :: Python :: 3.11',
++ 'Programming Language :: Python :: 3.12',
++ 'Programming Language :: Python :: 3.13',
+ ]
+
+ [project.optional-dependencies]
+ test = [
+ "tox"
+ ]
++legacy = [
++ "standard-aifc; python_version >= '3.13'",
++ "standard-sunau; python_version >= '3.13'"
++]
+--
+2.49.0
+
+
+From d761d0c9df6ca423aa7e69c27d0946c1d9c7b5d3 Mon Sep 17 00:00:00 2001
+From: Brian McFee <brian.mcfee@nyu.edu>
+Date: Mon, 3 Feb 2025 12:17:55 -0500
+Subject: [PATCH 2/4] added audioop-lts dependency for modern python installs
+
+--- a/pyproject.toml
++++ b/pyproject.toml
+@@ -9,6 +9,9 @@ authors = [
+ ]
+ readme = "README.rst"
+ requires-python = ">=3.8"
++requires = [
++ "audioop-lts; python_version >= '3.13'"
++]
+ dynamic = ["version", "description"]
+ urls.Home = "https://github.com/beetbox/audioread"
+ classifiers = [
+--
+2.49.0
+
+
+From a7d86b7c2a22489a58d0ff9dc3e0b7608aa25914 Mon Sep 17 00:00:00 2001
+From: Brian McFee <brian.mcfee@nyu.edu>
+Date: Mon, 3 Feb 2025 12:29:58 -0500
+Subject: [PATCH 3/4] updated readme
+
+--- a/README.rst
++++ b/README.rst
+@@ -8,8 +8,8 @@ currently supports:
+ - `Core Audio`_ on Mac OS X via `ctypes`_. (PyObjC not required.)
+ - `MAD`_ via the `pymad`_ bindings.
+ - `FFmpeg`_ or `Libav`_ via its command-line interface.
+-- The standard library `wave`_, `aifc`_, and `sunau`_ modules (for
+- uncompressed audio formats).
++- The standard library `wave`_ module (for
++ uncompressed audio formats). Legacy formats `aifc`_ and `sunau`_ are also optionally supported, see the note below.
+
+ .. _Gstreamer: http://gstreamer.freedesktop.org/
+ .. _gst-python: http://gstreamer.freedesktop.org/modules/gst-python.html
+@@ -73,6 +73,18 @@ that you have a broken installation of `FFmpeg`_. To check, try typing
+ FFmpeg with your OS's package manager (e.g., apt or yum) or `using Conda
+ <https://anaconda.org/conda-forge/ffmpeg>`_.
+
++Legacy formats
++--------------
++The `aifc`_ and `sunau`_ modules were deprecated and removed from the standard
++Python distribution in version 3.13.
++Support for `aifc` and `sunau` formats is still available through `deadlib`_.
++To install audioread with continued support for these formats, you can
++use the following command::
++
++ python -m pip install audioread[legacy]
++
++.. _deadlib: https://github.com/youknowone/python-deadlib
++
+ Version History
+ ---------------
+
+--
+2.49.0
+
+
+From 7f932069d2e44e97d2da7d243f067d3726a0db8d Mon Sep 17 00:00:00 2001
+From: Brian McFee <brian.mcfee@nyu.edu>
+Date: Mon, 3 Feb 2025 14:14:15 -0500
+Subject: [PATCH 4/4] fixed wrong format spec for dependencies
+
+--- a/pyproject.toml
++++ b/pyproject.toml
+@@ -9,7 +9,7 @@ authors = [
+ ]
+ readme = "README.rst"
+ requires-python = ">=3.8"
+-requires = [
++dependencies = [
+ "audioop-lts; python_version >= '3.13'"
+ ]
+ dynamic = ["version", "description"]
+--
+2.49.0
+
diff --git a/dev-python/black/black-25.1.0.ebuild b/dev-python/black/black-25.1.0.ebuild
index 86c3cbc3703d..d3afe8616d2d 100644
--- a/dev-python/black/black-25.1.0.ebuild
+++ b/dev-python/black/black-25.1.0.ebuild
@@ -25,10 +25,6 @@ RDEPEND="
>=dev-python/packaging-22.0[${PYTHON_USEDEP}]
>=dev-python/pathspec-0.9.0[${PYTHON_USEDEP}]
>=dev-python/platformdirs-2[${PYTHON_USEDEP}]
- $(python_gen_cond_dep '
- >=dev-python/tomli-1.1.0[${PYTHON_USEDEP}]
- >=dev-python/typing-extensions-4.0.1[${PYTHON_USEDEP}]
- ' 3.10)
"
BDEPEND="
dev-python/hatch-fancy-pypi-readme[${PYTHON_USEDEP}]
diff --git a/dev-python/cattrs/Manifest b/dev-python/cattrs/Manifest
index 8fb4c993389b..9d5e9cbd926b 100644
--- a/dev-python/cattrs/Manifest
+++ b/dev-python/cattrs/Manifest
@@ -1 +1,2 @@
DIST cattrs-24.1.3.gh.tar.gz 428852 BLAKE2B 3c4e7842886229c56f29d6e98f0a19a374aaeacd97015b729cf8ebc677ffcb0fb7e51efd329200ead1fd1bec16e4f86b18effa17fac2511d008e8d34dfdfdd84 SHA512 1fe1de70c4ab8a5e4da7ab534833f22f02b23b01a14b68186185aa5af9b5260606e5f20365fe103901368602d4a9e3560733a85ec06f601227f1cab3c191b1e4
+DIST cattrs-25.1.0.gh.tar.gz 437261 BLAKE2B 1f1041ffd217acd44070b1a7095003155b25db07e90f776ddd7907f8b35a0dcda50c7a8cc0c70ad459236a037ba61b95039842b0c02c982459dbb5c52eed138c SHA512 bbe35beb33377fd7780bd27b98a7888a09bd05a0166536b3ffd5a179182345404b728c7392b1a075c886642eadb8b0a2d209ceedaa772c054dc37f003f11b23c
diff --git a/dev-python/cattrs/cattrs-25.1.0.ebuild b/dev-python/cattrs/cattrs-25.1.0.ebuild
new file mode 100644
index 000000000000..eae85e98b515
--- /dev/null
+++ b/dev-python/cattrs/cattrs-25.1.0.ebuild
@@ -0,0 +1,80 @@
+# Copyright 2022-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
+
+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 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="test-rust"
+
+RDEPEND="
+ >=dev-python/attrs-24.3.0[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.12.2[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ dev-python/hatch-vcs[${PYTHON_USEDEP}]
+ test? (
+ >=dev-python/cbor2-5.4.6[${PYTHON_USEDEP}]
+ >=dev-python/hypothesis-6.79.4[${PYTHON_USEDEP}]
+ >=dev-python/immutables-0.20[${PYTHON_USEDEP}]
+ >=dev-python/msgpack-1.0.5[${PYTHON_USEDEP}]
+ >=dev-python/pymongo-4.4.0[${PYTHON_USEDEP}]
+ >=dev-python/pyyaml-6.0[${PYTHON_USEDEP}]
+ >=dev-python/tomlkit-0.11.8[${PYTHON_USEDEP}]
+ >=dev-python/ujson-5.10.0[${PYTHON_USEDEP}]
+ test-rust? (
+ $(python_gen_cond_dep '
+ >=dev-python/orjson-3.10.7[${PYTHON_USEDEP}]
+ ' 'python*')
+ )
+ )
+"
+
+# xdist can randomly break tests, depending on job count
+# https://bugs.gentoo.org/941429
+distutils_enable_tests pytest
+
+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_literal_dicts_msgspec
+ tests/test_preconf.py::test_msgspec_efficient_enum
+ tests/test_preconf.py::test_msgspec_json_converter
+ tests/test_preconf.py::test_msgspec_json_unions
+ tests/test_preconf.py::test_msgspec_json_unstruct_collection_overrides
+ tests/test_preconf.py::test_msgspec_native_enums
+ )
+
+ 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
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest -o addopts= tests
+}
diff --git a/dev-python/cli-ui/cli-ui-0.19.0.ebuild b/dev-python/cli-ui/cli-ui-0.19.0.ebuild
index 33eb66ed5aa1..f67751df3b52 100644
--- a/dev-python/cli-ui/cli-ui-0.19.0.ebuild
+++ b/dev-python/cli-ui/cli-ui-0.19.0.ebuild
@@ -4,7 +4,7 @@
EAPI=8
DISTUTILS_USE_PEP517="poetry"
-PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+PYTHON_COMPAT=( python3_{11..14} )
inherit distutils-r1
diff --git a/dev-python/cmd2/Manifest b/dev-python/cmd2/Manifest
index 986ab3035f47..5765aca2f97d 100644
--- a/dev-python/cmd2/Manifest
+++ b/dev-python/cmd2/Manifest
@@ -1 +1,2 @@
DIST cmd2-2.5.11.tar.gz 883350 BLAKE2B 37fb197ff085016152bc33f243852afe71c5cca303bacf02bdee9e1cfa2fa56ad2714321f046b7e501cb1602208f7b8fadaa4454ee349d2c6b5dcf04c31c3df9 SHA512 acf3d339d33822827be85b23491b99c33556bbd1d67715450c19c8877f7b9565253a402e57afd95bf02bb5edf8ec09f9fe7c141e01d81010286a5cfabca27909
+DIST cmd2-2.6.0.tar.gz 887304 BLAKE2B 5cf780cdf6da1338b09624ea353a19498a69cc9c92d97e4f10e903e7b6b0d80ab27ccda6f416a9bfd9bcfb49a9bc7ae2e015d345bad13bec5c7c8dca7b6dfc9b SHA512 b43af9f8de9fd89c27029438ecb7165a3e60260520939637dd4b426c833a45bdebb4ccb177a128119c56678862b3055da71ebe257c042a5cf66090b8eb0f9080
diff --git a/dev-python/cmd2/cmd2-2.6.0.ebuild b/dev-python/cmd2/cmd2-2.6.0.ebuild
new file mode 100644
index 000000000000..47fc9c2b609e
--- /dev/null
+++ b/dev-python/cmd2/cmd2-2.6.0.ebuild
@@ -0,0 +1,58 @@
+# 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"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~mips ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux"
+
+RDEPEND="
+ >=dev-python/pyperclip-1.8[${PYTHON_USEDEP}]
+ >=dev-python/wcwidth-0.2.10[${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? (
+ dev-python/pytest-mock[${PYTHON_USEDEP}]
+ dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
+ || (
+ x11-misc/xclip
+ x11-misc/xsel
+ )
+ )
+"
+
+distutils_enable_tests pytest
+
+src_test() {
+ # tests rely on very specific text wrapping...
+ local -x COLUMNS=80
+ virtx distutils-r1_src_test
+}
+
+python_test() {
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ # TODO: tests_isolated?
+ epytest -o addopts= -p pytest_mock -p rerunfailures --reruns=5 tests || die
+}
+
+pkg_postinst() {
+ optfeature "IPython shell integration" dev-python/ipython
+}
diff --git a/dev-python/curtsies/curtsies-0.4.2-r1.ebuild b/dev-python/curtsies/curtsies-0.4.2-r1.ebuild
new file mode 100644
index 000000000000..0cf9939c1ea9
--- /dev/null
+++ b/dev-python/curtsies/curtsies-0.4.2-r1.ebuild
@@ -0,0 +1,40 @@
+# 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 pypi
+
+DESCRIPTION="Curses-like terminal wrapper, with colored strings"
+HOMEPAGE="
+ https://github.com/bpython/curtsies/
+ https://pypi.org/project/curtsies/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~riscv ~x86 ~amd64-linux ~x86-linux"
+
+RDEPEND="
+ >=dev-python/blessed-1.5[${PYTHON_USEDEP}]
+ dev-python/cwcwidth[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/pyte[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+src_prepare() {
+ local PATCHES=(
+ # https://github.com/bpython/curtsies/pull/186
+ "${FILESDIR}/${P}-py314.patch"
+ )
+ distutils-r1_src_prepare
+ rm setup.py || die
+}
diff --git a/dev-python/curtsies/curtsies-0.4.2.ebuild b/dev-python/curtsies/curtsies-0.4.2.ebuild
index c0f83c34df90..7f5caedeac4b 100644
--- a/dev-python/curtsies/curtsies-0.4.2.ebuild
+++ b/dev-python/curtsies/curtsies-0.4.2.ebuild
@@ -1,10 +1,10 @@
-# Copyright 1999-2024 Gentoo Authors
+# 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} )
+PYTHON_COMPAT=( python3_{11..14} )
inherit distutils-r1 pypi
diff --git a/dev-python/curtsies/files/curtsies-0.4.2-py314.patch b/dev-python/curtsies/files/curtsies-0.4.2-py314.patch
new file mode 100644
index 000000000000..3b53a479f358
--- /dev/null
+++ b/dev-python/curtsies/files/curtsies-0.4.2-py314.patch
@@ -0,0 +1,28 @@
+From 8ff589184cdc0a2face9bd3430757f672292462c Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
+Date: Sat, 31 May 2025 19:22:56 +0200
+Subject: [PATCH] Use standard setuptools `attr:` feature, fixing Python 3.14
+ compat
+
+Use the standard setuptools `attr:` feature to obtain the version
+via setuptools' built-in AST parser rather than writing a custom AST
+parser in `setup.py`. This fixes compatibility with Python 3.14,
+since the custom parser is not compatible with the new `ast.Constant`
+type.
+---
+ setup.cfg | 1 +
+ setup.py | 16 ----------------
+ 2 files changed, 1 insertion(+), 16 deletions(-)
+ delete mode 100644 setup.py
+
+diff --git a/setup.cfg b/setup.cfg
+index 10332bd..ae01e92 100644
+--- a/setup.cfg
++++ b/setup.cfg
+@@ -1,5 +1,6 @@
+ [metadata]
+ name = curtsies
++version = attr: curtsies.__version__
+ description = Curses-like terminal wrapper, with colored strings!
+ long_description = file: README.md,
+ long_description_content_type = text/markdown
diff --git a/dev-python/dependency-groups/dependency-groups-1.3.1.ebuild b/dev-python/dependency-groups/dependency-groups-1.3.1.ebuild
index 1f9b34c96218..48bbfd60515b 100644
--- a/dev-python/dependency-groups/dependency-groups-1.3.1.ebuild
+++ b/dev-python/dependency-groups/dependency-groups-1.3.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha ~amd64 arm ~arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc ~x86"
RDEPEND="
dev-python/packaging[${PYTHON_USEDEP}]
diff --git a/dev-python/dill/Manifest b/dev-python/dill/Manifest
index 5574669de2c8..9cdfd1898511 100644
--- a/dev-python/dill/Manifest
+++ b/dev-python/dill/Manifest
@@ -1 +1,2 @@
DIST dill-0.3.9.tar.gz 187000 BLAKE2B 56196bd04d0a050619feee6b719e9232376853a03fae3a7486fa48f90fea1e27b4f4eaa31b0df54e70cf1aa4333268213dd6350408db0b78778d92f04ae65bd0 SHA512 461943ff8a0b7212b30e7c8b9e35348d0215c1c6dca356ad813e15c8721f39692fb61809349e5ee63a00d19a39aeae34c3b4def17257f8f7820e4318b81b273f
+DIST dill-0.4.0.tar.gz 186976 BLAKE2B fefaaa23b98df7548089907224ec405efa75570df51fb08940d14193a7710355ab473b335642d153920a42fe648e218db30b846c826964accd1c1ba79b2cc708 SHA512 1289780e9326959a4d2488e5097b889f27212fba23d35d5c0db00337b952cde20786ecdbefa03a8b276f0cec8dba5b8ea118245e39e4fe8fd3209b5c920829e7
diff --git a/dev-python/dill/dill-0.4.0.ebuild b/dev-python/dill/dill-0.4.0.ebuild
new file mode 100644
index 000000000000..0271619539e8
--- /dev/null
+++ b/dev-python/dill/dill-0.4.0.ebuild
@@ -0,0 +1,23 @@
+# 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} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Serialize all of Python (almost)"
+HOMEPAGE="
+ https://github.com/uqfoundation/dill/
+ https://pypi.org/project/dill/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux"
+
+python_test() {
+ "${EPYTHON}" -m dill.tests || die
+}
diff --git a/dev-python/dogpile-cache/dogpile-cache-1.4.0.ebuild b/dev-python/dogpile-cache/dogpile-cache-1.4.0.ebuild
index 367c8e38ba12..d3fbfc95ef8c 100644
--- a/dev-python/dogpile-cache/dogpile-cache-1.4.0.ebuild
+++ b/dev-python/dogpile-cache/dogpile-cache-1.4.0.ebuild
@@ -5,7 +5,7 @@ EAPI=8
DISTUTILS_USE_PEP517=setuptools
PYPI_PN=${PN/-/.}
-PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+PYTHON_COMPAT=( python3_{11..14} )
inherit distutils-r1 pypi
diff --git a/dev-python/ensurepip-pip/ensurepip-pip-25.1.1.ebuild b/dev-python/ensurepip-pip/ensurepip-pip-25.1.1.ebuild
index aee3fa22e5a8..793cd9fb17f1 100644
--- a/dev-python/ensurepip-pip/ensurepip-pip-25.1.1.ebuild
+++ b/dev-python/ensurepip-pip/ensurepip-pip-25.1.1.ebuild
@@ -12,7 +12,7 @@ S=${DISTDIR}
LICENSE="Apache-2.0 BSD BSD-2 ISC LGPL-2.1+ MIT MPL-2.0 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"
src_install() {
insinto /usr/lib/python/ensurepip
diff --git a/dev-python/gitpython/gitpython-3.1.44.ebuild b/dev-python/gitpython/gitpython-3.1.44.ebuild
index edf31f913c47..f9fda65a77d6 100644
--- a/dev-python/gitpython/gitpython-3.1.44.ebuild
+++ b/dev-python/gitpython/gitpython-3.1.44.ebuild
@@ -5,7 +5,7 @@ EAPI=8
DISTUTILS_USE_PEP517=setuptools
PYPI_PN=GitPython
-PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+PYTHON_COMPAT=( python3_{11..14} )
PYTHON_REQ_USE="threads(+)"
inherit distutils-r1 pypi
@@ -39,9 +39,6 @@ BDEPEND="
test? (
>=dev-python/ddt-1.1.1[${PYTHON_USEDEP}]
dev-python/pytest-mock[${PYTHON_USEDEP}]
- $(python_gen_cond_dep '
- dev-python/typing-extensions[${PYTHON_USEDEP}]
- ' 3.10)
)
"
diff --git a/dev-python/hypothesis/Manifest b/dev-python/hypothesis/Manifest
index f2477bc6c725..2a777681ac10 100644
--- a/dev-python/hypothesis/Manifest
+++ b/dev-python/hypothesis/Manifest
@@ -2,3 +2,4 @@ DIST hypothesis-6.131.18.gh.tar.gz 9553394 BLAKE2B f4a880dd4681ca59b39614e70c70a
DIST hypothesis-6.131.24.gh.tar.gz 9554685 BLAKE2B 9f1216facfffb33ac084b036166c595b181eb0fad7f184ac67d3d06069a08339857bb5ec7d1e99922ffab7cf0cf013110ada7207f0ab8ef85e1c0ac61fdf1adb SHA512 54b37c5a3b7559d4709ea498f12a043eeda4151904912329e71fd1e4e69ed3275738eeec1c8272ea9c1fc21bed4345eeffec3d7bfd538d1075c27383c06eba93
DIST hypothesis-6.131.27.gh.tar.gz 9555908 BLAKE2B 3a5d9c31a6ccd6bab640fcb63412100dfe996ca1f5f645d3cf5c15366dba510f997620ceb942a292f14b93ffa2915d6061f069d9daffe9550aad4b376dfd1e61 SHA512 447520bac874536a35d2107a4c382993a5293840c7adfcac6d177c31401cdaaf2a4159a193e8079726d71c285009649c17c4a3ce05aceea11303b8b8a490dcb2
DIST hypothesis-6.131.32.gh.tar.gz 9562669 BLAKE2B 28e2f15db216bafc545a262e47c43aa7594c54d3066b08910de1695945de07508b5bef24fea9139736a7e429afa6232c75e3a8e0bb2eb349fb23eb7d318bd03d SHA512 f51cf27fa60756d28416699292b6a6dc4a5cd89bccc7acbd3de65fd83222907e57d7b601544b9965f1646979d6aa9220cd5ed2f44760507af362bb3806630706
+DIST hypothesis-6.132.0.gh.tar.gz 9563870 BLAKE2B de088f7d632a8ada158f5c11b6eb8bce009b544b0cde1d4f1398b059956d17fc8fbad3abbc9033d4c9544ccbf13782c7e0ed63e366665f362c3b651490bca5f1 SHA512 b43e661610e2491abad4f20cbf455b45be995ee927106ef17a0ecfdd2090a64b0f2588e3a3466fd22304c20d0371ec0ed15505a8f57d32a3b4a44c2ef24fa203
diff --git a/dev-python/hypothesis/hypothesis-6.132.0.ebuild b/dev-python/hypothesis/hypothesis-6.132.0.ebuild
new file mode 100644
index 000000000000..997db78b8df2
--- /dev/null
+++ b/dev-python/hypothesis/hypothesis-6.132.0.ebuild
@@ -0,0 +1,130 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+CLI_COMPAT=( python3_{11..13} )
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+PYTHON_REQ_USE="threads(+),sqlite"
+
+inherit distutils-r1 optfeature
+
+TAG=hypothesis-python-${PV}
+MY_P=hypothesis-${TAG}
+DESCRIPTION="A library for property based testing"
+HOMEPAGE="
+ https://github.com/HypothesisWorks/hypothesis/
+ https://pypi.org/project/hypothesis/
+"
+SRC_URI="
+ https://github.com/HypothesisWorks/hypothesis/archive/${TAG}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+S="${WORKDIR}/${MY_P}/hypothesis-python"
+
+LICENSE="MPL-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="cli"
+
+RDEPEND="
+ >=dev-python/attrs-22.2.0[${PYTHON_USEDEP}]
+ >=dev-python/sortedcontainers-2.1.0[${PYTHON_USEDEP}]
+ cli? (
+ $(python_gen_cond_dep '
+ dev-python/black[${PYTHON_USEDEP}]
+ dev-python/click[${PYTHON_USEDEP}]
+ ' "${CLI_COMPAT[@]}")
+ )
+"
+BDEPEND="
+ test? (
+ dev-python/pexpect[${PYTHON_USEDEP}]
+ >=dev-python/pytest-8[${PYTHON_USEDEP}]
+ dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
+ dev-python/pytest-xdist[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_test() {
+ # subtests are broken by warnings from random plugins
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ local -x PYTEST_PLUGINS=xdist.plugin,_hypothesis_pytestplugin
+ local -x HYPOTHESIS_NO_PLUGINS=1
+
+ # NB: paths need to be relative to pytest.ini,
+ # i.e. start with hypothesis-python/
+ local EPYTEST_DESELECT=(
+ # hangs
+ hypothesis-python/tests/cover/test_lookup.py::test_lookup_overrides_defaults
+ )
+
+ case ${EPYTHON} in
+ python3.13t)
+ EPYTEST_DESELECT+=(
+ # TODO: missing warning
+ 'hypothesis-python/tests/cover/test_random_module.py::test_passing_referenced_instance_within_function_scope_warns'
+ )
+ ;&
+ python3.14*)
+ EPYTEST_DESELECT+=(
+ 'hypothesis-python/tests/cover/test_compat.py::test_resolve_fwd_refs[Foo-Union]'
+ 'hypothesis-python/tests/cover/test_lookup.py::test_builds_suggests_from_type[Union]'
+ hypothesis-python/tests/cover/test_attrs_inference.py::test_attrs_inference_builds
+ hypothesis-python/tests/cover/test_lookup.py::test_bytestring_not_treated_as_generic_sequence
+ hypothesis-python/tests/cover/test_lookup.py::test_issue_4194_regression
+ hypothesis-python/tests/cover/test_lookup.py::test_resolves_forwardrefs_to_builtin_types
+ hypothesis-python/tests/cover/test_lookup.py::test_specialised_collection_types
+ hypothesis-python/tests/cover/test_lookup_py37.py::test_resolving_standard_collection_as_generic
+ hypothesis-python/tests/cover/test_lookup_py37.py::test_resolving_standard_container_as_generic
+ hypothesis-python/tests/cover/test_lookup_py37.py::test_resolving_standard_contextmanager_as_generic
+ hypothesis-python/tests/cover/test_lookup_py37.py::test_resolving_standard_iterable_as_generic
+ hypothesis-python/tests/cover/test_lookup_py37.py::test_resolving_standard_reversible_as_generic
+ hypothesis-python/tests/cover/test_lookup_py37.py::test_resolving_standard_sequence_as_generic
+ hypothesis-python/tests/cover/test_random_module.py::test_evil_prng_registration_nonsense
+ hypothesis-python/tests/cover/test_random_module.py::test_passing_referenced_instance_within_function_scope_warns
+ hypothesis-python/tests/cover/test_random_module.py::test_register_random_within_nested_function_scope
+ hypothesis-python/tests/cover/test_random_module.py::test_registering_a_Random_is_idempotent
+ hypothesis-python/tests/cover/test_type_lookup_forward_ref.py::test_bound_missing_dot_access_forward_ref
+ hypothesis-python/tests/cover/test_type_lookup_forward_ref.py::test_bound_missing_forward_ref
+ hypothesis-python/tests/cover/test_type_lookup_forward_ref.py::test_bound_type_checking_only_forward_ref_wrong_type
+ hypothesis-python/tests/cover/test_type_lookup_forward_ref.py::test_bound_type_cheking_only_forward_ref
+ )
+ ;;
+ esac
+
+ epytest -o filterwarnings= -p rerunfailures --reruns=5 \
+ tests/cover tests/pytest tests/quality
+}
+
+src_install() {
+ local HAD_CLI=
+
+ distutils-r1_src_install
+
+ if [[ ! ${HAD_CLI} ]]; then
+ rm -r "${ED}/usr/bin" || die
+ fi
+}
+
+python_install() {
+ distutils-r1_python_install
+ if use cli && has "${EPYTHON}" "${CLI_COMPAT[@]/_/.}"; then
+ HAD_CLI=1
+ else
+ rm -r "${D}$(python_get_scriptdir)" || die
+ fi
+}
+
+pkg_postinst() {
+ optfeature "datetime support" dev-python/pytz
+ optfeature "dateutil support" dev-python/python-dateutil
+ optfeature "numpy support" dev-python/numpy
+ optfeature "django support" dev-python/django dev-python/pytz
+ optfeature "pandas support" dev-python/pandas
+ optfeature "pytest support" dev-python/pytest
+}
diff --git a/dev-python/ipython/Manifest b/dev-python/ipython/Manifest
index 2fc70b34cbe4..389493441dac 100644
--- a/dev-python/ipython/Manifest
+++ b/dev-python/ipython/Manifest
@@ -1,2 +1,4 @@
DIST ipython-8.36.0.tar.gz 5604997 BLAKE2B 3ba37dc146d0e7fc773fceb3f1e00257e0115661f012a5977bcab351d80d3764813aaa1172f5d0390995419eccef07e4af2530b36b62cd9b5a23606b5982afef SHA512 0418c96242e5e7247526bdad54eaf3a30fe10d01bec6cf7134948c645ab5c80ce958b7cd39f4cfde88714a2d2e1128edf8f71848c6ce4aadc9c02f7ac50c34b2
+DIST ipython-8.37.0.tar.gz 5606088 BLAKE2B 4cb3a6ae801fcbbf352eb8aaae11a7bc6911a76a816e1ce8845a6f3044fbb888cf49dc7c5a500305da47497ec2341a7abf6ad5fff863dd9175bf6eae2f03f7a8 SHA512 bde7b6962ca59688cb9f1032a2735df428dec41ec531b98488a5a35ef67c09a375973537c10bef7574ad112f3396b056f8a4f754b63712b72b0f9f20ab052623
DIST ipython-9.2.0.tar.gz 4424394 BLAKE2B 3a2830461610d3139b64a848217c82f1d363ea5cadd416119a9ac56ccd494cc21738cfc87e6ac766fff28991ddad6261406e1a68a053b060165576eb1dc4c100 SHA512 06fcdb152ff15e780e182276766527a727d8dfd774e87bf5561005a5006764fd44b6da42e76c3372caa2ac7cfdbe3f083ecb3ed7b5303755d444006255cd80eb
+DIST ipython-9.3.0.tar.gz 4426460 BLAKE2B d9d6ec38ab7ee2c4128869cd6fa0518c5df8ed3f3eb1db531099ff753b959a2eb1d872b5c782a017b2f559b460c0121cb951893c54f842cb936f08022eb32325 SHA512 21bd98e7f164bdbb799e0316c56620b0d086af943e28fa43f5d1f4c31064e496b01b47babcf0be4282d12d446362a7c0945a29580078279dc3038c66e8e75cf6
diff --git a/dev-python/ipython/ipython-8.37.0.ebuild b/dev-python/ipython/ipython-8.37.0.ebuild
new file mode 100644
index 000000000000..982e3883fca3
--- /dev/null
+++ b/dev-python/ipython/ipython-8.37.0.ebuild
@@ -0,0 +1,158 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=standalone
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+PYTHON_REQ_USE='readline(+),sqlite,threads(+)'
+
+inherit distutils-r1 optfeature pypi virtualx
+
+DESCRIPTION="Advanced interactive shell for Python"
+HOMEPAGE="
+ https://ipython.org/
+ https://github.com/ipython/ipython/
+ https://pypi.org/project/ipython/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos"
+IUSE="examples notebook nbconvert qt5 +smp test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ dev-python/decorator[${PYTHON_USEDEP}]
+ >=dev-python/jedi-0.16[${PYTHON_USEDEP}]
+ dev-python/matplotlib-inline[${PYTHON_USEDEP}]
+ >=dev-python/pexpect-4.3[${PYTHON_USEDEP}]
+ >=dev-python/prompt-toolkit-3.0.41[${PYTHON_USEDEP}]
+ <dev-python/prompt-toolkit-3.1[${PYTHON_USEDEP}]
+ >=dev-python/pygments-2.4.0[${PYTHON_USEDEP}]
+ dev-python/stack-data[${PYTHON_USEDEP}]
+ >=dev-python/traitlets-5.13.0[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/typing-extensions[${PYTHON_USEDEP}]
+ ' 3.11)
+"
+
+BDEPEND="
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ test? (
+ app-text/dvipng[truetype]
+ >=dev-python/ipykernel-5.1.0[${PYTHON_USEDEP}]
+ >=dev-python/matplotlib-3.9[${PYTHON_USEDEP}]
+ dev-python/nbformat[${PYTHON_USEDEP}]
+ >=dev-python/numpy-1.23[${PYTHON_USEDEP}]
+ dev-python/matplotlib-inline[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ dev-python/pickleshare[${PYTHON_USEDEP}]
+ dev-python/pytest-asyncio[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/testpath[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+RDEPEND+="
+ nbconvert? (
+ dev-python/nbconvert[${PYTHON_USEDEP}]
+ )
+"
+PDEPEND="
+ $(python_gen_cond_dep '
+ qt5? ( dev-python/qtconsole[${PYTHON_USEDEP}] )
+ ' 'python*')
+ $(python_gen_cond_dep '
+ notebook? (
+ dev-python/notebook[${PYTHON_USEDEP}]
+ dev-python/ipywidgets[${PYTHON_USEDEP}]
+ dev-python/widgetsnbextension[${PYTHON_USEDEP}]
+ )
+ ' 3.{11..12})
+ smp? (
+ >=dev-python/ipykernel-5.1.0[${PYTHON_USEDEP}]
+ >=dev-python/ipyparallel-6.2.3[${PYTHON_USEDEP}]
+ )
+"
+
+python_prepare_all() {
+ # Rename the test directory to reduce sys.path pollution
+ # https://github.com/ipython/ipython/issues/12892
+ mv IPython/extensions/{,ipython_}tests || die
+
+ distutils-r1_python_prepare_all
+}
+
+src_test() {
+ virtx distutils-r1_src_test
+}
+
+python_test() {
+ local -x IPYTHON_TESTING_TIMEOUT_SCALE=20
+ local EPYTEST_DESELECT=(
+ # TODO: looks to be a regression due to a newer dep
+ IPython/core/tests/test_oinspect.py::test_class_signature
+ IPython/core/tests/test_oinspect.py::test_render_signature_long
+ IPython/terminal/tests/test_shortcuts.py::test_modify_shortcut_with_filters
+ )
+
+ case ${EPYTHON} in
+ pypy3*)
+ EPYTEST_DESELECT+=(
+ # https://github.com/ipython/ipython/issues/14244
+ IPython/lib/tests/test_display.py::TestAudioDataWithoutNumpy
+ )
+ ;;
+ python3.13)
+ EPYTEST_DESELECT+=(
+ # docstring mismatch?
+ IPython/core/tests/test_debugger.py::IPython.core.tests.test_debugger.test_ipdb_magics
+ )
+ ;;
+ esac
+
+ # nonfatal implied by virtx
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ nonfatal epytest -p asyncio --asyncio-mode=auto ||
+ die "Tests failed on ${EPYTHON}"
+}
+
+python_install() {
+ distutils-r1_python_install
+
+ # Create ipythonX.Y symlinks.
+ # TODO:
+ # 1. do we want them for pypy? No. pypy has no numpy
+ # 2. handle it in the eclass instead (use _python_ln_rel).
+ # With pypy not an option the dosym becomes unconditional
+ dosym ../lib/python-exec/${EPYTHON}/ipython \
+ /usr/bin/ipython${EPYTHON#python}
+}
+
+python_install_all() {
+ distutils-r1_python_install_all
+
+ if use examples; then
+ dodoc -r examples
+ docompress -x /usr/share/doc/${PF}/examples
+ fi
+}
+
+pkg_postinst() {
+ optfeature "code formatting" dev-python/black
+ optfeature "sympyprinting" dev-python/sympy
+ optfeature "cythonmagic" dev-python/cython
+ optfeature "%lprun magic command" dev-python/line-profiler
+ optfeature "%matplotlib magic command" dev-python/matplotlib-inline
+
+ if use nbconvert; then
+ if ! has_version virtual/pandoc ; then
+ einfo "Node.js will be used to convert notebooks to other formats"
+ einfo "like HTML. Support for that is still experimental. If you"
+ einfo "encounter any problems, please use app-text/pandoc instead."
+ fi
+ fi
+}
diff --git a/dev-python/ipython/ipython-9.3.0.ebuild b/dev-python/ipython/ipython-9.3.0.ebuild
new file mode 100644
index 000000000000..0c1d219a5e2b
--- /dev/null
+++ b/dev-python/ipython/ipython-9.3.0.ebuild
@@ -0,0 +1,148 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=standalone
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+PYTHON_REQ_USE='readline(+),sqlite,threads(+)'
+
+inherit distutils-r1 optfeature pypi virtualx
+
+DESCRIPTION="Advanced interactive shell for Python"
+HOMEPAGE="
+ https://ipython.org/
+ https://github.com/ipython/ipython/
+ https://pypi.org/project/ipython/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="examples notebook nbconvert qt5 +smp test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ dev-python/decorator[${PYTHON_USEDEP}]
+ dev-python/ipython-pygments-lexers[${PYTHON_USEDEP}]
+ >=dev-python/jedi-0.16[${PYTHON_USEDEP}]
+ dev-python/matplotlib-inline[${PYTHON_USEDEP}]
+ >=dev-python/pexpect-4.3[${PYTHON_USEDEP}]
+ >=dev-python/prompt-toolkit-3.0.41[${PYTHON_USEDEP}]
+ <dev-python/prompt-toolkit-3.1[${PYTHON_USEDEP}]
+ >=dev-python/pygments-2.4.0[${PYTHON_USEDEP}]
+ dev-python/stack-data[${PYTHON_USEDEP}]
+ >=dev-python/traitlets-5.13.0[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/typing-extensions[${PYTHON_USEDEP}]
+ ' 3.11)
+"
+
+BDEPEND="
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ test? (
+ app-text/dvipng[truetype]
+ >=dev-python/ipykernel-5.1.0[${PYTHON_USEDEP}]
+ >=dev-python/matplotlib-3.9[${PYTHON_USEDEP}]
+ dev-python/nbformat[${PYTHON_USEDEP}]
+ >=dev-python/numpy-1.23[${PYTHON_USEDEP}]
+ dev-python/matplotlib-inline[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ dev-python/pickleshare[${PYTHON_USEDEP}]
+ dev-python/pytest-asyncio[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/testpath[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+RDEPEND+="
+ nbconvert? (
+ dev-python/nbconvert[${PYTHON_USEDEP}]
+ )
+"
+PDEPEND="
+ $(python_gen_cond_dep '
+ qt5? ( dev-python/qtconsole[${PYTHON_USEDEP}] )
+ ' 'python*')
+ $(python_gen_cond_dep '
+ notebook? (
+ dev-python/notebook[${PYTHON_USEDEP}]
+ dev-python/ipywidgets[${PYTHON_USEDEP}]
+ dev-python/widgetsnbextension[${PYTHON_USEDEP}]
+ )
+ ' 3.{11..12})
+ smp? (
+ >=dev-python/ipykernel-5.1.0[${PYTHON_USEDEP}]
+ >=dev-python/ipyparallel-6.2.3[${PYTHON_USEDEP}]
+ )
+"
+
+python_prepare_all() {
+ # Rename the test directory to reduce sys.path pollution
+ # https://github.com/ipython/ipython/issues/12892
+ mv IPython/extensions/{,ipython_}tests || die
+
+ distutils-r1_python_prepare_all
+}
+
+src_test() {
+ virtx distutils-r1_src_test
+}
+
+python_test() {
+ local -x IPYTHON_TESTING_TIMEOUT_SCALE=20
+ local EPYTEST_DESELECT=()
+
+ case ${EPYTHON} in
+ pypy3*)
+ EPYTEST_DESELECT+=(
+ # https://github.com/ipython/ipython/issues/14244
+ tests/test_display.py::TestAudioDataWithoutNumpy
+ )
+ ;;
+ esac
+
+ # nonfatal implied by virtx
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ nonfatal epytest -p asyncio --asyncio-mode=auto ||
+ die "Tests failed on ${EPYTHON}"
+}
+
+python_install() {
+ distutils-r1_python_install
+
+ # Create ipythonX.Y symlinks.
+ # TODO:
+ # 1. do we want them for pypy? No. pypy has no numpy
+ # 2. handle it in the eclass instead (use _python_ln_rel).
+ # With pypy not an option the dosym becomes unconditional
+ dosym ../lib/python-exec/${EPYTHON}/ipython \
+ /usr/bin/ipython${EPYTHON#python}
+}
+
+python_install_all() {
+ distutils-r1_python_install_all
+
+ if use examples; then
+ dodoc -r examples
+ docompress -x /usr/share/doc/${PF}/examples
+ fi
+}
+
+pkg_postinst() {
+ optfeature "code formatting" dev-python/black
+ optfeature "sympyprinting" dev-python/sympy
+ optfeature "cythonmagic" dev-python/cython
+ optfeature "%lprun magic command" dev-python/line-profiler
+ optfeature "%matplotlib magic command" dev-python/matplotlib-inline
+
+ if use nbconvert; then
+ if ! has_version virtual/pandoc ; then
+ einfo "Node.js will be used to convert notebooks to other formats"
+ einfo "like HTML. Support for that is still experimental. If you"
+ einfo "encounter any problems, please use app-text/pandoc instead."
+ fi
+ fi
+}
diff --git a/dev-python/isort/isort-6.0.1.ebuild b/dev-python/isort/isort-6.0.1.ebuild
index 85af924f21fb..9047d453d432 100644
--- a/dev-python/isort/isort-6.0.1.ebuild
+++ b/dev-python/isort/isort-6.0.1.ebuild
@@ -22,11 +22,6 @@ LICENSE="MIT"
SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86"
-RDEPEND="
- $(python_gen_cond_dep '
- dev-python/tomli[${PYTHON_USEDEP}]
- ' 3.10)
-"
BDEPEND="
dev-python/hatch-vcs[${PYTHON_USEDEP}]
test? (
diff --git a/dev-python/jedi/jedi-0.19.2.ebuild b/dev-python/jedi/jedi-0.19.2.ebuild
index 4ee2df9d66f3..f4ed9a1e3d4b 100644
--- a/dev-python/jedi/jedi-0.19.2.ebuild
+++ b/dev-python/jedi/jedi-0.19.2.ebuild
@@ -84,6 +84,14 @@ python_test() {
test/test_inference/test_gradual/test_typeshed.py::test_module_exists_only_as_stub
)
;;
+ python3.14*)
+ EPYTEST_DESELECT+=(
+ # type annotation printing difference
+ test/test_inference/test_mixed.py::test_compiled_signature_annotation_string
+ # extra attributes in os
+ test/test_utils.py::TestSetupReadline::test_import
+ )
+ ;;
esac
# some plugin breaks case-insensitivity on completions
diff --git a/dev-python/knowit/knowit-0.5.6.ebuild b/dev-python/knowit/knowit-0.5.6.ebuild
index 44cf88f63b34..bfd42a0d2bf9 100644
--- a/dev-python/knowit/knowit-0.5.6.ebuild
+++ b/dev-python/knowit/knowit-0.5.6.ebuild
@@ -4,7 +4,7 @@
EAPI=8
DISTUTILS_USE_PEP517=poetry
-PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+PYTHON_COMPAT=( python3_{11..14} )
inherit distutils-r1
diff --git a/dev-python/langdetect/Manifest b/dev-python/langdetect/Manifest
index a11d7c268c91..d12ab8aeaca8 100644
--- a/dev-python/langdetect/Manifest
+++ b/dev-python/langdetect/Manifest
@@ -1 +1,3 @@
DIST langdetect-1.0.9.tar.gz 981474 BLAKE2B ea8a9c3f16a2987c080742473bff4f2c1503f53fb3c2b40b0b1d6212bb6133ea22dce7864ffcfb8968c3a46b157d45cb3e2cf6f84bdbed0266cc716a853b032c SHA512 7558d674c47b080c79e43a00a25d2c7f77188cf60bea2cecb3bebb803d75e1aa42b43c74bd26ea1b541f4cb927421908882cbec01a91f0913984217e71ccc8db
+EBUILD langdetect-1.0.9.ebuild 494 BLAKE2B 9cd8a2a93a8d45bf51fe2324402b175d641762ea591fcb99459427f977a95eccffa6ca4777ca4df39814eea6eac62711567faa654456d32f79023a4685804504 SHA512 d973b85ba1a44389a4275f02a779a93a005f7c2e096467b94b072862e4984d5b42cf33f9821ac68aa5b85b12c98983a90b96049989d8c84497969174b6bb838e
+MISC metadata.xml 457 BLAKE2B 630128a3e982b6d60cc7b9f74c79fcb5ee47a71a02c73a50af9da8cedb6fad8e20a7f74b881e5b25c6483b92c9edbd56552cd38b2d9cbfa8b3eb4530facea969 SHA512 674f4f5cd809c6c77bc14e0f5687fa972bef14bdfa0b3343c5d66b7163eef1906eb87d060c8288732f825de71dce291ad0b841a5f2f0dd230f957b5687e45d45
diff --git a/dev-python/langdetect/files/langdetect-1.0.9-explicit-config.patch b/dev-python/langdetect/files/langdetect-1.0.9-explicit-config.patch
deleted file mode 100644
index 637368d2f237..000000000000
--- a/dev-python/langdetect/files/langdetect-1.0.9-explicit-config.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Fix "Package 'langdetect.profiles' is absent from the `packages` configuration."
-
---- a/setup.py
-+++ b/setup.py
-@@ -18,7 +18,7 @@ setup(
- author_email='michal.danilak@gmail.com',
- url='https://github.com/Mimino666/langdetect',
- keywords='language detection library',
-- packages=['langdetect', 'langdetect.utils', 'langdetect.tests'],
-+ packages=['langdetect', 'langdetect.utils', 'langdetect.tests', 'langdetect.profiles'],
- include_package_data=True,
- install_requires=['six'],
- license='MIT',
diff --git a/dev-python/langdetect/langdetect-1.0.9.ebuild b/dev-python/langdetect/langdetect-1.0.9.ebuild
index 99577c43fc3e..56733bbffc48 100644
--- a/dev-python/langdetect/langdetect-1.0.9.ebuild
+++ b/dev-python/langdetect/langdetect-1.0.9.ebuild
@@ -1,9 +1,9 @@
-# Copyright 2022-2024 Gentoo Authors
+# Copyright 2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
-PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
DISTUTILS_USE_PEP517=setuptools
inherit distutils-r1 pypi
@@ -19,6 +19,4 @@ KEYWORDS="~amd64"
RDEPEND="dev-python/six[${PYTHON_USEDEP}]"
-PATCHES=( "${FILESDIR}/${P}-explicit-config.patch" )
-
distutils_enable_tests unittest
diff --git a/dev-python/langdetect/metadata.xml b/dev-python/langdetect/metadata.xml
index c0f74ac187e2..020e07f2a3dd 100644
--- a/dev-python/langdetect/metadata.xml
+++ b/dev-python/langdetect/metadata.xml
@@ -2,9 +2,11 @@
<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
- <email>pastalian46@gmail.com</email>
- <name>Takuya Wakazono</name>
+ <email>marcin.deranek@slonko.net</email>
+ <name>Marcin Deranek</name>
</maintainer>
-
- <origin>gentoo-guru-overlay</origin>
+ <upstream>
+ <bugs-to>https://github.com/Mimino666/langdetect/issues</bugs-to>
+ </upstream>
+ <origin>slonko-overlay</origin>
</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/lap/Manifest b/dev-python/lap/Manifest
new file mode 100644
index 000000000000..b5c5f766b71a
--- /dev/null
+++ b/dev-python/lap/Manifest
@@ -0,0 +1 @@
+DIST lap-0.5.12.tar.gz 1520169 BLAKE2B ce68ddd14304b930044a94ff7362b00724ca8ce89d5fa0189437a393cff5911ac74cc45056ba152780000f7f4c691e73269cd711f20f5f693f5699918c0c4428 SHA512 a8ba1883e06b04a41cebb53999bcc7321748036958fde1ab37a2194b43104a84d0315bea89b21aaae7556cc3f573d95bf30107dc4045af301134dd10319b7d53
diff --git a/dev-python/lap/lap-0.5.12.ebuild b/dev-python/lap/lap-0.5.12.ebuild
new file mode 100644
index 000000000000..bbc6a81d3bab
--- /dev/null
+++ b/dev-python/lap/lap-0.5.12.ebuild
@@ -0,0 +1,45 @@
+# Copyright 2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+DISTUTILS_EXT=1
+PYTHON_COMPAT=( python3_{11..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Linear Assignment Problem solver (LAPJV/LAPMOD)"
+HOMEPAGE="
+ https://github.com/gatagat/lap
+ https://pypi.org/project/lap/
+"
+
+LICENSE="BSD-2"
+SLOT="0"
+KEYWORDS="~amd64"
+
+RDEPEND="
+ >=dev-python/numpy-1.21.6[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ dev-python/cython[${PYTHON_USEDEP}]
+ >=dev-python/numpy-1.23.0[${PYTHON_USEDEP}]
+"
+
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ # Don't install tests and keep them in a separate location
+ # https://projects.gentoo.org/python/guide/test.html#importerrors-for-c-extensions
+ mv lap/tests tests || die
+ sed -e '/tests_package =/d' \
+ -e '/packages =/ { s/, tests_package// }' \
+ -i setup.py || die
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ rm -rf lap || die
+ epytest
+}
diff --git a/dev-python/lap/metadata.xml b/dev-python/lap/metadata.xml
new file mode 100644
index 000000000000..7ad11570cc7d
--- /dev/null
+++ b/dev-python/lap/metadata.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>python@gentoo.org</email>
+ </maintainer>
+
+ <origin>gentoo-staging</origin>
+</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/matplotlib/matplotlib-3.10.3.ebuild b/dev-python/matplotlib/matplotlib-3.10.3.ebuild
index 447d4451dba1..0461f72b2b8e 100644
--- a/dev-python/matplotlib/matplotlib-3.10.3.ebuild
+++ b/dev-python/matplotlib/matplotlib-3.10.3.ebuild
@@ -29,7 +29,7 @@ SRC_URI+="
# Fonts: BitstreamVera, OFL-1.1
LICENSE="BitstreamVera BSD matplotlib MIT OFL-1.1"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos"
+KEYWORDS="~alpha ~amd64 ~arm arm64 ~hppa ~loong ~ppc ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos"
IUSE="cairo excel gtk3 latex qt6 tk webagg wxwidgets"
DEPEND="
diff --git a/dev-python/parso/parso-0.8.4-r1.ebuild b/dev-python/parso/parso-0.8.4-r1.ebuild
new file mode 100644
index 000000000000..f5d3cefa4a08
--- /dev/null
+++ b/dev-python/parso/parso-0.8.4-r1.ebuild
@@ -0,0 +1,42 @@
+# 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} pypy3 )
+
+inherit distutils-r1
+
+DESCRIPTION="A python parser that supports error recovery and round-trip parsing"
+HOMEPAGE="
+ https://github.com/davidhalter/parso/
+ https://pypi.org/project/parso/
+"
+SRC_URI="
+ https://github.com/davidhalter/${PN}/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos"
+
+distutils_enable_sphinx docs
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # py3.10 changed exception messages
+ test/test_python_errors.py::test_python_exception_matches
+ # With python3.11 this additional file is run by pytest,
+ # but it is not actually a test and thus fails
+ parso/python/token.py::parso.python.token.PythonTokenTypes
+)
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # this ain't perfect but that's what upstream has so far
+ # https://github.com/davidhalter/parso/commit/f670e6e7dc01e07576ec5c84cbf9fbce1a02c3eb
+ cp parso/python/grammar{313,314}.txt || die
+}
diff --git a/dev-python/pip/pip-25.1.1.ebuild b/dev-python/pip/pip-25.1.1.ebuild
index 8f3db11e5fa6..daba9108b903 100644
--- a/dev-python/pip/pip-25.1.1.ebuild
+++ b/dev-python/pip/pip-25.1.1.ebuild
@@ -24,7 +24,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha ~amd64 arm ~arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc ~x86"
IUSE="test test-rust"
RESTRICT="!test? ( test )"
diff --git a/dev-python/pyacoustid/pyacoustid-1.3.0-r1.ebuild b/dev-python/pyacoustid/pyacoustid-1.3.0-r1.ebuild
new file mode 100644
index 000000000000..f5255c114668
--- /dev/null
+++ b/dev-python/pyacoustid/pyacoustid-1.3.0-r1.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_{9,10,11,12,13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Python bindings for Chromaprint and the AcoustID web service"
+HOMEPAGE="
+ https://github.com/beetbox/pyacoustid/
+ https://pypi.org/project/pyacoustid/
+"
+SRC_URI+="
+ test? (
+ https://s3.wasabisys.com/blocsonic/releases/maxblocs/bsmx0198/01-Follow_192kb.mp3
+ -> ${PN}-test.mp3
+ )
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="examples test"
+# Tests fail with network-sandbox, since they need to connect to acoustid.org
+PROPERTIES="test_network"
+RESTRICT="test"
+
+RDEPEND="
+ dev-python/audioread[${PYTHON_USEDEP},ffmpeg]
+ dev-python/requests[${PYTHON_USEDEP}]
+ media-libs/chromaprint
+"
+
+python_test() {
+ # Working test will print the top metadata match from Acoustid's database.
+ "${EPYTHON}" aidmatch.py "${DISTDIR}/${PN}-test.mp3" ||
+ die "Test failed with ${EPYTHON}"
+}
+
+src_install() {
+ distutils-r1_src_install
+
+ if use examples ; then
+ docinto examples
+ dodoc aidmatch.py fpcalc.py
+ docompress -x /usr/share/doc/${PF}/examples/
+ fi
+}
diff --git a/dev-python/python-tests/python-tests-3.13.3_p1.ebuild b/dev-python/python-tests/python-tests-3.13.3_p1.ebuild
index 6ec6bb7f3ef5..603ad2cec2b7 100644
--- a/dev-python/python-tests/python-tests-3.13.3_p1.ebuild
+++ b/dev-python/python-tests/python-tests-3.13.3_p1.ebuild
@@ -28,7 +28,7 @@ S="${WORKDIR}/${MY_P}/Lib"
LICENSE="PSF-2"
SLOT="${PYVER}"
-KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
+KEYWORDS="~alpha amd64 arm ~arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
# enable by default to help CI handle it (we have no additional deps)
IUSE="+python_targets_${PYTHON_COMPAT[0]}"
REQUIRED_USE="${PYTHON_REQUIRED_USE}"
diff --git a/dev-python/pythran/pythran-0.18.0.ebuild b/dev-python/pythran/pythran-0.18.0.ebuild
index 6b05defee378..a844d5a0d81f 100644
--- a/dev-python/pythran/pythran-0.18.0.ebuild
+++ b/dev-python/pythran/pythran-0.18.0.ebuild
@@ -22,7 +22,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="BSD"
SLOT="0"
-KEYWORDS="amd64 ~arm arm64 ~loong ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="amd64 ~arm arm64 ~loong ppc64 ~riscv ~s390 ~sparc ~x86"
RDEPEND="
dev-libs/boost
diff --git a/dev-python/pytoolconfig/pytoolconfig-1.3.1.ebuild b/dev-python/pytoolconfig/pytoolconfig-1.3.1.ebuild
index 4f4a59d6b000..214e8986ae28 100644
--- a/dev-python/pytoolconfig/pytoolconfig-1.3.1.ebuild
+++ b/dev-python/pytoolconfig/pytoolconfig-1.3.1.ebuild
@@ -21,9 +21,6 @@ KEYWORDS="amd64 arm64 ~ppc64 x86"
RDEPEND="
>=dev-python/packaging-23.2[${PYTHON_USEDEP}]
>=dev-python/platformdirs-3.11.0[${PYTHON_USEDEP}]
- $(python_gen_cond_dep '
- >=dev-python/tomli-2.0.1[${PYTHON_USEDEP}]
- ' 3.10 )
"
BDEPEND="
test? (
diff --git a/dev-python/pyxdg/files/pyxdg-0.28-py3.14.patch b/dev-python/pyxdg/files/pyxdg-0.28-py3.14.patch
new file mode 100644
index 000000000000..4521adfbf1ab
--- /dev/null
+++ b/dev-python/pyxdg/files/pyxdg-0.28-py3.14.patch
@@ -0,0 +1,89 @@
+https://gitlab.freedesktop.org/xdg/pyxdg/-/merge_requests/17
+
+From 9291d419017263c922869d79ac1fe8d423e5f929 Mon Sep 17 00:00:00 2001
+From: Sam James <sam@gentoo.org>
+Date: Sat, 31 May 2025 18:52:45 +0100
+Subject: [PATCH 1/2] Menu: handle Python 3.14 ast.Str changes
+
+ast.Str is gone and replaced by ast.Constant.
+---
+ xdg/Menu.py | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/xdg/Menu.py b/xdg/Menu.py
+index 1dd2af5..71f5e61 100644
+--- a/xdg/Menu.py
++++ b/xdg/Menu.py
+@@ -411,7 +411,7 @@ class Rule:
+ def fromFilename(cls, type, filename):
+ tree = ast.Expression(
+ body=ast.Compare(
+- left=ast.Str(filename),
++ left=ast.Constant(filename),
+ ops=[ast.Eq()],
+ comparators=[ast.Attribute(
+ value=ast.Name(id='menuentry', ctx=ast.Load()),
+@@ -799,7 +799,7 @@ class XMLMenuBuilder(object):
+ elif tag == 'Category':
+ category = node.text
+ return ast.Compare(
+- left=ast.Str(category),
++ left=ast.Constant(category),
+ ops=[ast.In()],
+ comparators=[ast.Attribute(
+ value=ast.Name(id='menuentry', ctx=ast.Load()),
+@@ -810,7 +810,7 @@ class XMLMenuBuilder(object):
+ elif tag == 'Filename':
+ filename = node.text
+ return ast.Compare(
+- left=ast.Str(filename),
++ left=ast.Constant(filename),
+ ops=[ast.Eq()],
+ comparators=[ast.Attribute(
+ value=ast.Name(id='menuentry', ctx=ast.Load()),
+--
+GitLab
+
+
+From 63033ac306aa26d32e1439417e59ae8f8a4c9820 Mon Sep 17 00:00:00 2001
+From: Sam James <sam@gentoo.org>
+Date: Sat, 31 May 2025 18:54:51 +0100
+Subject: [PATCH 2/2] Menu: handle Python 3.15 deprecations
+
+* Unknown keyword args will be fatal, so drop lineno/col_offset that
+ is unused
+* Set body= immediately as a keyword
+---
+ xdg/Menu.py | 5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+diff --git a/xdg/Menu.py b/xdg/Menu.py
+index 71f5e61..8e1595c 100644
+--- a/xdg/Menu.py
++++ b/xdg/Menu.py
+@@ -419,7 +419,6 @@ class Rule:
+ ctx=ast.Load()
+ )]
+ ),
+- lineno=1, col_offset=0
+ )
+ ast.fix_missing_locations(tree)
+ rule = Rule(type, tree)
+@@ -763,12 +762,10 @@ class XMLMenuBuilder(object):
+
+ def parse_rule(self, node):
+ type = Rule.TYPE_INCLUDE if node.tag == 'Include' else Rule.TYPE_EXCLUDE
+- tree = ast.Expression(lineno=1, col_offset=0)
++ tree = ast.Expression(body=_ast_const('False'))
+ expr = self.parse_bool_op(node, ast.Or())
+ if expr:
+ tree.body = expr
+- else:
+- tree.body = _ast_const('False')
+ ast.fix_missing_locations(tree)
+ return Rule(type, tree)
+
+--
+GitLab
+
+
diff --git a/dev-python/pyxdg/pyxdg-0.28-r2.ebuild b/dev-python/pyxdg/pyxdg-0.28-r2.ebuild
new file mode 100644
index 000000000000..b9b96bf2f671
--- /dev/null
+++ b/dev-python/pyxdg/pyxdg-0.28-r2.ebuild
@@ -0,0 +1,32 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+DISTUTILS_USE_PEP517=setuptools
+
+inherit distutils-r1
+
+MY_P="${PN}-rel-${PV}"
+DESCRIPTION="A Python module to deal with freedesktop.org specifications"
+HOMEPAGE="
+ https://freedesktop.org/wiki/Software/pyxdg/
+ https://pypi.org/project/pyxdg/
+"
+SRC_URI="
+ https://github.com/takluyver/pyxdg/archive/rel-${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="LGPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-0.28-py3.12.patch
+ "${FILESDIR}"/${PN}-0.28-py3.14.patch
+)
+
+distutils_enable_tests pytest
diff --git a/dev-python/sarif-om/sarif-om-1.0.4-r1.ebuild b/dev-python/sarif-om/sarif-om-1.0.4-r1.ebuild
index 14f3f319e3fa..a79cffbadfd1 100644
--- a/dev-python/sarif-om/sarif-om-1.0.4-r1.ebuild
+++ b/dev-python/sarif-om/sarif-om-1.0.4-r1.ebuild
@@ -1,9 +1,9 @@
-# Copyright 2021-2024 Gentoo Authors
+# Copyright 2021-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
-PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+PYTHON_COMPAT=( python3_{11..14} )
DISTUTILS_USE_PEP517=setuptools
inherit distutils-r1 pypi
@@ -25,3 +25,5 @@ RDEPEND="
BDEPEND="
dev-python/pbr[${PYTHON_USEDEP}]
"
+
+distutils_enable_tests import-check
diff --git a/dev-python/snakeoil/Manifest b/dev-python/snakeoil/Manifest
index 677180f7d672..d613a56d2c8b 100644
--- a/dev-python/snakeoil/Manifest
+++ b/dev-python/snakeoil/Manifest
@@ -1 +1,2 @@
DIST snakeoil-0.10.10.tar.gz 174648 BLAKE2B b71a7006bef87527b1fca1dac4608ba38c33f38de23d7b3533ee5333b3671f69b0300c18a737d663532ce1a60f092fb4d9a40f1edab020604c4a78e92053ad59 SHA512 606204d80f099334abfc73475982b724da78117753a545ebcee9378f7cc88cd67e42c0f3c4dbf98c9c138dddf2bcf067ca47add664fde8454e4185bb8e8474d1
+DIST snakeoil-0.10.11.tar.gz 174701 BLAKE2B 5dba8eac3fdd6dfc88fcb2ffac8cd16f18c28485d39e6726708f98f0c86cdc6d101bf343da75c505f34c59c0bede89b0adbc268bc6d93a996cfefce4e968ac75 SHA512 6cd4fb1449e1ccf74bf8042afa4e113704eb328c89ff1def59581e96031082b27d78f46574796f59a612148947626d727b13a04134bc895e96f2f4733ce54c41
diff --git a/dev-python/snakeoil/snakeoil-0.10.11.ebuild b/dev-python/snakeoil/snakeoil-0.10.11.ebuild
new file mode 100644
index 000000000000..b82fc9849aeb
--- /dev/null
+++ b/dev-python/snakeoil/snakeoil-0.10.11.ebuild
@@ -0,0 +1,30 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=flit
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+PYTHON_REQ_USE="threads(+)"
+inherit distutils-r1
+
+if [[ ${PV} == *9999 ]] ; then
+ EGIT_REPO_URI="https://anongit.gentoo.org/git/proj/pkgcore/snakeoil.git
+ https://github.com/pkgcore/snakeoil.git"
+ inherit git-r3
+else
+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
+ inherit pypi
+fi
+
+DESCRIPTION="misc common functionality and useful optimizations"
+HOMEPAGE="https://github.com/pkgcore/snakeoil"
+
+LICENSE="BSD BSD-2 MIT"
+SLOT="0"
+
+RDEPEND="
+ dev-python/lazy-object-proxy[${PYTHON_USEDEP}]
+"
+
+distutils_enable_tests pytest
diff --git a/dev-python/snakeoil/snakeoil-9999.ebuild b/dev-python/snakeoil/snakeoil-9999.ebuild
index c89d0ce8d25e..b82fc9849aeb 100644
--- a/dev-python/snakeoil/snakeoil-9999.ebuild
+++ b/dev-python/snakeoil/snakeoil-9999.ebuild
@@ -26,8 +26,5 @@ SLOT="0"
RDEPEND="
dev-python/lazy-object-proxy[${PYTHON_USEDEP}]
"
-BDEPEND="
- >=dev-python/flit-core-3.8[${PYTHON_USEDEP}]
-"
distutils_enable_tests pytest
diff --git a/dev-python/stevedore/stevedore-5.4.1.ebuild b/dev-python/stevedore/stevedore-5.4.1.ebuild
index 3e3a4973f601..89fcb3260605 100644
--- a/dev-python/stevedore/stevedore-5.4.1.ebuild
+++ b/dev-python/stevedore/stevedore-5.4.1.ebuild
@@ -4,7 +4,7 @@
EAPI=8
DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+PYTHON_COMPAT=( python3_{11..14} )
inherit distutils-r1 pypi
diff --git a/dev-python/terminaltables3/terminaltables3-4.0.0.ebuild b/dev-python/terminaltables3/terminaltables3-4.0.0.ebuild
index 7d2bf1be6522..ad6c1fbbe5cb 100644
--- a/dev-python/terminaltables3/terminaltables3-4.0.0.ebuild
+++ b/dev-python/terminaltables3/terminaltables3-4.0.0.ebuild
@@ -4,7 +4,7 @@
EAPI=8
DISTUTILS_USE_PEP517=poetry
-PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+PYTHON_COMPAT=( python3_{11..14} )
inherit distutils-r1
diff --git a/dev-python/traitlets/traitlets-5.14.3.ebuild b/dev-python/traitlets/traitlets-5.14.3.ebuild
index 210100d35c33..d7bba4acac03 100644
--- a/dev-python/traitlets/traitlets-5.14.3.ebuild
+++ b/dev-python/traitlets/traitlets-5.14.3.ebuild
@@ -35,6 +35,16 @@ python_test() {
tests/test_typing.py
)
+ if [[ ${EPYTHON} == python3.14 ]]; then
+ # fails due to improved error messages in Python 3.14
+ # https://github.com/ipython/traitlets/issues/925
+ local EPYTEST_DESELECT=(
+ tests/config/test_argcomplete.py::TestArgcomplete::test_complete_simple_app
+ tests/config/test_argcomplete.py::TestArgcomplete::test_complete_custom_completers
+ tests/config/test_argcomplete.py::TestArgcomplete::test_complete_subcommands_subapp1
+ )
+ fi
+
local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
epytest -p pytest_mock
}
diff --git a/dev-python/vdirsyncer/vdirsyncer-0.19.3.ebuild b/dev-python/vdirsyncer/vdirsyncer-0.19.3.ebuild
index 84edc1f9adc9..574bc70dbdf3 100644
--- a/dev-python/vdirsyncer/vdirsyncer-0.19.3.ebuild
+++ b/dev-python/vdirsyncer/vdirsyncer-0.19.3.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8