# coding: utf-8

"""
    Seeq REST API

    No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)  # noqa: E501

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

from pprint import pformat
from six import iteritems
import re


class ColumnRuleFormulaCreatorInputV1(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 = {
        'column_index_data_id': 'int',
        'column_indexes': 'list[int]',
        'description': 'str',
        'formula': 'str',
        'identity_id': 'str',
        'name': 'str',
        'parameters': 'list[str]',
        'permission_string': 'str',
        'scoped_to': 'str'
    }

    attribute_map = {
        'column_index_data_id': 'columnIndexDataId',
        'column_indexes': 'columnIndexes',
        'description': 'description',
        'formula': 'formula',
        'identity_id': 'identityId',
        'name': 'name',
        'parameters': 'parameters',
        'permission_string': 'permissionString',
        'scoped_to': 'scopedTo'
    }

    def __init__(self, column_index_data_id=None, column_indexes=None, description=None, formula=None, identity_id=None, name=None, parameters=None, permission_string=None, scoped_to=None):
        """
        ColumnRuleFormulaCreatorInputV1 - a model defined in Swagger
        """

        self._column_index_data_id = None
        self._column_indexes = None
        self._description = None
        self._formula = None
        self._identity_id = None
        self._name = None
        self._parameters = None
        self._permission_string = None
        self._scoped_to = None

        if column_index_data_id is not None:
          self.column_index_data_id = column_index_data_id
        if column_indexes is not None:
          self.column_indexes = column_indexes
        if description is not None:
          self.description = description
        if formula is not None:
          self.formula = formula
        if identity_id is not None:
          self.identity_id = identity_id
        if name is not None:
          self.name = name
        if parameters is not None:
          self.parameters = parameters
        if permission_string is not None:
          self.permission_string = permission_string
        if scoped_to is not None:
          self.scoped_to = scoped_to

    @property
    def column_index_data_id(self):
        """
        Gets the column_index_data_id of this ColumnRuleFormulaCreatorInputV1.
        The optional index of the column that should be used to create the data ID for the formula. The column index is 1-based. If this is provided, created formula may not be unique across the column. Otherwise, a new asset will be created per row.

        :return: The column_index_data_id of this ColumnRuleFormulaCreatorInputV1.
        :rtype: int
        """
        return self._column_index_data_id

    @column_index_data_id.setter
    def column_index_data_id(self, column_index_data_id):
        """
        Sets the column_index_data_id of this ColumnRuleFormulaCreatorInputV1.
        The optional index of the column that should be used to create the data ID for the formula. The column index is 1-based. If this is provided, created formula may not be unique across the column. Otherwise, a new asset will be created per row.

        :param column_index_data_id: The column_index_data_id of this ColumnRuleFormulaCreatorInputV1.
        :type: int
        """

        self._column_index_data_id = column_index_data_id

    @property
    def column_indexes(self):
        """
        Gets the column_indexes of this ColumnRuleFormulaCreatorInputV1.
        The indexes of the columns that should be used as item inputs to the formula. A column index is 1-based

        :return: The column_indexes of this ColumnRuleFormulaCreatorInputV1.
        :rtype: list[int]
        """
        return self._column_indexes

    @column_indexes.setter
    def column_indexes(self, column_indexes):
        """
        Sets the column_indexes of this ColumnRuleFormulaCreatorInputV1.
        The indexes of the columns that should be used as item inputs to the formula. A column index is 1-based

        :param column_indexes: The column_indexes of this ColumnRuleFormulaCreatorInputV1.
        :type: list[int]
        """
        if column_indexes is None:
            raise ValueError("Invalid value for `column_indexes`, must not be `None`")

        self._column_indexes = column_indexes

    @property
    def description(self):
        """
        Gets the description of this ColumnRuleFormulaCreatorInputV1.
        Clarifying information or other plain language description for items created by this rule. An input of just whitespace is equivalent to a null input.

        :return: The description of this ColumnRuleFormulaCreatorInputV1.
        :rtype: str
        """
        return self._description

    @description.setter
    def description(self, description):
        """
        Sets the description of this ColumnRuleFormulaCreatorInputV1.
        Clarifying information or other plain language description for items created by this rule. An input of just whitespace is equivalent to a null input.

        :param description: The description of this ColumnRuleFormulaCreatorInputV1.
        :type: str
        """

        self._description = description

    @property
    def formula(self):
        """
        Gets the formula of this ColumnRuleFormulaCreatorInputV1.
        The formula that represents the body of the function.

        :return: The formula of this ColumnRuleFormulaCreatorInputV1.
        :rtype: str
        """
        return self._formula

    @formula.setter
    def formula(self, formula):
        """
        Sets the formula of this ColumnRuleFormulaCreatorInputV1.
        The formula that represents the body of the function.

        :param formula: The formula of this ColumnRuleFormulaCreatorInputV1.
        :type: str
        """
        if formula is None:
            raise ValueError("Invalid value for `formula`, must not be `None`")

        self._formula = formula

    @property
    def identity_id(self):
        """
        Gets the identity_id of this ColumnRuleFormulaCreatorInputV1.
        The ID of the identity for which permissions will be set on items created by this rule. A null value means that the items created by this rule will have the same permissions as its associated datasource. Must be set along with permissionString.

        :return: The identity_id of this ColumnRuleFormulaCreatorInputV1.
        :rtype: str
        """
        return self._identity_id

    @identity_id.setter
    def identity_id(self, identity_id):
        """
        Sets the identity_id of this ColumnRuleFormulaCreatorInputV1.
        The ID of the identity for which permissions will be set on items created by this rule. A null value means that the items created by this rule will have the same permissions as its associated datasource. Must be set along with permissionString.

        :param identity_id: The identity_id of this ColumnRuleFormulaCreatorInputV1.
        :type: str
        """

        self._identity_id = identity_id

    @property
    def name(self):
        """
        Gets the name of this ColumnRuleFormulaCreatorInputV1.
        Human readable name for items created by this rule. Null or whitespace names are not permitted.

        :return: The name of this ColumnRuleFormulaCreatorInputV1.
        :rtype: str
        """
        return self._name

    @name.setter
    def name(self, name):
        """
        Sets the name of this ColumnRuleFormulaCreatorInputV1.
        Human readable name for items created by this rule. Null or whitespace names are not permitted.

        :param name: The name of this ColumnRuleFormulaCreatorInputV1.
        :type: str
        """
        if name is None:
            raise ValueError("Invalid value for `name`, must not be `None`")

        self._name = name

    @property
    def parameters(self):
        """
        Gets the parameters of this ColumnRuleFormulaCreatorInputV1.
        Parameters to use in the formula. The position of the parameter should correspond to the position of its input item in the 'columnIndexes' field. Parameters must start with a letter and must be followed by an alphanumeric character, for example 'Sp3'.

        :return: The parameters of this ColumnRuleFormulaCreatorInputV1.
        :rtype: list[str]
        """
        return self._parameters

    @parameters.setter
    def parameters(self, parameters):
        """
        Sets the parameters of this ColumnRuleFormulaCreatorInputV1.
        Parameters to use in the formula. The position of the parameter should correspond to the position of its input item in the 'columnIndexes' field. Parameters must start with a letter and must be followed by an alphanumeric character, for example 'Sp3'.

        :param parameters: The parameters of this ColumnRuleFormulaCreatorInputV1.
        :type: list[str]
        """
        if parameters is None:
            raise ValueError("Invalid value for `parameters`, must not be `None`")

        self._parameters = parameters

    @property
    def permission_string(self):
        """
        Gets the permission_string of this ColumnRuleFormulaCreatorInputV1.
        The permissions for the identity included for items created by this rule. Must be in a valid string form with each permission separated by a comma, for example 'r,w,m'. Acceptable permissions are: 'r' - read, 'w' - write, 'm' - manage.Must be set along with identityId.

        :return: The permission_string of this ColumnRuleFormulaCreatorInputV1.
        :rtype: str
        """
        return self._permission_string

    @permission_string.setter
    def permission_string(self, permission_string):
        """
        Sets the permission_string of this ColumnRuleFormulaCreatorInputV1.
        The permissions for the identity included for items created by this rule. Must be in a valid string form with each permission separated by a comma, for example 'r,w,m'. Acceptable permissions are: 'r' - read, 'w' - write, 'm' - manage.Must be set along with identityId.

        :param permission_string: The permission_string of this ColumnRuleFormulaCreatorInputV1.
        :type: str
        """

        self._permission_string = permission_string

    @property
    def scoped_to(self):
        """
        Gets the scoped_to of this ColumnRuleFormulaCreatorInputV1.
        The ID of the workbook to which this item will be scoped. Null if the item should be globally scoped.

        :return: The scoped_to of this ColumnRuleFormulaCreatorInputV1.
        :rtype: str
        """
        return self._scoped_to

    @scoped_to.setter
    def scoped_to(self, scoped_to):
        """
        Sets the scoped_to of this ColumnRuleFormulaCreatorInputV1.
        The ID of the workbook to which this item will be scoped. Null if the item should be globally scoped.

        :param scoped_to: The scoped_to of this ColumnRuleFormulaCreatorInputV1.
        :type: str
        """

        self._scoped_to = scoped_to

    def to_dict(self):
        """
        Returns the model properties as a dict
        """
        result = {}

        for attr, _ in 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 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, ColumnRuleFormulaCreatorInputV1):
            return False

        return self.__dict__ == other.__dict__

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