Source code for metatrain.cli.formatter
import argparse
[docs]
class CustomHelpFormatter(argparse.RawDescriptionHelpFormatter):
"""Descriptions formatter showing positional arguments before optionals."""
def _format_usage(self, usage, actions, groups, prefix):
if usage is None:
# split optionals from positionals
optionals = []
positionals = []
for action in actions:
if action.option_strings:
optionals.append(action)
else:
positionals.append(action)
prog = "%(prog)s" % dict(prog=self._prog)
# build full usage string
format = self._format_actions_usage
action_usage = format(positionals + optionals, groups)
usage = " ".join([s for s in [prog, action_usage] if s])
# Call the superclass method to format the usage
return super()._format_usage(usage, actions, groups, prefix)