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>
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 @@ def _format_actions_usage(self, actions, groups):
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 @@ def test_help(self):
'''
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):