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: Recursively check if requested subset_object is a subset of the superset_object.
  
  Example 1:
  superset_object = {"a": {"b": [1, 2, 3], "c": "d"}}
  subset_object = {"a": {"c": "d"}}
  _compare_schema_subset(subset_object, superset_object) # will result in True
  
  superset_object = {"a": {"b": [1, 2, 3], "c": "d"}}
  subset_object = {"a": {"d": "e"}}
  _compare_schema_subset(subset_object, superset_object) # will result in False
  
  :param subset_object: The object to be checked
  :param superset_object: The object to check against
code: def _compare_schema_subset(
      self, subset_object: Any, superset_object: Any
  ) -> bool:
      """
      Recursively check if requested subset_object is a subset of the superset_object.
  
      Example 1:
      superset_object = {"a": {"b": [1, 2, 3], "c": "d"}}
      subset_object = {"a": {"c": "d"}}
      _compare_schema_subset(subset_object, superset_object) # will result in True
  
      superset_object = {"a": {"b": [1, 2, 3], "c": "d"}}
      subset_object = {"a": {"d": "e"}}
      _compare_schema_subset(subset_object, superset_object) # will result in False
  
      :param subset_object: The object to be checked
      :param superset_object: The object to check against
      """
      # Direct equality check
      if subset_object == superset_object:
          return True
  
      # Type mismatch early return
      if type(subset_object) != type(superset_object):
          return False
  
      # Dictionary comparison
      if isinstance(subset_object, dict):
          for k, v in subset_object.items():
              if (k not in superset_object) or (
                  not self._compare_schema_subset(v, superset_object[k])
              ):
                  return False
          return True
  
      # List or Tuple comparison
      if isinstance(subset_object, (list, tuple)):
          for sub, sup in zip(subset_object, superset_object):
              if len(subset_object) > len(
                  superset_object
              ) or not self._compare_schema_subset(sub, sup):
                  return False
          return True
  
      # Default case for non-matching types or unsupported types
      return False
  
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 16 for calling the WeaviateHook obj's underlying member method code with example usage: obj._compare_schema_subset(subset_object, superset_object) and returns: False, True, False, True, True, False, False