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})"