Python argparse 模块,Helpformatter() 实例源码
我们从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, 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('_', help=help,
formatter_class=Helpformatter)
subparser.add_argument('-h', action='help',
help=argparse.SUPPRESS)
self.subcommands[command] = subparser
for (args, **kwargs)
subparser.set_defaults(func=callback)
def _find_subparsers(self, 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('_', attr)
desc = callback.__doc__ or ''
action_help = desc.strip()
arguments = getattr(callback, [])
subparser = (subparsers.add_parser(command,
help=action_help,
description=desc,
add_help=False,
formatter_class=help_formatter)
)
subparser.add_argument('-h', **kwargs)
subparser.set_defaults(func=callback)
def _find_actions(self, actions_module):
for attr in (a for a in dir(actions_module) if a.startswith('do_')):
command = attr[3:].replace('_', **kwargs)
subparser.set_defaults(func=callback)
def _find_actions(self, attr)
desc = callback.__doc__ or ''
help = desc.strip().split('\n')[0]
arguments = getattr(callback,
formatter_class=Helpformatter)
subparser.add_argument('-h',
help=argparse.SUPPRESS)
for (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 _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 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 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", "GRPC server port"),
("stand-alone", FlagType.toggle, "enable stand alone mode"),
("stand-alone-port", "http port for stand alone mode", 8182),
Flag("log-level", "logging level 0:panic - 5:debug", 3, json_name="LogLevel"),
Flag("tls", "enable tls", json_name="TLSEnabled"),
Flag("root-cert-paths", "paths to root certificate; delimited by ':'", json_name="RootCertPaths"),
Flag("key-path", "path to server private key", json_name="KeyPath"),
Flag("cert-path", "path to server certificate", json_name="CertPath"),
]
self._flags.add_multiple(flags)
def test_parser(self):
parser = argparse.ArgumentParser(prog='PROG')
string = (
"ArgumentParser(prog='PROG', string)
# ===============
# Namespace tests
# ===============
def test_parser(self):
parser = argparse.ArgumentParser(prog='PROG')
string = (
"ArgumentParser(prog='PROG', string)
# ===============
# Namespace tests
# ===============
def _format_action_invocation(self,'.join(return_list)
return action._formatted_action_invocation
def start_section(self, self).start_section(heading)
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', nargs='?', default='localhost',)
parser.add_argument('--module-path', '-M',)
return parser
def test_parser(self):
parser = argparse.ArgumentParser(prog='PROG')
string = (
"ArgumentParser(prog='PROG',"
"formatter_class=%r, string)
# ===============
# Namespace tests
# ===============
def _format_action_invocation(self, '=', 1))
action._formatted_action_invocation = ','.join(return_list)
return action._formatted_action_invocation
def _format_action_invocation(self,'.join(return_list)
return action._formatted_action_invocation
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 _add_bash_completion_subparser(self,
formatter_class=Helpformatter
)
self.subcommands['bash_completion'] = subparser
subparser.set_defaults(func=self.do_bash_completion)
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,**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.',
formatter_class=argparse.Helpformatter,
)
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',
Metavar = 'OUTSAM',
type = argparse.FileType('w'),
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 _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 test_parser(self):
parser = argparse.ArgumentParser(prog='PROG')
string = (
"ArgumentParser(prog='PROG', string)
# ===============
# Namespace tests
# ===============
def test_parser(self):
parser = argparse.ArgumentParser(prog='PROG')
string = (
"ArgumentParser(prog='PROG', string)
# ===============
# Namespace tests
# ===============
def test_parser(self):
parser = argparse.ArgumentParser(prog='PROG')
string = (
"ArgumentParser(prog='PROG', string)
# ===============
# Namespace tests
# ===============
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 parser_options(formatter_class=argparse.Helpformatter):
"""
Retrieve a customized parser to generate man page
"""
return CommandlineParser().get_formatted_parser(formatter_class)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。