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
Example #4
0
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