# coding: utf-8

"""
    teralytic

    Teralytic-API allows customers and partners to view their probes, sensor readings for each, as well as analytics and calculations from Teralytic algorithms.  # noqa: E501

    OpenAPI spec version: 1.0.5
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""


import pprint
import re  # noqa: F401

import six


class WeatherData(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 = {
        'weather_summary': 'str',
        'precip_type': 'str',
        'apparent_temp': 'float',
        'cloud_cover': 'float',
        'dew_point': 'float',
        'humidity': 'float',
        'ozone': 'float',
        'precip_intensity': 'float',
        'precip_probability': 'float',
        'pressure': 'float',
        'temperature': 'float',
        'time': 'float',
        'uv_index': 'int',
        'wind_bearing': 'int',
        'wind_gust': 'float',
        'wind_speed': 'float',
        'visibility': 'float'
    }

    attribute_map = {
        'weather_summary': 'weather_summary',
        'precip_type': 'precip_type',
        'apparent_temp': 'apparent_temp',
        'cloud_cover': 'cloud_cover',
        'dew_point': 'dew_point',
        'humidity': 'humidity',
        'ozone': 'ozone',
        'precip_intensity': 'precip_intensity',
        'precip_probability': 'precip_probability',
        'pressure': 'pressure',
        'temperature': 'temperature',
        'time': 'time',
        'uv_index': 'uv_index',
        'wind_bearing': 'wind_bearing',
        'wind_gust': 'wind_gust',
        'wind_speed': 'wind_speed',
        'visibility': 'visibility'
    }

    def __init__(self, weather_summary=None, precip_type=None, apparent_temp=None, cloud_cover=None, dew_point=None, humidity=None, ozone=None, precip_intensity=None, precip_probability=None, pressure=None, temperature=None, time=None, uv_index=None, wind_bearing=None, wind_gust=None, wind_speed=None, visibility=None):  # noqa: E501
        """WeatherData - a model defined in Swagger"""  # noqa: E501

        self._weather_summary = None
        self._precip_type = None
        self._apparent_temp = None
        self._cloud_cover = None
        self._dew_point = None
        self._humidity = None
        self._ozone = None
        self._precip_intensity = None
        self._precip_probability = None
        self._pressure = None
        self._temperature = None
        self._time = None
        self._uv_index = None
        self._wind_bearing = None
        self._wind_gust = None
        self._wind_speed = None
        self._visibility = None
        self.discriminator = None

        if weather_summary is not None:
            self.weather_summary = weather_summary
        if precip_type is not None:
            self.precip_type = precip_type
        if apparent_temp is not None:
            self.apparent_temp = apparent_temp
        if cloud_cover is not None:
            self.cloud_cover = cloud_cover
        if dew_point is not None:
            self.dew_point = dew_point
        if humidity is not None:
            self.humidity = humidity
        if ozone is not None:
            self.ozone = ozone
        if precip_intensity is not None:
            self.precip_intensity = precip_intensity
        if precip_probability is not None:
            self.precip_probability = precip_probability
        if pressure is not None:
            self.pressure = pressure
        if temperature is not None:
            self.temperature = temperature
        if time is not None:
            self.time = time
        if uv_index is not None:
            self.uv_index = uv_index
        if wind_bearing is not None:
            self.wind_bearing = wind_bearing
        if wind_gust is not None:
            self.wind_gust = wind_gust
        if wind_speed is not None:
            self.wind_speed = wind_speed
        if visibility is not None:
            self.visibility = visibility

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

        Weather Summary  # noqa: E501

        :return: The weather_summary of this WeatherData.  # noqa: E501
        :rtype: str
        """
        return self._weather_summary

    @weather_summary.setter
    def weather_summary(self, weather_summary):
        """Sets the weather_summary of this WeatherData.

        Weather Summary  # noqa: E501

        :param weather_summary: The weather_summary of this WeatherData.  # noqa: E501
        :type: str
        """

        self._weather_summary = weather_summary

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

        Precipitation Type  # noqa: E501

        :return: The precip_type of this WeatherData.  # noqa: E501
        :rtype: str
        """
        return self._precip_type

    @precip_type.setter
    def precip_type(self, precip_type):
        """Sets the precip_type of this WeatherData.

        Precipitation Type  # noqa: E501

        :param precip_type: The precip_type of this WeatherData.  # noqa: E501
        :type: str
        """

        self._precip_type = precip_type

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

        Apparent Temperature  # noqa: E501

        :return: The apparent_temp of this WeatherData.  # noqa: E501
        :rtype: float
        """
        return self._apparent_temp

    @apparent_temp.setter
    def apparent_temp(self, apparent_temp):
        """Sets the apparent_temp of this WeatherData.

        Apparent Temperature  # noqa: E501

        :param apparent_temp: The apparent_temp of this WeatherData.  # noqa: E501
        :type: float
        """

        self._apparent_temp = apparent_temp

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

        Cloud Cover  # noqa: E501

        :return: The cloud_cover of this WeatherData.  # noqa: E501
        :rtype: float
        """
        return self._cloud_cover

    @cloud_cover.setter
    def cloud_cover(self, cloud_cover):
        """Sets the cloud_cover of this WeatherData.

        Cloud Cover  # noqa: E501

        :param cloud_cover: The cloud_cover of this WeatherData.  # noqa: E501
        :type: float
        """

        self._cloud_cover = cloud_cover

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

        Dew Point  # noqa: E501

        :return: The dew_point of this WeatherData.  # noqa: E501
        :rtype: float
        """
        return self._dew_point

    @dew_point.setter
    def dew_point(self, dew_point):
        """Sets the dew_point of this WeatherData.

        Dew Point  # noqa: E501

        :param dew_point: The dew_point of this WeatherData.  # noqa: E501
        :type: float
        """

        self._dew_point = dew_point

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

        Humidity  # noqa: E501

        :return: The humidity of this WeatherData.  # noqa: E501
        :rtype: float
        """
        return self._humidity

    @humidity.setter
    def humidity(self, humidity):
        """Sets the humidity of this WeatherData.

        Humidity  # noqa: E501

        :param humidity: The humidity of this WeatherData.  # noqa: E501
        :type: float
        """

        self._humidity = humidity

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

        Ozone Rating  # noqa: E501

        :return: The ozone of this WeatherData.  # noqa: E501
        :rtype: float
        """
        return self._ozone

    @ozone.setter
    def ozone(self, ozone):
        """Sets the ozone of this WeatherData.

        Ozone Rating  # noqa: E501

        :param ozone: The ozone of this WeatherData.  # noqa: E501
        :type: float
        """

        self._ozone = ozone

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

        Precipitation Intesity  # noqa: E501

        :return: The precip_intensity of this WeatherData.  # noqa: E501
        :rtype: float
        """
        return self._precip_intensity

    @precip_intensity.setter
    def precip_intensity(self, precip_intensity):
        """Sets the precip_intensity of this WeatherData.

        Precipitation Intesity  # noqa: E501

        :param precip_intensity: The precip_intensity of this WeatherData.  # noqa: E501
        :type: float
        """

        self._precip_intensity = precip_intensity

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

        Precipitation Probability  # noqa: E501

        :return: The precip_probability of this WeatherData.  # noqa: E501
        :rtype: float
        """
        return self._precip_probability

    @precip_probability.setter
    def precip_probability(self, precip_probability):
        """Sets the precip_probability of this WeatherData.

        Precipitation Probability  # noqa: E501

        :param precip_probability: The precip_probability of this WeatherData.  # noqa: E501
        :type: float
        """

        self._precip_probability = precip_probability

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

        Barometric Pressure  # noqa: E501

        :return: The pressure of this WeatherData.  # noqa: E501
        :rtype: float
        """
        return self._pressure

    @pressure.setter
    def pressure(self, pressure):
        """Sets the pressure of this WeatherData.

        Barometric Pressure  # noqa: E501

        :param pressure: The pressure of this WeatherData.  # noqa: E501
        :type: float
        """

        self._pressure = pressure

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

        Temperature  # noqa: E501

        :return: The temperature of this WeatherData.  # noqa: E501
        :rtype: float
        """
        return self._temperature

    @temperature.setter
    def temperature(self, temperature):
        """Sets the temperature of this WeatherData.

        Temperature  # noqa: E501

        :param temperature: The temperature of this WeatherData.  # noqa: E501
        :type: float
        """

        self._temperature = temperature

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

        Weather Sample Time (epoch)  # noqa: E501

        :return: The time of this WeatherData.  # noqa: E501
        :rtype: float
        """
        return self._time

    @time.setter
    def time(self, time):
        """Sets the time of this WeatherData.

        Weather Sample Time (epoch)  # noqa: E501

        :param time: The time of this WeatherData.  # noqa: E501
        :type: float
        """

        self._time = time

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

        UV Index  # noqa: E501

        :return: The uv_index of this WeatherData.  # noqa: E501
        :rtype: int
        """
        return self._uv_index

    @uv_index.setter
    def uv_index(self, uv_index):
        """Sets the uv_index of this WeatherData.

        UV Index  # noqa: E501

        :param uv_index: The uv_index of this WeatherData.  # noqa: E501
        :type: int
        """

        self._uv_index = uv_index

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

        Wind Bearing  # noqa: E501

        :return: The wind_bearing of this WeatherData.  # noqa: E501
        :rtype: int
        """
        return self._wind_bearing

    @wind_bearing.setter
    def wind_bearing(self, wind_bearing):
        """Sets the wind_bearing of this WeatherData.

        Wind Bearing  # noqa: E501

        :param wind_bearing: The wind_bearing of this WeatherData.  # noqa: E501
        :type: int
        """

        self._wind_bearing = wind_bearing

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

        Wind Gust  # noqa: E501

        :return: The wind_gust of this WeatherData.  # noqa: E501
        :rtype: float
        """
        return self._wind_gust

    @wind_gust.setter
    def wind_gust(self, wind_gust):
        """Sets the wind_gust of this WeatherData.

        Wind Gust  # noqa: E501

        :param wind_gust: The wind_gust of this WeatherData.  # noqa: E501
        :type: float
        """

        self._wind_gust = wind_gust

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

        Wind Speed  # noqa: E501

        :return: The wind_speed of this WeatherData.  # noqa: E501
        :rtype: float
        """
        return self._wind_speed

    @wind_speed.setter
    def wind_speed(self, wind_speed):
        """Sets the wind_speed of this WeatherData.

        Wind Speed  # noqa: E501

        :param wind_speed: The wind_speed of this WeatherData.  # noqa: E501
        :type: float
        """

        self._wind_speed = wind_speed

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

        Visibility  # noqa: E501

        :return: The visibility of this WeatherData.  # noqa: E501
        :rtype: float
        """
        return self._visibility

    @visibility.setter
    def visibility(self, visibility):
        """Sets the visibility of this WeatherData.

        Visibility  # noqa: E501

        :param visibility: The visibility of this WeatherData.  # noqa: E501
        :type: float
        """

        self._visibility = visibility

    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

        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, WeatherData):
            return False

        return self.__dict__ == other.__dict__

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