def get_help(parser): """ Return help text for the parser. :param parser: parser :type parser: ArgumentParser :return: fully formatted help string :rtype: str """ # Code almost identical with parser.print_help() with next changes: # it return text instead print # it place group 'command arguments' to the first place width = min(get_terminal_width(), 100) formatter = HelpFormatter(prog=parser.prog, max_help_position=30, width=width) # usage formatter.add_usage(parser.usage, parser._actions, parser._mutually_exclusive_groups) # description formatter.add_text(parser.description) # positionals, optionals and user-defined groups groups = list(parser._action_groups) groups.sort(key=lambda x: x.title != 'command arguments') for action_group in groups: formatter.start_section(action_group.title) formatter.add_text(action_group.description) formatter.add_arguments(action_group._group_actions) formatter.end_section() # epilog formatter.add_text(parser.epilog) # determine help from format above return formatter.format_help()
def add_usage(self, usage, actions, groups, prefix=None): HelpFormatter.add_usage(self, usage, actions, groups, prefix="Usage: ")