Source code for evalml.data_checks.data_check_message
"""Messages returned by a DataCheck, tagged by name."""
from evalml.data_checks.data_check_message_type import DataCheckMessageType
[docs]class DataCheckMessage:
    """Base class for a message returned by a DataCheck, tagged by name.
    Args:
        message (str): Message string.
        data_check_name (str): Name of the associated data check.
        message_code (DataCheckMessageCode, optional): Message code associated with the message. Defaults to None.
        details (dict, optional): Additional useful information associated with the message. Defaults to None.
        action_options (list, optional): A list of `DataCheckActionOption`s associated with the message. Defaults to None.
    """
    message_type = None
    def __init__(
        self,
        message,
        data_check_name,
        message_code=None,
        details=None,
        action_options=None,
    ):
        self.message = message
        self.data_check_name = data_check_name
        self.message_code = message_code
        self.details = {"columns": None, "rows": None}
        if details is not None:
            self.details.update(details)
        self.action_options = action_options
    def __str__(self):
        """String representation of data check message, equivalent to self.message attribute."""
        return self.message
    def __eq__(self, other):
        """Check for equality.
        Two DataCheckMessage objs are considered equivalent if all of
        their attributes are equivalent.
        Args:
            other: An object to compare equality with.
        Returns:
            bool: True if the other object is considered an equivalent data check message, False otherwise.
        """
        return (
            self.message_type == other.message_type
            and self.message == other.message
            and self.data_check_name == other.data_check_name
            and self.message_code == other.message_code
            and self.details == other.details
            and self.action_options == other.action_options
        )
[docs]    def to_dict(self):
        """Return a dictionary form of the data check message."""
        message_dict = {
            "message": self.message,
            "data_check_name": self.data_check_name,
            "level": self.message_type.value,
            "details": self.details,
        }
        if self.message_code is not None:
            message_dict.update({"code": self.message_code.name})
        action_options_dict = []
        if self.action_options:
            for action_option in self.action_options:
                action_options_dict.append(action_option.to_dict())
        message_dict.update({"action_options": action_options_dict})
        return message_dict  
[docs]class DataCheckError(DataCheckMessage):
    """DataCheckMessage subclass for errors returned by data checks."""
    message_type = DataCheckMessageType.ERROR
    """DataCheckMessageType.ERROR""" 
[docs]class DataCheckWarning(DataCheckMessage):
    """DataCheckMessage subclass for warnings returned by data checks."""
    message_type = DataCheckMessageType.WARNING
    """DataCheckMessageType.WARNING"""