def merge_edges(cls, e1: Edge, e2: Edge) -> Edge: "merge two edges if they have the same id" e1id = e1.id() e2id = e2.id() if e1id() != e2id(): msg = "Can not merge edges with different ids: " msg += "first edge id: " + e1id msg += "second edge id: " + e2id raise ValueError(msg) # e1data = e1.data() e2data = e2.data() e1data.update(e2data) e1info = e1.info() e2info = e2.info() # einfo = NodeInfo() einfo.set_to_null(e1info.first()) einfo.set_to_null(e1info.second()) einfo.set_to_null(e2info.first()) einfo.set_to_null(e2info.second()) return Edge(edge_id=e1id, edge_type=e1.type(), data=ei1data, node_info=einfo)