def create_edge(source_id, target_id, relationship_type, is_deleted=False, update_timestamp=None, metadata=None): """A builder to create an edge :param update_timestamp: :param source_id: :type source_id: str :param target_id: :type target_id: str :param relationship_type: :type relationship_type: str :param is_deleted: :type is_deleted: str :param metadata: :type metadata: dict :return: :rtype: Edge """ properties = { EConst.UPDATE_TIMESTAMP: update_timestamp, EConst.IS_DELETED: is_deleted, EConst.RELATIONSHIP_TYPE: relationship_type, } if metadata: properties.update(metadata) properties = dict((k, v) for k, v in properties.items() if v is not None) edge = Edge(source_id=source_id, target_id=target_id, label=relationship_type, properties=properties) return edge
def copy(self): # Networkx graph copy is very slow, so we implement nodes = self._g.nodes(data=True) vertices = [Vertex(vertex_id=n, properties=data) for n, data in nodes] edges_iter = self._g.edges(data=True, keys=True) edges = [Edge(source_id=u, target_id=v, label=l, properties=data) for u, v, l, data in edges_iter] return NXGraph(self.name, vertices, edges)
def edge_copy(source_id, target_id, label, data): return Edge(source_id=source_id, target_id=target_id, label=label, properties=copy.copy(data))