summaryrefslogtreecommitdiffstats
path: root/Lib/argparse.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/argparse.py')
-rw-r--r--Lib/argparse.py20
1 files changed, 15 insertions, 5 deletions
diff --git a/Lib/argparse.py b/Lib/argparse.py
index c47aeff..8d1a00a 100644
--- a/Lib/argparse.py
+++ b/Lib/argparse.py
@@ -153,6 +153,7 @@ def _copy_items(items):
# Formatting Help
# ===============
+
class HelpFormatter(object):
"""Formatter for generating usage messages and argument help strings.
@@ -695,8 +696,19 @@ class ArgumentDefaultsHelpFormatter(HelpFormatter):
"""
def _get_help_string(self, action):
+ """
+ Add the default value to the option help message.
+
+ ArgumentDefaultsHelpFormatter and BooleanOptionalAction when it isn't
+ already present. This code will do that, detecting cornercases to
+ prevent duplicates or cases where it wouldn't make sense to the end
+ user.
+ """
help = action.help
- if '%(default)' not in action.help:
+ if help is None:
+ help = ''
+
+ if '%(default)' not in help:
if action.default is not SUPPRESS:
defaulting_nargs = [OPTIONAL, ZERO_OR_MORE]
if action.option_strings or action.nargs in defaulting_nargs:
@@ -704,6 +716,7 @@ class ArgumentDefaultsHelpFormatter(HelpFormatter):
return help
+
class MetavarTypeHelpFormatter(HelpFormatter):
"""Help message formatter which uses the argument 'type' as the default
metavar value (instead of the argument 'dest')
@@ -719,7 +732,6 @@ class MetavarTypeHelpFormatter(HelpFormatter):
return action.type.__name__
-
# =====================
# Options and Arguments
# =====================
@@ -882,9 +894,6 @@ class BooleanOptionalAction(Action):
option_string = '--no-' + option_string[2:]
_option_strings.append(option_string)
- if help is not None and default is not None and default is not SUPPRESS:
- help += " (default: %(default)s)"
-
super().__init__(
option_strings=_option_strings,
dest=dest,
@@ -896,6 +905,7 @@ class BooleanOptionalAction(Action):
help=help,
metavar=metavar)
+
def __call__(self, parser, namespace, values, option_string=None):
if option_string in self.option_strings:
setattr(namespace, self.dest, not option_string.startswith('--no-'))