from typing import List


def get_set_diff(left: List[str], right: List[str]) -> List[str]:
    """
    Finds all of the elements in the left input that are not present in the right
    returns the difference list. i.e. given two sets A and B, it returns the set A - B

    Parameters:
    left: List[str] - source list of elements
    right: List[str] - list of elements to compare source against

    returns: List[str] - left - right
    """
    if not left or not isinstance(left, list):
        raise ValueError("Left must be a list")
    if not right or not isinstance(right, list):
        raise ValueError("Right must be a list")
    for item in left:
        if not item or not isinstance(item, str):
            raise ValueError("The lists must be composed of strings")
    for item in right:
        if not item or not isinstance(item, str):
            raise ValueError("The lists must be composed of strings")

    # since we don't care about ordering here, this is orders of magnitude faster
    # than a list comprehension
    return list(set(left) - set(right))