Contains argument information. Only used by Libdoc.
Source code in src/robot/running/arguments/argumentspec.py
| class ArgInfo:
"""Contains argument information. Only used by Libdoc."""
POSITIONAL_ONLY = 'POSITIONAL_ONLY'
POSITIONAL_ONLY_MARKER = 'POSITIONAL_ONLY_MARKER'
POSITIONAL_OR_NAMED = 'POSITIONAL_OR_NAMED'
VAR_POSITIONAL = 'VAR_POSITIONAL'
NAMED_ONLY_MARKER = 'NAMED_ONLY_MARKER'
NAMED_ONLY = 'NAMED_ONLY'
VAR_NAMED = 'VAR_NAMED'
def __init__(self, kind: str,
name: str = '',
type: 'TypeInfo|None' = None,
default: Any = NOT_SET):
self.kind = kind
self.name = name
self.type = type or TypeInfo()
self.default = default
@property
def required(self) -> bool:
if self.kind in (self.POSITIONAL_ONLY,
self.POSITIONAL_OR_NAMED,
self.NAMED_ONLY):
return self.default is NOT_SET
return False
@property
def default_repr(self) -> 'str|None':
if self.default is NOT_SET:
return None
if isinstance(self.default, Enum):
return self.default.name
return safe_str(self.default)
def __str__(self):
if self.kind == self.POSITIONAL_ONLY_MARKER:
return '/'
if self.kind == self.NAMED_ONLY_MARKER:
return '*'
ret = self.name
if self.kind == self.VAR_POSITIONAL:
ret = '*' + ret
elif self.kind == self.VAR_NAMED:
ret = '**' + ret
if self.type:
ret = f'{ret}: {self.type}'
default_sep = ' = '
else:
default_sep = '='
if self.default is not NOT_SET:
ret = f'{ret}{default_sep}{self.default_repr}'
return ret
|