Skip to content

Commit e07e25b

Browse files
committed
bpo-29298: Fix crash with required subparsers without dest
1 parent aaf6fc0 commit e07e25b

File tree

3 files changed

+10
-0
lines changed

3 files changed

+10
-0
lines changed

Lib/argparse.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -704,6 +704,8 @@ def _get_action_name(argument):
704704
return argument.metavar
705705
elif argument.dest not in (None, SUPPRESS):
706706
return argument.dest
707+
elif argument.choices:
708+
return '{' + ','.join(argument.choices) + '}'
707709
else:
708710
return None
709711

Lib/test/test_argparse.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1934,6 +1934,12 @@ def test_required_subparsers_default(self):
19341934
subparsers.add_parser('run')
19351935
self._test_required_subparsers(parser)
19361936

1937+
def test_required_subparsers_no_destination_error(self):
1938+
parser = ErrorRaisingArgumentParser()
1939+
subparsers = parser.add_subparsers()
1940+
subparsers.add_parser('run')
1941+
self.assertArgumentParserError(parser.parse_args, ())
1942+
19371943
def test_optional_subparsers(self):
19381944
parser = ErrorRaisingArgumentParser()
19391945
subparsers = parser.add_subparsers(dest='command', required=False)
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Fix ``TypeError`` when required subparsers without ``dest`` do not receive
2+
arguments. Patch by Anthony Sottile.

0 commit comments

Comments
 (0)