from moto.core.exceptions import ServiceException


class SesError(ServiceException):
    pass


class MessageRejectedError(SesError):
    code = "MessageRejected"


class ConfigurationSetDoesNotExist(SesError):
    code = "ConfigurationSetDoesNotExist"


class ConfigurationSetAlreadyExists(SesError):
    code = "ConfigurationSetAlreadyExists"


class EventDestinationAlreadyExists(SesError):
    code = "EventDestinationAlreadyExists"


class TemplateNameAlreadyExists(SesError):
    code = "AlreadyExists"


class ValidationError(SesError):
    code = "ValidationError"


class InvalidParameterValue(SesError):
    code = "InvalidParameterValue"


class InvalidRenderingParameterException(SesError):
    code = "InvalidRenderingParameterException"


class TemplateDoesNotExist(SesError):
    code = "TemplateDoesNotExist"


class AlreadyExists(SesError):
    code = "AlreadyExists"


class RuleSetDoesNotExist(SesError):
    code = "RuleSetDoesNotExist"


class RuleDoesNotExist(SesError):
    code = "RuleDoesNotExist"


class MissingRenderingAttributeException(SesError):
    code = "MissingRenderingAttributeException"

    def __init__(self, var: str):
        super().__init__(f"Attribute '{var}' is not present in the rendering data.")
