Use proper plural forms in argparse (#4391)
authorÉric Araujo <merwok@netwok.org>
Sat, 4 Dec 2010 17:31:49 +0000 (17:31 +0000)
committerÉric Araujo <merwok@netwok.org>
Sat, 4 Dec 2010 17:31:49 +0000 (17:31 +0000)
Lib/argparse.py
Lib/test/test_argparse.py
Misc/NEWS

index 747586d5bdb3496c09b3c6b13180e90ceb172235..557cc00fa7c085871448050c9bffa588b3d50d6a 100644 (file)
@@ -88,7 +88,7 @@ import re as _re
 import sys as _sys
 import textwrap as _textwrap
 
-from gettext import gettext as _
+from gettext import gettext as _, ngettext
 
 
 def _callable(obj):
@@ -1438,7 +1438,9 @@ class _ActionsContainer(object):
             conflict_handler(action, confl_optionals)
 
     def _handle_conflict_error(self, action, conflicting_actions):
-        message = _('conflicting option string(s): %s')
+        message = ngettext('conflicting option string: %s',
+                           'conflicting option strings: %s',
+                           len(conflicting_actions))
         conflict_string = ', '.join([option_string
                                      for option_string, action
                                      in conflicting_actions])
@@ -1995,7 +1997,9 @@ class ArgumentParser(_AttributeHolder, _ActionsContainer):
                 OPTIONAL: _('expected at most one argument'),
                 ONE_OR_MORE: _('expected at least one argument'),
             }
-            default = _('expected %s argument(s)') % action.nargs
+            default = ngettext('expected %s argument',
+                               'expected %s arguments',
+                               action.nargs) % action.nargs
             msg = nargs_errors.get(action.nargs, default)
             raise ArgumentError(action, msg)
 
index 7e76237db141be7879c0c8373f6fd79b51496fe0..0b7ed5e1b3e3543fcff454a9ee5a78a5ec08109e 100644 (file)
@@ -4315,7 +4315,7 @@ class TestImportStar(TestCase):
         items = [
             name
             for name, value in vars(argparse).items()
-            if not name.startswith("_")
+            if not (name.startswith("_") or name == 'ngettext')
             if not inspect.ismodule(value)
         ]
         self.assertEqual(sorted(items), sorted(argparse.__all__))
index 124fc1c5413745b38b2591792e864f2ee501bdf3..1e8108efe49ae3a60fa7e0cd130ed3219ee80506 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -49,6 +49,8 @@ Core and Builtins
 Library
 -------
 
+- Issue #4391: Use proper plural forms in argparse.
+
 - Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
   UnicodeEncodeError.