# coding: utf-8

"""
    DocuSign Rooms API - v2

    An API for an integrator to access the features of DocuSign Rooms  # noqa: E501

    OpenAPI spec version: v2
    Contact: devcenter@docusign.com
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""


import pprint
import re  # noqa: F401

import six


class FieldConfiguration(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 = {
        'max_value': 'float',
        'min_value': 'float',
        'multiple_of': 'float',
        'max_length': 'int',
        'min_length': 'int',
        'pattern': 'str',
        'is_publisher': 'bool',
        'depends_on': 'list[DependsOn]',
        'options': 'list[SelectListFieldOption]'
    }

    attribute_map = {
        'max_value': 'maxValue',
        'min_value': 'minValue',
        'multiple_of': 'multipleOf',
        'max_length': 'maxLength',
        'min_length': 'minLength',
        'pattern': 'pattern',
        'is_publisher': 'isPublisher',
        'depends_on': 'dependsOn',
        'options': 'options'
    }

    def __init__(self, max_value=None, min_value=None, multiple_of=None, max_length=None, min_length=None, pattern=None, is_publisher=None, depends_on=None, options=None):  # noqa: E501
        """FieldConfiguration - a model defined in Swagger"""  # noqa: E501

        self._max_value = None
        self._min_value = None
        self._multiple_of = None
        self._max_length = None
        self._min_length = None
        self._pattern = None
        self._is_publisher = None
        self._depends_on = None
        self._options = None
        self.discriminator = None

        if max_value is not None:
            self.max_value = max_value
        if min_value is not None:
            self.min_value = min_value
        if multiple_of is not None:
            self.multiple_of = multiple_of
        if max_length is not None:
            self.max_length = max_length
        if min_length is not None:
            self.min_length = min_length
        if pattern is not None:
            self.pattern = pattern
        if is_publisher is not None:
            self.is_publisher = is_publisher
        if depends_on is not None:
            self.depends_on = depends_on
        if options is not None:
            self.options = options

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


        :return: The max_value of this FieldConfiguration.  # noqa: E501
        :rtype: float
        """
        return self._max_value

    @max_value.setter
    def max_value(self, max_value):
        """Sets the max_value of this FieldConfiguration.


        :param max_value: The max_value of this FieldConfiguration.  # noqa: E501
        :type: float
        """

        self._max_value = max_value

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


        :return: The min_value of this FieldConfiguration.  # noqa: E501
        :rtype: float
        """
        return self._min_value

    @min_value.setter
    def min_value(self, min_value):
        """Sets the min_value of this FieldConfiguration.


        :param min_value: The min_value of this FieldConfiguration.  # noqa: E501
        :type: float
        """

        self._min_value = min_value

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


        :return: The multiple_of of this FieldConfiguration.  # noqa: E501
        :rtype: float
        """
        return self._multiple_of

    @multiple_of.setter
    def multiple_of(self, multiple_of):
        """Sets the multiple_of of this FieldConfiguration.


        :param multiple_of: The multiple_of of this FieldConfiguration.  # noqa: E501
        :type: float
        """

        self._multiple_of = multiple_of

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


        :return: The max_length of this FieldConfiguration.  # noqa: E501
        :rtype: int
        """
        return self._max_length

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


        :param max_length: The max_length of this FieldConfiguration.  # noqa: E501
        :type: int
        """

        self._max_length = max_length

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


        :return: The min_length of this FieldConfiguration.  # noqa: E501
        :rtype: int
        """
        return self._min_length

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


        :param min_length: The min_length of this FieldConfiguration.  # noqa: E501
        :type: int
        """

        self._min_length = min_length

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


        :return: The pattern of this FieldConfiguration.  # noqa: E501
        :rtype: str
        """
        return self._pattern

    @pattern.setter
    def pattern(self, pattern):
        """Sets the pattern of this FieldConfiguration.


        :param pattern: The pattern of this FieldConfiguration.  # noqa: E501
        :type: str
        """

        self._pattern = pattern

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


        :return: The is_publisher of this FieldConfiguration.  # noqa: E501
        :rtype: bool
        """
        return self._is_publisher

    @is_publisher.setter
    def is_publisher(self, is_publisher):
        """Sets the is_publisher of this FieldConfiguration.


        :param is_publisher: The is_publisher of this FieldConfiguration.  # noqa: E501
        :type: bool
        """

        self._is_publisher = is_publisher

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


        :return: The depends_on of this FieldConfiguration.  # noqa: E501
        :rtype: list[DependsOn]
        """
        return self._depends_on

    @depends_on.setter
    def depends_on(self, depends_on):
        """Sets the depends_on of this FieldConfiguration.


        :param depends_on: The depends_on of this FieldConfiguration.  # noqa: E501
        :type: list[DependsOn]
        """

        self._depends_on = depends_on

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


        :return: The options of this FieldConfiguration.  # noqa: E501
        :rtype: list[SelectListFieldOption]
        """
        return self._options

    @options.setter
    def options(self, options):
        """Sets the options of this FieldConfiguration.


        :param options: The options of this FieldConfiguration.  # noqa: E501
        :type: list[SelectListFieldOption]
        """

        self._options = options

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

        return self.__dict__ == other.__dict__

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