diff --git a/meshroom/core/graph.py b/meshroom/core/graph.py index 566d60f7..8f871c82 100644 --- a/meshroom/core/graph.py +++ b/meshroom/core/graph.py @@ -900,6 +900,22 @@ class Graph(BaseObject): self.dfs(visitor=visitor, startNodes=[startNode], reverse=reverse) return nodes, edges + def getInputNodes(self, node, recursive=False): + """ Return either the first level input nodes of a node or the whole chain. """ + if not recursive: + return set([edge.src.node for edge in self.edges if edge.dst.node is node]) + + inputNodes, edges = self.nodesFromNode(node, filterTypes=None, reverse=False) + return inputNodes[1:] # exclude current node + + def getOutputNodes(self, node, recursive=False): + """ Return either the first level output nodes of a node or the whole chain. """ + if not recursive: + return set([edge.dst.node for edge in self.edges if edge.src.node is node]) + + outputNodes, edges = self.nodesFromNode(node, filterTypes=None, reverse=True) + return outputNodes[1:] # exclude current node + def nodesDependingOnNode(self, startNode, filterTypes=None): nodes, edges = self.nodesFromNode(startNode, filterTypes=filterTypes, reverse=True) return nodes diff --git a/meshroom/core/node.py b/meshroom/core/node.py index 7693c4a5..a6c70e09 100644 --- a/meshroom/core/node.py +++ b/meshroom/core/node.py @@ -574,6 +574,12 @@ class BaseNode(BaseObject): def minDepth(self): return self.graph.getDepth(self, minimal=True) + def getInputNodes(self, recursive=False): + return self.graph.getInputNodes(self, recursive=recursive) + + def getOutputNodes(self, recursive=False): + return self.graph.getOutputNodes(self, recursive=recursive) + def toDict(self): pass