mirror of
https://github.com/python/cpython.git
synced 2025-08-27 12:16:04 +00:00
#10680: fix mutually exclusive arguments in argument groups.
This commit is contained in:
parent
d2f3857c40
commit
0f6b47a338
3 changed files with 44 additions and 0 deletions
|
@ -1495,6 +1495,7 @@ class _ArgumentGroup(_ActionsContainer):
|
||||||
self._defaults = container._defaults
|
self._defaults = container._defaults
|
||||||
self._has_negative_number_optionals = \
|
self._has_negative_number_optionals = \
|
||||||
container._has_negative_number_optionals
|
container._has_negative_number_optionals
|
||||||
|
self._mutually_exclusive_groups = container._mutually_exclusive_groups
|
||||||
|
|
||||||
def _add_action(self, action):
|
def _add_action(self, action):
|
||||||
action = super(_ArgumentGroup, self)._add_action(action)
|
action = super(_ArgumentGroup, self)._add_action(action)
|
||||||
|
|
|
@ -2540,6 +2540,46 @@ class TestMutuallyExclusiveOptionalsMixed(MEMixin, TestCase):
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
|
||||||
|
class TestMutuallyExclusiveInGroup(MEMixin, TestCase):
|
||||||
|
|
||||||
|
def get_parser(self, required=None):
|
||||||
|
parser = ErrorRaisingArgumentParser(prog='PROG')
|
||||||
|
titled_group = parser.add_argument_group(
|
||||||
|
title='Titled group', description='Group description')
|
||||||
|
mutex_group = \
|
||||||
|
titled_group.add_mutually_exclusive_group(required=required)
|
||||||
|
mutex_group.add_argument('--bar', help='bar help')
|
||||||
|
mutex_group.add_argument('--baz', help='baz help')
|
||||||
|
return parser
|
||||||
|
|
||||||
|
failures = ['--bar X --baz Y', '--baz X --bar Y']
|
||||||
|
successes = [
|
||||||
|
('--bar X', NS(bar='X', baz=None)),
|
||||||
|
('--baz Y', NS(bar=None, baz='Y')),
|
||||||
|
]
|
||||||
|
successes_when_not_required = [
|
||||||
|
('', NS(bar=None, baz=None)),
|
||||||
|
]
|
||||||
|
|
||||||
|
usage_when_not_required = '''\
|
||||||
|
usage: PROG [-h] [--bar BAR | --baz BAZ]
|
||||||
|
'''
|
||||||
|
usage_when_required = '''\
|
||||||
|
usage: PROG [-h] (--bar BAR | --baz BAZ)
|
||||||
|
'''
|
||||||
|
help = '''\
|
||||||
|
|
||||||
|
optional arguments:
|
||||||
|
-h, --help show this help message and exit
|
||||||
|
|
||||||
|
Titled group:
|
||||||
|
Group description
|
||||||
|
|
||||||
|
--bar BAR bar help
|
||||||
|
--baz BAZ baz help
|
||||||
|
'''
|
||||||
|
|
||||||
|
|
||||||
class TestMutuallyExclusiveOptionalsAndPositionalsMixed(MEMixin, TestCase):
|
class TestMutuallyExclusiveOptionalsAndPositionalsMixed(MEMixin, TestCase):
|
||||||
|
|
||||||
def get_parser(self, required):
|
def get_parser(self, required):
|
||||||
|
|
|
@ -91,6 +91,9 @@ Library
|
||||||
- Issue #10961: The new pydoc server now better handles exceptions raised
|
- Issue #10961: The new pydoc server now better handles exceptions raised
|
||||||
during request handling.
|
during request handling.
|
||||||
|
|
||||||
|
- Issue #10680: Fix mutually exclusive arguments for argument groups in
|
||||||
|
argparse.
|
||||||
|
|
||||||
Build
|
Build
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue