# 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.58.1-v202509300326-CD
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""

from pprint import pformat
from six import iteritems
import re


class FixedListSearchV1(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 = {
        'is_include': 'bool',
        'item_ids': 'list[str]',
        'search_type': 'str'
    }

    attribute_map = {
        'is_include': 'isInclude',
        'item_ids': 'itemIds',
        'search_type': 'searchType'
    }

    def __init__(self, is_include=None, item_ids=None, search_type=None):
        """
        FixedListSearchV1 - a model defined in Swagger
        """

        self._is_include = None
        self._item_ids = None
        self._search_type = None

        if is_include is not None:
          self.is_include = is_include
        if item_ids is not None:
          self.item_ids = item_ids
        if search_type is not None:
          self.search_type = search_type

    @property
    def is_include(self):
        """
        Gets the is_include of this FixedListSearchV1.
        If true the items found by this configuration will be included in the output, if false then the results will be excluded from the output (even if found by another finder configuration)

        :return: The is_include of this FixedListSearchV1.
        :rtype: bool
        """
        return self._is_include

    @is_include.setter
    def is_include(self, is_include):
        """
        Sets the is_include of this FixedListSearchV1.
        If true the items found by this configuration will be included in the output, if false then the results will be excluded from the output (even if found by another finder configuration)

        :param is_include: The is_include of this FixedListSearchV1.
        :type: bool
        """
        if is_include is None:
            raise ValueError("Invalid value for `is_include`, must not be `None`")

        self._is_include = is_include

    @property
    def item_ids(self):
        """
        Gets the item_ids of this FixedListSearchV1.
        A list of item IDs to always include or exclude in the output. Useful for including or excluding outliers that are not easily found via one of the other finder configurations

        :return: The item_ids of this FixedListSearchV1.
        :rtype: list[str]
        """
        return self._item_ids

    @item_ids.setter
    def item_ids(self, item_ids):
        """
        Sets the item_ids of this FixedListSearchV1.
        A list of item IDs to always include or exclude in the output. Useful for including or excluding outliers that are not easily found via one of the other finder configurations

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

        self._item_ids = item_ids

    @property
    def search_type(self):
        """
        Gets the search_type of this FixedListSearchV1.
        The type of finder

        :return: The search_type of this FixedListSearchV1.
        :rtype: str
        """
        return self._search_type

    @search_type.setter
    def search_type(self, search_type):
        """
        Sets the search_type of this FixedListSearchV1.
        The type of finder

        :param search_type: The search_type of this FixedListSearchV1.
        :type: str
        """
        if search_type is None:
            raise ValueError("Invalid value for `search_type`, must not be `None`")
        allowed_values = ["SWAP_ACROSS_ASSETS", "FIXED_LIST", "PROPERTY", "MATERIALIZED_TABLE_UUID_COLUMN", "HIERARCHY"]
        if search_type not in allowed_values:
            raise ValueError(
                "Invalid value for `search_type` ({0}), must be one of {1}"
                .format(search_type, allowed_values)
            )

        self._search_type = search_type

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

        return self.__dict__ == other.__dict__

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