# coding: utf-8

"""
    MailSlurp API

    MailSlurp is an API for sending and receiving emails and SMS from dynamically allocated email addresses and phone numbers. It's designed for developers and QA teams to test applications, process inbound emails, send templated notifications, attachments, and more.  ## Resources  - [Homepage](https://www.mailslurp.com) - Get an [API KEY](https://app.mailslurp.com/sign-up/) - Generated [SDK Clients](https://docs.mailslurp.com/) - [Examples](https://github.com/mailslurp/examples) repository  # noqa: E501

    The version of the OpenAPI document: 6.5.2
    Contact: contact@mailslurp.dev
    Generated by: https://openapi-generator.tech
"""


import pprint
import re  # noqa: F401

import six

from mailslurp_client.configuration import Configuration


class EmailIntelligenceScoreBreakdownDto(object):
    """NOTE: This class is auto generated by OpenAPI Generator.
    Ref: https://openapi-generator.tech

    Do not edit the class manually.
    """

    """
    Attributes:
      openapi_types (dict): The key is attribute name
                            and the value is attribute type.
      attribute_map (dict): The key is attribute name
                            and the value is json key in definition.
    """
    openapi_types = {
        'randomness_penalty': 'int',
        'free_provider_penalty': 'int',
        'https_website_penalty': 'int',
        'dns_penalty': 'int',
        'domain_age_penalty': 'int',
        'email_validation_penalty': 'int',
        'total_penalty': 'int'
    }

    attribute_map = {
        'randomness_penalty': 'randomnessPenalty',
        'free_provider_penalty': 'freeProviderPenalty',
        'https_website_penalty': 'httpsWebsitePenalty',
        'dns_penalty': 'dnsPenalty',
        'domain_age_penalty': 'domainAgePenalty',
        'email_validation_penalty': 'emailValidationPenalty',
        'total_penalty': 'totalPenalty'
    }

    def __init__(self, randomness_penalty=None, free_provider_penalty=None, https_website_penalty=None, dns_penalty=None, domain_age_penalty=None, email_validation_penalty=None, total_penalty=None, local_vars_configuration=None):  # noqa: E501
        """EmailIntelligenceScoreBreakdownDto - a model defined in OpenAPI"""  # noqa: E501
        if local_vars_configuration is None:
            local_vars_configuration = Configuration()
        self.local_vars_configuration = local_vars_configuration

        self._randomness_penalty = None
        self._free_provider_penalty = None
        self._https_website_penalty = None
        self._dns_penalty = None
        self._domain_age_penalty = None
        self._email_validation_penalty = None
        self._total_penalty = None
        self.discriminator = None

        self.randomness_penalty = randomness_penalty
        self.free_provider_penalty = free_provider_penalty
        self.https_website_penalty = https_website_penalty
        self.dns_penalty = dns_penalty
        self.domain_age_penalty = domain_age_penalty
        self.email_validation_penalty = email_validation_penalty
        self.total_penalty = total_penalty

    @property
    def randomness_penalty(self):
        """Gets the randomness_penalty of this EmailIntelligenceScoreBreakdownDto.  # noqa: E501


        :return: The randomness_penalty of this EmailIntelligenceScoreBreakdownDto.  # noqa: E501
        :rtype: int
        """
        return self._randomness_penalty

    @randomness_penalty.setter
    def randomness_penalty(self, randomness_penalty):
        """Sets the randomness_penalty of this EmailIntelligenceScoreBreakdownDto.


        :param randomness_penalty: The randomness_penalty of this EmailIntelligenceScoreBreakdownDto.  # noqa: E501
        :type: int
        """
        if self.local_vars_configuration.client_side_validation and randomness_penalty is None:  # noqa: E501
            raise ValueError("Invalid value for `randomness_penalty`, must not be `None`")  # noqa: E501

        self._randomness_penalty = randomness_penalty

    @property
    def free_provider_penalty(self):
        """Gets the free_provider_penalty of this EmailIntelligenceScoreBreakdownDto.  # noqa: E501


        :return: The free_provider_penalty of this EmailIntelligenceScoreBreakdownDto.  # noqa: E501
        :rtype: int
        """
        return self._free_provider_penalty

    @free_provider_penalty.setter
    def free_provider_penalty(self, free_provider_penalty):
        """Sets the free_provider_penalty of this EmailIntelligenceScoreBreakdownDto.


        :param free_provider_penalty: The free_provider_penalty of this EmailIntelligenceScoreBreakdownDto.  # noqa: E501
        :type: int
        """
        if self.local_vars_configuration.client_side_validation and free_provider_penalty is None:  # noqa: E501
            raise ValueError("Invalid value for `free_provider_penalty`, must not be `None`")  # noqa: E501

        self._free_provider_penalty = free_provider_penalty

    @property
    def https_website_penalty(self):
        """Gets the https_website_penalty of this EmailIntelligenceScoreBreakdownDto.  # noqa: E501


        :return: The https_website_penalty of this EmailIntelligenceScoreBreakdownDto.  # noqa: E501
        :rtype: int
        """
        return self._https_website_penalty

    @https_website_penalty.setter
    def https_website_penalty(self, https_website_penalty):
        """Sets the https_website_penalty of this EmailIntelligenceScoreBreakdownDto.


        :param https_website_penalty: The https_website_penalty of this EmailIntelligenceScoreBreakdownDto.  # noqa: E501
        :type: int
        """
        if self.local_vars_configuration.client_side_validation and https_website_penalty is None:  # noqa: E501
            raise ValueError("Invalid value for `https_website_penalty`, must not be `None`")  # noqa: E501

        self._https_website_penalty = https_website_penalty

    @property
    def dns_penalty(self):
        """Gets the dns_penalty of this EmailIntelligenceScoreBreakdownDto.  # noqa: E501


        :return: The dns_penalty of this EmailIntelligenceScoreBreakdownDto.  # noqa: E501
        :rtype: int
        """
        return self._dns_penalty

    @dns_penalty.setter
    def dns_penalty(self, dns_penalty):
        """Sets the dns_penalty of this EmailIntelligenceScoreBreakdownDto.


        :param dns_penalty: The dns_penalty of this EmailIntelligenceScoreBreakdownDto.  # noqa: E501
        :type: int
        """
        if self.local_vars_configuration.client_side_validation and dns_penalty is None:  # noqa: E501
            raise ValueError("Invalid value for `dns_penalty`, must not be `None`")  # noqa: E501

        self._dns_penalty = dns_penalty

    @property
    def domain_age_penalty(self):
        """Gets the domain_age_penalty of this EmailIntelligenceScoreBreakdownDto.  # noqa: E501


        :return: The domain_age_penalty of this EmailIntelligenceScoreBreakdownDto.  # noqa: E501
        :rtype: int
        """
        return self._domain_age_penalty

    @domain_age_penalty.setter
    def domain_age_penalty(self, domain_age_penalty):
        """Sets the domain_age_penalty of this EmailIntelligenceScoreBreakdownDto.


        :param domain_age_penalty: The domain_age_penalty of this EmailIntelligenceScoreBreakdownDto.  # noqa: E501
        :type: int
        """
        if self.local_vars_configuration.client_side_validation and domain_age_penalty is None:  # noqa: E501
            raise ValueError("Invalid value for `domain_age_penalty`, must not be `None`")  # noqa: E501

        self._domain_age_penalty = domain_age_penalty

    @property
    def email_validation_penalty(self):
        """Gets the email_validation_penalty of this EmailIntelligenceScoreBreakdownDto.  # noqa: E501


        :return: The email_validation_penalty of this EmailIntelligenceScoreBreakdownDto.  # noqa: E501
        :rtype: int
        """
        return self._email_validation_penalty

    @email_validation_penalty.setter
    def email_validation_penalty(self, email_validation_penalty):
        """Sets the email_validation_penalty of this EmailIntelligenceScoreBreakdownDto.


        :param email_validation_penalty: The email_validation_penalty of this EmailIntelligenceScoreBreakdownDto.  # noqa: E501
        :type: int
        """
        if self.local_vars_configuration.client_side_validation and email_validation_penalty is None:  # noqa: E501
            raise ValueError("Invalid value for `email_validation_penalty`, must not be `None`")  # noqa: E501

        self._email_validation_penalty = email_validation_penalty

    @property
    def total_penalty(self):
        """Gets the total_penalty of this EmailIntelligenceScoreBreakdownDto.  # noqa: E501


        :return: The total_penalty of this EmailIntelligenceScoreBreakdownDto.  # noqa: E501
        :rtype: int
        """
        return self._total_penalty

    @total_penalty.setter
    def total_penalty(self, total_penalty):
        """Sets the total_penalty of this EmailIntelligenceScoreBreakdownDto.


        :param total_penalty: The total_penalty of this EmailIntelligenceScoreBreakdownDto.  # noqa: E501
        :type: int
        """
        if self.local_vars_configuration.client_side_validation and total_penalty is None:  # noqa: E501
            raise ValueError("Invalid value for `total_penalty`, must not be `None`")  # noqa: E501

        self._total_penalty = total_penalty

    def to_dict(self):
        """Returns the model properties as a dict"""
        result = {}

        for attr, _ in six.iteritems(self.openapi_types):
            value = getattr(self, attr)
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
                    value
                ))
            elif hasattr(value, "to_dict"):
                result[attr] = value.to_dict()
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], item[1].to_dict())
                    if hasattr(item[1], "to_dict") else item,
                    value.items()
                ))
            else:
                result[attr] = value

        return result

    def to_str(self):
        """Returns the string representation of the model"""
        return pprint.pformat(self.to_dict())

    def __repr__(self):
        """For `print` and `pprint`"""
        return self.to_str()

    def __eq__(self, other):
        """Returns true if both objects are equal"""
        if not isinstance(other, EmailIntelligenceScoreBreakdownDto):
            return False

        return self.to_dict() == other.to_dict()

    def __ne__(self, other):
        """Returns true if both objects are not equal"""
        if not isinstance(other, EmailIntelligenceScoreBreakdownDto):
            return True

        return self.to_dict() != other.to_dict()
