我们从Python开源项目中,提取了以下50个代码示例,用于说明如何使用argparse.HelpFormatter()。
def _find_actions(self, subparsers, actions_module): for attr in (a for a in dir(actions_module) if a.startswith('do_')): # Replace underscores with hyphens in the commands # displayed to the user command = attr[3:].replace('_', '-') callback = getattr(actions_module, attr) desc = callback.__doc__ or '' help = desc.strip().split('\n')[0] arguments = getattr(callback, 'arguments', []) subparser = subparsers.add_parser(command, help=help, description=desc, add_help=False, formatter_class=HelpFormatter ) subparser.add_argument('-h', '--help', action='help', help=argparse.SUPPRESS, ) self.subcommands[command] = subparser for (args, kwargs) in arguments: subparser.add_argument(*args, **kwargs) subparser.set_defaults(func=callback)
def _find_actions(self, subparsers, actions_module): for attr in (a for a in dir(actions_module) if a.startswith('do_')): # I prefer to be hypen-separated instead of underscores. command = attr[3:].replace('_', '-') callback = getattr(actions_module, attr) desc = callback.__doc__ or '' help = desc.strip().split('\n')[0] arguments = getattr(callback, 'arguments', []) subparser = subparsers.add_parser(command, help=help, description=desc, add_help=False, formatter_class=HelpFormatter) subparser.add_argument('-h', '--help', action='help', help=argparse.SUPPRESS) self.subcommands[command] = subparser for (args, kwargs) in arguments: subparser.add_argument(*args, **kwargs) subparser.set_defaults(func=callback)
def _find_actions(self, subparsers, actions_module): for attr in (a for a in dir(actions_module) if a.startswith('do_')): # I prefer to be hyphen-separated instead of underscores. command = attr[3:].replace('_', '-') callback = getattr(actions_module, attr) desc = callback.__doc__ or '' help = desc.strip().split('\n')[0] arguments = getattr(callback, 'arguments', []) subparser = subparsers.add_parser(command, help=help, description=desc, add_help=False, formatter_class=HelpFormatter) subparser.add_argument('-h', '--help', action='help', help=argparse.SUPPRESS) self.subcommands[command] = subparser for (args, kwargs) in arguments: subparser.add_argument(*args, **kwargs) subparser.set_defaults(func=callback)
def _find_subparsers(self, subparsers, actions_module): """Find subparsers by looking at *_shell files.""" help_formatter = argparse.HelpFormatter for attr in (a for a in dir(actions_module) if a.startswith('do_')): command = attr[3:].replace('_', '-') callback = getattr(actions_module, attr) desc = callback.__doc__ or '' action_help = desc.strip() arguments = getattr(callback, 'arguments', []) subparser = (subparsers.add_parser(command, help=action_help, description=desc, add_help=False, formatter_class=help_formatter) ) subparser.add_argument('-h', '--help', action='help', help=argparse.SUPPRESS) self.subcommands[command] = subparser for (args, kwargs) in arguments: subparser.add_argument(*args, **kwargs) subparser.set_defaults(func=callback)
def _find_actions(self, subparsers, actions_module): for attr in (a for a in dir(actions_module) if a.startswith('do_')): command = attr[3:].replace('_', '-') callback = getattr(actions_module, attr) desc = callback.__doc__ or '' help = desc.strip().split('\n')[0] arguments = getattr(callback, 'arguments', []) subparser = subparsers.add_parser(command, help=help, description=desc, add_help=False, formatter_class=HelpFormatter ) subparser.add_argument('-h', '--help', action='help', help=argparse.SUPPRESS, ) self.subcommands[command] = subparser for (args, kwargs) in arguments: subparser.add_argument(*args, **kwargs) subparser.set_defaults(func=callback)
def _find_actions(self, subparsers, actions_module): for attr in (a for a in dir(actions_module) if a.startswith('do_')): command = attr[3:].replace('_', '-') callback = getattr(actions_module, attr) desc = callback.__doc__ or '' help = desc.strip().split('\n')[0] arguments = getattr(callback, 'arguments', []) subparser = subparsers.add_parser(command, help=help, description=desc, add_help=False, formatter_class=HelpFormatter) subparser.add_argument('-h', '--help', action='help', help=argparse.SUPPRESS) for (args, kwargs) in arguments: subparser.add_argument(*args, **kwargs) subparser.set_defaults(func=callback) self.subcommands[command] = subparser
def _format_action_invocation(self, action): orgstr = argparse.HelpFormatter._format_action_invocation(self, action) if orgstr and orgstr[0] != '-': # only optional arguments return orgstr res = getattr(action, '_formatted_action_invocation', None) if res: return res options = orgstr.split(', ') if len(options) == 2 and (len(options[0]) == 2 or len(options[1]) == 2): # a shortcut for '-h, --help' or '--abc', '-a' action._formatted_action_invocation = orgstr return orgstr return_list = [] option_map = getattr(action, 'map_long_option', {}) if option_map is None: option_map = {} short_long = {} for option in options: if len(option) == 2 or option[2] == ' ': continue if not option.startswith('--'): raise ArgumentError('long optional argument without "--": [%s]' % (option), self) xxoption = option[2:] if xxoption.split()[0] not in option_map: shortened = xxoption.replace('-', '') if shortened not in short_long or \ len(short_long[shortened]) < len(xxoption): short_long[shortened] = xxoption # now short_long has been filled out to the longest with dashes # **and** we keep the right option ordering from add_argument for option in options: # if len(option) == 2 or option[2] == ' ': return_list.append(option) if option[2:] == short_long.get(option.replace('-', '')): return_list.append(option.replace(' ', '=')) action._formatted_action_invocation = ', '.join(return_list) return action._formatted_action_invocation
def _split_lines(self, text, width): if fun_check(text): return [l for l in text.splitlines(True) if not fun_comment(l)] return [ l for l in argparse.HelpFormatter._split_lines(self, text, width) if not fun_comment(l)]
def _add_bash_completion_subparser(self, subparsers): subparser = subparsers.add_parser('bash_completion', add_help=False, formatter_class=HelpFormatter) self.subcommands['bash_completion'] = subparser subparser.set_defaults(func=self.do_bash_completion)
def start_section(self, heading): # Title-case the headings heading = '%s%s' % (heading[0].upper(), heading[1:]) super(HelpFormatter, self).start_section(heading)
def __init__(self, option_cls): self.__option_cls = option_cls self._parser = argparse.ArgumentParser(formatter_class= lambda prog: argparse.HelpFormatter(prog, width=shutil.get_terminal_size()[0]))
def optionxform(self, strOut): return strOut # Define a HelpFormatter class that works with Unicode corpus names both in # Python 2.7 and Python 3.x:
def _split_lines(self, text, width): if text.startswith('R|'): return text[2:].splitlines() # this is the RawTextHelpFormatter._split_lines return argparse.HelpFormatter._split_lines(self, text, width)
def help_formatter(prog): """ So formatter_class's max_help_position can be changed. """ return argparse.HelpFormatter(prog, max_help_position=40)
def test_parser(self): parser = argparse.ArgumentParser(prog='PROG') string = ( "ArgumentParser(prog='PROG', usage=None, description=None, " "version=None, formatter_class=%r, conflict_handler='error', " "add_help=True)" % argparse.HelpFormatter) self.assertStringEqual(parser, string) # =============== # Namespace tests # ===============
def __init__(self): self.meta = None self.proxy = None self.server = grpc.server(futures.ThreadPoolExecutor(max_workers=10)) self._port = 0 self._last_ping = time.time() self._shutting_down = False self._monitor = None self._mode = PluginMode.normal self._config = {} self._flags = _Flags() self.standalone_server = None # init argparse module and add arguments self._parser = argparse.ArgumentParser(description="%(prog)s - a Snap framework plugin.", usage="%(prog)s [options]", formatter_class=lambda prog: argparse.HelpFormatter(prog, max_help_position=30)) self._parser.add_argument("framework_config", nargs="?", default=None, help=argparse.SUPPRESS) flags = [ ("config", FlagType.value, "JSON Snap global config"), ("port", FlagType.value, "GRPC server port"), ("stand-alone", FlagType.toggle, "enable stand alone mode"), ("stand-alone-port", FlagType.value, "http port for stand alone mode", 8182), Flag("log-level", FlagType.value, "logging level 0:panic - 5:debug", 3, json_name="LogLevel"), Flag("tls", FlagType.toggle, "enable tls", json_name="TLSEnabled"), Flag("root-cert-paths", FlagType.value, "paths to root certificate; delimited by ':'", json_name="RootCertPaths"), Flag("key-path", FlagType.value, "path to server private key", json_name="KeyPath"), Flag("cert-path", FlagType.value, "path to server certificate", json_name="CertPath"), ] self._flags.add_multiple(flags)
def _split_lines(self, text, width): # this is the RawTextHelpFormatter._split_lines if text.startswith('S|'): return text[2:].splitlines() return ap.HelpFormatter._split_lines(self, text, width)
def get_parser(): """ creates the parser for the ansible-role command line utility """ parser = argparse.ArgumentParser( prog=os.path.split(sys.argv[0])[-1], formatter_class=HelpFormatter,) parser.add_argument('rolename', type=str, nargs=1,) parser.add_argument('host', type=str, nargs='?', default='localhost',) parser.add_argument('--module-path', '-M',) return parser
def test_parser(self): parser = argparse.ArgumentParser(prog='PROG') string = ( "ArgumentParser(prog='PROG', usage=None, description=None, " "formatter_class=%r, conflict_handler='error', " "add_help=True)" % argparse.HelpFormatter) self.assertStringEqual(parser, string) # =============== # Namespace tests # ===============
def _format_action_invocation(self, action): orgstr = argparse.HelpFormatter._format_action_invocation(self, action) if orgstr and orgstr[0] != '-': # only optional arguments return orgstr res = getattr(action, '_formatted_action_invocation', None) if res: return res options = orgstr.split(', ') if len(options) == 2 and (len(options[0]) == 2 or len(options[1]) == 2): # a shortcut for '-h, --help' or '--abc', '-a' action._formatted_action_invocation = orgstr return orgstr return_list = [] option_map = getattr(action, 'map_long_option', {}) if option_map is None: option_map = {} short_long = {} for option in options: if len(option) == 2 or option[2] == ' ': continue if not option.startswith('--'): raise ArgumentError('long optional argument without "--": [%s]' % (option), self) xxoption = option[2:] if xxoption.split()[0] not in option_map: shortened = xxoption.replace('-', '') if shortened not in short_long or \ len(short_long[shortened]) < len(xxoption): short_long[shortened] = xxoption # now short_long has been filled out to the longest with dashes # **and** we keep the right option ordering from add_argument for option in options: # if len(option) == 2 or option[2] == ' ': return_list.append(option) if option[2:] == short_long.get(option.replace('-', '')): return_list.append(option.replace(' ', '=', 1)) action._formatted_action_invocation = ', '.join(return_list) return action._formatted_action_invocation
def _split_lines(self, text, width): if text.startswith('ML|'): return text[3:].splitlines() # this is the RawTextHelpFormatter._split_lines return argparse.HelpFormatter._split_lines(self, text, width) ############# # Functions # #############
def _add_bash_completion_subparser(self, subparsers): subparser = subparsers.add_parser( 'bash_completion', add_help=False, formatter_class=HelpFormatter ) self.subcommands['bash_completion'] = subparser subparser.set_defaults(func=self.do_bash_completion)
def __init__(self, prog, indent_increment=2, max_help_position=32, width=None): super(HelpFormatter, self).__init__(prog, indent_increment, max_help_position, width)
def error(self, error): """raise errors instead of printing and raising SystemExit""" raise self.ArgumentError(error) #def __init__(self, *args, **kwargs): # kwargs["formatter_class"] = MyHelpFormatter # argparse.ArgumentParser.__init__(self, *args, **kwargs) #class MyHelpFormatter(argparse.HelpFormatter): # pass
def test_get_base_parser(self): """Verify how we construct our basic Argument Parser.""" with mock.patch('argparse.ArgumentParser') as ArgumentParser: parser = self.shell.get_base_parser() self.assertEqual(ArgumentParser.return_value, parser) ArgumentParser.assert_called_once_with( prog='craton', description=('Main shell for parsing arguments directed toward ' 'Craton.'), epilog='See "craton help COMMAND" for help on a specific command.', add_help=False, formatter_class=argparse.HelpFormatter, )
def _split_lines(self, text, width): if text.startswith(RAW_TEXT_ID): return text[len(RAW_TEXT_ID):].splitlines() # this is the RawTextHelpFormatter._split_lines return argparse.HelpFormatter._split_lines(self, text, width)
def __init__(self, *args, **kwargs): argparse.HelpFormatter.__init__(self, *args, **kwargs) self._action_max_length = 18
def parse_arguments(): """ Parse the command line, and check if arguments are correct """ # Initiate argument parser parser = DefaultHelpParser(description='Program description', # to precisely format help display formatter_class=lambda prog: argparse.HelpFormatter(prog, width=120, max_help_position=80)) # Main parameters group_main = parser.add_argument_group('Main parameters') # -i / --input_sam group_main.add_argument('-i', '--input_sam', action = 'store', metavar = 'INSAM', type = argparse.FileType('r'), default = '-', help = 'Input sam file, sorted by subject and position') # -o / --output_sam group_main.add_argument('-o', '--output_sam', action = 'store', metavar = 'OUTSAM', type = argparse.FileType('w'), default = '-', help = 'Output sam file') # -v / --verbose group_main.add_argument('-v', '--verbose', action = 'store_true', help = 'Increase verbosity') # Debug group_debug = parser.add_argument_group('Debug parameters') # --debug group_debug.add_argument('--debug', action = 'store_true', help = 'Output debug infos') args = parser.parse_args() # return args
def _split_lines(self, text, width): if text.startswith('D|'): self._add_defaults = True text = text[2:] elif text.startswith('*|'): text = text[2:] if text.startswith('R|'): return text[2:].splitlines() return argparse.HelpFormatter._split_lines(self, text, width)
def _get_help_string(self, action): if self._add_defaults is None: return argparse.HelpFormatter._get_help_string(self, action) help = action.help if '%(default)' not in action.help: if action.default is not argparse.SUPPRESS: defaulting_nargs = [argparse.OPTIONAL, argparse.ZERO_OR_MORE] if action.option_strings or action.nargs in defaulting_nargs: help += ' (default: %(default)s)' return help
def _split_lines(self, text, width): # this is the RawTextHelpFormatter._split_lines if text.startswith('R|'): return text[2:].splitlines() return argparse.HelpFormatter._split_lines(self, text, width)
def __init__(self, prog=None, usage=None, description=None, epilog=None, parents=[], formatter_class=argparse.HelpFormatter, prefix_chars='-', fromfile_prefix_chars=None, argument_default=None, conflict_handler='error', add_help=True, allow_abbrev=True): super(ArgumentParser, self).__init__( prog, usage, description, epilog, parents, formatter_class, prefix_chars, fromfile_prefix_chars, argument_default, conflict_handler, add_help, allow_abbrev) self.register('action', 'store_dict', _StoreDictAction) self.register('action', 'store_dict_const', _StoreDictConstAction)
def _init_parser(self, **kwargs): _def = self._def num_groups = len(_def.groups) if num_groups == 0: raise RuntimeError("At least one command should be defined.") formatter_class = argparse.HelpFormatter if 'formatter_class' in kwargs: formatter_class = kwargs['formatter_class'] parser = ArgumentParser(**kwargs) for name, value in _def.common_cmd_args.items(): parser.add_argument(*value.args, **value.kwargs) if num_groups == 1: """register arguments as common""" group = _def.groups[0] for name, value in _def.grouped_cmd_args[group].items(): parser.add_argument(*value.args, **value.kwargs) else: """register arguments as groups""" subparsers = parser.add_subparsers( title='commands', help='available commands', dest='command') subparsers.required = True for group in _def.groups: subparser = subparsers.add_parser( group, **_def.group_descriptions[group], formatter_class=formatter_class) for name, value in _def.grouped_cmd_args[group].items(): subparser.add_argument(*value.args, **value.kwargs) return parser
def _split_lines(self, text, width): text = re.sub(man_format_remove, '', text) # this is the RawTextHelpFormatter._split_lines if text.startswith('R|'): return text[2:].splitlines() return argparse.HelpFormatter._split_lines(self, text, width)
def parser_options(formatter_class=argparse.HelpFormatter): """ Retrieve a customized parser to generate man page """ return CommandlineParser().get_formatted_parser(formatter_class)
def _split_lines(self, text, width): """ Allows forcing newlines in lines starting with R| """ if text.startswith('R|'): return text[2:].splitlines() return argparse.HelpFormatter._split_lines(self, text, width)