def add(self, *args, **kwargs):
default = kwargs.get('default')
dtype = kwargs.get('type')
if dtype is None:
if default is None:
dtype = str
else:
dtype = type(default)
typename = dtype.__name__
if 'metavar' not in kwargs:
# metavar: display --foo <float=0.05> in help string
if 'choices' in kwargs:
choices = kwargs['choices']
choices_str = '/'.join(['{}']*len(choices)).format(*choices)
kwargs['metavar'] = '<{}: {}>'.format(typename, choices_str)
elif 'nargs' in kwargs:
# better formatting handled in _SingleMetavarFormatter
kwargs['metavar'] = '{}'.format(typename)
elif not kwargs.get('action'):
# if 'store_true', then no metavar needed
# list of actions: https://docs.python.org/3/library/argparse.html#action
default_str = '={}'.format(default) if default else ''
kwargs['metavar'] = '<{}{}>'.format(typename, default_str)
self.parser.add_argument(*args, **kwargs)
评论列表
文章目录