from __future__ import annotations from collections.abc import Iterable # All namespace should not be changed class NameSpace: KV_STORE_FULL_DOCS = 'full_docs' KV_STORE_TEXT_CHUNKS = 'text_chunks' KV_STORE_LLM_RESPONSE_CACHE = 'llm_response_cache' KV_STORE_FULL_ENTITIES = 'full_entities' KV_STORE_FULL_RELATIONS = 'full_relations' KV_STORE_ENTITY_CHUNKS = 'entity_chunks' KV_STORE_RELATION_CHUNKS = 'relation_chunks' VECTOR_STORE_ENTITIES = 'entities' VECTOR_STORE_RELATIONSHIPS = 'relationships' VECTOR_STORE_CHUNKS = 'chunks' GRAPH_STORE_CHUNK_ENTITY_RELATION = 'chunk_entity_relation' DOC_STATUS = 'doc_status' def is_namespace(namespace: str, base_namespace: str | Iterable[str]): if isinstance(base_namespace, str): return namespace.endswith(base_namespace) return any(is_namespace(namespace, ns) for ns in base_namespace)