text: # coding: utf-8
  
  """
      Jamf Pro API
  
      ## Overview This is a sample Jamf Pro server which allows for usage without any authentication. The Jamf Pro environment which supports the Try it Out functionality does not run the current beta version of Jamf Pro, thus any newly added endpoints will result in an error and should be used soley for documentation purposes.   # noqa: E501
  
      The version of the OpenAPI document: 10.25.0
      Generated by: https://openapi-generator.tech
  """
  
  
  import pprint
  import re  # noqa: F401
  
  import six
  
  from jamf.configuration import Configuration
  
  
  class SmartSearchCriterion(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 = {
          'name': 'str',
          'priority': 'int',
          'and_or': 'str',
          'search_type': 'str',
          'value': 'str',
          'opening_paren': 'bool',
          'closing_paren': 'bool'
      }
  
      attribute_map = {
          'name': 'name',
          'priority': 'priority',
          'and_or': 'andOr',
          'search_type': 'searchType',
          'value': 'value',
          'opening_paren': 'openingParen',
          'closing_paren': 'closingParen'
      }
  
      def __init__(self, name=None, priority=None, and_or=None, search_type=None, value=None, opening_paren=None, closing_paren=None, local_vars_configuration=None):  # noqa: E501
          """SmartSearchCriterion - a model defined in OpenAPI"""  # noqa: E501
          if local_vars_configuration is None:
              local_vars_configuration = Configuration()
          self.local_vars_configuration = local_vars_configuration
  
          self._name = None
          self._priority = None
          self._and_or = None
          self._search_type = None
          self._value = None
          self._opening_paren = None
          self._closing_paren = None
          self.discriminator = None
  
          if name is not None:
              self.name = name
          if priority is not None:
              self.priority = priority
          if and_or is not None:
              self.and_or = and_or
          if search_type is not None:
              self.search_type = search_type
          if value is not None:
              self.value = value
          if opening_paren is not None:
              self.opening_paren = opening_paren
          if closing_paren is not None:
              self.closing_paren = closing_paren
  
      @property
      def name(self):
          """Gets the name of this SmartSearchCriterion.  # noqa: E501
  
  
          :return: The name of this SmartSearchCriterion.  # noqa: E501
          :rtype: str
          """
          return self._name
  
      @name.setter
      def name(self, name):
          """Sets the name of this SmartSearchCriterion.
  
  
          :param name: The name of this SmartSearchCriterion.  # noqa: E501
          :type name: str
          """
  
          self._name = name
  
      @property
      def priority(self):
          """Gets the priority of this SmartSearchCriterion.  # noqa: E501
  
  
          :return: The priority of this SmartSearchCriterion.  # noqa: E501
          :rtype: int
          """
          return self._priority
  
      @priority.setter
      def priority(self, priority):
          """Sets the priority of this SmartSearchCriterion.
  
  
          :param priority: The priority of this SmartSearchCriterion.  # noqa: E501
          :type priority: int
          """
  
          self._priority = priority
  
      @property
      def and_or(self):
          """Gets the and_or of this SmartSearchCriterion.  # noqa: E501
  
  
          :return: The and_or of this SmartSearchCriterion.  # noqa: E501
          :rtype: str
          """
          return self._and_or
  
      @and_or.setter
      def and_or(self, and_or):
          """Sets the and_or of this SmartSearchCriterion.
  
  
          :param and_or: The and_or of this SmartSearchCriterion.  # noqa: E501
          :type and_or: str
          """
  
          self._and_or = and_or
  
      @property
      def search_type(self):
          """Gets the search_type of this SmartSearchCriterion.  # noqa: E501
  
  
          :return: The search_type of this SmartSearchCriterion.  # noqa: E501
          :rtype: str
          """
          return self._search_type
  
      @search_type.setter
      def search_type(self, search_type):
          """Sets the search_type of this SmartSearchCriterion.
  
  
          :param search_type: The search_type of this SmartSearchCriterion.  # noqa: E501
          :type search_type: str
          """
  
          self._search_type = search_type
  
      @property
      def value(self):
          """Gets the value of this SmartSearchCriterion.  # noqa: E501
  
  
          :return: The value of this SmartSearchCriterion.  # noqa: E501
          :rtype: str
          """
          return self._value
  
      @value.setter
      def value(self, value):
          """Sets the value of this SmartSearchCriterion.
  
  
          :param value: The value of this SmartSearchCriterion.  # noqa: E501
          :type value: str
          """
  
          self._value = value
  
      @property
      def opening_paren(self):
          """Gets the opening_paren of this SmartSearchCriterion.  # noqa: E501
  
  
          :return: The opening_paren of this SmartSearchCriterion.  # noqa: E501
          :rtype: bool
          """
          return self._opening_paren
  
      @opening_paren.setter
      def opening_paren(self, opening_paren):
          """Sets the opening_paren of this SmartSearchCriterion.
  
  
          :param opening_paren: The opening_paren of this SmartSearchCriterion.  # noqa: E501
          :type opening_paren: bool
          """
  
          self._opening_paren = opening_paren
  
      @property
      def closing_paren(self):
          """Gets the closing_paren of this SmartSearchCriterion.  # noqa: E501
  
  
          :return: The closing_paren of this SmartSearchCriterion.  # noqa: E501
          :rtype: bool
          """
          return self._closing_paren
  
      @closing_paren.setter
      def closing_paren(self, closing_paren):
          """Sets the closing_paren of this SmartSearchCriterion.
  
  
          :param closing_paren: The closing_paren of this SmartSearchCriterion.  # noqa: E501
          :type closing_paren: bool
          """
  
          self._closing_paren = closing_paren
  
      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, SmartSearchCriterion):
              return False
  
          return self.to_dict() == other.to_dict()
  
      def __ne__(self, other):
          """Returns true if both objects are not equal"""
          if not isinstance(other, SmartSearchCriterion):
              return True
  
          return self.to_dict() != other.to_dict()
  