bpo-38821: Fix crash in argparse when using gettext (GH-17192)
![](https://secure.gravatar.com/avatar/cc7737cd64a84f1b5c61a160798e97ee.jpg?s=120&d=mm&r=g)
https://github.com/python/cpython/commit/be5c79e0338005d675a64ba6e5b137e850d... commit: be5c79e0338005d675a64ba6e5b137e850d556d1 branch: master author: Federico Bond <federicobond@gmail.com> committer: Tal Einat <taleinat+github@gmail.com> date: 2019-11-20T15:29:29+02:00 summary: bpo-38821: Fix crash in argparse when using gettext (GH-17192) files: A Misc/NEWS.d/next/Library/2019-11-16-23-26-25.bpo-38821.-albNN.rst M Lib/argparse.py diff --git a/Lib/argparse.py b/Lib/argparse.py index 94e1b8ad0ed18..5a8eff2f4cc89 100644 --- a/Lib/argparse.py +++ b/Lib/argparse.py @@ -2148,10 +2148,11 @@ def _match_argument(self, action, arg_strings_pattern): OPTIONAL: _('expected at most one argument'), ONE_OR_MORE: _('expected at least one argument'), } - default = ngettext('expected %s argument', + msg = nargs_errors.get(action.nargs) + if msg is None: + msg = ngettext('expected %s argument', 'expected %s arguments', action.nargs) % action.nargs - msg = nargs_errors.get(action.nargs, default) raise ArgumentError(action, msg) # return the number of arguments matched diff --git a/Misc/NEWS.d/next/Library/2019-11-16-23-26-25.bpo-38821.-albNN.rst b/Misc/NEWS.d/next/Library/2019-11-16-23-26-25.bpo-38821.-albNN.rst new file mode 100644 index 0000000000000..2e7a22f661ac6 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2019-11-16-23-26-25.bpo-38821.-albNN.rst @@ -0,0 +1 @@ +Fix unhandled exceptions in :mod:`argparse` when internationalizing error messages for arguments with ``nargs`` set to special (non-integer) values. Patch by Federico Bond.
participants (1)
-
Tal Einat