[core] Graph/Node: getInputNodes and getOutputNodes methods

This commit is contained in:
Julien-Haudegond 2020-08-24 11:35:32 +02:00
parent f41565f26b
commit 11e68e77ed
2 changed files with 22 additions and 0 deletions

View file

@ -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

View file

@ -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