summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2011-01-30 12:19:35 (GMT)
committerGeorg Brandl <georg@python.org>2011-01-30 12:19:35 (GMT)
commit0f6b47a338fdc0063c651657fcbb6908da27f0b9 (patch)
treedd9fadce4192f09548ba1851fbd5381d6f2120e2 /Lib
parentd2f3857c40a340f252397eb16b4289403af8bf76 (diff)
downloadcpython-0f6b47a338fdc0063c651657fcbb6908da27f0b9.zip
cpython-0f6b47a338fdc0063c651657fcbb6908da27f0b9.tar.gz
cpython-0f6b47a338fdc0063c651657fcbb6908da27f0b9.tar.bz2
#10680: fix mutually exclusive arguments in argument groups.
Diffstat (limited to 'Lib')
-rw-r--r--Lib/argparse.py1
-rw-r--r--Lib/test/test_argparse.py40
2 files changed, 41 insertions, 0 deletions
diff --git a/Lib/argparse.py b/Lib/argparse.py
index 5fd82da..de3cd11 100644
--- a/Lib/argparse.py
+++ b/Lib/argparse.py
@@ -1495,6 +1495,7 @@ class _ArgumentGroup(_ActionsContainer):
self._defaults = container._defaults
self._has_negative_number_optionals = \
container._has_negative_number_optionals
+ self._mutually_exclusive_groups = container._mutually_exclusive_groups
def _add_action(self, action):
action = super(_ArgumentGroup, self)._add_action(action)
diff --git a/Lib/test/test_argparse.py b/Lib/test/test_argparse.py
index 36415f4..03c95fa 100644
--- a/Lib/test/test_argparse.py
+++ b/Lib/test/test_argparse.py
@@ -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):
def get_parser(self, required):