def current_yellow(before, after):
    """
    Checks if the yellow light works well.
    :param before: has to be None, "red" or blink
    :param after: has to be None, "red", "green" or "left green"
    :return: if any constraints not met will return False else True
    Additional Constraint:
    1. Colours before and after can't be the same
    2. if previous was "red" then after has to be "green" or "left green"
    3. if previous was "blink" then after has to be "red"

    """
    print(f'{before}--yellow--{after}')
    accepted_before = [None, "red", "blink"]
    accepted_after = [None, "red", "green", "left green"]
    if before not in accepted_before or after not in accepted_after:
        return False
    elif before and after and before == after:
        return False
    elif before == "red" and after not in ["green", "left green", None]:
        return False
    elif before == "blink" and after not in ["red", None]:
        return False
    else:
        return True