import functools


def not_implemented(method):
    """
    Raise a not implemented error if method
    returns 'NotImplemented' type.
    """

    @functools.wraps(method)
    def inner(*args, **kwargs):
        result = method(*args, **kwargs)
        if result is NotImplemented:
            raise_not_implemented()
        return result

    def raise_not_implemented():
        message = f"method {method!r} has not been implemented yet!"
        raise NotImplementedError(message)

    return inner