paul j3 added the comment:
While mutually exclusive groups are a subclass of argument groups, they have
very different uses.
Argument groups are used solely to organize the help section. Groups are not
used at all during parsing. 'parse_args' doesn't even pay attention to those 2
default groups (positionals and optionals). 'parse_args' just uses the master
list of actions ('parser._actions').
Mutually exclusive groups are not used at all while formatting the help lines.
They are used to format the usage line. They also implement argument tests
during parsing.
Groups are not set up for nesting. However it is possible to define a mutually
exclusive group within an argument group, and effectively give it a title and
description.
p=argparse.ArgumentParser()
g=p.add_argument_group('title')
g1=g.add_mutually_exclusive_group()
g1.add_argument('--foo')
p.print_help()
producing:
usage: ipython [-h] [--foo FOO]
optional arguments:
-h, --help show this help message and exit
title:
--foo FOO
Both kinds of groups are a superficial addition to argparse. I argue in
http://bugs.python.org/issue11588 that they aren't adequate for handling more
complicated groupings (inclusive, nesting, etc).
While I'm not convinced the change proposed in this issue is necessary, if we
are going implement it, I'd suggest a simple addition to
'add_mutually_exclusive_group()'. If there's a title argument, add this group
to '_action_groups' as well as '_mutually_exclusive_groups'.
def add_mutually_exclusive_group(self, **kwargs):
group = _MutuallyExclusiveGroup(self, **kwargs)
self._mutually_exclusive_groups.append(group)
try:
kwargs.title
self._action_groups.append(group)
except AttributeError:
pass
return group
This should do the job without adding much complexity.
----------
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue17218>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com