# coding: utf-8

"""
    Metadata API

    The Metadata API has operations that retrieve configuration details pertaining to the different eBay marketplaces. In addition to marketplace information, the API also has operations that get information that helps sellers list items on eBay.  # noqa: E501

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

import pprint
import re  # noqa: F401

import six

class PackageLimits(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 = {
        'dimension_unit': 'str',
        'max_girth': 'float',
        'max_height': 'float',
        'max_length': 'float',
        'max_weight': 'float',
        'max_width': 'float',
        'min_girth': 'float',
        'min_height': 'float',
        'min_length': 'float',
        'min_weight': 'float',
        'min_width': 'float',
        'weight_unit': 'str'
    }

    attribute_map = {
        'dimension_unit': 'dimensionUnit',
        'max_girth': 'maxGirth',
        'max_height': 'maxHeight',
        'max_length': 'maxLength',
        'max_weight': 'maxWeight',
        'max_width': 'maxWidth',
        'min_girth': 'minGirth',
        'min_height': 'minHeight',
        'min_length': 'minLength',
        'min_weight': 'minWeight',
        'min_width': 'minWidth',
        'weight_unit': 'weightUnit'
    }

    def __init__(self, dimension_unit=None, max_girth=None, max_height=None, max_length=None, max_weight=None, max_width=None, min_girth=None, min_height=None, min_length=None, min_weight=None, min_width=None, weight_unit=None):  # noqa: E501
        """PackageLimits - a model defined in Swagger"""  # noqa: E501
        self._dimension_unit = None
        self._max_girth = None
        self._max_height = None
        self._max_length = None
        self._max_weight = None
        self._max_width = None
        self._min_girth = None
        self._min_height = None
        self._min_length = None
        self._min_weight = None
        self._min_width = None
        self._weight_unit = None
        self.discriminator = None
        if dimension_unit is not None:
            self.dimension_unit = dimension_unit
        if max_girth is not None:
            self.max_girth = max_girth
        if max_height is not None:
            self.max_height = max_height
        if max_length is not None:
            self.max_length = max_length
        if max_weight is not None:
            self.max_weight = max_weight
        if max_width is not None:
            self.max_width = max_width
        if min_girth is not None:
            self.min_girth = min_girth
        if min_height is not None:
            self.min_height = min_height
        if min_length is not None:
            self.min_length = min_length
        if min_weight is not None:
            self.min_weight = min_weight
        if min_width is not None:
            self.min_width = min_width
        if weight_unit is not None:
            self.weight_unit = weight_unit

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

        Unit of dimensional measurement, for example <code>INCH</code> or <code>CENTIMETER</code>.   # noqa: E501

        :return: The dimension_unit of this PackageLimits.  # noqa: E501
        :rtype: str
        """
        return self._dimension_unit

    @dimension_unit.setter
    def dimension_unit(self, dimension_unit):
        """Sets the dimension_unit of this PackageLimits.

        Unit of dimensional measurement, for example <code>INCH</code> or <code>CENTIMETER</code>.   # noqa: E501

        :param dimension_unit: The dimension_unit of this PackageLimits.  # noqa: E501
        :type: str
        """

        self._dimension_unit = dimension_unit

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

        The maximum girth allowed for a package shipped through the corresponding shipping service, as measured in units of <a href=\"/api-docs/sell/metadata/resources/shipping:marketplace/methods/getShippingServices#response.shippingServices.packageLimits.dimensionUnit\">dimensionUnit</a>.  # noqa: E501

        :return: The max_girth of this PackageLimits.  # noqa: E501
        :rtype: float
        """
        return self._max_girth

    @max_girth.setter
    def max_girth(self, max_girth):
        """Sets the max_girth of this PackageLimits.

        The maximum girth allowed for a package shipped through the corresponding shipping service, as measured in units of <a href=\"/api-docs/sell/metadata/resources/shipping:marketplace/methods/getShippingServices#response.shippingServices.packageLimits.dimensionUnit\">dimensionUnit</a>.  # noqa: E501

        :param max_girth: The max_girth of this PackageLimits.  # noqa: E501
        :type: float
        """

        self._max_girth = max_girth

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

        The maximum height allowed for a package shipped through the corresponding shipping service, as measured in units of <a href=\"/api-docs/sell/metadata/resources/shipping:marketplace/methods/getShippingServices#response.shippingServices.packageLimits.dimensionUnit\">dimensionUnit</a>.  # noqa: E501

        :return: The max_height of this PackageLimits.  # noqa: E501
        :rtype: float
        """
        return self._max_height

    @max_height.setter
    def max_height(self, max_height):
        """Sets the max_height of this PackageLimits.

        The maximum height allowed for a package shipped through the corresponding shipping service, as measured in units of <a href=\"/api-docs/sell/metadata/resources/shipping:marketplace/methods/getShippingServices#response.shippingServices.packageLimits.dimensionUnit\">dimensionUnit</a>.  # noqa: E501

        :param max_height: The max_height of this PackageLimits.  # noqa: E501
        :type: float
        """

        self._max_height = max_height

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

        The maximum length allowed for a package shipped through the corresponding shipping service, as measured in units of <a href=\"/api-docs/sell/metadata/resources/shipping:marketplace/methods/getShippingServices#response.shippingServices.packageLimits.dimensionUnit\">dimensionUnit</a>.  # noqa: E501

        :return: The max_length of this PackageLimits.  # noqa: E501
        :rtype: float
        """
        return self._max_length

    @max_length.setter
    def max_length(self, max_length):
        """Sets the max_length of this PackageLimits.

        The maximum length allowed for a package shipped through the corresponding shipping service, as measured in units of <a href=\"/api-docs/sell/metadata/resources/shipping:marketplace/methods/getShippingServices#response.shippingServices.packageLimits.dimensionUnit\">dimensionUnit</a>.  # noqa: E501

        :param max_length: The max_length of this PackageLimits.  # noqa: E501
        :type: float
        """

        self._max_length = max_length

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

        The maximum weight allowed for a package shipped through the corresponding shipping service, as measured in units of <a href=\"/api-docs/sell/metadata/resources/shipping:marketplace/methods/getShippingServices#response.shippingServices.packageLimits.weightUnit\">weightUnit</a>.  # noqa: E501

        :return: The max_weight of this PackageLimits.  # noqa: E501
        :rtype: float
        """
        return self._max_weight

    @max_weight.setter
    def max_weight(self, max_weight):
        """Sets the max_weight of this PackageLimits.

        The maximum weight allowed for a package shipped through the corresponding shipping service, as measured in units of <a href=\"/api-docs/sell/metadata/resources/shipping:marketplace/methods/getShippingServices#response.shippingServices.packageLimits.weightUnit\">weightUnit</a>.  # noqa: E501

        :param max_weight: The max_weight of this PackageLimits.  # noqa: E501
        :type: float
        """

        self._max_weight = max_weight

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

        The maximum width allowed for a package shipped through the corresponding shipping service, as measured in units of <a href=\"/api-docs/sell/metadata/resources/shipping:marketplace/methods/getShippingServices#response.shippingServices.packageLimits.dimensionUnit\">dimensionUnit</a>.  # noqa: E501

        :return: The max_width of this PackageLimits.  # noqa: E501
        :rtype: float
        """
        return self._max_width

    @max_width.setter
    def max_width(self, max_width):
        """Sets the max_width of this PackageLimits.

        The maximum width allowed for a package shipped through the corresponding shipping service, as measured in units of <a href=\"/api-docs/sell/metadata/resources/shipping:marketplace/methods/getShippingServices#response.shippingServices.packageLimits.dimensionUnit\">dimensionUnit</a>.  # noqa: E501

        :param max_width: The max_width of this PackageLimits.  # noqa: E501
        :type: float
        """

        self._max_width = max_width

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

        The minimum girth allowed for a package shipped through the corresponding shipping service, as measured in units of <a href=\"/api-docs/sell/metadata/resources/shipping:marketplace/methods/getShippingServices#response.shippingServices.packageLimits.dimensionUnit\">dimensionUnit</a>.  # noqa: E501

        :return: The min_girth of this PackageLimits.  # noqa: E501
        :rtype: float
        """
        return self._min_girth

    @min_girth.setter
    def min_girth(self, min_girth):
        """Sets the min_girth of this PackageLimits.

        The minimum girth allowed for a package shipped through the corresponding shipping service, as measured in units of <a href=\"/api-docs/sell/metadata/resources/shipping:marketplace/methods/getShippingServices#response.shippingServices.packageLimits.dimensionUnit\">dimensionUnit</a>.  # noqa: E501

        :param min_girth: The min_girth of this PackageLimits.  # noqa: E501
        :type: float
        """

        self._min_girth = min_girth

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

        The minimum height allowed for a package shipped through the corresponding shipping service, as measured in units of <a href=\"/api-docs/sell/metadata/resources/shipping:marketplace/methods/getShippingServices#response.shippingServices.packageLimits.dimensionUnit\">dimensionUnit</a>.  # noqa: E501

        :return: The min_height of this PackageLimits.  # noqa: E501
        :rtype: float
        """
        return self._min_height

    @min_height.setter
    def min_height(self, min_height):
        """Sets the min_height of this PackageLimits.

        The minimum height allowed for a package shipped through the corresponding shipping service, as measured in units of <a href=\"/api-docs/sell/metadata/resources/shipping:marketplace/methods/getShippingServices#response.shippingServices.packageLimits.dimensionUnit\">dimensionUnit</a>.  # noqa: E501

        :param min_height: The min_height of this PackageLimits.  # noqa: E501
        :type: float
        """

        self._min_height = min_height

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

        The minimum length allowed for a package shipped through the corresponding shipping service, as measured in units of <a href=\"/api-docs/sell/metadata/resources/shipping:marketplace/methods/getShippingServices#response.shippingServices.packageLimits.dimensionUnit\">dimensionUnit</a>.  # noqa: E501

        :return: The min_length of this PackageLimits.  # noqa: E501
        :rtype: float
        """
        return self._min_length

    @min_length.setter
    def min_length(self, min_length):
        """Sets the min_length of this PackageLimits.

        The minimum length allowed for a package shipped through the corresponding shipping service, as measured in units of <a href=\"/api-docs/sell/metadata/resources/shipping:marketplace/methods/getShippingServices#response.shippingServices.packageLimits.dimensionUnit\">dimensionUnit</a>.  # noqa: E501

        :param min_length: The min_length of this PackageLimits.  # noqa: E501
        :type: float
        """

        self._min_length = min_length

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

        The minimum weight allowed for a package shipped through the corresponding shipping service, as measured in units of <a href=\"/api-docs/sell/metadata/resources/shipping:marketplace/methods/getShippingServices#response.shippingServices.packageLimits.weightUnit\">weightUnit</a>.  # noqa: E501

        :return: The min_weight of this PackageLimits.  # noqa: E501
        :rtype: float
        """
        return self._min_weight

    @min_weight.setter
    def min_weight(self, min_weight):
        """Sets the min_weight of this PackageLimits.

        The minimum weight allowed for a package shipped through the corresponding shipping service, as measured in units of <a href=\"/api-docs/sell/metadata/resources/shipping:marketplace/methods/getShippingServices#response.shippingServices.packageLimits.weightUnit\">weightUnit</a>.  # noqa: E501

        :param min_weight: The min_weight of this PackageLimits.  # noqa: E501
        :type: float
        """

        self._min_weight = min_weight

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

        The minimum width allowed for a package shipped through the corresponding shipping service, as measured in units of <a href=\"/api-docs/sell/metadata/resources/shipping:marketplace/methods/getShippingServices#response.shippingServices.packageLimits.dimensionUnit\">dimensionUnit</a>.  # noqa: E501

        :return: The min_width of this PackageLimits.  # noqa: E501
        :rtype: float
        """
        return self._min_width

    @min_width.setter
    def min_width(self, min_width):
        """Sets the min_width of this PackageLimits.

        The minimum width allowed for a package shipped through the corresponding shipping service, as measured in units of <a href=\"/api-docs/sell/metadata/resources/shipping:marketplace/methods/getShippingServices#response.shippingServices.packageLimits.dimensionUnit\">dimensionUnit</a>.  # noqa: E501

        :param min_width: The min_width of this PackageLimits.  # noqa: E501
        :type: float
        """

        self._min_width = min_width

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

        Unit of weight measurement, for example <code>KILOGRAM</code> or <code>OUNCE</code>.   # noqa: E501

        :return: The weight_unit of this PackageLimits.  # noqa: E501
        :rtype: str
        """
        return self._weight_unit

    @weight_unit.setter
    def weight_unit(self, weight_unit):
        """Sets the weight_unit of this PackageLimits.

        Unit of weight measurement, for example <code>KILOGRAM</code> or <code>OUNCE</code>.   # noqa: E501

        :param weight_unit: The weight_unit of this PackageLimits.  # noqa: E501
        :type: str
        """

        self._weight_unit = weight_unit

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

        return self.__dict__ == other.__dict__

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