From efb28c8003dbefd4ab90c22b86d4906f4f20534b Mon Sep 17 00:00:00 2001 From: Yannick Stephan Date: Mon, 17 Feb 2025 23:16:37 +0100 Subject: [PATCH] fixed already edge --- lightrag/operate.py | 45 +++++++++++++++++++++------------------------ 1 file changed, 21 insertions(+), 24 deletions(-) diff --git a/lightrag/operate.py b/lightrag/operate.py index 727c65f7..0a8003b8 100644 --- a/lightrag/operate.py +++ b/lightrag/operate.py @@ -239,39 +239,36 @@ async def _merge_edges_then_upsert( if await knowledge_graph_inst.has_edge(src_id, tgt_id): already_edge = await knowledge_graph_inst.get_edge(src_id, tgt_id) + if not already_edge: + return # Handle the case where get_edge returns None or missing fields - if already_edge: - # 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) + + # 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) # 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( - already_edge["source_id"], [GRAPH_FIELD_SEP] - ) + if "source_id" in already_edge and already_edge["source_id"] is not None: + already_source_ids.extend( + split_string_by_multi_markers( + already_edge["source_id"], [GRAPH_FIELD_SEP] ) + ) # Get description with empty string default if missing or None - if ( - "description" in already_edge - and already_edge["description"] is not None - ): - already_description.append(already_edge["description"]) + if "description" in already_edge and already_edge["description"] is not None: + already_description.append(already_edge["description"]) # Get keywords with empty string default if missing or None - if "keywords" in already_edge and already_edge["keywords"] is not None: - already_keywords.extend( - split_string_by_multi_markers( - already_edge["keywords"], [GRAPH_FIELD_SEP] - ) + if "keywords" in already_edge and already_edge["keywords"] is not None: + already_keywords.extend( + split_string_by_multi_markers( + already_edge["keywords"], [GRAPH_FIELD_SEP] ) + ) # Process edges_data with None checks weight = sum([dp["weight"] for dp in edges_data] + already_weights)