dev-python/argh: Enable py3.13

Signed-off-by: Michał Górny <mgorny@gentoo.org>
This commit is contained in:
Michał Górny
2024-07-12 09:01:28 +02:00
parent 3be8467db4
commit 9c0fb575ad
2 changed files with 170 additions and 2 deletions

View File

@@ -4,8 +4,7 @@
EAPI=8
DISTUTILS_USE_PEP517=flit
# py3.13: https://github.com/neithere/argh/issues/228
PYTHON_COMPAT=( python3_{10..12} pypy3 )
PYTHON_COMPAT=( python3_{10..13} pypy3 )
inherit distutils-r1 pypi
@@ -27,3 +26,8 @@ BDEPEND="
"
distutils_enable_tests pytest
PATCHES=(
# https://github.com/neithere/argh/commit/cdb70d5ac7d8a5a5dff3c55100e5f67b68b26826
"${FILESDIR}/${P}-py313.patch"
)

View File

@@ -0,0 +1,164 @@
From cdb70d5ac7d8a5a5dff3c55100e5f67b68b26826 Mon Sep 17 00:00:00 2001
From: Andy Mikhaylenko <neithere@gmail.com>
Date: Sun, 16 Jun 2024 22:38:21 +0200
Subject: [PATCH] fix: tests under Python 3.13 (fixes #228)
diff --git a/tests/test_integration.py b/tests/test_integration.py
index f863386..258a148 100644
--- a/tests/test_integration.py
+++ b/tests/test_integration.py
@@ -724,18 +724,34 @@ def remind(
help_normalised = re.sub(r"\s+", " ", parser.format_help())
assert "name 'Basil'" in help_normalised
- assert "-t TASK, --task TASK 'hang the Moose'" in help_normalised
- assert (
- "-r REASON, --reason REASON 'there are creatures living in it'"
- in help_normalised
- )
- # explicit help message is not obscured by the implicit one
- # but is still present
- assert (
- "-n NOTE, --note NOTE why is it a remarkable animal? "
- "(default: 'it can speak English')"
- ) in help_normalised
+ # argh#228 — argparse in Python before 3.13 duplicated the placeholder in help
+ if sys.version_info < (3, 13):
+ assert "-t TASK, --task TASK 'hang the Moose'" in help_normalised
+ assert (
+ "-r REASON, --reason REASON 'there are creatures living in it'"
+ in help_normalised
+ )
+
+ # explicit help message is not obscured by the implicit one
+ # but is still present
+ assert (
+ "-n NOTE, --note NOTE why is it a remarkable animal? "
+ "(default: 'it can speak English')"
+ ) in help_normalised
+ else:
+ assert "-t, --task TASK 'hang the Moose'" in help_normalised
+ assert (
+ "-r, --reason REASON 'there are creatures living in it'"
+ in help_normalised
+ )
+
+ # explicit help message is not obscured by the implicit one
+ # but is still present
+ assert (
+ "-n, --note NOTE why is it a remarkable animal? "
+ "(default: 'it can speak English')"
+ ) in help_normalised
def test_default_arg_values_in_help__regression():
@@ -750,9 +766,16 @@ def foo(*, bar=""):
# doesn't break
parser.format_help()
+ # argh#228 — argparse in Python before 3.13 duplicated the placeholder in help
+ if sys.version_info < (3, 13):
+ expected_line = "-b BAR, --bar BAR ''"
+ # note the empty str repr ^^^
+ else:
+ expected_line = "-b, --bar BAR ''"
+ # note the empty str repr ^^^
+
# now check details
- assert "-b BAR, --bar BAR ''" in parser.format_help()
- # note the empty str repr ^^^
+ assert expected_line in parser.format_help()
def test_help_formatting_is_preserved():
@@ -868,6 +891,19 @@ def second_func():
run(parser, "first-func --help", exit=True)
captured = capsys.readouterr()
+
+ # argh#228 — argparse in Python before 3.13 duplicated the placeholder in help
+ if sys.version_info < (3, 13):
+ arg_help_lines = (
+ " -h, --help show this help message and exit\n"
+ " -f FOO, --foo FOO 123"
+ )
+ else:
+ arg_help_lines = (
+ " -h, --help show this help message and exit\n"
+ " -f, --foo FOO 123"
+ )
+
assert (
captured.out
== unindent(
@@ -877,8 +913,7 @@ def second_func():
Owl stretching time
{HELP_OPTIONS_LABEL}:
- -h, --help show this help message and exit
- -f FOO, --foo FOO 123
+ {arg_help_lines}
"""
)[1:]
)
@@ -997,6 +1032,19 @@ def second_func():
run(parser, "my-group first-func --help", exit=True)
captured = capsys.readouterr()
+
+ # argh#228 — argparse in Python before 3.13 duplicated the placeholder in help
+ if sys.version_info < (3, 13):
+ arg_help_lines = (
+ " -h, --help show this help message and exit\n"
+ " -f FOO, --foo FOO 123"
+ )
+ else:
+ arg_help_lines = (
+ " -h, --help show this help message and exit\n"
+ " -f, --foo FOO 123"
+ )
+
assert (
captured.out
== unindent(
@@ -1006,8 +1054,7 @@ def second_func():
Owl stretching time
{HELP_OPTIONS_LABEL}:
- -h, --help show this help message and exit
- -f FOO, --foo FOO 123
+ {arg_help_lines}
"""
)[1:]
)
@@ -1079,6 +1126,19 @@ def second_func():
run(parser, "first-func --help", exit=True)
captured = capsys.readouterr()
+
+ # argh#228 — argparse in Python before 3.13 duplicated the placeholder in help
+ if sys.version_info < (3, 13):
+ arg_help_lines = (
+ " -h, --help show this help message and exit\n"
+ " -f FOO, --foo FOO 123"
+ )
+ else:
+ arg_help_lines = (
+ " -h, --help show this help message and exit\n"
+ " -f, --foo FOO 123"
+ )
+
assert (
captured.out
== unindent(
@@ -1088,8 +1148,7 @@ def second_func():
func description override
{HELP_OPTIONS_LABEL}:
- -h, --help show this help message and exit
- -f FOO, --foo FOO 123
+ {arg_help_lines}
"""
)[1:]
)