From 80272cbf16f34fc6511e50e022113191a2bfa6d2 Mon Sep 17 00:00:00 2001 From: Yannick Stephan Date: Mon, 17 Feb 2025 23:20:10 +0100 Subject: [PATCH] fixed edge --- lightrag/kg/json_doc_status_impl.py | 2 +- lightrag/kg/mongo_impl.py | 1 + lightrag/kg/oracle_impl.py | 1 + lightrag/kg/postgres_impl.py | 3 ++- lightrag/kg/tidb_impl.py | 1 + lightrag/operate.py | 22 +++++++++------------- 6 files changed, 15 insertions(+), 15 deletions(-) diff --git a/lightrag/kg/json_doc_status_impl.py b/lightrag/kg/json_doc_status_impl.py index 050752eb..e69352f3 100644 --- a/lightrag/kg/json_doc_status_impl.py +++ b/lightrag/kg/json_doc_status_impl.py @@ -67,4 +67,4 @@ class JsonDocStatusStorage(DocStatusStorage): async def delete(self, doc_ids: list[str]): for doc_id in doc_ids: self._data.pop(doc_id, None) - await self.index_done_callback() \ No newline at end of file + await self.index_done_callback() diff --git a/lightrag/kg/mongo_impl.py b/lightrag/kg/mongo_impl.py index 384bb604..8cfc84b9 100644 --- a/lightrag/kg/mongo_impl.py +++ b/lightrag/kg/mongo_impl.py @@ -117,6 +117,7 @@ class MongoKVStorage(BaseKVStorage): # Mongo handles persistence automatically pass + @final @dataclass class MongoDocStatusStorage(DocStatusStorage): diff --git a/lightrag/kg/oracle_impl.py b/lightrag/kg/oracle_impl.py index 16013fe8..63c43ce0 100644 --- a/lightrag/kg/oracle_impl.py +++ b/lightrag/kg/oracle_impl.py @@ -320,6 +320,7 @@ class OracleKVStorage(BaseKVStorage): # Oracle handles persistence automatically pass + @final @dataclass class OracleVectorDBStorage(BaseVectorStorage): diff --git a/lightrag/kg/postgres_impl.py b/lightrag/kg/postgres_impl.py index 34c7c54d..16aee8b8 100644 --- a/lightrag/kg/postgres_impl.py +++ b/lightrag/kg/postgres_impl.py @@ -300,7 +300,8 @@ class PGKVStorage(BaseKVStorage): async def index_done_callback(self) -> None: # PG handles persistence automatically pass - + + @final @dataclass class PGVectorStorage(BaseVectorStorage): diff --git a/lightrag/kg/tidb_impl.py b/lightrag/kg/tidb_impl.py index 1cff0bd9..f0e5a45b 100644 --- a/lightrag/kg/tidb_impl.py +++ b/lightrag/kg/tidb_impl.py @@ -214,6 +214,7 @@ class TiDBKVStorage(BaseKVStorage): # Ti handles persistence automatically pass + @final @dataclass class TiDBVectorDBStorage(BaseVectorStorage): diff --git a/lightrag/operate.py b/lightrag/operate.py index 0a8003b8..2264e7f6 100644 --- a/lightrag/operate.py +++ b/lightrag/operate.py @@ -228,29 +228,25 @@ async def _merge_nodes_then_upsert( async def _merge_edges_then_upsert( src_id: str, tgt_id: str, - edges_data: list[dict], + edges_data: list[dict[str, Any]], knowledge_graph_inst: BaseGraphStorage, - global_config: dict, + global_config: dict[str, str], ): - already_weights = [] - already_source_ids = [] - already_description = [] - already_keywords = [] + already_weights: list[float] = [] + already_source_ids: list[str] = [] + already_description: list[str] = [] + already_keywords: list[str] = [] if await knowledge_graph_inst.has_edge(src_id, tgt_id): already_edge = await knowledge_graph_inst.get_edge(src_id, tgt_id) + # Handle the case where get_edge returns None or missing fields if not already_edge: return - # Handle the case where get_edge returns None or missing fields # Get weight with default 0.0 if missing - if "weight" in already_edge: - already_weights.append(already_edge["weight"]) - else: - logger.warning(f"Edge between {src_id} and {tgt_id} missing weight field") - already_weights.append(0.0) + already_weights.append(already_edge.get("weight", 0.0)) - # Get source_id with empty string default if missing or None + # Get source_id with empty string default if missing or None if "source_id" in already_edge and already_edge["source_id"] is not None: already_source_ids.extend( split_string_by_multi_markers(