This is the commit where I admit that having more than one input/output format for readers and writers was complicating the code too much for a very small gain, and that it would be easier to only have one way to do it. So such way is now: - Returning (or yielding) a dict if you have key-value type collections. - Returning (or yielding) a tuple if you have a list-type collection. - Returning (or yielding) something else otherwise, which will continue to work like the old "arg0" format. IOFORMAT options has been removed in favour of a RemovedOption, which will complain if you're still trying to set it to anything else than the one value allowed.
27 lines
659 B
Python
27 lines
659 B
Python
from bonobo.constants import BEGIN, END
|
|
from bonobo.strategies.base import Strategy
|
|
from bonobo.structs.bags import Bag
|
|
|
|
|
|
class NaiveStrategy(Strategy):
|
|
# TODO: how to run plugins in "naive" mode ?
|
|
|
|
def execute(self, graph, **kwargs):
|
|
context = self.create_graph_execution_context(graph, **kwargs)
|
|
context.write(BEGIN, Bag(), END)
|
|
|
|
# start
|
|
context.start()
|
|
|
|
# loop
|
|
nodes = list(context.nodes)
|
|
while len(nodes):
|
|
for node in nodes:
|
|
node.loop()
|
|
nodes = list(node for node in nodes if node.alive)
|
|
|
|
# stop
|
|
context.stop()
|
|
|
|
return context
|