[New-bugs-announce] [issue25882] argparse help error: arguments created by add_mutually_exclusive_group() are shown outside their parent group created by add_argument_group()
Balázs Regényi
report at bugs.python.org
Wed Dec 16 08:14:43 EST 2015
New submission from Balázs Regényi:
So, a parent parser is created. It has a "global arguments" group (by add_argument_group()) and this group has a mutually exclusive group. Then a child parser is created used previous parser as parent.
The error: in the child parser help: the arguments of the mutually exclusive group are printed into the part of child parser instead of their "global arguments" group.
The next code shows the problem:
import argparse
# create parent parser
parent_parser = argparse.ArgumentParser(add_help = False)
# create group for its arguments
global_group = parent_parser.add_argument_group("global arguments")
global_group.add_argument("--global-arg1")
global_group.add_argument("--global-arg2")
mutex_group = global_group.add_mutually_exclusive_group()
mutex_group.add_argument("--mutex-arg1")
mutex_group.add_argument("--mutex-arg2")
# create child parser
child_parser = argparse.ArgumentParser(parents = [parent_parser])
child_parser.add_argument("--child-arg1")
child_parser.add_argument("--child-arg2")
print("="*100)
parent_parser.print_help()
print("="*100)
child_parser.print_help()
The output:
====================================================================================================
usage: test.py [--global-arg1 GLOBAL_ARG1] [--global-arg2 GLOBAL_ARG2]
[--mutex-arg1 MUTEX_ARG1 | --mutex-arg2 MUTEX_ARG2]
global arguments:
--global-arg1 GLOBAL_ARG1
--global-arg2 GLOBAL_ARG2
--mutex-arg1 MUTEX_ARG1
--mutex-arg2 MUTEX_ARG2
====================================================================================================
usage: test.py [-h] [--global-arg1 GLOBAL_ARG1] [--global-arg2 GLOBAL_ARG2]
[--mutex-arg1 MUTEX_ARG1 | --mutex-arg2 MUTEX_ARG2]
[--child-arg1 CHILD_ARG1] [--child-arg2 CHILD_ARG2]
optional arguments:
-h, --help show this help message and exit
--mutex-arg1 MUTEX_ARG1
--mutex-arg2 MUTEX_ARG2
--child-arg1 CHILD_ARG1
--child-arg2 CHILD_ARG2
global arguments:
--global-arg1 GLOBAL_ARG1
--global-arg2 GLOBAL_ARG2
The error is that the --mutex-arg-s can be seen in "optional arguments" part instead of "global arguments" part in the second (child help) case.
In the first (parent help) case the --mutex-arg-s are printed into the good section.
----------
messages: 256518
nosy: balage
priority: normal
severity: normal
status: open
title: argparse help error: arguments created by add_mutually_exclusive_group() are shown outside their parent group created by add_argument_group()
type: behavior
versions: Python 2.7
_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue25882>
_______________________________________
More information about the New-bugs-announce
mailing list