Changeset View
Changeset View
Standalone View
Standalone View
swh/graph/client.py
Show All 29 Lines | class RemoteGraphClient(RPCClient): | ||||
def get_lines(self, endpoint, **kwargs): | def get_lines(self, endpoint, **kwargs): | ||||
yield from self.raw_verb_lines("get", endpoint, **kwargs) | yield from self.raw_verb_lines("get", endpoint, **kwargs) | ||||
# Web API endpoints | # Web API endpoints | ||||
def stats(self): | def stats(self): | ||||
return self.get("stats") | return self.get("stats") | ||||
def leaves(self, src, edges="*", direction="forward"): | def leaves(self, src, edges="*", direction="forward", max_edges=0): | ||||
return self.get_lines( | return self.get_lines( | ||||
"leaves/{}".format(src), params={"edges": edges, "direction": direction} | "leaves/{}".format(src), | ||||
params={"edges": edges, "direction": direction, "max_edges": max_edges}, | |||||
) | ) | ||||
def neighbors(self, src, edges="*", direction="forward"): | def neighbors(self, src, edges="*", direction="forward", max_edges=0): | ||||
return self.get_lines( | return self.get_lines( | ||||
"neighbors/{}".format(src), params={"edges": edges, "direction": direction} | "neighbors/{}".format(src), | ||||
params={"edges": edges, "direction": direction, "max_edges": max_edges}, | |||||
) | ) | ||||
def visit_nodes(self, src, edges="*", direction="forward"): | def visit_nodes(self, src, edges="*", direction="forward", max_edges=0): | ||||
return self.get_lines( | return self.get_lines( | ||||
"visit/nodes/{}".format(src), | "visit/nodes/{}".format(src), | ||||
params={"edges": edges, "direction": direction}, | params={"edges": edges, "direction": direction, "max_edges": max_edges}, | ||||
) | ) | ||||
def visit_edges(self, src, edges="*", direction="forward"): | def visit_edges(self, src, edges="*", direction="forward", max_edges=0): | ||||
for edge in self.get_lines( | for edge in self.get_lines( | ||||
"visit/edges/{}".format(src), | "visit/edges/{}".format(src), | ||||
params={"edges": edges, "direction": direction}, | params={"edges": edges, "direction": direction, "max_edges": max_edges}, | ||||
): | ): | ||||
yield tuple(edge.split()) | yield tuple(edge.split()) | ||||
def visit_paths(self, src, edges="*", direction="forward"): | def visit_paths(self, src, edges="*", direction="forward", max_edges=0): | ||||
def decode_path_wrapper(it): | def decode_path_wrapper(it): | ||||
for e in it: | for e in it: | ||||
yield json.loads(e) | yield json.loads(e) | ||||
return decode_path_wrapper( | return decode_path_wrapper( | ||||
self.get_lines( | self.get_lines( | ||||
"visit/paths/{}".format(src), | "visit/paths/{}".format(src), | ||||
params={"edges": edges, "direction": direction}, | params={"edges": edges, "direction": direction, "max_edges": max_edges}, | ||||
) | ) | ||||
) | ) | ||||
def walk( | def walk( | ||||
self, src, dst, edges="*", traversal="dfs", direction="forward", limit=None | self, src, dst, edges="*", traversal="dfs", direction="forward", limit=None | ||||
): | ): | ||||
endpoint = "walk/{}/{}" | endpoint = "walk/{}/{}" | ||||
return self.get_lines( | return self.get_lines( | ||||
Show All 33 Lines |