Changeset View
Changeset View
Standalone View
Standalone View
swh/graph/backend.py
Show First 20 Lines • Show All 86 Lines • ▼ Show 20 Lines | async def random_walk(self, direction, edges_fmt, retries, src, dst): | ||||
it = self.stream_proxy.random_walk_type( | it = self.stream_proxy.random_walk_type( | ||||
direction, edges_fmt, retries, src, dst | direction, edges_fmt, retries, src, dst | ||||
) | ) | ||||
else: | else: | ||||
it = self.stream_proxy.random_walk(direction, edges_fmt, retries, src, dst) | it = self.stream_proxy.random_walk(direction, edges_fmt, retries, src, dst) | ||||
async for node_id in it: # TODO return 404 if path is empty | async for node_id in it: # TODO return 404 if path is empty | ||||
yield node_id | yield node_id | ||||
async def visit_edges(self, direction, edges_fmt, src): | |||||
it = self.stream_proxy.visit_edges(direction, edges_fmt, src) | |||||
# convert stream a, b, c, d -> (a, b), (c, d) | |||||
prevNode = None | |||||
async for node in it: | |||||
if prevNode is not None: | |||||
yield (prevNode, node) | |||||
prevNode = None | |||||
else: | |||||
prevNode = node | |||||
async def visit_paths(self, direction, edges_fmt, src): | async def visit_paths(self, direction, edges_fmt, src): | ||||
path = [] | path = [] | ||||
async for node in self.stream_proxy.visit_paths(direction, edges_fmt, src): | async for node in self.stream_proxy.visit_paths(direction, edges_fmt, src): | ||||
if node == PATH_SEPARATOR_ID: | if node == PATH_SEPARATOR_ID: | ||||
yield path | yield path | ||||
path = [] | path = [] | ||||
else: | else: | ||||
path.append(node) | path.append(node) | ||||
▲ Show 20 Lines • Show All 81 Lines • Show Last 20 Lines |