class_docstr: Interact with Weaviate database to store vectors. This hook uses the 'conn_id'.
  
  :param conn_id: The connection id to use when connecting to Weaviate. <howto/connection:weaviate>
class_docstr_tok: ["Interact","with","Weaviate","database","to","store","vectors",".","This","hook","uses","the","'conn_id","'",".",":","param","conn_id",":","The","connection","id","to","use","when","connecting","to","Weaviate",".","<","howto\/connection",":","weaviate",">"]
docstr: Check if the class_objects is a subset of existing schema.
  
  Note - weaviate client's `contains()` don't handle the class properties mismatch, if you want to
   compare `Class A` with `Class B` they must have exactly same properties. If `Class A` has fewer
    numbers of properties than Class B, `contains()` will result in False.
  
  .. seealso:: `contains <https://weaviate-python-client.readthedocs.io/en/v3.25.3/weaviate.schema.html#weaviate.schema.Schema.contains>`_.
code: def check_subset_of_schema(self, classes_objects: list) -> bool:
      """Check if the class_objects is a subset of existing schema.
  
      Note - weaviate client's `contains()` don't handle the class properties mismatch, if you want to
       compare `Class A` with `Class B` they must have exactly same properties. If `Class A` has fewer
        numbers of properties than Class B, `contains()` will result in False.
  
      .. seealso:: `contains <https://weaviate-python-client.readthedocs.io/en/v3.25.3/weaviate.schema.html#weaviate.schema.Schema.contains>`_.
      """
      # When the class properties are not in same order or not the same length. We convert them to dicts
      # with property `name` as the key. This way we ensure, the subset is checked.
  
      classes_objects = self._convert_properties_to_dict(
          classes_objects
      )
      exiting_classes_list = self._convert_properties_to_dict(
          self.get_schema()["classes"]
      )
  
      exiting_classes = {
          cls["class"]: cls for cls in exiting_classes_list
      }
      exiting_classes_set = set(exiting_classes.keys())
      input_classes_set = {cls["class"] for cls in classes_objects}
      if not input_classes_set.issubset(exiting_classes_set):
          return False
      for cls in classes_objects:
          if not self._compare_schema_subset(
              cls, exiting_classes[cls["class"]]
          ):
              return False
      return True
  
imports: from __future__ import annotations
  import contextlib
  import json
  import warnings
  from functools import cached_property
  from typing import TYPE_CHECKING, Any, Dict, List, Sequence, cast
  import requests
  import weaviate.exceptions
  from tenacity import Retrying, retry, retry_if_exception, retry_if_exception_type, stop_after_attempt
  from weaviate import Client
  from weaviate.auth import AuthApiKey, AuthBearerToken, AuthClientCredentials, AuthClientPassword
  from weaviate.data.replication import ConsistencyLevel
  from weaviate.exceptions import ObjectAlreadyExistsException
  from weaviate.util import generate_uuid5
  from airflow.exceptions import AirflowProviderDeprecationWarning
  from airflow.hooks.base import BaseHook
label_desc: Use image node_id 18 for calling the WeaviateHook obj's underlying member method code with example usage: obj.check_subset_of_schema(classes_objects) and returns: True, False, False