def _make_list_of_str(arg):
    """
    Convert a str to list of str or ensure a list is a list of str

    :param list[str] | str arg: string or a list of strings to listify
    :return list: list of strings
    :raise TypeError: if a fault argument was provided
    """

    def _raise_faulty_arg():
        raise TypeError(
            f"Provided argument has to be a list[str] or a str, "
            f"got '{arg.__class__.__name__}'"
        )

    if isinstance(arg, str):
        return [arg]
    elif isinstance(arg, list):
        if not all(isinstance(i, str) for i in arg):
            _raise_faulty_arg()
        else:
            return arg
    else:
        _raise_faulty_arg()