¿Mensaje de ayuda de Python Argparse, deshabilitar metavar para opciones cortas?

Quiero construir un mensaje de ayuda de argparser que parezca:

-i, --input=INPUT help for input -o, --output=output help for output 

Mi código actual:

 arg_parser = argparse.ArgumentParser arg_parser.add_argument('-i', '--input', dest='input', metavar='=INPUT', help='help for input') arg_parser.add_argument('-o', '--output', dest='output', metavar='=OUTPUT', help='help for output') arg_parser.print_help() 

me está dando

 -i =INPUT, --input =INPUT help for input -o =INPUT, --output =output help for output 

Solo quiero saber cómo deshacerme de las cosas entre opciones cortas y largas.

No muestres opciones largas dos veces en print_help () desde argparse

pregunta esencialmente lo mismo. Si no está preparado para escribir su propia subclase HelpFormatter (probablemente necesite cambiar un método), debe jugar con las herramientas de formato existentes: ayuda, metavar y descripción.

Aquí también argparse ayuda sin duplicar ALLCAPS

y ¿Cómo evito los marcadores de posición de capital en el módulo argparse de python?

Para esa pregunta 88275023 trabajé (pero no publiqué) esta clase de Formatter. El cambio está cerca del final.

 class CustomFormatter(argparse.HelpFormatter): def _format_action_invocation(self, action): if not action.option_strings: metavar, = self._metavar_formatter(action, action.dest)(1) return metavar else: parts = [] # if the Optional doesn't take a value, format is: # -s, --long if action.nargs == 0: parts.extend(action.option_strings) # if the Optional takes a value, format is: # -s ARGS, --long ARGS # change to # -s, --long ARGS else: default = action.dest.upper() args_string = self._format_args(action, default) for option_string in action.option_strings: #parts.append('%s %s' % (option_string, args_string)) parts.append('%s' % option_string) parts[-1] += ' %s'%args_string return ', '.join(parts)