Issue33415
This issue tracker has been migrated to GitHub,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2018-05-03 08:26 by ariel-anieli, last changed 2022-04-11 14:59 by admin. This issue is now closed.
Messages (3) | |||
---|---|---|---|
msg316113 - (view) | Author: Ariel Otilibili Anieli (ariel-anieli) | Date: 2018-05-03 08:26 | |
Hello, When add_mutually_exclusive_group is built without argument, the help breaks with "IndexError: list index out of range". Indeed this snippet: actions_ = parser.add_argument_group('Actions') actions = actions_.add_mutually_exclusive_group() Breaks the help of argparse: # --help Traceback (most recent call last): File "./ovpauto", line 135, in <module> args = parser.parse_args() File "/usr/lib/python2.7/argparse.py", line 1701, in parse_args args, argv = self.parse_known_args(args, namespace) File "/usr/lib/python2.7/argparse.py", line 1733, in parse_known_args namespace, args = self._parse_known_args(args, namespace) File "/usr/lib/python2.7/argparse.py", line 1939, in _parse_known_args start_index = consume_optional(start_index) File "/usr/lib/python2.7/argparse.py", line 1879, in consume_optional take_action(action, args, option_string) File "/usr/lib/python2.7/argparse.py", line 1807, in take_action action(self, namespace, argument_values, option_string) File "/usr/lib/python2.7/argparse.py", line 996, in __call__ parser.print_help() File "/usr/lib/python2.7/argparse.py", line 2340, in print_help self._print_message(self.format_help(), file) File "/usr/lib/python2.7/argparse.py", line 2314, in format_help return formatter.format_help() File "/usr/lib/python2.7/argparse.py", line 281, in format_help help = self._root_section.format_help() File "/usr/lib/python2.7/argparse.py", line 211, in format_help func(*args) File "/usr/lib/python2.7/argparse.py", line 319, in _format_usage action_usage = format(optionals + positionals, groups) File "/usr/lib/python2.7/argparse.py", line 390, in _format_actions_usage start = actions.index(group._group_actions[0]) IndexError: list index out of range Moreover, the trace does not say whence the error came from. # uname -a Linux quasar 4.8.0-2-amd64 #1 SMP Debian 4.8.15-2 (2017-01-04) x86_64 GNU/Linux # lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux testing (buster) Release: testing Codename: buster # gcc --version gcc (Debian 7.3.0-17) 7.3.0 Copyright (C) 2017 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # python --version Python 2.7.15rc1 # dpkg -l | grep -P '\s+python\s+.*2.7.15' ii python 2.7.15~rc1-1 amd64 interactive high-level object-oriented language (default version) Regards, Ariel |
|||
msg316189 - (view) | Author: paul j3 (paul.j3) * ![]() |
Date: 2018-05-05 02:22 | |
The usage formatter is brittle, especially the part that adds mutually exclusive markings to the normal usage string. I don't think I've seen this error before, but I'm not surprised. A real fix requires a rewrite of the usage formatter, which I've suggested in an other bug/issue. It would be a good idea to include this as a test case for such a patch. The simplest immediate fix is to just not use a mutually exclusive group when it isn't needed. I don't think it's urgent enough to require a special patch. --- start = actions.index(group._group_actions[0]) group is the mutually exclusive group that's being formatted. _group_actions is is list of Actions. The developer expected that the group would be populated (normally by 2 or more Actions), and didn't think it necessary to first check if it was empty. That's a reasonable assumption. |
|||
msg326128 - (view) | Author: paul j3 (paul.j3) * ![]() |
Date: 2018-09-23 03:20 | |
This is duplicate of https://bugs.python.org/issue26952 - argparse help formatter crashes The same issue - a mutually exclusive group without arguments. It also deals with issue of nesting groups. |
History | |||
---|---|---|---|
Date | User | Action | Args |
2022-04-11 14:59:00 | admin | set | github: 77596 |
2018-09-23 03:20:08 | paul.j3 | set | status: open -> closed resolution: duplicate messages: + msg326128 stage: resolved |
2018-05-05 02:22:30 | paul.j3 | set | nosy:
+ paul.j3 messages: + msg316189 |
2018-05-03 08:26:26 | ariel-anieli | create |