# Path: robograph/datamodel/base/graph.py
# class Graph:
#     def __init__(self, name, nodes=None):
#     def root_node(self):
#     def nodes(self):
#     def edges(self):
#     def nxgraph(self):
#     def name(self):
#     def add_node(self, node):
#     def add_nodes(self, sequence_of_nodes):
#     def remove_node(self, node):
#     def remove_nodes(self, sequence_of_nodes):
#     def connect(self, node_from, node_to, output_label):
#     def has_isles(self):
#     def execute(self, result_label="result"):
#     def reset(self):
#     def __repr__(self):
#     def __len__(self):
# 
# Path: robograph/datamodel/nodes/lib/printer.py
# class ConsolePrinter(node.Node):
# class LogPrinter(node.Node):
#     def output(self):
#     def output(self):
# 
# Path: robograph/datamodel/nodes/lib/value.py
# class Value(node.Node):
#     def output(self):
# 
# Path: robograph/datamodel/nodes/lib/buffers.py
# class Buffer(node.Node):
# class DelayedBuffer(Buffer):
#     def __init__(self, **args):
#     def input(self, context):
#     def output(self):
#     def reset(self):
#     def output(self):
# 
# Path: robograph/datamodel/nodes/lib/apply.py
# class Apply(node.Node):
#     def output(self):


from robograph.datamodel.base import graph
from robograph.datamodel.nodes.lib import printer, value, buffers, apply
# Long delay



def delayed_sum_and_product(list_of_numbers, delay):

    val = value.Value(value=list_of_numbers)
    summer = apply.Apply(function=sum)
    multiplier = apply.Apply(function=lambda c: reduce(lambda x, y: x * y, c))
    delayed_value_buffer = buffers.DelayedBuffer(seconds=delay)

# Path: robograph/datamodel/base/graph.py
# class Graph:
#     def __init__(self, name, nodes=None):
#     def root_node(self):
#     def nodes(self):
#     def edges(self):
#     def nxgraph(self):
#     def name(self):
#     def add_node(self, node):
#     def add_nodes(self, sequence_of_nodes):
#     def remove_node(self, node):
#     def remove_nodes(self, sequence_of_nodes):
#     def connect(self, node_from, node_to, output_label):
#     def has_isles(self):
#     def execute(self, result_label="result"):
#     def reset(self):
#     def __repr__(self):
#     def __len__(self):
# 
# Path: robograph/datamodel/nodes/lib/printer.py
# class ConsolePrinter(node.Node):
# class LogPrinter(node.Node):
#     def output(self):
#     def output(self):
# 
# Path: robograph/datamodel/nodes/lib/value.py
# class Value(node.Node):
#     def output(self):
# 
# Path: robograph/datamodel/nodes/lib/buffers.py
# class Buffer(node.Node):
# class DelayedBuffer(Buffer):
#     def __init__(self, **args):
#     def input(self, context):
#     def output(self):
#     def reset(self):
#     def output(self):
# 
# Path: robograph/datamodel/nodes/lib/apply.py
# class Apply(node.Node):
#     def output(self):


# Path: robograph/sample_graphs/delayed_sum_and_product.py
from robograph.datamodel.base import graph
from robograph.datamodel.nodes.lib import printer, value, buffers, apply

# Long delay



def delayed_sum_and_product(list_of_numbers, delay):

    val = value.Value(value=list_of_numbers)
    summer = apply.Apply(function=sum)
    multiplier = apply.Apply(function=lambda c: reduce(lambda x, y: x * y, c))
    delayed_value_buffer = buffers.DelayedBuffer(seconds=delay)

    printout = printer.ConsolePrinter()