Changeset View
Changeset View
Standalone View
Standalone View
swh/graph/graph.py
Show First 20 Lines • Show All 68 Lines • ▼ Show 20 Lines | class GraphNode: | ||||
def parents(self): | def parents(self): | ||||
return Neighbors( | return Neighbors( | ||||
self.graph, | self.graph, | ||||
self.graph.java_graph.predecessors(self.id), | self.graph.java_graph.predecessors(self.id), | ||||
lambda: self.graph.java_graph.indegree(self.id), | lambda: self.graph.java_graph.indegree(self.id), | ||||
) | ) | ||||
def simple_traversal(self, ttype, direction="forward", edges="*"): | def simple_traversal(self, ttype, direction="forward", edges="*", max_edges=0): | ||||
for node in call_async_gen( | for node in call_async_gen( | ||||
self.graph.backend.simple_traversal, ttype, direction, edges, self.id | self.graph.backend.simple_traversal, | ||||
ttype, | |||||
direction, | |||||
edges, | |||||
self.id, | |||||
max_edges, | |||||
): | ): | ||||
yield self.graph[node] | yield self.graph[node] | ||||
def leaves(self, *args, **kwargs): | def leaves(self, *args, **kwargs): | ||||
yield from self.simple_traversal("leaves", *args, **kwargs) | yield from self.simple_traversal("leaves", *args, **kwargs) | ||||
def visit_nodes(self, *args, **kwargs): | def visit_nodes(self, *args, **kwargs): | ||||
yield from self.simple_traversal("visit_nodes", *args, **kwargs) | yield from self.simple_traversal("visit_nodes", *args, **kwargs) | ||||
def visit_edges(self, direction="forward", edges="*"): | def visit_edges(self, direction="forward", edges="*", max_edges=0): | ||||
for src, dst in call_async_gen( | for src, dst in call_async_gen( | ||||
self.graph.backend.visit_edges, direction, edges, self.id | self.graph.backend.visit_edges, direction, edges, self.id, max_edges | ||||
): | ): | ||||
yield (self.graph[src], self.graph[dst]) | yield (self.graph[src], self.graph[dst]) | ||||
def visit_paths(self, direction="forward", edges="*"): | def visit_paths(self, direction="forward", edges="*", max_edges=0): | ||||
for path in call_async_gen( | for path in call_async_gen( | ||||
self.graph.backend.visit_paths, direction, edges, self.id | self.graph.backend.visit_paths, direction, edges, self.id, max_edges | ||||
): | ): | ||||
yield [self.graph[node] for node in path] | yield [self.graph[node] for node in path] | ||||
def walk(self, dst, direction="forward", edges="*", traversal="dfs"): | def walk(self, dst, direction="forward", edges="*", traversal="dfs"): | ||||
for node in call_async_gen( | for node in call_async_gen( | ||||
self.graph.backend.walk, direction, edges, traversal, self.id, dst | self.graph.backend.walk, direction, edges, traversal, self.id, dst | ||||
): | ): | ||||
yield self.graph[node] | yield self.graph[node] | ||||
▲ Show 20 Lines • Show All 80 Lines • Show Last 20 Lines |