import keyword


def make_name(name: str) -> str:
    """Generates a valid Python name from a system model name.

    Args:
        name (str): The system model name.

    Returns:
        str: The generated name.

    """
    for c in '-#*%.:':
        name = name.replace(c, '_')

    if keyword.iskeyword(name):
        return name + '_'

    if name == 'id':
        return 'id_'
    if name == 'type':
        return 'type_'

    return name