command: Add support for custom metavar for docs.
This commit is contained in:
parent
11b258568d
commit
cdde1d7dfc
@ -61,7 +61,8 @@ class Command:
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
AnnotationInfo = collections.namedtuple('AnnotationInfo',
|
AnnotationInfo = collections.namedtuple('AnnotationInfo',
|
||||||
['kwargs', 'type', 'flag', 'hide'])
|
['kwargs', 'type', 'flag', 'hide',
|
||||||
|
'metavar'])
|
||||||
|
|
||||||
def __init__(self, *, handler, name, instance=None, maxsplit=None,
|
def __init__(self, *, handler, name, instance=None, maxsplit=None,
|
||||||
hide=False, completion=None, modes=None, not_modes=None,
|
hide=False, completion=None, modes=None, not_modes=None,
|
||||||
@ -257,10 +258,10 @@ class Command:
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
if isinstance(typ, tuple):
|
if isinstance(typ, tuple):
|
||||||
pass
|
kwargs['metavar'] = annotation_info.metavar or param.name
|
||||||
elif utils.is_enum(typ):
|
elif utils.is_enum(typ):
|
||||||
kwargs['choices'] = [e.name.replace('_', '-') for e in typ]
|
kwargs['choices'] = [e.name.replace('_', '-') for e in typ]
|
||||||
kwargs['metavar'] = param.name
|
kwargs['metavar'] = annotation_info.metavar or param.name
|
||||||
elif typ is bool:
|
elif typ is bool:
|
||||||
kwargs['action'] = 'store_true'
|
kwargs['action'] = 'store_true'
|
||||||
elif typ is not None:
|
elif typ is not None:
|
||||||
@ -322,11 +323,12 @@ class Command:
|
|||||||
flag: The short name/flag if overridden.
|
flag: The short name/flag if overridden.
|
||||||
name: The long name if overridden.
|
name: The long name if overridden.
|
||||||
"""
|
"""
|
||||||
info = {'kwargs': {}, 'type': None, 'flag': None, 'hide': False}
|
info = {'kwargs': {}, 'type': None, 'flag': None, 'hide': False,
|
||||||
|
'metavar': None}
|
||||||
if param.annotation is not inspect.Parameter.empty:
|
if param.annotation is not inspect.Parameter.empty:
|
||||||
log.commands.vdebug("Parsing annotation {}".format(
|
log.commands.vdebug("Parsing annotation {}".format(
|
||||||
param.annotation))
|
param.annotation))
|
||||||
for field in ('type', 'flag', 'name', 'hide'):
|
for field in ('type', 'flag', 'name', 'hide', 'metavar'):
|
||||||
if field in param.annotation:
|
if field in param.annotation:
|
||||||
info[field] = param.annotation[field]
|
info[field] = param.annotation[field]
|
||||||
if 'nargs' in param.annotation:
|
if 'nargs' in param.annotation:
|
||||||
|
Loading…
Reference in New Issue
Block a user