From 3059e8c670fa744264107c871729fa68a97e2700 Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Wed, 5 Jul 2023 09:37:25 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix(base.py):=20fix=20add=5Fedge?= =?UTF-8?q?=20method=20to=20prevent=20adding=20duplicate=20edges=20?= =?UTF-8?q?=F0=9F=90=9B=20fix(base.py):=20fix=20=5F=5Feq=5F=5F=20method=20?= =?UTF-8?q?in=20Edge=20class=20to=20correctly=20compare=20objects=20The=20?= =?UTF-8?q?add=5Fedge=20method=20in=20the=20Vertex=20class=20has=20been=20?= =?UTF-8?q?modified=20to=20prevent=20adding=20duplicate=20edges.=20Now,=20?= =?UTF-8?q?before=20adding=20an=20edge,=20it=20checks=20if=20the=20edge=20?= =?UTF-8?q?already=20exists=20in=20the=20edges=20list=20to=20avoid=20dupli?= =?UTF-8?q?cates.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The __eq__ method in the Edge class has been fixed to correctly compare objects. It now compares the string representation of the objects to determine equality, ensuring that the comparison is accurate. --- src/backend/langflow/graph/edge/base.py | 12 +++++++++++- src/backend/langflow/graph/vertex/base.py | 5 +++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/backend/langflow/graph/edge/base.py b/src/backend/langflow/graph/edge/base.py index 3fcccde9d..569d33ec0 100644 --- a/src/backend/langflow/graph/edge/base.py +++ b/src/backend/langflow/graph/edge/base.py @@ -48,6 +48,16 @@ class Edge: def __repr__(self) -> str: return ( - f"Edge(source={self.source.id}, target={self.target.id}, valid={self.valid}" + f"Edge(source={self.source.id}, target={self.target.id}, target_param={self.target_param}" f", matched_type={self.matched_type})" ) + + def __hash__(self) -> int: + return hash(self.__repr__()) + + def __eq__(self, __value: object) -> bool: + return ( + self.__repr__() == __value.__repr__() + if isinstance(__value, Edge) + else False + ) diff --git a/src/backend/langflow/graph/vertex/base.py b/src/backend/langflow/graph/vertex/base.py index a7fcf88b5..193684cb6 100644 --- a/src/backend/langflow/graph/vertex/base.py +++ b/src/backend/langflow/graph/vertex/base.py @@ -95,7 +95,7 @@ class Vertex: if param_key not in params: params[param_key] = [] params[param_key].append(edge.source) - else: + elif edge.target.id == self.id: params[param_key] = edge.source for key, value in template_dict.items(): @@ -204,7 +204,8 @@ class Vertex: return self._built_object def add_edge(self, edge: "Edge") -> None: - self.edges.append(edge) + if edge not in self.edges: + self.edges.append(edge) def __repr__(self) -> str: return f"Node(id={self.id}, data={self.data})"