# coding: utf-8

"""
    WILCO API

    This  API allows you to pull and push data with your WILCO deployment [https://github.com/flightwatching/wilco-api](https://github.com/flightwatching/wilco-api) or on  [www.flightwatching.com](www.flightwatching.com).   # noqa: E501

    OpenAPI spec version: 3.0.0
    Contact: contact@flightwatching.com
    Generated by: https://github.com/swagger-api/swagger-codegen.git

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
"""

import pprint
import re  # noqa: F401

import six

from swagger_client.models.map import Map  # noqa: F401,E501


class StatsV3IO(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 = {
        'not_classified': 'int',
        '_from': 'str',
        'tags_byte_count': 'Map',
        'network_byte_count': 'Map',
        'total_byte': 'int',
        'total_msg': 'int',
        'truncated': 'bool',
        'to': 'str'
    }

    attribute_map = {
        'not_classified': 'notClassified',
        '_from': 'from',
        'tags_byte_count': 'tagsByteCount',
        'network_byte_count': 'networkByteCount',
        'total_byte': 'totalByte',
        'total_msg': 'totalMsg',
        'truncated': 'truncated',
        'to': 'to'
    }

    def __init__(self, not_classified=None, _from=None, tags_byte_count=None, network_byte_count=None, total_byte=None, total_msg=None, truncated=None, to=None):  # noqa: E501
        """StatsV3IO - a model defined in Swagger"""  # noqa: E501

        self._not_classified = None
        self.__from = None
        self._tags_byte_count = None
        self._network_byte_count = None
        self._total_byte = None
        self._total_msg = None
        self._truncated = None
        self._to = None
        self.discriminator = None

        if not_classified is not None:
            self.not_classified = not_classified
        if _from is not None:
            self._from = _from
        if tags_byte_count is not None:
            self.tags_byte_count = tags_byte_count
        if network_byte_count is not None:
            self.network_byte_count = network_byte_count
        if total_byte is not None:
            self.total_byte = total_byte
        if total_msg is not None:
            self.total_msg = total_msg
        if truncated is not None:
            self.truncated = truncated
        if to is not None:
            self.to = to

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


        :return: The not_classified of this StatsV3IO.  # noqa: E501
        :rtype: int
        """
        return self._not_classified

    @not_classified.setter
    def not_classified(self, not_classified):
        """Sets the not_classified of this StatsV3IO.


        :param not_classified: The not_classified of this StatsV3IO.  # noqa: E501
        :type: int
        """

        self._not_classified = not_classified

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


        :return: The _from of this StatsV3IO.  # noqa: E501
        :rtype: str
        """
        return self.__from

    @_from.setter
    def _from(self, _from):
        """Sets the _from of this StatsV3IO.


        :param _from: The _from of this StatsV3IO.  # noqa: E501
        :type: str
        """

        self.__from = _from

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


        :return: The tags_byte_count of this StatsV3IO.  # noqa: E501
        :rtype: Map
        """
        return self._tags_byte_count

    @tags_byte_count.setter
    def tags_byte_count(self, tags_byte_count):
        """Sets the tags_byte_count of this StatsV3IO.


        :param tags_byte_count: The tags_byte_count of this StatsV3IO.  # noqa: E501
        :type: Map
        """

        self._tags_byte_count = tags_byte_count

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


        :return: The network_byte_count of this StatsV3IO.  # noqa: E501
        :rtype: Map
        """
        return self._network_byte_count

    @network_byte_count.setter
    def network_byte_count(self, network_byte_count):
        """Sets the network_byte_count of this StatsV3IO.


        :param network_byte_count: The network_byte_count of this StatsV3IO.  # noqa: E501
        :type: Map
        """

        self._network_byte_count = network_byte_count

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


        :return: The total_byte of this StatsV3IO.  # noqa: E501
        :rtype: int
        """
        return self._total_byte

    @total_byte.setter
    def total_byte(self, total_byte):
        """Sets the total_byte of this StatsV3IO.


        :param total_byte: The total_byte of this StatsV3IO.  # noqa: E501
        :type: int
        """

        self._total_byte = total_byte

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


        :return: The total_msg of this StatsV3IO.  # noqa: E501
        :rtype: int
        """
        return self._total_msg

    @total_msg.setter
    def total_msg(self, total_msg):
        """Sets the total_msg of this StatsV3IO.


        :param total_msg: The total_msg of this StatsV3IO.  # noqa: E501
        :type: int
        """

        self._total_msg = total_msg

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


        :return: The truncated of this StatsV3IO.  # noqa: E501
        :rtype: bool
        """
        return self._truncated

    @truncated.setter
    def truncated(self, truncated):
        """Sets the truncated of this StatsV3IO.


        :param truncated: The truncated of this StatsV3IO.  # noqa: E501
        :type: bool
        """

        self._truncated = truncated

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


        :return: The to of this StatsV3IO.  # noqa: E501
        :rtype: str
        """
        return self._to

    @to.setter
    def to(self, to):
        """Sets the to of this StatsV3IO.


        :param to: The to of this StatsV3IO.  # noqa: E501
        :type: str
        """

        self._to = to

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

        return self.__dict__ == other.__dict__

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