# coding: utf-8

"""
    teralytic

    The Teralytic API allows clients to manage their organization, view their fields and and probes, and query sensor readings and analytics.  For sandbox testing you may use the api key: `swagger.teralytic.io`   # noqa: E501

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


import pprint
import re  # noqa: F401

import six

from teralytic.models.reading_data import ReadingData  # noqa: F401,E501


class WeatherData(ReadingData):
    """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
        if issubclass(WeatherData, 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, WeatherData):
            return False

        return self.__dict__ == other.__dict__

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