in modular_api/commands_generator.py [0:0]
def _get_param_def_from_line(line):
if '\'\'' in line:
line = line.replace('\'\'', '')
split = [line for line in line.split('\'') if line]
param_name = None
param_doc = None
alias_name = None
param_type = 'str'
is_flag = False
is_path_to_file = False
file_extension = None
for index, part in enumerate(split):
# todo this all does not seem right...
if any(i in part for i in FILE_CHECKS_CALLBACKS):
is_path_to_file = True
match = re.search(ALLOWED_EXTENSIONS_PATTERN, line)
if match:
allowed_extensions = match.group().split(', ')
file_extension = [extension.strip("\"'")
for extension in allowed_extensions]
if re.match(r'^--[a-z]', part):
param_name = str(part).replace('--', '')
if re.match(r'^-[a-zA-z]', part):
alias_name = str(part).replace('-', '')
if 'help=' in part:
param_doc = str(split[index + 1])
param_doc = param_doc.replace('*', '').strip() \
if '*' in param_doc \
else param_doc
if 'is_flag' in part:
param_type = 'bool'
is_flag = True
if 'type' in part:
click_type = part.split('type=', 1)[-1].split(',')[0]
if 'Choice' in click_type:
click_type = 'enum'
if 'IntRange' in click_type or 'float' in click_type:
click_type = 'num'
if click_type not in ['list', 'str', 'bool', 'enum', 'num']:
click_type = 'str'
param_type = click_type
if 'multiple' in part:
param_type = 'list'
param_required = any(i in line for i in REQUIRED_PARAM_CALLBACKS)
response = {
'name': param_name,
'alias': alias_name,
'required': param_required,
'description': param_doc,
'type': param_type,
'is_flag': is_flag
}
if is_path_to_file:
response['convert_content_to_file'] = is_path_to_file
if file_extension:
response['temp_file_extension'] = file_extension
return response