# coding: utf-8

"""
    herd

    No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)  # noqa: E501

    OpenAPI spec version: 0.178.0-SNAPSHOT
    Generated by: https://openapi-generator.tech
"""


import pprint
import re  # noqa: F401

import six


class Namespace(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 = {
        'namespace_code': 'str',
        'charge_code': 'str',
        's3_key_prefix': 'str'
    }

    attribute_map = {
        'namespace_code': 'namespaceCode',
        'charge_code': 'chargeCode',
        's3_key_prefix': 's3KeyPrefix'
    }

    def __init__(self, namespace_code=None, charge_code=None, s3_key_prefix=None):  # noqa: E501
        """Namespace - a model defined in OpenAPI"""  # noqa: E501

        self._namespace_code = None
        self._charge_code = None
        self._s3_key_prefix = None
        self.discriminator = None

        self.namespace_code = namespace_code
        if charge_code is not None:
            self.charge_code = charge_code
        if s3_key_prefix is not None:
            self.s3_key_prefix = s3_key_prefix

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

        The Namespace code  # noqa: E501

        :return: The namespace_code of this Namespace.  # noqa: E501
        :rtype: str
        """
        return self._namespace_code

    @namespace_code.setter
    def namespace_code(self, namespace_code):
        """Sets the namespace_code of this Namespace.

        The Namespace code  # noqa: E501

        :param namespace_code: The namespace_code of this Namespace.  # noqa: E501
        :type: str
        """
        if namespace_code is None:
            raise ValueError("Invalid value for `namespace_code`, must not be `None`")  # noqa: E501

        self._namespace_code = namespace_code

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

        An optional charge code that is associated with the Namespace  # noqa: E501

        :return: The charge_code of this Namespace.  # noqa: E501
        :rtype: str
        """
        return self._charge_code

    @charge_code.setter
    def charge_code(self, charge_code):
        """Sets the charge_code of this Namespace.

        An optional charge code that is associated with the Namespace  # noqa: E501

        :param charge_code: The charge_code of this Namespace.  # noqa: E501
        :type: str
        """

        self._charge_code = charge_code

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

        The S3 key prefix for the Namespace. This value is automatically generated by the system from the Namespace code. Note that the                   S3 key prefix will not contain a trailing \"directory\" separator and it will be up to the caller to append one as needed                  # noqa: E501

        :return: The s3_key_prefix of this Namespace.  # noqa: E501
        :rtype: str
        """
        return self._s3_key_prefix

    @s3_key_prefix.setter
    def s3_key_prefix(self, s3_key_prefix):
        """Sets the s3_key_prefix of this Namespace.

        The S3 key prefix for the Namespace. This value is automatically generated by the system from the Namespace code. Note that the                   S3 key prefix will not contain a trailing \"directory\" separator and it will be up to the caller to append one as needed                  # noqa: E501

        :param s3_key_prefix: The s3_key_prefix of this Namespace.  # noqa: E501
        :type: str
        """

        self._s3_key_prefix = s3_key_prefix

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

        return self.__dict__ == other.__dict__

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