Пример #1
0
 def build(self, g, container):
     '''Builds the nodes for the numble as members of the container node
     in graph g. Returns container.'''
     for brick in self.bricks:
         brick_id = g.make_node(Brick(brick))
         g.add_member_edge(container, brick_id)
         TagWith(Avail, taggee=brick_id).go(g)
     target_id = g.make_node(Target(self.target))
     g.add_member_edge(container, target_id)
     TagWith(Wanted, taggee=target_id).go(g)
     g.graph['target'] = target_id
     return container
Пример #2
0
 def fail(self, g, node):
     TagWith(Failed, taggee=node).go(g)  #TODO add_tag
     g.remove_tag(node, Avail)
     for source in g.neighbors(node, 'source'):
         g.remove_edge(node, 'source', source, 'consumer')
         g.add_edge(node, 'former_source', source, 'former_consumer')
         g.cascade_fail(source)
Пример #3
0
 def make_response(self, bindings):
     edges = {
         'by_completing': self.eqn_node,
         'from': bindings.values(),
         'make': self.bg.find_member_in_role(self.eqn_node, 'result')
     }
     return TagWith(CouldMake, (bindings,), edges)
Пример #4
0
 def go(self, g):
     #TODO OAOO with CombineOperands; should have a consume() function
     operator_id = g.make_node(self.operator_datum)
     for operand in self.bindings_dict.values():
         g.add_edge(operand, 'consumer', operator_id, 'source')
         g.remove_tag(operand, Avail)
     g.add_edge(operator_id, 'consumer', self.result_node, 'source')
     g.remove_tag(self.result_node, Wanted)
     TagWith(Avail, taggee=self.result_node).go(g)
Пример #5
0
 def go(self, g):
     operator_id = g.make_node(self.operator)
     for operand in self.operands:
         g.add_edge(operand, 'consumer', operator_id, 'source')
         g.remove_tag(operand, Avail)
     result_value = self.operator.result_value(g, operator_id)
     result_id = g.make_node(Block(result_value))
     print('Made %s.' % g.datumstr(result_id))  #TODO Move this
     g.add_edge(operator_id, 'consumer', result_id, 'source')
     TagWith(Avail, taggee=result_id).go(g)
Пример #6
0
 def cascade_fail(self, g, node):
     'Called by an upstream node that has failed.'
     TagWith(Avail, taggee=node).go(g)  #TODO add_tag