diff options
| author | Liguros - Gitlab CI/CD [develop] <gitlab@liguros.net> | 2025-05-15 06:57:53 +0000 |
|---|---|---|
| committer | Liguros - Gitlab CI/CD [develop] <gitlab@liguros.net> | 2025-05-15 06:57:53 +0000 |
| commit | c88f588c1c12b6fe438575fc0c21d8b89a361f73 (patch) | |
| tree | faf15828c899ecb7c156c37bf365a6f881862b10 /dev-python | |
| parent | 00278f6cc9e8280380a376f72ec209c3efc960a4 (diff) | |
| download | baldeagleos-repo-c88f588c1c12b6fe438575fc0c21d8b89a361f73.tar.gz baldeagleos-repo-c88f588c1c12b6fe438575fc0c21d8b89a361f73.tar.xz baldeagleos-repo-c88f588c1c12b6fe438575fc0c21d8b89a361f73.zip | |
Adding metadata
Diffstat (limited to 'dev-python')
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}" } |
