summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
authorLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2025-05-15 06:57:53 +0000
committerLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2025-05-15 06:57:53 +0000
commitc88f588c1c12b6fe438575fc0c21d8b89a361f73 (patch)
treefaf15828c899ecb7c156c37bf365a6f881862b10 /dev-python
parent00278f6cc9e8280380a376f72ec209c3efc960a4 (diff)
downloadbaldeagleos-repo-c88f588c1c12b6fe438575fc0c21d8b89a361f73.tar.gz
baldeagleos-repo-c88f588c1c12b6fe438575fc0c21d8b89a361f73.tar.xz
baldeagleos-repo-c88f588c1c12b6fe438575fc0c21d8b89a361f73.zip
Adding metadata
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/aiohttp/aiohttp-3.11.18.ebuild2
-rw-r--r--dev-python/astor/astor-0.8.1-r2.ebuild36
-rw-r--r--dev-python/astor/files/astor-0.8.1-py314.patch99
-rw-r--r--dev-python/astroid/astroid-3.3.10.ebuild18
-rw-r--r--dev-python/asttokens/asttokens-3.0.0-r1.ebuild39
-rw-r--r--dev-python/asttokens/files/asttokens-3.0.0-py314.patch63
-rw-r--r--dev-python/beartype/Manifest1
-rw-r--r--dev-python/beartype/beartype-0.21.0_rc0.ebuild42
-rw-r--r--dev-python/boto3/Manifest1
-rw-r--r--dev-python/boto3/boto3-1.38.16.ebuild53
-rw-r--r--dev-python/botocore/Manifest1
-rw-r--r--dev-python/botocore/botocore-1.38.16.ebuild67
-rw-r--r--dev-python/chainstream/chainstream-1.0.2.ebuild2
-rw-r--r--dev-python/ensurepip-setuptools/Manifest1
-rw-r--r--dev-python/ensurepip-setuptools/ensurepip-setuptools-80.7.1.ebuild20
-rw-r--r--dev-python/faker/Manifest1
-rw-r--r--dev-python/faker/faker-37.3.0.ebuild42
-rw-r--r--dev-python/greenlet/greenlet-3.2.1.ebuild2
-rw-r--r--dev-python/hypothesis/Manifest1
-rw-r--r--dev-python/hypothesis/hypothesis-6.131.17.ebuild126
-rw-r--r--dev-python/ipython/ipython-9.2.0-r1.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/minify-html/minify-html-0.16.4.ebuild15
-rw-r--r--dev-python/numpy/files/numpy-2.2.5-py314.patch298
-rw-r--r--dev-python/numpy/numpy-2.2.5-r1.ebuild202
-rw-r--r--dev-python/numpy/numpy-2.2.5.ebuild2
-rw-r--r--dev-python/pycares/pycares-4.6.1.ebuild2
-rw-r--r--dev-python/pyghmi/Manifest1
-rw-r--r--dev-python/pyghmi/pyghmi-1.6.1.ebuild33
-rw-r--r--dev-python/pyprof2calltree/pyprof2calltree-1.4.5-r1.ebuild4
-rw-r--r--dev-python/pyrfc3339/pyrfc3339-2.0.1.ebuild4
-rw-r--r--dev-python/pytest-codeblocks/pytest-codeblocks-0.17.0.ebuild4
-rw-r--r--dev-python/pytest-datafiles/pytest-datafiles-3.0.0.ebuild2
-rw-r--r--dev-python/python-augeas/python-augeas-1.2.0.ebuild2
-rw-r--r--dev-python/python-constraint/python-constraint-1.4.0.ebuild4
-rw-r--r--dev-python/python-gflags/python-gflags-3.1.2-r2.ebuild4
-rw-r--r--dev-python/pytools/Manifest1
-rw-r--r--dev-python/pytools/pytools-2025.1.5.ebuild31
-rw-r--r--dev-python/roman/roman-5.0.ebuild2
-rw-r--r--dev-python/setuptools/Manifest1
-rw-r--r--dev-python/setuptools/setuptools-80.7.1.ebuild130
-rw-r--r--dev-python/smmap/smmap-6.0.0.ebuild4
-rw-r--r--dev-python/spake2/spake2-0.9.ebuild4
-rw-r--r--dev-python/sqlalchemy/Manifest1
-rw-r--r--dev-python/sqlalchemy/sqlalchemy-2.0.41.ebuild117
-rw-r--r--dev-python/tcolorpy/tcolorpy-0.1.7.ebuild4
-rw-r--r--dev-python/tldextract/tldextract-5.3.0.ebuild2
-rw-r--r--dev-python/toposort/toposort-1.10.ebuild4
-rw-r--r--dev-python/xcffib/xcffib-1.8.0.ebuild2
-rw-r--r--dev-python/yapf/yapf-0.43.0-r1.ebuild1
53 files changed, 1471 insertions, 60 deletions
diff --git a/dev-python/aiohttp/aiohttp-3.11.18.ebuild b/dev-python/aiohttp/aiohttp-3.11.18.ebuild
index abe491d94407..208bf4a5036d 100644
--- a/dev-python/aiohttp/aiohttp-3.11.18.ebuild
+++ b/dev-python/aiohttp/aiohttp-3.11.18.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~hppa ~loong ~mips ppc ~ppc64 ~riscv ~s390 ~sparc x86"
+KEYWORDS="amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
IUSE="+native-extensions test-rust"
DEPEND="
diff --git a/dev-python/astor/astor-0.8.1-r2.ebuild b/dev-python/astor/astor-0.8.1-r2.ebuild
new file mode 100644
index 000000000000..7b6cf800d974
--- /dev/null
+++ b/dev-python/astor/astor-0.8.1-r2.ebuild
@@ -0,0 +1,36 @@
+# 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="Read/rewrite/write Python ASTs"
+HOMEPAGE="
+ https://pypi.org/project/astor/
+ https://github.com/berkerpeksag/astor/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+PATCHES=(
+ "${FILESDIR}/${P}-tests-bigint.patch"
+ # https://github.com/berkerpeksag/astor/pull/233
+ "${FILESDIR}/${P}-py314.patch"
+)
+
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_IGNORE=(
+ tests/test_rtrip.py
+ )
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest
+}
diff --git a/dev-python/astor/files/astor-0.8.1-py314.patch b/dev-python/astor/files/astor-0.8.1-py314.patch
new file mode 100644
index 000000000000..e5af45648393
--- /dev/null
+++ b/dev-python/astor/files/astor-0.8.1-py314.patch
@@ -0,0 +1,99 @@
+From d0b5563cc1e263f08df9312d89a7691167448f4d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
+Date: Wed, 14 May 2025 19:52:30 +0200
+Subject: [PATCH] Fix compatibility with Python 3.14 (mostly)
+
+Fix the code and the test suite to work with Python 3.14, where
+deprecated constant-like AST nodes were removed. Notably:
+
+1. Skip tests for deprecated nodes in Python 3.14.
+
+2. Use `ast.Constant` over `ast.Num` for non-deprecated code
+ in Python 3.6+.
+
+3. Check for `ast.Str` only in Python < 3.14, and handle `ast.Constant`
+ being used to represent a string instead.
+
+With these changes, all tests except for:
+
+ tests/test_rtrip.py::RtripTestCase::test_convert_stdlib
+
+pass. However, this particular test also hanged for me with older Python
+versions.
+
+Related to #217
+---
+ astor/code_gen.py | 9 +++++++--
+ tests/test_code_gen.py | 11 ++++++++---
+ 2 files changed, 15 insertions(+), 5 deletions(-)
+
+diff --git a/astor/code_gen.py b/astor/code_gen.py
+index b2bae12..4330f49 100644
+--- a/astor/code_gen.py
++++ b/astor/code_gen.py
+@@ -692,6 +692,7 @@ def _handle_string_constant(self, node, value, is_joined=False):
+ current_line = ''.join(current_line)
+
+ has_ast_constant = sys.version_info >= (3, 6)
++ has_ast_str = sys.version_info < (3, 14)
+
+ if is_joined:
+ # Handle new f-strings. This is a bit complicated, because
+@@ -700,7 +701,7 @@ def _handle_string_constant(self, node, value, is_joined=False):
+
+ def recurse(node):
+ for value in node.values:
+- if isinstance(value, ast.Str):
++ if has_ast_str and isinstance(value, ast.Str):
+ # Double up braces to escape them.
+ self.write(value.s.replace('{', '{{').replace('}', '}}'))
+ elif isinstance(value, ast.FormattedValue):
+@@ -713,7 +714,11 @@ def recurse(node):
+ self.write(':')
+ recurse(value.format_spec)
+ elif has_ast_constant and isinstance(value, ast.Constant):
+- self.write(value.value)
++ if isinstance(value.value, str):
++ # Double up braces to escape them.
++ self.write(value.value.replace('{', '{{').replace('}', '}}'))
++ else:
++ self.write(value.value)
+ else:
+ kind = type(value).__name__
+ assert False, 'Invalid node %s inside JoinedStr' % kind
+diff --git a/tests/test_code_gen.py b/tests/test_code_gen.py
+index e828eb9..1825030 100644
+--- a/tests/test_code_gen.py
++++ b/tests/test_code_gen.py
+@@ -28,7 +28,10 @@ def astorexpr(x):
+ return eval(astor.to_source(ast.Expression(body=x)))
+
+ def astornum(x):
+- return astorexpr(ast.Num(n=x))
++ if sys.version_info >= (3, 6):
++ return astorexpr(ast.Constant(x))
++ else:
++ return astorexpr(ast.Num(n=x))
+
+ class Comparisons(object):
+
+@@ -515,8 +518,8 @@ def test_deprecated_constants_as_name(self):
+ ast.Assign(targets=[ast.Name(id='spam')], value=ast.Name(id='None')),
+ "spam = None")
+
+- @unittest.skipUnless(sys.version_info >= (3, 4),
+- "ast.NameConstant introduced in Python 3.4")
++ @unittest.skipUnless((3, 4) <= sys.version_info < (3, 14),
++ "ast.NameConstant introduced in Python 3.4, removed in 3.14")
+ def test_deprecated_name_constants(self):
+ self.assertAstEqualsSource(
+ ast.Assign(targets=[ast.Name(id='spam')], value=ast.NameConstant(value=True)),
+@@ -530,6 +533,8 @@ def test_deprecated_name_constants(self):
+ ast.Assign(targets=[ast.Name(id='spam')], value=ast.NameConstant(value=None)),
+ "spam = None")
+
++ @unittest.skipIf(sys.version_info >= (3, 14),
++ "Deprecated Constant nodes removed in Python 3.14")
+ def test_deprecated_constant_nodes(self):
+ self.assertAstEqualsSource(
+ ast.Assign(targets=[ast.Name(id='spam')], value=ast.Num(3)),
diff --git a/dev-python/astroid/astroid-3.3.10.ebuild b/dev-python/astroid/astroid-3.3.10.ebuild
index 50d7fc7551ec..c0022d19f2af 100644
--- a/dev-python/astroid/astroid-3.3.10.ebuild
+++ b/dev-python/astroid/astroid-3.3.10.ebuild
@@ -77,17 +77,15 @@ python_test() {
fi
case ${EPYTHON} in
- pypy3)
+ python3.14)
EPYTEST_DESELECT+=(
- tests/test_transforms.py::TestTransforms::test_transform_aborted_if_recursion_limited
- )
- ;;
- python3.13)
- EPYTEST_DESELECT+=(
- # changes in py3.13.0b4
- # https://github.com/pylint-dev/astroid/issues/2478
- tests/test_nodes.py::AsStringTest::test_f_strings
- tests/test_nodes_lineno.py::TestLinenoColOffset::test_end_lineno_string
+ tests/brain/test_brain.py::CollectionsBrain::test_collections_object_subscriptable_3
+ tests/brain/test_brain.py::TypingBrain::test_has_dunder_args
+ tests/brain/test_brain.py::TypingBrain::test_typing_object_notsubscriptable_3
+ tests/brain/test_brain.py::TypingBrain::test_typing_types
+ tests/brain/test_pathlib.py::test_inference_parents
+ tests/brain/test_pathlib.py::test_inference_parents_subscript_index
+ tests/test_inference.py::InferenceTest::test_binary_op_or_union_type
)
;;
esac
diff --git a/dev-python/asttokens/asttokens-3.0.0-r1.ebuild b/dev-python/asttokens/asttokens-3.0.0-r1.ebuild
new file mode 100644
index 000000000000..08024f6b0f83
--- /dev/null
+++ b/dev-python/asttokens/asttokens-3.0.0-r1.ebuild
@@ -0,0 +1,39 @@
+# Copyright 2020-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="Annotate Python AST trees with source text and token information"
+HOMEPAGE="
+ https://github.com/gristlabs/asttokens/
+ https://pypi.org/project/asttokens/
+"
+SRC_URI="
+ https://github.com/gristlabs/asttokens/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos"
+
+BDEPEND="
+ dev-python/setuptools-scm[${PYTHON_USEDEP}]
+ test? (
+ dev-python/astroid[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+export SETUPTOOLS_SCM_PRETEND_VERSION=${PV}
+
+PATCHES=(
+ # https://github.com/gristlabs/asttokens/pull/157
+ "${FILESDIR}/${P}-py314.patch"
+)
diff --git a/dev-python/asttokens/files/asttokens-3.0.0-py314.patch b/dev-python/asttokens/files/asttokens-3.0.0-py314.patch
new file mode 100644
index 000000000000..a8b92f6d11cd
--- /dev/null
+++ b/dev-python/asttokens/files/asttokens-3.0.0-py314.patch
@@ -0,0 +1,63 @@
+From 442d8615b2e60ba2274edd7cc24fc631a369bf02 Mon Sep 17 00:00:00 2001
+From: Karolina Surma <ksurma@redhat.com>
+Date: Tue, 7 Jan 2025 10:29:52 +0100
+Subject: [PATCH] Replace ast.Str usages with ast.Constant
+
+Per What's new in Python 3.14:
+ast.Str has been deprecated since Python 3.8, and have emitted deprecation
+warnings since Python 3.12.
+https://docs.python.org/dev/whatsnew/3.14.html#id3
+---
+ tests/test_asttokens.py | 2 +-
+ tests/test_tokenless.py | 4 ++--
+ tests/test_util.py | 2 +-
+ 3 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/tests/test_asttokens.py b/tests/test_asttokens.py
+index b9489cb..c654af3 100644
+--- a/tests/test_asttokens.py
++++ b/tests/test_asttokens.py
+@@ -125,7 +125,7 @@ def test_unicode_offsets(self):
+
+ # Verify that ast parser produces offsets as we expect. This is just to inform the
+ # implementation.
+- string_node = next(n for n in ast.walk(root) if isinstance(n, ast.Str))
++ string_node = next(n for n in ast.walk(root) if isinstance(n, ast.Constant))
+ self.assertEqual(string_node.lineno, 1)
+ self.assertEqual(string_node.col_offset, 4)
+
+diff --git a/tests/test_tokenless.py b/tests/test_tokenless.py
+index ab2f3d6..881c69a 100644
+--- a/tests/test_tokenless.py
++++ b/tests/test_tokenless.py
+@@ -47,7 +47,7 @@ def is_fstring_format_spec(node):
+ and len(node.values) == 1
+ and (
+ (
+- isinstance(node.values[0], ast.Str)
++ isinstance(node.values[0], ast.Constant)
+ and node.values[0].value in ['.2f']
+ ) or (
+ isinstance(node.values[0], ast.FormattedValue)
+@@ -97,7 +97,7 @@ def check_node(self, atok, node):
+ atok_text = atok.get_text(node, padded=padded)
+ if ast_text:
+ if sys.version_info < (3, 12) and (
+- ast_text.startswith("f") and isinstance(node, (ast.Str, ast.FormattedValue))
++ ast_text.startswith("f") and isinstance(node, (ast.Constant, ast.FormattedValue))
+ or is_fstring_format_spec(node)
+ or (not fstring_positions_work() and is_fstring_internal_node(node))
+ ):
+diff --git a/tests/test_util.py b/tests/test_util.py
+index a38fef2..0c7f94d 100644
+--- a/tests/test_util.py
++++ b/tests/test_util.py
+@@ -98,7 +98,7 @@ def test_replace(self):
+ source = "foo(bar(1 + 2), 'hello' + ', ' + 'world')"
+ atok = asttokens.ASTTokens(source, parse=True)
+ names = [n for n in asttokens.util.walk(atok.tree) if isinstance(n, ast.Name)]
+- strings = [n for n in asttokens.util.walk(atok.tree) if isinstance(n, ast.Str)]
++ strings = [n for n in asttokens.util.walk(atok.tree) if isinstance(n, ast.Constant) and isinstance(n.value, str)]
+ repl1 = [atok.get_text_range(n) + ('TEST',) for n in names]
+ repl2 = [atok.get_text_range(n) + ('val',) for n in strings]
+ self.assertEqual(asttokens.util.replace(source, repl1 + repl2),
diff --git a/dev-python/beartype/Manifest b/dev-python/beartype/Manifest
index 544e9e45dddb..bd3548b9db1f 100644
--- a/dev-python/beartype/Manifest
+++ b/dev-python/beartype/Manifest
@@ -1 +1,2 @@
DIST beartype-0.20.2.tar.gz 1410390 BLAKE2B fa1ca4000b7a32fe7fae4d3712060ba29f1bb690fe9c4c28dda91962f1a76aacdc906305de104e77c7bd34c9063e927c190c9f38c6f6aa8a4d790dd39401392c SHA512 72bb5f1a71e59f7f9debe6d10cb96de01c2f5a9f10f59d2d7002ef01320e17a9bf47d070c8e17d9cf82140b3917082f08a5eb442b825fd43b2cacf9c0fc65455
+DIST beartype-0.21.0rc0.tar.gz 1437966 BLAKE2B 569eac36552c82e24218385478a48a471757e38f157be926b0a524d2c4366a84d1fd615d41b1d29b8b2dcff534e1a5a48a7b20ed894eecc62b2e31413aae9692 SHA512 e3a3ec779eee910741c2e1ac7514d516a05bf800255141a0cbac70c81a87b0bc25028f41e9b0a65396717631e6707164e0ab1cb39cb7d997f1faa3e85743bc73
diff --git a/dev-python/beartype/beartype-0.21.0_rc0.ebuild b/dev-python/beartype/beartype-0.21.0_rc0.ebuild
new file mode 100644
index 000000000000..756a408d7e81
--- /dev/null
+++ b/dev-python/beartype/beartype-0.21.0_rc0.ebuild
@@ -0,0 +1,42 @@
+# 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} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Unbearably fast runtime type checking in pure Python"
+HOMEPAGE="
+ https://pypi.org/project/beartype/
+ https://github.com/beartype/beartype/
+"
+
+LICENSE="MIT"
+SLOT="0"
+
+BDEPEND="
+ test? (
+ dev-python/click[${PYTHON_USEDEP}]
+ dev-python/mypy[${PYTHON_USEDEP}]
+ dev-python/numpy[${PYTHON_USEDEP}]
+ dev-python/sqlalchemy[${PYTHON_USEDEP}]
+ dev-python/xarray[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # fragile performance test
+ beartype_test/a00_unit/a70_decor/test_decorwrapper.py::test_wrapper_fail_obj_large
+ # test for building docs, apparently broken too
+ beartype_test/a90_func/z90_lib/a00_sphinx
+ )
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest
+}
diff --git a/dev-python/boto3/Manifest b/dev-python/boto3/Manifest
index e048265e186c..4ecb50fb3ba2 100644
--- a/dev-python/boto3/Manifest
+++ b/dev-python/boto3/Manifest
@@ -5,6 +5,7 @@ DIST boto3-1.38.12.gh.tar.gz 939412 BLAKE2B 096514640df4a98b76c30cd21816260fcb7a
DIST boto3-1.38.13.gh.tar.gz 939786 BLAKE2B 5c65c92b79ce28f398170950ed0fbce84a0079335a391a7ba4243a103634ba9e863fff8305dd799c47b896871ce16c5393fc2a4974026e34b8e35ca396002092 SHA512 e06f144b4cc6784d2563de2bfba2e0868c7877a2232c390bfee9db70518880b2d3c1506d3849b5f7cf46515ee2d1932a1ca09ca8847da2824f97fa5d828bc313
DIST boto3-1.38.14.gh.tar.gz 940393 BLAKE2B c3020c79137502354030dce76a5d3c9c684b89a05acab6a4d8ee525ec79b5bc7456dde1cb515b57b842d99cf923b1cbccf63a00b037dc383492eec0c03f9fe76 SHA512 04e6bc77e79c88268c1d9bd70f05e804377b3858cd5e883e1fd1cacd44857e6b48c21eb5aa1c1eadeef13e69d2d2a68d7fce161be14e315eeed8792daf6ffaa2
DIST boto3-1.38.15.gh.tar.gz 941100 BLAKE2B 4a009dc8b39e2151ddc4e61e1946ffb110dcfde3c20fe68eb18d759bd1a0fe927905deae485461cf37738f62a278a1974aec20192971e704483745a123f38c9a SHA512 5750f5590cdd8fd05059ec7ce7c4406ce034fc5755cc037260d81b1c262e31113b8f0c8b465cd65e6d14b43b318dc18d86b2cef6e9d36efbf89367d856db240b
+DIST boto3-1.38.16.gh.tar.gz 941492 BLAKE2B 13607acf2b65be1e603dfff5d333a44d1c47940e8454820c327d1114cee596aa36a8a7987d1f79041db16669d0320fe1223cf57d5017c613c6c51236fd1a72c5 SHA512 39243988b2f3f0c399ddd8c8149f4ac4e31267cab1598dd51476c4d60b03dc5a30dc874512051eb15432318997cdd274364beaf0092c6e1897b7c9d8f9c97c07
DIST boto3-1.38.3.gh.tar.gz 934010 BLAKE2B f5008a63aec620385e06c15e97ea37335bba190e5a29920c14389ae0dfc0e09a70ce70f8b50c0d25feda3defd9e855739305d19df7759688c156f53fc698b533 SHA512 8f300e38c7912f5df00431c1b70494521ac49500512b4aba7dc18f6bf0e570508d6a00fe8a98eb3c8607af39744a67e3b47d69507dbaf25d44dd02085f24bf95
DIST boto3-1.38.8.gh.tar.gz 937130 BLAKE2B 4158573a032957c33f62c6406937a45956f4ccf972be4a223e16a327b0b476402a1e7bf7d9b6a5b83005fc324f6c0062ed73008972cabed9247790225c4d4e5a SHA512 3c3854ed132ad4c81cd868848a370cdc73101ac3c578f8ae70bc53c9a98b1d85dcd364258027adef976b3c6d220aa45f865928c055c9320d3a268e0e29d5af63
DIST boto3-1.38.9.gh.tar.gz 937730 BLAKE2B 6b1a68095601d9b32be0679171a73b204897a7f632c1825ee203d27b46c625b196739b9c6ed8f19e84e0f0d2ba3a777539d9474cbaaa526fd499655e62ce9def SHA512 37960c90bb8de6328dc08cabb98a71e0dbb9303137410a1e44efdd650d6d0009398a4c4fb75ab53f8c8dfa7f566925c03de10012092967e661157f6bdc12e583
diff --git a/dev-python/boto3/boto3-1.38.16.ebuild b/dev-python/boto3/boto3-1.38.16.ebuild
new file mode 100644
index 000000000000..b862f479d876
--- /dev/null
+++ b/dev-python/boto3/boto3-1.38.16.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_{9,10,11,12,13} )
+
+inherit distutils-r1
+
+DESCRIPTION="The AWS SDK for Python"
+HOMEPAGE="
+ https://github.com/boto/boto3/
+ https://pypi.org/project/boto3/
+"
+SRC_URI="
+ https://github.com/boto/boto3/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~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.12.0[${PYTHON_USEDEP}]
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ # don't lock versions to narrow ranges
+ sed -e '/botocore/ d' \
+ -e '/jmespath/ d' \
+ -e '/s3transfer/ d' \
+ -i setup.py || die
+
+ # do not rely on bundled deps in botocore (sic!)
+ find -name '*.py' -exec sed -i \
+ -e 's:from botocore[.]vendored import:import:' \
+ -e 's:from botocore[.]vendored[.]:from :' \
+ {} + || die
+
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest tests/{functional,unit}
+}
diff --git a/dev-python/botocore/Manifest b/dev-python/botocore/Manifest
index e80cfde96736..89f58c2442e8 100644
--- a/dev-python/botocore/Manifest
+++ b/dev-python/botocore/Manifest
@@ -5,6 +5,7 @@ DIST botocore-1.38.12.gh.tar.gz 14619336 BLAKE2B 65e66c6ef2daccef4e21a8256e46331
DIST botocore-1.38.13.gh.tar.gz 14619576 BLAKE2B 088dfd540934b2c1f20e5a63ffd3aa2351021f3f61207d30d3352e3d92c5df6138e87fe74fc9e48b2bf221dda2ede7e632f50f4378448a6dc6cdc2f87aaa0b02 SHA512 b1c7b585289859b94325bb1f3934bcb3a0d7596cb22e20ee79125aff96af2aa9337ec97a197426200b4ac606370eecf395a0ba7e26c79946c9390fbb02acc578
DIST botocore-1.38.14.gh.tar.gz 14627287 BLAKE2B 9033f12f01b6478ce9e2bf5a5796a79a5b45157537b542007d22d7a27aed0cc2f680d5be7bbf49dd6e29708b28221de19387dbe9104f6fca0175deba7bacc565 SHA512 f1e49ceb8f39e9978d9765662e8adf7d6973405559aa62c954a16d4ade2740065efbcc0304faf6ce18fc5f71b2e25091d7dbd4cf406e197a81cad15a7617a5ae
DIST botocore-1.38.15.gh.tar.gz 14635893 BLAKE2B 9060ea9823ad74b5dc4b33c4701ad5c0b868f60e7450628502a12aa7ceb1d114f1edab07a2d2f93f9d43c99f1cf5198418484828eaba6ff8ad179c713754a5d2 SHA512 f8b6e45e31d93b2f6643537dbab22e0f952f14b7a281ab850126229b15c2c7f138d669bc9a22d8eb32a81045b6252c785462b930fdb23ec8f4081c945513f491
+DIST botocore-1.38.16.gh.tar.gz 14637132 BLAKE2B 4c15976226c9bc270093c7912970bb00305d936ded865b595913cf859c70967cc44e1e44d80b23217f958db022b07c5257b089df7786ac1fbb833d9c503c219f SHA512 f8d6bb3350ff3c75a1bb6ede78effbe1d9932f4293c09a25161893d9f1ce0c2d7ab9f56f13880857198c21a37e64686c954c58d195730b19b3561900a1b35121
DIST botocore-1.38.3.gh.tar.gz 14578552 BLAKE2B 4766db1ba2651ebe65c79f8a37c91cf95875a20c0cc51c1886cd394b90d50109738daa79b398e0c4b80031cfab69e1338dfaafbc0ae796fffa3348f6b13fc1ce SHA512 ad69e119d5bbc98a0c14c1c927badeecc1f57d31305e6a07af41d4d4bf6755f5abc150e36321f71b9495221ad93052d84a1dc964fb9ef6fdd791d4c37e75a01a
DIST botocore-1.38.8.gh.tar.gz 14606167 BLAKE2B cb92f6014349f5188d62ddeb043e7532c50c7edc984cabae918825cdace981694c37ba656afcbbb64e65e275da4980d5f256a945bbcc63f9609272b08690c3d5 SHA512 bc9096051fde740a908ef0912a0c205595e7df653a349c167f616a788423578ba6b3aed6fe6213f528faa32b1c946abf0ac66dd81afdc05d41d12a4af4f7e818
DIST botocore-1.38.9.gh.tar.gz 14612563 BLAKE2B 10a0e43846393c06c808e306cde1398ea9374712d07b71d16270cd3238d3063f66ff532fab465acb5a87065002b7ca7394d0c77a25c83b9f8b8ecad7823042a2 SHA512 748c373a1be84a123968444316de7ab6f34b548d7619183d23ae07d0b0aeeeebc8ba1d25bb5517f0491144f7578fa9a7e9fbca066f6aa0da7b2d7439138bb8fd
diff --git a/dev-python/botocore/botocore-1.38.16.ebuild b/dev-python/botocore/botocore-1.38.16.ebuild
new file mode 100644
index 000000000000..df85ee0d220c
--- /dev/null
+++ b/dev-python/botocore/botocore-1.38.16.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_{9,10,11,12,13} )
+
+inherit distutils-r1
+
+DESCRIPTION="Low-level, data-driven core of boto 3"
+HOMEPAGE="
+ https://github.com/boto/botocore/
+ https://pypi.org/project/botocore/
+"
+SRC_URI="
+ https://github.com/boto/botocore/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~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_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ # unpin deps
+ sed -i -e "s:>=.*':':" setup.py || die
+
+ # unbundle deps
+ rm -r botocore/vendored || die
+ find -name '*.py' -exec sed -i \
+ -e 's:from botocore[.]vendored import:import:' \
+ -e 's:from botocore[.]vendored[.]:from :' \
+ {} + || die
+
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # rely on bundled six
+ tests/functional/test_six_imports.py::test_no_bare_six_imports
+ tests/functional/test_six_threading.py::test_six_thread_safety
+ )
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest tests/{functional,unit}
+}
diff --git a/dev-python/chainstream/chainstream-1.0.2.ebuild b/dev-python/chainstream/chainstream-1.0.2.ebuild
index 71a1fd9611ea..9bc3d19916ae 100644
--- a/dev-python/chainstream/chainstream-1.0.2.ebuild
+++ b/dev-python/chainstream/chainstream-1.0.2.ebuild
@@ -13,7 +13,7 @@ SRC_URI="https://github.com/rrthomas/chainstream/archive/refs/tags/v${PV}.tar.gz
LICENSE="CC-BY-SA-4.0"
SLOT="0"
-KEYWORDS="~amd64 ~ppc ~sparc ~x86"
+KEYWORDS="amd64 ~ppc ~sparc ~x86"
src_configure() {
# upstream doesn't provide build system in pyproject.toml
diff --git a/dev-python/ensurepip-setuptools/Manifest b/dev-python/ensurepip-setuptools/Manifest
index 3a7693be76db..28e8ccf9bde0 100644
--- a/dev-python/ensurepip-setuptools/Manifest
+++ b/dev-python/ensurepip-setuptools/Manifest
@@ -2,3 +2,4 @@ DIST setuptools-79.0.1-py3-none-any.whl 1256281 BLAKE2B 8ae51bdd1c0ccada116757c2
DIST setuptools-80.2.0-py3-none-any.whl 1240763 BLAKE2B afb1a983aa8534ab20de1889fd8460bcddad7ffb956b95a830879f03982d38da5f76f71d8c45d8134d9c0223dd3771c639f95ad9e4447e4c201dfbabaca16a3d SHA512 d3b4f97ea45a7f98b9dd711ed3bef6e5faf562a2bd114aec458b196170f8ccf53e2ae12642aeed17af65a2647c258679148c1dfe136cb2b59fa7f4fdd3768ad1
DIST setuptools-80.3.1-py3-none-any.whl 1201172 BLAKE2B 4daf6a4a65a4e7c0547750addbf30f92e3a386fd7fcc2a98761ec1bee5caf6ccf506f1e201a9518c34bc278ae504f8b277d6199e23df0457a603b1c05a7bb50d SHA512 85b62d19a3762c9cb5d5b79a2f5319d4d387e334711963730e4b6a72dc73be3291bf5fb6eb40a6284a8486cbe615e8af44bc299210642f70f52d3fbfd41be26c
DIST setuptools-80.4.0-py3-none-any.whl 1200812 BLAKE2B a3487a12084fa8582f1201b6df8cdd23de5b5fc763c5df607a4ae9a688fbd8defe064865e7f03a860819cdff1bf8c8fb98e3f94408e6511709f52eb9538feaef SHA512 2348c2e181394016f23d8ab55d9bf1104f16154729dfa891c3f57cd76d4f2fa0b96cc09b61d2a2ba73ac862c79ae03a6c57850c02c0a46ec279a78dddb06c39d
+DIST setuptools-80.7.1-py3-none-any.whl 1200776 BLAKE2B 6c6203aa84a305d8c812c846e81bd091f5d3ac51a416833e325b3e14f352ee214058b3d4d03768225d370b5a0c3c228ca72b01754b7cc4434bbf8904b7c3ca75 SHA512 a0e842e57588c86224f77e300f994e3937d33a8875f059cc1403995b697f3bab9fa365b20019fb8eac55e2d794b70d098bd6db34eddd48ddc920ec5893b141a5
diff --git a/dev-python/ensurepip-setuptools/ensurepip-setuptools-80.7.1.ebuild b/dev-python/ensurepip-setuptools/ensurepip-setuptools-80.7.1.ebuild
new file mode 100644
index 000000000000..b76c3f6972d8
--- /dev/null
+++ b/dev-python/ensurepip-setuptools/ensurepip-setuptools-80.7.1.ebuild
@@ -0,0 +1,20 @@
+# Copyright 2022-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit pypi
+
+DESCRIPTION="Shared setuptools wheel for ensurepip Python module"
+HOMEPAGE="https://pypi.org/project/setuptools/"
+SRC_URI="$(pypi_wheel_url "${PN#ensurepip-}")"
+S=${DISTDIR}
+
+LICENSE="MIT"
+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"
+
+src_install() {
+ insinto /usr/lib/python/ensurepip
+ doins "${A}"
+}
diff --git a/dev-python/faker/Manifest b/dev-python/faker/Manifest
index 1b3c26fb66c2..4b71250b14c9 100644
--- a/dev-python/faker/Manifest
+++ b/dev-python/faker/Manifest
@@ -1 +1,2 @@
DIST faker-37.1.0.tar.gz 1875707 BLAKE2B 67ae3cecd677fde963a6177ebd56f868487cb872d91e825cbef71c73ec227d0f7f6376e8580e587750cfab7fd35e823b67bf655ae883ef701caacf7c0424f16e SHA512 f7abea076457b8eaf391c600f5f91eed9ec11f48e8d0f48e43c4d3a318a8b40da492c23052d3bd6d84b7472a87459cab75c63872492544423f53aec4b596fbf7
+DIST faker-37.3.0.tar.gz 1901376 BLAKE2B bb8506dc82848e26c1eb47e7e237de4c6aa6b9d0b40ff7f3ae7586d700067ac1ffd95f0a4fcb63544523a9f3e99a27ed173fd4c39016989ae9d1c1b1c5cc8fd3 SHA512 da0a2fdc6646a581802c47c6bcf66c4c1658d4b72d0b0972c13ac5c1c991d96204bd8efd73c6042dd4785614f115b99c6221e243f6ed86326ab69882c1470a5f
diff --git a/dev-python/faker/faker-37.3.0.ebuild b/dev-python/faker/faker-37.3.0.ebuild
new file mode 100644
index 000000000000..07e6ec6efccf
--- /dev/null
+++ b/dev-python/faker/faker-37.3.0.ebuild
@@ -0,0 +1,42 @@
+# Copyright 2022-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_PN=${PN^}
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A Python package that generates fake data for you"
+HOMEPAGE="
+ https://github.com/joke2k/faker/
+ https://pypi.org/project/Faker/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ dev-python/tzdata[${PYTHON_USEDEP}]
+ !dev-ruby/faker
+"
+BDEPEND="
+ test? (
+ dev-python/freezegun[${PYTHON_USEDEP}]
+ dev-python/pillow[${PYTHON_USEDEP},tiff]
+ dev-python/validators[${PYTHON_USEDEP}]
+ )
+"
+
+# note: tests are flaky with xdist
+distutils_enable_tests pytest
+
+python_test() {
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ local -x PYTEST_PLUGINS=faker.contrib.pytest.plugin
+ epytest
+ epytest --exclusive-faker-session tests/pytest/session_overrides
+}
diff --git a/dev-python/greenlet/greenlet-3.2.1.ebuild b/dev-python/greenlet/greenlet-3.2.1.ebuild
index ba57e8091eba..54f679c67853 100644
--- a/dev-python/greenlet/greenlet-3.2.1.ebuild
+++ b/dev-python/greenlet/greenlet-3.2.1.ebuild
@@ -19,7 +19,7 @@ HOMEPAGE="
LICENSE="MIT PSF-2"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 -hppa ~m68k ~ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 -hppa ~m68k ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/hypothesis/Manifest b/dev-python/hypothesis/Manifest
index 0ff0c9a83eb6..cfce1d426088 100644
--- a/dev-python/hypothesis/Manifest
+++ b/dev-python/hypothesis/Manifest
@@ -2,4 +2,5 @@ DIST hypothesis-6.130.13.gh.tar.gz 9544282 BLAKE2B 9a74af5cab1562b5eb2fc00fe1ea6
DIST hypothesis-6.131.12.gh.tar.gz 9551332 BLAKE2B f09f08a67209f4e72b845069f1d99978e53a83f5001a05a54e07b0a8c81f8fa1dfc55b3cd3da8c989efcf7cdf0171816df02c6e54123965a96aa0a0716e872f5 SHA512 01031fd37fadc6f38b0a34224d10d3b57eab109bd0fd77e1d00873b1f9ed08c234664061b22de64f8908ea8aa1909b891fb1035b4016724cd209db8255748722
DIST hypothesis-6.131.15.gh.tar.gz 9553236 BLAKE2B 29473ae79fce7183cbaec2f936824f52a18c02e13e4bd416debadd3c0b7a731d0643373c376b4236a1a857312c995e8822f54d94c1f165e8d77578371886f10d SHA512 ee89bc176230850ef4ecab7a5179f1528c576b21d42af2a76be512df70adb7ddd670a86552e18e5246bfde3184038237d644951149d78f4ca1f8cec77b6a2586
DIST hypothesis-6.131.16.gh.tar.gz 9553561 BLAKE2B 0e7bc016b79bc8e68743e143455c5bb3e9815d186ae8b2e30093f53f0305cd086c2293ba0a10fa82e4b5fc26ffe0089438b3e79c1210c1486656437cbd3e83f3 SHA512 453a4bf94df625ef0fb63b442951990f0066228984f4facb96c46063857b7e8a61647692690f81e837586e20cb79d9dee60426674efe848b698461a0eee13ec0
+DIST hypothesis-6.131.17.gh.tar.gz 9553077 BLAKE2B 4426494ae104f97a7d9e71356fe5917455cf6ed02cee106eea4e11e7da0d9a289f2fbcd01b0fa350292446c2b942839b0bb17e543d15c3f79767626f24ae6cfa SHA512 8ea08bad6d59d87ceac55ab9b8343100bae650bc781c162a102e9bfcb4b0ebfde6e3f6c87351cd44eb2e34a137ee1bc6835a63688b1b292201aaf7a95aadc5c2
DIST hypothesis-6.131.9.gh.tar.gz 9549949 BLAKE2B 8fb5c9b9ad2c3940671d1128980b431fd43e63e35561c53f4cb172e12313019349a9ec3f3d7ecc5c8701e1aef471a1242861a94a37767e61629a42a5bf525ed0 SHA512 345baa03d68ef615fc926d93344e4f5e6f7899f104d489ebcf127426a7b2bdf6b6ac1b19ae153b297102c3a2980fa1627ce8a900a851965b213f0bd30ff4e54c
diff --git a/dev-python/hypothesis/hypothesis-6.131.17.ebuild b/dev-python/hypothesis/hypothesis-6.131.17.ebuild
new file mode 100644
index 000000000000..5fc2ebd650ed
--- /dev/null
+++ b/dev-python/hypothesis/hypothesis-6.131.17.ebuild
@@ -0,0 +1,126 @@
+# 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=()
+ 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/ipython-9.2.0-r1.ebuild b/dev-python/ipython/ipython-9.2.0-r1.ebuild
index d4966a3337d9..afaf119b937c 100644
--- a/dev-python/ipython/ipython-9.2.0-r1.ebuild
+++ b/dev-python/ipython/ipython-9.2.0-r1.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~amd64 ~arm arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="amd64 ~arm arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
IUSE="examples notebook nbconvert qt5 +smp test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/langdetect/Manifest b/dev-python/langdetect/Manifest
index d12ab8aeaca8..a11d7c268c91 100644
--- a/dev-python/langdetect/Manifest
+++ b/dev-python/langdetect/Manifest
@@ -1,3 +1 @@
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
new file mode 100644
index 000000000000..637368d2f237
--- /dev/null
+++ b/dev-python/langdetect/files/langdetect-1.0.9-explicit-config.patch
@@ -0,0 +1,13 @@
+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 56733bbffc48..99577c43fc3e 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 Gentoo Authors
+# Copyright 2022-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
-PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
DISTUTILS_USE_PEP517=setuptools
inherit distutils-r1 pypi
@@ -19,4 +19,6 @@ 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 020e07f2a3dd..c0f74ac187e2 100644
--- a/dev-python/langdetect/metadata.xml
+++ b/dev-python/langdetect/metadata.xml
@@ -2,11 +2,9 @@
<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
- <email>marcin.deranek@slonko.net</email>
- <name>Marcin Deranek</name>
+ <email>pastalian46@gmail.com</email>
+ <name>Takuya Wakazono</name>
</maintainer>
- <upstream>
- <bugs-to>https://github.com/Mimino666/langdetect/issues</bugs-to>
- </upstream>
- <origin>slonko-overlay</origin>
+
+ <origin>gentoo-guru-overlay</origin>
</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/minify-html/minify-html-0.16.4.ebuild b/dev-python/minify-html/minify-html-0.16.4.ebuild
index 6cd42595f6b2..a188e3633df5 100644
--- a/dev-python/minify-html/minify-html-0.16.4.ebuild
+++ b/dev-python/minify-html/minify-html-0.16.4.ebuild
@@ -7,9 +7,7 @@ DISTUTILS_EXT=1
DISTUTILS_USE_PEP517=maturin
PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
-CRATES="
-"
-
+CRATES=""
inherit cargo distutils-r1 pypi
DESCRIPTION="Extremely fast and smart HTML + JS + CSS minifier"
@@ -17,14 +15,7 @@ HOMEPAGE="
https://github.com/wilsonzlin/minify-html/
https://pypi.org/project/minify-html/
"
-SRC_URI+="
- ${CARGO_CRATE_URIS}
-"
-if [[ ${PKGBUMPING} != ${PVR} ]]; then
- SRC_URI+="
- https://github.com/gentoo-crate-dist/minify-html/releases/download/v${PV}/${P}-crates.tar.xz
- "
-fi
+SRC_URI+=" https://github.com/gentoo-crate-dist/minify-html/releases/download/v${PV}/${P}-crates.tar.xz"
LICENSE="MIT"
# Dependent crate licenses
@@ -39,6 +30,8 @@ KEYWORDS="~amd64 ~arm64"
QA_FLAGS_IGNORED="usr/lib.*/py.*/site-packages/minify_html/minify_html.*.so"
+export PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1
+
src_prepare() {
sed -i -e '/strip/d' Cargo.toml || die
distutils-r1_src_prepare
diff --git a/dev-python/numpy/files/numpy-2.2.5-py314.patch b/dev-python/numpy/files/numpy-2.2.5-py314.patch
new file mode 100644
index 000000000000..bdb0762e733c
--- /dev/null
+++ b/dev-python/numpy/files/numpy-2.2.5-py314.patch
@@ -0,0 +1,298 @@
+From 57084ae28ed14f3bba89ab51104dd5521b7edb64 Mon Sep 17 00:00:00 2001
+From: Nathan Goldbaum <nathan.goldbaum@gmail.com>
+Date: Tue, 22 Apr 2025 15:31:14 -0600
+Subject: [PATCH] ENH: Support Python 3.14 (#28748)
+
+* MNT: use CPython internal APIs to hotfix temporary elision on 3.14
+
+This is based on a diff from Sam Gross, see
+https://github.com/numpy/numpy/issues/28681#issuecomment-2810661401
+
+* TST: use refcount deltas in tests that hardcode refcounts
+
+* TST: one more refcount test change I don't understand
+
+* TST: fix ResourceWarning
+
+* CI: add 3.14 and 3.14t linux CI
+
+* CI: try with setup-python instead of setup-uv
+
+* CI: fix 3.14t-dev cython install
+
+* Update numpy/_core/src/multiarray/temp_elide.c
+
+Co-authored-by: Ross Barnowski <rossbar@caltech.edu>
+
+* CI: drop linux 3.13t smoke test
+
+* TST: move refcount check inside with block
+
+* MNT: guard against a possible future PyPy 3.14
+
+---------
+
+Co-authored-by: Ross Barnowski <rossbar@caltech.edu>
+
+MNT: add support for 3.14.0b1
+---
+ numpy/_core/src/multiarray/temp_elide.c | 19 +++++++++--
+ numpy/_core/tests/test_dlpack.py | 8 ++---
+ numpy/_core/tests/test_dtype.py | 3 +-
+ numpy/_core/tests/test_indexing.py | 6 ++--
+ numpy/_core/tests/test_item_selection.py | 8 +++--
+ numpy/_core/tests/test_multiarray.py | 4 ++-
+ numpy/_core/tests/test_nditer.py | 7 ++--
+ numpy/_core/tests/test_regression.py | 43 +++++++++++-------------
+ numpy/_core/tests/test_umath.py | 4 +--
+ 9 files changed, 62 insertions(+), 40 deletions(-)
+
+diff --git a/numpy/_core/src/multiarray/temp_elide.c b/numpy/_core/src/multiarray/temp_elide.c
+index 662a2fa52b..9236476c42 100644
+--- a/numpy/_core/src/multiarray/temp_elide.c
++++ b/numpy/_core/src/multiarray/temp_elide.c
+@@ -109,6 +109,19 @@ find_addr(void * addresses[], npy_intp naddr, void * addr)
+ return 0;
+ }
+
++static int
++check_unique_temporary(PyObject *lhs)
++{
++#if PY_VERSION_HEX == 0x030E00A7 && !defined(PYPY_VERSION)
++#error "NumPy is broken on CPython 3.14.0a7, please update to a newer version"
++#elif PY_VERSION_HEX >= 0x030E00B1 && !defined(PYPY_VERSION)
++ // see https://github.com/python/cpython/issues/133164
++ return PyUnstable_Object_IsUniqueReferencedTemporary(lhs);
++#else
++ return 1;
++#endif
++}
++
+ static int
+ check_callers(int * cannot)
+ {
+@@ -295,7 +308,8 @@ can_elide_temp(PyObject *olhs, PyObject *orhs, int *cannot)
+ !PyArray_CHKFLAGS(alhs, NPY_ARRAY_OWNDATA) ||
+ !PyArray_ISWRITEABLE(alhs) ||
+ PyArray_CHKFLAGS(alhs, NPY_ARRAY_WRITEBACKIFCOPY) ||
+- PyArray_NBYTES(alhs) < NPY_MIN_ELIDE_BYTES) {
++ PyArray_NBYTES(alhs) < NPY_MIN_ELIDE_BYTES ||
++ !check_unique_temporary(olhs)) {
+ return 0;
+ }
+ if (PyArray_CheckExact(orhs) ||
+@@ -372,7 +386,8 @@ can_elide_temp_unary(PyArrayObject * m1)
+ !PyArray_ISNUMBER(m1) ||
+ !PyArray_CHKFLAGS(m1, NPY_ARRAY_OWNDATA) ||
+ !PyArray_ISWRITEABLE(m1) ||
+- PyArray_NBYTES(m1) < NPY_MIN_ELIDE_BYTES) {
++ PyArray_NBYTES(m1) < NPY_MIN_ELIDE_BYTES ||
++ !check_unique_temporary((PyObject *)m1)) {
+ return 0;
+ }
+ if (check_callers(&cannot)) {
+diff --git a/numpy/_core/tests/test_dlpack.py b/numpy/_core/tests/test_dlpack.py
+index 41dd724295..d273bd798e 100644
+--- a/numpy/_core/tests/test_dlpack.py
++++ b/numpy/_core/tests/test_dlpack.py
+@@ -22,9 +22,9 @@ class TestDLPack:
+ def test_dunder_dlpack_refcount(self, max_version):
+ x = np.arange(5)
+ y = x.__dlpack__(max_version=max_version)
+- assert sys.getrefcount(x) == 3
++ startcount = sys.getrefcount(x)
+ del y
+- assert sys.getrefcount(x) == 2
++ assert startcount - sys.getrefcount(x) == 1
+
+ def test_dunder_dlpack_stream(self):
+ x = np.arange(5)
+@@ -58,9 +58,9 @@ def test_strides_not_multiple_of_itemsize(self):
+ def test_from_dlpack_refcount(self, arr):
+ arr = arr.copy()
+ y = np.from_dlpack(arr)
+- assert sys.getrefcount(arr) == 3
++ startcount = sys.getrefcount(arr)
+ del y
+- assert sys.getrefcount(arr) == 2
++ assert startcount - sys.getrefcount(arr) == 1
+
+ @pytest.mark.parametrize("dtype", [
+ np.bool,
+diff --git a/numpy/_core/tests/test_dtype.py b/numpy/_core/tests/test_dtype.py
+index deeca5171c..759eefeb2a 100644
+--- a/numpy/_core/tests/test_dtype.py
++++ b/numpy/_core/tests/test_dtype.py
+@@ -1901,9 +1901,10 @@ class mytype:
+ if HAS_REFCOUNT:
+ # Create an array and test that memory gets cleaned up (gh-25949)
+ o = object()
++ startcount = sys.getrefcount(o)
+ a = np.array([o], dtype=dt)
+ del a
+- assert sys.getrefcount(o) == 2
++ assert sys.getrefcount(o) == startcount
+
+ def test_custom_structured_dtype_errors(self):
+ class mytype:
+diff --git a/numpy/_core/tests/test_indexing.py b/numpy/_core/tests/test_indexing.py
+index f393c401cd..bb757cdf7e 100644
+--- a/numpy/_core/tests/test_indexing.py
++++ b/numpy/_core/tests/test_indexing.py
+@@ -1174,6 +1174,8 @@ def _compare_index_result(self, arr, index, mimic_get, no_copy):
+ """Compare mimicked result to indexing result.
+ """
+ arr = arr.copy()
++ if HAS_REFCOUNT:
++ startcount = sys.getrefcount(arr)
+ indexed_arr = arr[index]
+ assert_array_equal(indexed_arr, mimic_get)
+ # Check if we got a view, unless its a 0-sized or 0-d array.
+@@ -1184,9 +1186,9 @@ def _compare_index_result(self, arr, index, mimic_get, no_copy):
+ if HAS_REFCOUNT:
+ if no_copy:
+ # refcount increases by one:
+- assert_equal(sys.getrefcount(arr), 3)
++ assert_equal(sys.getrefcount(arr), startcount + 1)
+ else:
+- assert_equal(sys.getrefcount(arr), 2)
++ assert_equal(sys.getrefcount(arr), startcount)
+
+ # Test non-broadcast setitem:
+ b = arr.copy()
+diff --git a/numpy/_core/tests/test_item_selection.py b/numpy/_core/tests/test_item_selection.py
+index 5660ef583e..839127ecdb 100644
+--- a/numpy/_core/tests/test_item_selection.py
++++ b/numpy/_core/tests/test_item_selection.py
+@@ -50,19 +50,23 @@ def test_simple(self):
+
+ def test_refcounting(self):
+ objects = [object() for i in range(10)]
++ if HAS_REFCOUNT:
++ orig_rcs = [sys.getrefcount(o) for o in objects]
+ for mode in ('raise', 'clip', 'wrap'):
+ a = np.array(objects)
+ b = np.array([2, 2, 4, 5, 3, 5])
+ a.take(b, out=a[:6], mode=mode)
+ del a
+ if HAS_REFCOUNT:
+- assert_(all(sys.getrefcount(o) == 3 for o in objects))
++ assert_(all(sys.getrefcount(o) == rc + 1
++ for o, rc in zip(objects, orig_rcs)))
+ # not contiguous, example:
+ a = np.array(objects * 2)[::2]
+ a.take(b, out=a[:6], mode=mode)
+ del a
+ if HAS_REFCOUNT:
+- assert_(all(sys.getrefcount(o) == 3 for o in objects))
++ assert_(all(sys.getrefcount(o) == rc + 1
++ for o, rc in zip(objects, orig_rcs)))
+
+ def test_unicode_mode(self):
+ d = np.arange(10)
+diff --git a/numpy/_core/tests/test_multiarray.py b/numpy/_core/tests/test_multiarray.py
+index 87508732d8..3f26578c85 100644
+--- a/numpy/_core/tests/test_multiarray.py
++++ b/numpy/_core/tests/test_multiarray.py
+@@ -6779,10 +6779,12 @@ def test_dot_3args(self):
+ v = np.random.random_sample((16, 32))
+
+ r = np.empty((1024, 32))
++ if HAS_REFCOUNT:
++ orig_refcount = sys.getrefcount(r)
+ for i in range(12):
+ dot(f, v, r)
+ if HAS_REFCOUNT:
+- assert_equal(sys.getrefcount(r), 2)
++ assert_equal(sys.getrefcount(r), orig_refcount)
+ r2 = dot(f, v, out=None)
+ assert_array_equal(r2, r)
+ assert_(r is dot(f, v, out=r))
+diff --git a/numpy/_core/tests/test_nditer.py b/numpy/_core/tests/test_nditer.py
+index b0d911f24f..d6a9e42ae3 100644
+--- a/numpy/_core/tests/test_nditer.py
++++ b/numpy/_core/tests/test_nditer.py
+@@ -1126,9 +1126,10 @@ def test_iter_object_arrays_conversions():
+ rc = sys.getrefcount(ob)
+ for x in i:
+ x[...] += 1
+- if HAS_REFCOUNT:
+- assert_(sys.getrefcount(ob) == rc-1)
+- assert_equal(a, np.arange(6)+98172489)
++ if HAS_REFCOUNT:
++ newrc = sys.getrefcount(ob)
++ assert_(newrc == rc - 1)
++ assert_equal(a, np.arange(6) + 98172489)
+
+ def test_iter_common_dtype():
+ # Check that the iterator finds a common data type correctly
+diff --git a/numpy/_core/tests/test_regression.py b/numpy/_core/tests/test_regression.py
+index 851ce324d7..eeb640659e 100644
+--- a/numpy/_core/tests/test_regression.py
++++ b/numpy/_core/tests/test_regression.py
+@@ -1586,29 +1586,26 @@ def test_take_refcount(self):
+ def test_fromfile_tofile_seeks(self):
+ # On Python 3, tofile/fromfile used to get (#1610) the Python
+ # file handle out of sync
+- f0 = tempfile.NamedTemporaryFile()
+- f = f0.file
+- f.write(np.arange(255, dtype='u1').tobytes())
+-
+- f.seek(20)
+- ret = np.fromfile(f, count=4, dtype='u1')
+- assert_equal(ret, np.array([20, 21, 22, 23], dtype='u1'))
+- assert_equal(f.tell(), 24)
+-
+- f.seek(40)
+- np.array([1, 2, 3], dtype='u1').tofile(f)
+- assert_equal(f.tell(), 43)
+-
+- f.seek(40)
+- data = f.read(3)
+- assert_equal(data, b"\x01\x02\x03")
+-
+- f.seek(80)
+- f.read(4)
+- data = np.fromfile(f, dtype='u1', count=4)
+- assert_equal(data, np.array([84, 85, 86, 87], dtype='u1'))
+-
+- f.close()
++ with tempfile.NamedTemporaryFile() as f:
++ f.write(np.arange(255, dtype='u1').tobytes())
++
++ f.seek(20)
++ ret = np.fromfile(f, count=4, dtype='u1')
++ assert_equal(ret, np.array([20, 21, 22, 23], dtype='u1'))
++ assert_equal(f.tell(), 24)
++
++ f.seek(40)
++ np.array([1, 2, 3], dtype='u1').tofile(f)
++ assert_equal(f.tell(), 43)
++
++ f.seek(40)
++ data = f.read(3)
++ assert_equal(data, b"\x01\x02\x03")
++
++ f.seek(80)
++ f.read(4)
++ data = np.fromfile(f, dtype='u1', count=4)
++ assert_equal(data, np.array([84, 85, 86, 87], dtype='u1'))
+
+ def test_complex_scalar_warning(self):
+ for tp in [np.csingle, np.cdouble, np.clongdouble]:
+diff --git a/numpy/_core/tests/test_umath.py b/numpy/_core/tests/test_umath.py
+index 4d56c785d5..d432e33412 100644
+--- a/numpy/_core/tests/test_umath.py
++++ b/numpy/_core/tests/test_umath.py
+@@ -269,9 +269,9 @@ class ArrSubclass(np.ndarray):
+ pass
+
+ arr = np.arange(10).view(ArrSubclass)
+-
++ orig_refcount = sys.getrefcount(arr)
+ arr *= 1
+- assert sys.getrefcount(arr) == 2
++ assert sys.getrefcount(arr) == orig_refcount
+
+
+ class TestComparisons:
diff --git a/dev-python/numpy/numpy-2.2.5-r1.ebuild b/dev-python/numpy/numpy-2.2.5-r1.ebuild
new file mode 100644
index 000000000000..b5d2fa3e3116
--- /dev/null
+++ b/dev-python/numpy/numpy-2.2.5-r1.ebuild
@@ -0,0 +1,202 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=meson-python
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+PYTHON_REQ_USE="threads(+)"
+FORTRAN_NEEDED=lapack
+
+inherit distutils-r1 flag-o-matic fortran-2 pypi
+
+DESCRIPTION="Fast array and numerical python library"
+HOMEPAGE="
+ https://numpy.org/
+ https://github.com/numpy/numpy/
+ https://pypi.org/project/numpy/
+"
+
+LICENSE="BSD"
+SLOT="0/2"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+# +lapack because the internal fallbacks are pretty slow. Building without blas
+# is barely supported anyway, see bug #914358.
+IUSE="big-endian +lapack"
+
+RDEPEND="
+ lapack? (
+ >=virtual/cblas-3.8
+ >=virtual/lapack-3.8
+ )
+"
+BDEPEND="
+ ${RDEPEND}
+ >=dev-build/meson-1.1.0
+ >=dev-python/cython-3.0.6[${PYTHON_USEDEP}]
+ lapack? (
+ virtual/pkgconfig
+ )
+ test? (
+ $(python_gen_cond_dep '
+ >=dev-python/cffi-1.14.0[${PYTHON_USEDEP}]
+ ' 'python*')
+ dev-python/charset-normalizer[${PYTHON_USEDEP}]
+ >=dev-python/hypothesis-5.8.0[${PYTHON_USEDEP}]
+ dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
+ dev-python/pytest-timeout[${PYTHON_USEDEP}]
+ >=dev-python/pytz-2019.3[${PYTHON_USEDEP}]
+ )
+"
+
+QA_CONFIG_IMPL_DECL_SKIP=(
+ # https://bugs.gentoo.org/925367
+ vrndq_f32
+)
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ local PATCHES=(
+ # https://github.com/numpy/numpy/pull/28748
+ # https://github.com/numpy/numpy/pull/28928
+ "${FILESDIR}/${PN}-2.2.5-py314.patch"
+ )
+
+ # bug #922457
+ filter-lto
+ # https://github.com/numpy/numpy/issues/25004
+ append-flags -fno-strict-aliasing
+
+ distutils-r1_python_prepare_all
+}
+
+python_configure_all() {
+ DISTUTILS_ARGS=(
+ -Dallow-noblas=$(usex !lapack true false)
+ -Dblas=$(usev lapack cblas)
+ -Dlapack=$(usev lapack lapack)
+ # TODO: cpu-* options
+ )
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # Very disk-and-memory-hungry
+ numpy/lib/tests/test_io.py::TestSaveTxt::test_large_zip
+ numpy/lib/tests/test_io.py::TestSavezLoad::test_closing_fid
+ numpy/lib/tests/test_io.py::TestSavezLoad::test_closing_zipfile_after_load
+
+ # Precision problems
+ numpy/_core/tests/test_umath_accuracy.py::TestAccuracy::test_validate_transcendentals
+
+ # Runs the whole test suite recursively, that's just crazy
+ numpy/core/tests/test_mem_policy.py::test_new_policy
+
+ numpy/typing/tests/test_typing.py
+ # Uses huge amount of memory
+ numpy/core/tests/test_mem_overlap.py
+ )
+
+ if [[ $(uname -m) == armv8l ]]; then
+ # Degenerate case of arm32 chroot on arm64, bug #774108
+ EPYTEST_DESELECT+=(
+ numpy/_core/tests/test_cpu_features.py::Test_ARM_Features::test_features
+ )
+ fi
+
+ case ${ARCH} in
+ arm)
+ EPYTEST_DESELECT+=(
+ # TODO: warnings
+ numpy/_core/tests/test_umath.py::TestSpecialFloats::test_unary_spurious_fpexception
+
+ # TODO
+ numpy/_core/tests/test_function_base.py::TestLinspace::test_denormal_numbers
+ numpy/f2py/tests/test_kind.py::TestKind::test_real
+ numpy/f2py/tests/test_kind.py::TestKind::test_quad_precision
+
+ # require too much memory
+ 'numpy/_core/tests/test_multiarray.py::TestDot::test_huge_vectordot[complex128]'
+ 'numpy/_core/tests/test_multiarray.py::TestDot::test_huge_vectordot[float64]'
+ )
+ ;;
+ hppa)
+ EPYTEST_DESELECT+=(
+ # https://bugs.gentoo.org/942689
+ "numpy/_core/tests/test_dtype.py::TestBuiltin::test_dtype[int]"
+ "numpy/_core/tests/test_dtype.py::TestBuiltin::test_dtype[float]"
+ "numpy/_core/tests/test_dtype.py::TestBuiltin::test_dtype_bytes_str_equivalence[datetime64]"
+ "numpy/_core/tests/test_dtype.py::TestBuiltin::test_dtype_bytes_str_equivalence[timedelta64]"
+ "numpy/_core/tests/test_dtype.py::TestBuiltin::test_dtype_bytes_str_equivalence[<f]"
+ "numpy/_core/tests/test_dtype.py::TestPickling::test_pickle_dtype[dt28]"
+ numpy/f2py/tests/test_kind.py::TestKind::test_real
+ numpy/f2py/tests/test_kind.py::TestKind::test_quad_precision
+ numpy/tests/test_ctypeslib.py::TestAsArray::test_reference_cycles
+ numpy/tests/test_ctypeslib.py::TestAsArray::test_segmentation_fault
+ numpy/tests/test_ctypeslib.py::TestAsCtypesType::test_scalar
+ numpy/tests/test_ctypeslib.py::TestAsCtypesType::test_subarray
+ numpy/tests/test_ctypeslib.py::TestAsCtypesType::test_structure
+ numpy/tests/test_ctypeslib.py::TestAsCtypesType::test_structure_aligned
+ numpy/tests/test_ctypeslib.py::TestAsCtypesType::test_union
+ numpy/tests/test_ctypeslib.py::TestAsCtypesType::test_padded_union
+ )
+ ;;
+ ppc|x86)
+ EPYTEST_DESELECT+=(
+ # require too much memory
+ 'numpy/_core/tests/test_multiarray.py::TestDot::test_huge_vectordot[complex128]'
+ 'numpy/_core/tests/test_multiarray.py::TestDot::test_huge_vectordot[float64]'
+ )
+ ;;
+ esac
+
+ if [[ ${CHOST} == powerpc64le-* ]]; then
+ EPYTEST_DESELECT+=(
+ # long double thingy
+ numpy/_core/tests/test_scalarprint.py::TestRealScalars::test_ppc64_ibm_double_double128
+ )
+ fi
+
+ if use big-endian; then
+ EPYTEST_DESELECT+=(
+ # ppc64 and sparc
+ numpy/linalg/tests/test_linalg.py::TestDet::test_generalized_sq_cases
+ numpy/linalg/tests/test_linalg.py::TestDet::test_sq_cases
+ "numpy/f2py/tests/test_return_character.py::TestFReturnCharacter::test_all_f77[s1]"
+ "numpy/f2py/tests/test_return_character.py::TestFReturnCharacter::test_all_f77[t1]"
+ "numpy/f2py/tests/test_return_character.py::TestFReturnCharacter::test_all_f90[s1]"
+ "numpy/f2py/tests/test_return_character.py::TestFReturnCharacter::test_all_f90[t1]"
+ )
+ fi
+
+ if ! has_version -b "~${CATEGORY}/${P}[${PYTHON_USEDEP}]" ; then
+ # depends on importing numpy.random from system namespace
+ EPYTEST_DESELECT+=(
+ 'numpy/random/tests/test_extending.py::test_cython'
+ )
+ fi
+
+ if has_version ">=dev-python/setuptools-74[${PYTHON_USEDEP}]"; then
+ # msvccompiler removal
+ EPYTEST_DESELECT+=(
+ numpy/tests/test_public_api.py::test_all_modules_are_expected_2
+ numpy/tests/test_public_api.py::test_api_importable
+ )
+ EPYTEST_IGNORE+=(
+ numpy/distutils/tests/test_mingw32ccompiler.py
+ numpy/distutils/tests/test_system_info.py
+ )
+ fi
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ cd "${BUILD_DIR}/install$(python_get_sitedir)" || die
+ epytest -p rerunfailures --reruns=5
+}
+
+python_install_all() {
+ local DOCS=( LICENSE.txt README.md THANKS.txt )
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/numpy/numpy-2.2.5.ebuild b/dev-python/numpy/numpy-2.2.5.ebuild
index c309abf21a62..bd5f46b279e7 100644
--- a/dev-python/numpy/numpy-2.2.5.ebuild
+++ b/dev-python/numpy/numpy-2.2.5.ebuild
@@ -20,7 +20,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0/2"
-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"
# +lapack because the internal fallbacks are pretty slow. Building without blas
# is barely supported anyway, see bug #914358.
IUSE="big-endian +lapack"
diff --git a/dev-python/pycares/pycares-4.6.1.ebuild b/dev-python/pycares/pycares-4.6.1.ebuild
index abe91f2d50b3..3669e7b1ba2f 100644
--- a/dev-python/pycares/pycares-4.6.1.ebuild
+++ b/dev-python/pycares/pycares-4.6.1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ~ppc64 ~riscv ~s390 ~sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
IUSE="test"
# Tests fail with network-sandbox, since they try to resolve google.com
PROPERTIES="test_network"
diff --git a/dev-python/pyghmi/Manifest b/dev-python/pyghmi/Manifest
index 384ee5c0f354..764dd47ab431 100644
--- a/dev-python/pyghmi/Manifest
+++ b/dev-python/pyghmi/Manifest
@@ -1 +1,2 @@
DIST pyghmi-1.6.0.tar.gz 270054 BLAKE2B 8c93a2a1ba273a6df16ed7b09ca4d7913e489d6efbd962d3fccc0f8337f51926e8979daa410a13fd02156b7a953220ff550b87e05c74112b58624550bd58ae86 SHA512 6303e3b5bd5fb37e16bcad415eb6d02306ed3611e209544761c3cf05583a496feacdf9d5615c4e91acc7677b74149072a9f5cbbf832ecb3030d2509c1d5d91b5
+DIST pyghmi-1.6.1.tar.gz 270230 BLAKE2B d6d8626c8a1cfda250f8cce996c50e647ac0416e64d1e7e2e806f0c7e08adde300264b30774e7d0128e25fcbb61c1c51f629601c3ac9694d08d8f9a350b8ddea SHA512 3935a451edac4f54da1dd7b8da370aa667827e10de2d3ead31f9dee56ca72af8e9566915f18767f9f286eda6349086106115f29a754a8a9ae2c704a3b19faaa6
diff --git a/dev-python/pyghmi/pyghmi-1.6.1.ebuild b/dev-python/pyghmi/pyghmi-1.6.1.ebuild
new file mode 100644
index 000000000000..89bd4f6c4398
--- /dev/null
+++ b/dev-python/pyghmi/pyghmi-1.6.1.ebuild
@@ -0,0 +1,33 @@
+# 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="A pure python implementation of IPMI protocol"
+HOMEPAGE="
+ https://opendev.org/x/pyghmi/
+ https://pypi.org/project/pyghmi/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="
+ >=dev-python/cryptography-2.1[${PYTHON_USEDEP}]
+ dev-python/pbr[${PYTHON_USEDEP}]
+ >=dev-python/python-dateutil-2.8.1[${PYTHON_USEDEP}]
+ >=dev-python/six-1.10.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ >=dev-python/oslotest-3.2.0[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests unittest
diff --git a/dev-python/pyprof2calltree/pyprof2calltree-1.4.5-r1.ebuild b/dev-python/pyprof2calltree/pyprof2calltree-1.4.5-r1.ebuild
index fc30258f3df0..dc5949fdd378 100644
--- a/dev-python/pyprof2calltree/pyprof2calltree-1.4.5-r1.ebuild
+++ b/dev-python/pyprof2calltree/pyprof2calltree-1.4.5-r1.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
diff --git a/dev-python/pyrfc3339/pyrfc3339-2.0.1.ebuild b/dev-python/pyrfc3339/pyrfc3339-2.0.1.ebuild
index 1216ca7eda2d..76fce74425c2 100644
--- a/dev-python/pyrfc3339/pyrfc3339-2.0.1.ebuild
+++ b/dev-python/pyrfc3339/pyrfc3339-2.0.1.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
diff --git a/dev-python/pytest-codeblocks/pytest-codeblocks-0.17.0.ebuild b/dev-python/pytest-codeblocks/pytest-codeblocks-0.17.0.ebuild
index debcc126943b..781fbc8a5387 100644
--- a/dev-python/pytest-codeblocks/pytest-codeblocks-0.17.0.ebuild
+++ b/dev-python/pytest-codeblocks/pytest-codeblocks-0.17.0.ebuild
@@ -1,10 +1,10 @@
-# Copyright 2019-2024 Gentoo Authors
+# Copyright 2019-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
diff --git a/dev-python/pytest-datafiles/pytest-datafiles-3.0.0.ebuild b/dev-python/pytest-datafiles/pytest-datafiles-3.0.0.ebuild
index 484dbe9ca742..abd008f72754 100644
--- a/dev-python/pytest-datafiles/pytest-datafiles-3.0.0.ebuild
+++ b/dev-python/pytest-datafiles/pytest-datafiles-3.0.0.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~ppc ~sparc ~x86"
+KEYWORDS="amd64 ~arm64 ~ppc ~sparc ~x86"
RDEPEND="
>=dev-python/pytest-3.6[${PYTHON_USEDEP}]
diff --git a/dev-python/python-augeas/python-augeas-1.2.0.ebuild b/dev-python/python-augeas/python-augeas-1.2.0.ebuild
index ff7d2bc3c947..d409d13decf1 100644
--- a/dev-python/python-augeas/python-augeas-1.2.0.ebuild
+++ b/dev-python/python-augeas/python-augeas-1.2.0.ebuild
@@ -5,7 +5,7 @@ EAPI=8
DISTUTILS_USE_PEP517=setuptools
PYPI_NO_NORMALIZE=1
-PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+PYTHON_COMPAT=( python3_{11..14} )
inherit distutils-r1 pypi
diff --git a/dev-python/python-constraint/python-constraint-1.4.0.ebuild b/dev-python/python-constraint/python-constraint-1.4.0.ebuild
index 1fcea131ae21..28aca21ce275 100644
--- a/dev-python/python-constraint/python-constraint-1.4.0.ebuild
+++ b/dev-python/python-constraint/python-constraint-1.4.0.ebuild
@@ -1,10 +1,10 @@
-# Copyright 2022-2024 Gentoo Authors
+# Copyright 2022-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
diff --git a/dev-python/python-gflags/python-gflags-3.1.2-r2.ebuild b/dev-python/python-gflags/python-gflags-3.1.2-r2.ebuild
index 43c6dfa1e8c7..9ab8dbc07ac1 100644
--- a/dev-python/python-gflags/python-gflags-3.1.2-r2.ebuild
+++ b/dev-python/python-gflags/python-gflags-3.1.2-r2.ebuild
@@ -1,11 +1,11 @@
-# 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
PYPI_NO_NORMALIZE=1
-PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+PYTHON_COMPAT=( python3_{11..14} )
inherit distutils-r1 pypi
diff --git a/dev-python/pytools/Manifest b/dev-python/pytools/Manifest
index e525f24a0210..9dfc0cc3f723 100644
--- a/dev-python/pytools/Manifest
+++ b/dev-python/pytools/Manifest
@@ -1,3 +1,4 @@
DIST pytools-2025.1.2.tar.gz 80400 BLAKE2B e07379f1c954ece6d9b2e5c7db5a84758d5d85a5955990cf730a135bc961321132c36c7e1402c4684d50957069f839bb732bda849f3d46513ddb5533b9a88b88 SHA512 74fc858aed5043cab9aa2210f071aa3aaf60008ec60b63133dac870ff257981284f66b40ccbedfdcf68969b1e1476cb012dbf83fa9397bb1b857ae5db09f99f6
DIST pytools-2025.1.3.tar.gz 80509 BLAKE2B 448de6bb5ddedd905ee002ee4f6c0a49c657fce546e99c8ccdc5ddc119db9b8e0d40a138be9b3f25a63c5beab1602ff862805b175f927bea2ca306d6155d2499 SHA512 cdf9562f9dbc916fc0c21f363e7f34c1bdee3fd5adc5b499461ce40e887100d39ab0f8dddc50ade6c85120c74da3330d487eda112b7bf6d7e567fcdcabbe6e9b
DIST pytools-2025.1.4.tar.gz 95738 BLAKE2B c2e722dd22b64fedd09b384d14e3201bcaf7f5fa18a546bc22ca7d21b168e96d862076178e14cc9c3cdd66e297f1b085ab33dd61fb7f565aa42cc797d474efbc SHA512 1018a6291dcde017993bb64dfeed0396d8f2373681731546474a99dd2086878684de39faf3e8c8eadc056e4375830cfda937c34f1ffb3c68eec8a39a51ad0764
+DIST pytools-2025.1.5.tar.gz 95745 BLAKE2B 7bc5a6f5dabae3a39b81cdd36584aa7b434f8693d17cec2b7985f05fa5b386c2c56845c140b1d7b4874b13b748cd51dc1db6c1885e0503c53cdd5847c09df4b3 SHA512 c1616e473942d22b32831877af361e0527bd6cabf1be0b13ec413ef341c1cddd5da00d2d4d059e407c3b63e25a86737351da4dfeb29db090d7369af7af25172f
diff --git a/dev-python/pytools/pytools-2025.1.5.ebuild b/dev-python/pytools/pytools-2025.1.5.ebuild
new file mode 100644
index 000000000000..d879e4989751
--- /dev/null
+++ b/dev-python/pytools/pytools-2025.1.5.ebuild
@@ -0,0 +1,31 @@
+# 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} )
+PYTHON_REQ_USE='sqlite'
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Collection of tools missing from the Python standard library"
+HOMEPAGE="
+ https://mathema.tician.de/software/pytools/
+ https://github.com/inducer/pytools/
+ https://pypi.org/project/pytools/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv"
+
+# NB: numpy are an "extra" (optional) deps
+RDEPEND="
+ >=dev-python/numpy-1.6[${PYTHON_USEDEP}]
+ >=dev-python/platformdirs-2.2[${PYTHON_USEDEP}]
+ >=dev-python/siphash24-1.6[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.5[${PYTHON_USEDEP}]
+"
+
+distutils_enable_tests pytest
diff --git a/dev-python/roman/roman-5.0.ebuild b/dev-python/roman/roman-5.0.ebuild
index c85aeb5222a3..f3db6871e195 100644
--- a/dev-python/roman/roman-5.0.ebuild
+++ b/dev-python/roman/roman-5.0.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/setuptools/Manifest b/dev-python/setuptools/Manifest
index 36dbef5ff3e2..a19c5e08ed40 100644
--- a/dev-python/setuptools/Manifest
+++ b/dev-python/setuptools/Manifest
@@ -2,3 +2,4 @@ DIST setuptools-79.0.1.tar.gz 1367909 BLAKE2B d495a22753400b3b0ef71423e2c9b5adaa
DIST setuptools-80.2.0.tar.gz 1354232 BLAKE2B 2eb5f9b51632c865533bb018e268da7e9b52f1cecdb9da0eb0da713ee4e44d0827c6340b5c1f663d3b8b4df08849c32972498980de287fab6101593d5aeb47ca SHA512 a684eb3ef4049c6d05aca9cd77a015e63047cdc84460af798ac1dc1d87a970370176ac7fd87e250be155e61dddd77e89ad84adb5557f04d1a1059cd449c08c53
DIST setuptools-80.3.1.tar.gz 1315082 BLAKE2B 65207edf080d80599b2fe82caed638221bbe1155f745fd8cd02bd9da5934b1880782eb285f5be44088e189684385e7fbbd2bd0750fcd27aaf556f0a44214573d SHA512 be5157aa1f1a7f1e3e11b971ffedac509303d4919d590c1f741dd1c4966c5dc83168b458d3aad66dd9874c7f8f4c8c5bbded6b4dbf6ed91f0d05b1c65229a789
DIST setuptools-80.4.0.tar.gz 1315008 BLAKE2B e41541fdd6e6adad6ed2f39f2c344c944336e89c24b6d9de9984c8a0234c61dba05b15df805639d380e840b0a15b98a3998c251b764340b5251624827be0934a SHA512 d4d55d9f7bdecbf26e3de6e5a99245db4b69a203a37475539ce4a3b8c6e6b9f1c47f5dc29b4d6a4dc971cabc6714ae7bc0a55f99e214d9402b47bb3dd89b58a4
+DIST setuptools-80.7.1.tar.gz 1319188 BLAKE2B ed8b6cee577f15be456d92b1a1241d477dccbad414eba093134fbd66c5228b241a2c31602f2253319e06980a103777bc9981896cf9734890a1046f75050b848a SHA512 831bc6d6c65c2febb8e907fe10d24b4463d15e085f13754dae284814262e7e16645141e839adc28941e53ecdcfefdd460bf8a79d9c4a05437c5b49466d4161c6
diff --git a/dev-python/setuptools/setuptools-80.7.1.ebuild b/dev-python/setuptools/setuptools-80.7.1.ebuild
new file mode 100644
index 000000000000..8b8c38e414b5
--- /dev/null
+++ b/dev-python/setuptools/setuptools-80.7.1.ebuild
@@ -0,0 +1,130 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# please keep this ebuild at EAPI 8 -- sys-apps/portage dep
+EAPI=8
+
+# please bump dev-python/ensurepip-setuptools along with this package!
+
+DISTUTILS_USE_PEP517=standalone
+PYTHON_TESTED=( python3_{9,10,11,12,13} pypy3 )
+PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" )
+PYTHON_REQ_USE="xml(+)"
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Collection of extensions to Distutils"
+HOMEPAGE="
+ https://github.com/pypa/setuptools/
+ https://pypi.org/project/setuptools/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos ~x64-solaris"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ dev-python/jaraco-collections[${PYTHON_USEDEP}]
+ >=dev-python/jaraco-functools-4[${PYTHON_USEDEP}]
+ >=dev-python/jaraco-text-3.7.0-r1[${PYTHON_USEDEP}]
+ >=dev-python/more-itertools-8.12.0-r1[${PYTHON_USEDEP}]
+ >=dev-python/packaging-24.2[${PYTHON_USEDEP}]
+ >=dev-python/platformdirs-4.2.2[${PYTHON_USEDEP}]
+ >=dev-python/wheel-0.44.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ ${RDEPEND}
+ test? (
+ $(python_gen_cond_dep '
+ >=dev-python/build-1.0.3[${PYTHON_USEDEP}]
+ >=dev-python/ini2toml-0.14[${PYTHON_USEDEP}]
+ >=dev-python/filelock-3.4.0[${PYTHON_USEDEP}]
+ >=dev-python/jaraco-envs-2.2[${PYTHON_USEDEP}]
+ >=dev-python/jaraco-path-3.7.2[${PYTHON_USEDEP}]
+ >=dev-python/jaraco-test-5.5[${PYTHON_USEDEP}]
+ dev-python/pip[${PYTHON_USEDEP}]
+ dev-python/pyproject-hooks[${PYTHON_USEDEP}]
+ dev-python/pytest[${PYTHON_USEDEP}]
+ >=dev-python/pytest-home-0.5[${PYTHON_USEDEP}]
+ dev-python/pytest-subprocess[${PYTHON_USEDEP}]
+ dev-python/pytest-timeout[${PYTHON_USEDEP}]
+ dev-python/pytest-xdist[${PYTHON_USEDEP}]
+ >=dev-python/tomli-w-1.0.0[${PYTHON_USEDEP}]
+ >=dev-python/virtualenv-20[${PYTHON_USEDEP}]
+ ' "${PYTHON_TESTED[@]}")
+ )
+"
+# setuptools-scm is here because installing plugins apparently breaks stuff at
+# runtime, so let's pull it early. See bug #663324.
+#
+# trove-classifiers are optionally used in validation, if they are
+# installed. Since we really oughtn't block them, let's always enforce
+# the newest version for the time being to avoid errors.
+# https://github.com/pypa/setuptools/issues/4459
+PDEPEND="
+ dev-python/setuptools-scm[${PYTHON_USEDEP}]
+ >=dev-python/trove-classifiers-2024.10.16[${PYTHON_USEDEP}]
+"
+
+src_prepare() {
+ local PATCHES=(
+ # TODO: remove this when we're 100% PEP517 mode
+ "${FILESDIR}/setuptools-62.4.0-py-compile.patch"
+ # https://github.com/abravalheri/validate-pyproject/pull/221
+ "${FILESDIR}/setuptools-75.6.0-disable-trove-classifiers.patch"
+ )
+
+ distutils-r1_src_prepare
+
+ # breaks tests
+ sed -i -e '/--import-mode/d' pytest.ini || die
+
+ # remove bundled dependencies
+ rm -r */_vendor || die
+}
+
+python_test() {
+ if ! has "${EPYTHON}" "${PYTHON_TESTED[@]/_/.}"; then
+ return
+ fi
+
+ local EPYTEST_DESELECT=(
+ # network
+ setuptools/tests/integration/test_pbr.py::test_pbr_integration
+ setuptools/tests/test_build_meta.py::test_legacy_editable_install
+ setuptools/tests/test_develop.py::TestNamespaces::test_namespace_package_importable
+ setuptools/tests/test_distutils_adoption.py
+ setuptools/tests/test_editable_install.py
+ setuptools/tests/test_virtualenv.py::test_no_missing_dependencies
+ setuptools/tests/test_virtualenv.py::test_test_command_install_requirements
+ # TODO
+ setuptools/tests/config/test_setupcfg.py::TestConfigurationReader::test_basic
+ setuptools/tests/config/test_setupcfg.py::TestConfigurationReader::test_ignore_errors
+ # expects bundled deps in virtualenv
+ setuptools/tests/config/test_apply_pyprojecttoml.py::TestMeta::test_example_file_in_sdist
+ setuptools/tests/config/test_apply_pyprojecttoml.py::TestMeta::test_example_file_not_in_wheel
+ # fails if python-xlib is installed
+ setuptools/tests/test_easy_install.py::TestSetupRequires::test_setup_requires_with_allow_hosts
+ # TODO, probably some random package
+ setuptools/tests/config/test_setupcfg.py::TestOptions::test_cmdclass
+ # broken by unbundling
+ setuptools/tests/test_setuptools.py::test_wheel_includes_vendored_metadata
+ # fails on normalized metadata, perhaps different dep version?
+ setuptools/tests/test_build_meta.py::TestBuildMetaBackend::test_build_with_pyproject_config
+ # TODO
+ setuptools/tests/test_sdist.py::test_sanity_check_setuptools_own_sdist
+ # relies on -Werror
+ setuptools/_static.py::setuptools._static.Dict
+ setuptools/_static.py::setuptools._static.List
+ setuptools/tests/test_bdist_egg.py::Test::test_bdist_egg
+ # TODO
+ setuptools/dist.py::setuptools.dist.Distribution._find_pattern
+ )
+
+ local EPYTEST_XDIST=1
+ local -x PRE_BUILT_SETUPTOOLS_WHEEL=${DISTUTILS_WHEEL_PATH}
+ epytest -o tmp_path_retention_policy=all \
+ -m "not uses_network" setuptools
+}
diff --git a/dev-python/smmap/smmap-6.0.0.ebuild b/dev-python/smmap/smmap-6.0.0.ebuild
index bd3f13562f17..45f170677798 100644
--- a/dev-python/smmap/smmap-6.0.0.ebuild
+++ b/dev-python/smmap/smmap-6.0.0.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/spake2/spake2-0.9.ebuild b/dev-python/spake2/spake2-0.9.ebuild
index 5ee047751b18..1a63fa06d37e 100644
--- a/dev-python/spake2/spake2-0.9.ebuild
+++ b/dev-python/spake2/spake2-0.9.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
diff --git a/dev-python/sqlalchemy/Manifest b/dev-python/sqlalchemy/Manifest
index e3ea4588c4f4..b1d8ea2fcfa5 100644
--- a/dev-python/sqlalchemy/Manifest
+++ b/dev-python/sqlalchemy/Manifest
@@ -1,2 +1,3 @@
DIST sqlalchemy-1.4.54.tar.gz 8470350 BLAKE2B 0d97beb4edde38455c03dfc1238655d1cb63aa6e042b941913ec68dca3654de07087ab967f208fda495f048a5068ced70d642c4b8b80ab32e5346fcefa3bf9bc SHA512 e7ea4920d81914d362134a3c6fd4a2dd4fdb75f6ce17358528d568e2b2ac0ee711a71f6beb894e61d6d1e4e5833034ebde651d73a13f873c682f780e1831b427
DIST sqlalchemy-2.0.40.tar.gz 9664299 BLAKE2B b053b502532d31470e0ceaf1ebe7494d988eb8d74b433d45f9037d2b982355bda4aba9defe681d219cc03ba8e040c6641a749d7a291f03ceb64edb2dc4a02e63 SHA512 7a1db1d61cd80283e339ef92b7e27146ea060db8dc7028b2584df9f9f68a4887bbb2a6b4b4af5ca66c7d132659c7a2d0b47ac2d25ce84fad73ee2dae7808e122
+DIST sqlalchemy-2.0.41.tar.gz 9689424 BLAKE2B 99fb9bf250c15bf0402d5aad23bc20e0fe54ce2705ccfd3dfd9c65be5f9e0ab5ca00e0312c01e5ed3b34344d5cde25b457df1bde35c220e6e98e3077a27e6121 SHA512 bb8df574a0e2a0faf8a44e8d217f9eb14b0138aaae7dd947c94b3c4efa6c73b2cf9199303ffed679778002804bc5aa5583b16ddd986f7b4b9235c9d951e284e4
diff --git a/dev-python/sqlalchemy/sqlalchemy-2.0.41.ebuild b/dev-python/sqlalchemy/sqlalchemy-2.0.41.ebuild
new file mode 100644
index 000000000000..f08809a40288
--- /dev/null
+++ b/dev-python/sqlalchemy/sqlalchemy-2.0.41.ebuild
@@ -0,0 +1,117 @@
+# 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
+PYPI_PN=SQLAlchemy
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+PYTHON_REQ_USE="sqlite?"
+
+inherit distutils-r1 optfeature pypi
+
+DESCRIPTION="Python SQL toolkit and Object Relational Mapper"
+HOMEPAGE="
+ https://www.sqlalchemy.org/
+ https://pypi.org/project/SQLAlchemy/
+ https://github.com/sqlalchemy/sqlalchemy/
+"
+
+LICENSE="MIT"
+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 ~x64-solaris"
+IUSE="examples +sqlite test"
+
+RDEPEND="
+ >=dev-python/typing-extensions-4.6.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ dev-python/cython[${PYTHON_USEDEP}]
+ test? (
+ $(python_gen_impl_dep sqlite)
+ dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ sed -i -e '/greenlet/d' setup.cfg || die
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ local EPYTEST_IGNORE=(
+ test/ext/mypy/test_mypy_plugin_py3k.py
+ test/typing/test_mypy.py
+ # hardcode call counts specific to Python versions
+ test/aaa_profiling
+ )
+ local EPYTEST_DESELECT=(
+ # warning tests are unreliable
+ test/base/test_warnings.py
+ )
+ local sqlite_version=$(sqlite3 --version | cut -d' ' -f1)
+ case ${EPYTHON} in
+ pypy3.11)
+ EPYTEST_DESELECT+=(
+ # TODO
+ test/orm/test_utils.py::ContextualWarningsTest::test_autoflush_implicit
+ test/orm/test_utils.py::ContextualWarningsTest::test_configure_mappers_explicit
+ "test/sql/test_resultset.py::CursorResultTest_sqlite+pysqlite_${sqlite_version//./_}::test_new_row_no_dict_behaviors"
+ )
+ ;&
+ pypy3)
+ EPYTEST_DESELECT+=(
+ test/ext/test_associationproxy.py::ProxyHybridTest::test_msg_fails_on_cls_access
+ test/ext/test_associationproxy.py::DictOfTupleUpdateTest::test_update_multi_elem_varg
+ test/ext/test_associationproxy.py::DictOfTupleUpdateTest::test_update_one_elem_varg
+ test/engine/test_processors.py::PyDateProcessorTest::test_date_invalid_string
+ test/engine/test_processors.py::PyDateProcessorTest::test_datetime_invalid_string
+ test/engine/test_processors.py::PyDateProcessorTest::test_time_invalid_string
+ "test/dialect/test_sqlite.py::TestTypes_sqlite+pysqlite_${sqlite_version//./_}::test_cant_parse_datetime_message"
+ "test/dialect/test_suite.py::ReturningGuardsTest_sqlite+pysqlite_${sqlite_version//./_}"::test_{delete,insert,update}_single
+ test/base/test_utils.py::ImmutableDictTest::test_pep584
+ 'test/sql/test_compare.py::HasCacheKeySubclass::test_init_args_in_traversal[_MemoizedSelectEntities]'
+ )
+ ;;
+ esac
+ if ! has_version "dev-python/greenlet[${PYTHON_USEDEP}]"; then
+ EPYTEST_DESELECT+=(
+ test/ext/asyncio/test_engine_py3k.py::TextSyncDBAPI::test_sync_driver_execution
+ test/ext/asyncio/test_engine_py3k.py::TextSyncDBAPI::test_sync_driver_run_sync
+ "test/engine/test_pool.py::PoolEventsTest::test_checkin_event_gc[False-True]"
+ "test/engine/test_pool.py::PoolEventsTest::test_checkin_event_gc[True-True]"
+ "test/engine/test_pool.py::PoolEventsTest::test_checkin_event_gc[has_terminate-is_asyncio]"
+ "test/engine/test_pool.py::PoolEventsTest::test_checkin_event_gc[not_has_terminate-is_asyncio]"
+ "test/engine/test_pool.py::QueuePoolTest::test_userspace_disconnectionerror_weakref_finalizer[True-_exclusions0]"
+ "test/engine/test_pool.py::QueuePoolTest::test_userspace_disconnectionerror_weakref_finalizer[True]"
+ )
+ fi
+
+ # upstream's test suite is horribly hacky; it relies on disabling
+ # the warnings plugin and turning warnings into errors; this also
+ # means that any DeprecationWarnings from third-party plugins cause
+ # everything to explode
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest -p rerunfailures --reruns=10 --reruns-delay=2
+}
+
+python_install_all() {
+ if use examples; then
+ docompress -x "/usr/share/doc/${PF}/examples"
+ dodoc -r examples
+ fi
+
+ distutils-r1_python_install_all
+}
+
+pkg_postinst() {
+ optfeature "asyncio support" dev-python/greenlet
+ optfeature "MySQL support" \
+ dev-python/mysqlclient \
+ dev-python/pymysql
+ optfeature "postgresql support" dev-python/psycopg:2
+}
diff --git a/dev-python/tcolorpy/tcolorpy-0.1.7.ebuild b/dev-python/tcolorpy/tcolorpy-0.1.7.ebuild
index ae88030d046e..b992ed0695d7 100644
--- a/dev-python/tcolorpy/tcolorpy-0.1.7.ebuild
+++ b/dev-python/tcolorpy/tcolorpy-0.1.7.ebuild
@@ -1,10 +1,10 @@
-# Copyright 2022-2024 Gentoo Authors
+# Copyright 2022-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/tldextract/tldextract-5.3.0.ebuild b/dev-python/tldextract/tldextract-5.3.0.ebuild
index 6067a95b76d5..1abc6bdedb2b 100644
--- a/dev-python/tldextract/tldextract-5.3.0.ebuild
+++ b/dev-python/tldextract/tldextract-5.3.0.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/toposort/toposort-1.10.ebuild b/dev-python/toposort/toposort-1.10.ebuild
index 595e16fd2ad2..8064653b63a0 100644
--- a/dev-python/toposort/toposort-1.10.ebuild
+++ b/dev-python/toposort/toposort-1.10.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/xcffib/xcffib-1.8.0.ebuild b/dev-python/xcffib/xcffib-1.8.0.ebuild
index d47297daf46c..8406f41aca28 100644
--- a/dev-python/xcffib/xcffib-1.8.0.ebuild
+++ b/dev-python/xcffib/xcffib-1.8.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ppc ~ppc64 ~riscv ~s390 ~sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ppc ppc64 ~riscv ~s390 ~sparc x86"
DEPEND="
x11-libs/libxcb
diff --git a/dev-python/yapf/yapf-0.43.0-r1.ebuild b/dev-python/yapf/yapf-0.43.0-r1.ebuild
index da49f9716a53..26f6294abaac 100644
--- a/dev-python/yapf/yapf-0.43.0-r1.ebuild
+++ b/dev-python/yapf/yapf-0.43.0-r1.ebuild
@@ -29,6 +29,7 @@ RDEPEND="
"
python_test() {
+ touch "${S}/.tox" || die
"${EPYTHON}" -m unittest discover -v -p '*_test.py' ||
die "Tests failed with ${EPYTHON}"
}