diff options
Diffstat (limited to 'Lib/argparse.py')
| -rw-r--r-- | Lib/argparse.py | 33 | 
1 files changed, 29 insertions, 4 deletions
| diff --git a/Lib/argparse.py b/Lib/argparse.py index 63561f7..0658472 100644 --- a/Lib/argparse.py +++ b/Lib/argparse.py @@ -71,6 +71,7 @@ __all__ = [      'ArgumentDefaultsHelpFormatter',      'RawDescriptionHelpFormatter',      'RawTextHelpFormatter', +    'MetavarTypeHelpFormatter',      'Namespace',      'Action',      'ONE_OR_MORE', @@ -423,7 +424,8 @@ class HelpFormatter(object):              # produce all arg strings              elif not action.option_strings: -                part = self._format_args(action, action.dest) +                default = self._get_default_metavar_for_positional(action) +                part = self._format_args(action, default)                  # if it's in a group, strip the outer []                  if action in group_actions: @@ -445,7 +447,7 @@ class HelpFormatter(object):                  # if the Optional takes a value, format is:                  #    -s ARGS or --long ARGS                  else: -                    default = action.dest.upper() +                    default = self._get_default_metavar_for_optional(action)                      args_string = self._format_args(action, default)                      part = '%s %s' % (option_string, args_string) @@ -531,7 +533,8 @@ class HelpFormatter(object):      def _format_action_invocation(self, action):          if not action.option_strings: -            metavar, = self._metavar_formatter(action, action.dest)(1) +            default = self._get_default_metavar_for_positional(action) +            metavar, = self._metavar_formatter(action, default)(1)              return metavar          else: @@ -545,7 +548,7 @@ class HelpFormatter(object):              # if the Optional takes a value, format is:              #    -s ARGS, --long ARGS              else: -                default = action.dest.upper() +                default = self._get_default_metavar_for_optional(action)                  args_string = self._format_args(action, default)                  for option_string in action.option_strings:                      parts.append('%s %s' % (option_string, args_string)) @@ -623,6 +626,12 @@ class HelpFormatter(object):      def _get_help_string(self, action):          return action.help +    def _get_default_metavar_for_optional(self, action): +        return action.dest.upper() + +    def _get_default_metavar_for_positional(self, action): +        return action.dest +  class RawDescriptionHelpFormatter(HelpFormatter):      """Help message formatter which retains any formatting in descriptions. @@ -663,6 +672,22 @@ 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') + +    Only the name of this class is considered a public API. All the methods +    provided by the class are considered an implementation detail. +    """ + +    def _get_default_metavar_for_optional(self, action): +        return action.type.__name__ + +    def _get_default_metavar_for_positional(self, action): +        return action.type.__name__ + + +  # =====================  # Options and Arguments  # ===================== | 
