in src/doc_builder/autodoc.py [0:0]
def format_signature(obj):
"""
Retrieves the signature of a class, function or method.
Returns `List(Dict(str, str))` (i.e. [{'do_lower_case', ' = True'}, ...])
where `key` of `Dict` is f'{param_name}' & `value` of `Dict` is f': {annotation} = {default}'
"""
params = []
if is_getset_descriptor(obj):
return params
try:
signature = inspect.signature(obj)
except ValueError:
# TODO: This fails for ModelOutput. Check if this is normal.
return ""
for idx, param in enumerate(signature.parameters.values()):
param_name = param.name
if idx == 0 and param_name in ("self", "cls"):
continue
if param.kind == inspect._ParameterKind.VAR_POSITIONAL:
param_name = f"*{param_name}"
elif param.kind == inspect._ParameterKind.VAR_KEYWORD:
param_name = f"**{param_name}"
param_type_val = ""
if param.annotation != inspect._empty:
annotation = get_type_name(param.annotation)
param_type_val += f": {annotation}"
if param.default != inspect._empty:
default = param.default
default = repr(default)
param_type_val += f" = {default}"
params.append({"name": param_name, "val": param_type_val})
return params