New submission from Eric Fahlgren <[email protected]>:
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 <[email protected]>
<https://bugs.python.org/issue35785>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com