# coding: utf-8

"""
    Aliro Quantum App

    This is an api for the Aliro Quantum App  # noqa: E501

    The version of the OpenAPI document: 1.0.0
    Contact: nick@aliroquantum.com
    Generated by: https://openapi-generator.tech
"""


import pprint
import re  # noqa: F401

import six

from aliro_quantum.configuration import Configuration


class ResultsData(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 = {
        'empirical_sso': 'float',
        'end_datetime': 'str',
        'measurements': 'ResultsDataMeasurements',
        'runtime': 'float',
        'start_datetime': 'str'
    }

    attribute_map = {
        'empirical_sso': 'empiricalSso',
        'end_datetime': 'endDatetime',
        'measurements': 'measurements',
        'runtime': 'runtime',
        'start_datetime': 'startDatetime'
    }

    def __init__(self, empirical_sso=None, end_datetime=None, measurements=None, runtime=None, start_datetime=None, local_vars_configuration=None):  # noqa: E501
        """ResultsData - 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._empirical_sso = None
        self._end_datetime = None
        self._measurements = None
        self._runtime = None
        self._start_datetime = None
        self.discriminator = None

        if empirical_sso is not None:
            self.empirical_sso = empirical_sso
        if end_datetime is not None:
            self.end_datetime = end_datetime
        if measurements is not None:
            self.measurements = measurements
        if runtime is not None:
            self.runtime = runtime
        if start_datetime is not None:
            self.start_datetime = start_datetime

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


        :return: The empirical_sso of this ResultsData.  # noqa: E501
        :rtype: float
        """
        return self._empirical_sso

    @empirical_sso.setter
    def empirical_sso(self, empirical_sso):
        """Sets the empirical_sso of this ResultsData.


        :param empirical_sso: The empirical_sso of this ResultsData.  # noqa: E501
        :type: float
        """

        self._empirical_sso = empirical_sso

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


        :return: The end_datetime of this ResultsData.  # noqa: E501
        :rtype: str
        """
        return self._end_datetime

    @end_datetime.setter
    def end_datetime(self, end_datetime):
        """Sets the end_datetime of this ResultsData.


        :param end_datetime: The end_datetime of this ResultsData.  # noqa: E501
        :type: str
        """

        self._end_datetime = end_datetime

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


        :return: The measurements of this ResultsData.  # noqa: E501
        :rtype: ResultsDataMeasurements
        """
        return self._measurements

    @measurements.setter
    def measurements(self, measurements):
        """Sets the measurements of this ResultsData.


        :param measurements: The measurements of this ResultsData.  # noqa: E501
        :type: ResultsDataMeasurements
        """

        self._measurements = measurements

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

        This is the duration of all pirate runs in milliseconds. This differs from start and end datetime, because the datetimes indicate the beginning of the  first run   to the end of the last run.   # noqa: E501

        :return: The runtime of this ResultsData.  # noqa: E501
        :rtype: float
        """
        return self._runtime

    @runtime.setter
    def runtime(self, runtime):
        """Sets the runtime of this ResultsData.

        This is the duration of all pirate runs in milliseconds. This differs from start and end datetime, because the datetimes indicate the beginning of the  first run   to the end of the last run.   # noqa: E501

        :param runtime: The runtime of this ResultsData.  # noqa: E501
        :type: float
        """

        self._runtime = runtime

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


        :return: The start_datetime of this ResultsData.  # noqa: E501
        :rtype: str
        """
        return self._start_datetime

    @start_datetime.setter
    def start_datetime(self, start_datetime):
        """Sets the start_datetime of this ResultsData.


        :param start_datetime: The start_datetime of this ResultsData.  # noqa: E501
        :type: str
        """

        self._start_datetime = start_datetime

    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, ResultsData):
            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, ResultsData):
            return True

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