in iact3/cli.py [0:0]
def _get_params(self, item):
params = []
for param in inspect.signature(item).parameters.values():
if param.name == 'self' or param.name.startswith('_'):
continue
required = param.default == param.empty
default = param.default if not required else None
val_type = param.annotation if param.annotation in [str, int, bool] else str
action = 'store_true' if val_type == bool else 'store'
param_help = CliCore._get_param_help(item, param.name)
name = param.name.lower()
kwargs = {'action': action, 'help': param_help}
if not required:
name = name.replace('_', '-')
kwargs.update(
{'required': required, 'default': default, 'dest': param.name}
)
if action == 'store':
kwargs.update({'type': val_type})
if required:
params.append([[name], kwargs])
else:
if f'{item.__qualname__}.{name}' in self.longform_required:
params.append([[f'--{name}'], kwargs])
else:
params.append([[f'-{name[0]}', f'--{name}'], kwargs])
return params