diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2021-12-15 12:20:04 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-15 12:20:04 (GMT) |
commit | 8e4c96295bd78ae5f70b908e5dbac0da7c4c21bd (patch) | |
tree | ebbc320a1cfd9fad4c2c2a7fbdb3241d816216e0 | |
parent | 908fd691f96403a3c30d85c17dd74ed1f26a60fd (diff) | |
download | cpython-8e4c96295bd78ae5f70b908e5dbac0da7c4c21bd.zip cpython-8e4c96295bd78ae5f70b908e5dbac0da7c4c21bd.tar.gz cpython-8e4c96295bd78ae5f70b908e5dbac0da7c4c21bd.tar.bz2 |
bpo-26952: [argparse] clearer error when formatting an empty mutually… (GH-30099) (GH-30114)
(cherry picked from commit 86de99588db3beff964137f4fe27dd1077a09b35)
Co-authored-by: Irit Katriel <1055913+iritkatriel@users.noreply.github.com>
-rw-r--r-- | Lib/argparse.py | 3 | ||||
-rw-r--r-- | Lib/test/test_argparse.py | 7 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2021-12-14-13-18-45.bpo-26952.hjhISq.rst | 1 |
3 files changed, 11 insertions, 0 deletions
diff --git a/Lib/argparse.py b/Lib/argparse.py index 9eed24c..b2db312 100644 --- a/Lib/argparse.py +++ b/Lib/argparse.py @@ -392,6 +392,9 @@ class HelpFormatter(object): group_actions = set() inserts = {} for group in groups: + if not group._group_actions: + raise ValueError(f'empty group {group}') + try: start = actions.index(group._group_actions[0]) except ValueError: diff --git a/Lib/test/test_argparse.py b/Lib/test/test_argparse.py index ec49b2a..c96a540 100644 --- a/Lib/test/test_argparse.py +++ b/Lib/test/test_argparse.py @@ -2582,6 +2582,13 @@ class TestMutuallyExclusiveGroupErrors(TestCase): ''' self.assertEqual(parser.format_help(), textwrap.dedent(expected)) + def test_empty_group(self): + # See issue 26952 + parser = argparse.ArgumentParser() + group = parser.add_mutually_exclusive_group() + with self.assertRaises(ValueError): + parser.parse_args(['-h']) + class MEMixin(object): def test_failures_when_not_required(self): diff --git a/Misc/NEWS.d/next/Library/2021-12-14-13-18-45.bpo-26952.hjhISq.rst b/Misc/NEWS.d/next/Library/2021-12-14-13-18-45.bpo-26952.hjhISq.rst new file mode 100644 index 0000000..379dbb5 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-12-14-13-18-45.bpo-26952.hjhISq.rst @@ -0,0 +1 @@ +:mod:`argparse` raises :exc:`ValueError` with clear message when trying to render usage for an empty mutually-exclusive group. Previously it raised a cryptic :exc:`IndexError`.
\ No newline at end of file |