[New-bugs-announce] [issue35785] argparse crashes in gettext when processing missing arguments
Eric Fahlgren
report at bugs.python.org
Sat Jan 19 12:38:06 EST 2019
New submission from Eric Fahlgren <ericfahlgren at gmail.com>:
When argparse is configured with an option that takes arguments, then the script is invoked with the switch but no arguments, a nonsensical exception is raised during gettext processing.
In the 3.7.1 source, the error is at line 2077 of argparse.py, where 'action.nargs' is not an integer as expected by 'ngettext', but one of None, '*' or '?':
default = ngettext('expected %s argument',
'expected %s arguments',
action.nargs) % action.nargs
msg = nargs_errors.get(action.nargs, default)
Fix should be pretty trivial, swap the two lines and if 'get' produces None, only then compute the default.
File "C:\Program Files\Python37\lib\argparse.py", line 1749, in parse_args
args, argv = self.parse_known_args(args, namespace)
File "C:\Program Files\Python37\lib\argparse.py", line 1781, in parse_known_args
namespace, args = self._parse_known_args(args, namespace)
File "C:\Program Files\Python37\lib\argparse.py", line 1987, in _parse_known_args
start_index = consume_optional(start_index)
File "C:\Program Files\Python37\lib\argparse.py", line 1917, in consume_optional
arg_count = match_argument(action, selected_patterns)
File "C:\Program Files\Python37\lib\argparse.py", line 2079, in _match_argument
action.nargs) % action.nargs
File "C:\Program Files\Python37\lib\gettext.py", line 631, in ngettext
return dngettext(_current_domain, msgid1, msgid2, n)
File "C:\Program Files\Python37\lib\gettext.py", line 610, in dngettext
return t.ngettext(msgid1, msgid2, n)
File "C:\Program Files\Python37\lib\gettext.py", line 462, in ngettext
tmsg = self._catalog[(msgid1, self.plural(n))]
File "<string>", line 4, in func
File "C:\Program Files\Python37\lib\gettext.py", line 168, in _as_int
(n.__class__.__name__,)) from None
TypeError: Plural value must be an integer, got NoneType
----------
components: Library (Lib)
messages: 334065
nosy: eric.fahlgren
priority: normal
severity: normal
status: open
title: argparse crashes in gettext when processing missing arguments
versions: Python 3.7
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue35785>
_______________________________________
More information about the New-bugs-announce
mailing list