def test_should_extract_python_str_and_int(): """ Test extract python str and int types """ type_info = extract_type('str ') assert type_info.type_name == 'str' assert not type_info.is_list type_info = extract_type(' int') assert type_info.type_name == 'int' assert not type_info.is_list
def test_should_return_none_if_extract_python_of_no_type(): """ Test extract python return None if empty type """ type_info = extract_type('') assert not type_info.type_name assert not type_info.is_list type_info = extract_type(None) assert not type_info.type_name assert not type_info.is_list
def test_should_extract_python_list_type(): """ Test extract python list type """ type_info = extract_type('list') assert type_info.type_name == 'str' assert type_info.is_list type_info = extract_type('List') assert type_info.type_name == 'str' assert type_info.is_list type_info = extract_type('list[str]') assert type_info.type_name == 'str' assert type_info.is_list type_info = extract_type('List[int]') assert type_info.type_name == 'int' assert type_info.is_list
def get_arguments_from_docstring(docstring_data: Docstring) -> list: """ Extract Python command line arguments from docstring """ logging.info('Extract arguments from docstring') if not docstring_data.params: logging.warning('No params found.') arguments_params = [] for param in docstring_data.params: type_info = extract_type(param.type_name) arguments_params.append({ 'name': to_cmd_param(param.arg_name), 'type': type_info.type_name, 'help': param.description, 'is_list': type_info.is_list }) logging.debug(f'Extracted arguments {arguments_params}') return arguments_params