# coding: utf-8

"""
    SparkWorks Core API

    Management Service for the SparkWorks Processing Engine  # noqa: E501

    OpenAPI spec version: v2.0
    Contact: info@sparkworks.net
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""


import pprint
import re  # noqa: F401

import six


class TheResourceSummaryDataAPIModel(object):
    """NOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    """

    """
    Attributes:
      swagger_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.
    """
    swagger_types = {
        'average': 'dict(str, float)',
        'day': 'list[float]',
        'day_cost': 'list[float]',
        'key_name': 'str',
        'latest': 'float',
        'latest_string': 'str',
        'latest_time': 'int',
        'max': 'dict(str, int)',
        'min': 'dict(str, int)',
        'minutes5': 'list[float]',
        'minutes5cost': 'list[float]',
        'minutes60': 'list[float]',
        'minutes60cost': 'list[float]',
        'month': 'list[float]',
        'month_cost': 'list[float]'
    }

    attribute_map = {
        'average': 'average',
        'day': 'day',
        'day_cost': 'dayCost',
        'key_name': 'keyName',
        'latest': 'latest',
        'latest_string': 'latestString',
        'latest_time': 'latestTime',
        'max': 'max',
        'min': 'min',
        'minutes5': 'minutes5',
        'minutes5cost': 'minutes5cost',
        'minutes60': 'minutes60',
        'minutes60cost': 'minutes60cost',
        'month': 'month',
        'month_cost': 'monthCost'
    }

    def __init__(self, average=None, day=None, day_cost=None, key_name=None, latest=None, latest_string=None, latest_time=None, max=None, min=None, minutes5=None, minutes5cost=None, minutes60=None, minutes60cost=None, month=None, month_cost=None):  # noqa: E501
        """TheResourceSummaryDataAPIModel - a model defined in Swagger"""  # noqa: E501

        self._average = None
        self._day = None
        self._day_cost = None
        self._key_name = None
        self._latest = None
        self._latest_string = None
        self._latest_time = None
        self._max = None
        self._min = None
        self._minutes5 = None
        self._minutes5cost = None
        self._minutes60 = None
        self._minutes60cost = None
        self._month = None
        self._month_cost = None
        self.discriminator = None

        if average is not None:
            self.average = average
        if day is not None:
            self.day = day
        if day_cost is not None:
            self.day_cost = day_cost
        if key_name is not None:
            self.key_name = key_name
        if latest is not None:
            self.latest = latest
        if latest_string is not None:
            self.latest_string = latest_string
        if latest_time is not None:
            self.latest_time = latest_time
        if max is not None:
            self.max = max
        if min is not None:
            self.min = min
        if minutes5 is not None:
            self.minutes5 = minutes5
        if minutes5cost is not None:
            self.minutes5cost = minutes5cost
        if minutes60 is not None:
            self.minutes60 = minutes60
        if minutes60cost is not None:
            self.minutes60cost = minutes60cost
        if month is not None:
            self.month = month
        if month_cost is not None:
            self.month_cost = month_cost

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

        Average value of the aggregate arrays available above  # noqa: E501

        :return: The average of this TheResourceSummaryDataAPIModel.  # noqa: E501
        :rtype: dict(str, float)
        """
        return self._average

    @average.setter
    def average(self, average):
        """Sets the average of this TheResourceSummaryDataAPIModel.

        Average value of the aggregate arrays available above  # noqa: E501

        :param average: The average of this TheResourceSummaryDataAPIModel.  # noqa: E501
        :type: dict(str, float)
        """

        self._average = average

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

        The 42 latest 1-day aggregates computed by the system for the Resource  # noqa: E501

        :return: The day of this TheResourceSummaryDataAPIModel.  # noqa: E501
        :rtype: list[float]
        """
        return self._day

    @day.setter
    def day(self, day):
        """Sets the day of this TheResourceSummaryDataAPIModel.

        The 42 latest 1-day aggregates computed by the system for the Resource  # noqa: E501

        :param day: The day of this TheResourceSummaryDataAPIModel.  # noqa: E501
        :type: list[float]
        """

        self._day = day

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

        The 42 latest 1-day electricity cost values computed by the system for the Resource if enabled  # noqa: E501

        :return: The day_cost of this TheResourceSummaryDataAPIModel.  # noqa: E501
        :rtype: list[float]
        """
        return self._day_cost

    @day_cost.setter
    def day_cost(self, day_cost):
        """Sets the day_cost of this TheResourceSummaryDataAPIModel.

        The 42 latest 1-day electricity cost values computed by the system for the Resource if enabled  # noqa: E501

        :param day_cost: The day_cost of this TheResourceSummaryDataAPIModel.  # noqa: E501
        :type: list[float]
        """

        self._day_cost = day_cost

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

        The Resource uniform resource identifier  # noqa: E501

        :return: The key_name of this TheResourceSummaryDataAPIModel.  # noqa: E501
        :rtype: str
        """
        return self._key_name

    @key_name.setter
    def key_name(self, key_name):
        """Sets the key_name of this TheResourceSummaryDataAPIModel.

        The Resource uniform resource identifier  # noqa: E501

        :param key_name: The key_name of this TheResourceSummaryDataAPIModel.  # noqa: E501
        :type: str
        """

        self._key_name = key_name

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

        The last value the system received from the Resource  # noqa: E501

        :return: The latest of this TheResourceSummaryDataAPIModel.  # noqa: E501
        :rtype: float
        """
        return self._latest

    @latest.setter
    def latest(self, latest):
        """Sets the latest of this TheResourceSummaryDataAPIModel.

        The last value the system received from the Resource  # noqa: E501

        :param latest: The latest of this TheResourceSummaryDataAPIModel.  # noqa: E501
        :type: float
        """

        self._latest = latest

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

        The value of a string value Resource  # noqa: E501

        :return: The latest_string of this TheResourceSummaryDataAPIModel.  # noqa: E501
        :rtype: str
        """
        return self._latest_string

    @latest_string.setter
    def latest_string(self, latest_string):
        """Sets the latest_string of this TheResourceSummaryDataAPIModel.

        The value of a string value Resource  # noqa: E501

        :param latest_string: The latest_string of this TheResourceSummaryDataAPIModel.  # noqa: E501
        :type: str
        """

        self._latest_string = latest_string

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

        The last time the system received a new measurement from the Resource  # noqa: E501

        :return: The latest_time of this TheResourceSummaryDataAPIModel.  # noqa: E501
        :rtype: int
        """
        return self._latest_time

    @latest_time.setter
    def latest_time(self, latest_time):
        """Sets the latest_time of this TheResourceSummaryDataAPIModel.

        The last time the system received a new measurement from the Resource  # noqa: E501

        :param latest_time: The latest_time of this TheResourceSummaryDataAPIModel.  # noqa: E501
        :type: int
        """

        self._latest_time = latest_time

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

        Maximum values of the aggregate arrays available above  # noqa: E501

        :return: The max of this TheResourceSummaryDataAPIModel.  # noqa: E501
        :rtype: dict(str, int)
        """
        return self._max

    @max.setter
    def max(self, max):
        """Sets the max of this TheResourceSummaryDataAPIModel.

        Maximum values of the aggregate arrays available above  # noqa: E501

        :param max: The max of this TheResourceSummaryDataAPIModel.  # noqa: E501
        :type: dict(str, int)
        """

        self._max = max

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

        Minimum values of the aggregate arrays available above  # noqa: E501

        :return: The min of this TheResourceSummaryDataAPIModel.  # noqa: E501
        :rtype: dict(str, int)
        """
        return self._min

    @min.setter
    def min(self, min):
        """Sets the min of this TheResourceSummaryDataAPIModel.

        Minimum values of the aggregate arrays available above  # noqa: E501

        :param min: The min of this TheResourceSummaryDataAPIModel.  # noqa: E501
        :type: dict(str, int)
        """

        self._min = min

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

        The 42 latest 5-minute aggregates computed by the system for the Resource  # noqa: E501

        :return: The minutes5 of this TheResourceSummaryDataAPIModel.  # noqa: E501
        :rtype: list[float]
        """
        return self._minutes5

    @minutes5.setter
    def minutes5(self, minutes5):
        """Sets the minutes5 of this TheResourceSummaryDataAPIModel.

        The 42 latest 5-minute aggregates computed by the system for the Resource  # noqa: E501

        :param minutes5: The minutes5 of this TheResourceSummaryDataAPIModel.  # noqa: E501
        :type: list[float]
        """

        self._minutes5 = minutes5

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

        The 42 latest 5-minute electricity cost values computed by the system for the Resource if enabled  # noqa: E501

        :return: The minutes5cost of this TheResourceSummaryDataAPIModel.  # noqa: E501
        :rtype: list[float]
        """
        return self._minutes5cost

    @minutes5cost.setter
    def minutes5cost(self, minutes5cost):
        """Sets the minutes5cost of this TheResourceSummaryDataAPIModel.

        The 42 latest 5-minute electricity cost values computed by the system for the Resource if enabled  # noqa: E501

        :param minutes5cost: The minutes5cost of this TheResourceSummaryDataAPIModel.  # noqa: E501
        :type: list[float]
        """

        self._minutes5cost = minutes5cost

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

        The 42 latest 1-hour aggregates computed by the system for the Resource  # noqa: E501

        :return: The minutes60 of this TheResourceSummaryDataAPIModel.  # noqa: E501
        :rtype: list[float]
        """
        return self._minutes60

    @minutes60.setter
    def minutes60(self, minutes60):
        """Sets the minutes60 of this TheResourceSummaryDataAPIModel.

        The 42 latest 1-hour aggregates computed by the system for the Resource  # noqa: E501

        :param minutes60: The minutes60 of this TheResourceSummaryDataAPIModel.  # noqa: E501
        :type: list[float]
        """

        self._minutes60 = minutes60

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

        The 42 latest 1-hour electricity cost values computed by the system for the Resource if enabled  # noqa: E501

        :return: The minutes60cost of this TheResourceSummaryDataAPIModel.  # noqa: E501
        :rtype: list[float]
        """
        return self._minutes60cost

    @minutes60cost.setter
    def minutes60cost(self, minutes60cost):
        """Sets the minutes60cost of this TheResourceSummaryDataAPIModel.

        The 42 latest 1-hour electricity cost values computed by the system for the Resource if enabled  # noqa: E501

        :param minutes60cost: The minutes60cost of this TheResourceSummaryDataAPIModel.  # noqa: E501
        :type: list[float]
        """

        self._minutes60cost = minutes60cost

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

        The 42 latest 1-month aggregates computed by the system for the Resource  # noqa: E501

        :return: The month of this TheResourceSummaryDataAPIModel.  # noqa: E501
        :rtype: list[float]
        """
        return self._month

    @month.setter
    def month(self, month):
        """Sets the month of this TheResourceSummaryDataAPIModel.

        The 42 latest 1-month aggregates computed by the system for the Resource  # noqa: E501

        :param month: The month of this TheResourceSummaryDataAPIModel.  # noqa: E501
        :type: list[float]
        """

        self._month = month

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

        The 42 latest 1-month electricity cost values computed by the system for the Resource if enabled  # noqa: E501

        :return: The month_cost of this TheResourceSummaryDataAPIModel.  # noqa: E501
        :rtype: list[float]
        """
        return self._month_cost

    @month_cost.setter
    def month_cost(self, month_cost):
        """Sets the month_cost of this TheResourceSummaryDataAPIModel.

        The 42 latest 1-month electricity cost values computed by the system for the Resource if enabled  # noqa: E501

        :param month_cost: The month_cost of this TheResourceSummaryDataAPIModel.  # noqa: E501
        :type: list[float]
        """

        self._month_cost = month_cost

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

        for attr, _ in six.iteritems(self.swagger_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
        if issubclass(TheResourceSummaryDataAPIModel, dict):
            for key, value in self.items():
                result[key] = 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, TheResourceSummaryDataAPIModel):
            return False

        return self.__dict__ == other.__dict__

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