First implementation of services and basic injection. Not working with CLI for now.
This commit is contained in:
@ -1,68 +0,0 @@
|
||||
from bonobo import Graph, NaiveStrategy, Bag, contextual
|
||||
from bonobo.constants import BEGIN, END
|
||||
from bonobo.context.execution import GraphExecutionContext
|
||||
|
||||
|
||||
def generate_integers():
|
||||
yield from range(10)
|
||||
|
||||
|
||||
def square(i: int) -> int:
|
||||
return i**2
|
||||
|
||||
|
||||
@contextual
|
||||
def push_result(results, i: int):
|
||||
results.append(i)
|
||||
|
||||
|
||||
@push_result.__processors__.append
|
||||
def results(f, context):
|
||||
results = []
|
||||
yield results
|
||||
context.parent.results = results
|
||||
|
||||
|
||||
chain = (generate_integers, square, push_result)
|
||||
|
||||
|
||||
def test_empty_execution_context():
|
||||
graph = Graph()
|
||||
|
||||
ctx = GraphExecutionContext(graph)
|
||||
assert not len(ctx.nodes)
|
||||
assert not len(ctx.plugins)
|
||||
|
||||
assert not ctx.alive
|
||||
|
||||
|
||||
def test_execution():
|
||||
graph = Graph()
|
||||
graph.add_chain(*chain)
|
||||
|
||||
strategy = NaiveStrategy()
|
||||
ctx = strategy.execute(graph)
|
||||
|
||||
assert ctx.results == [1, 4, 9, 16, 25, 36, 49, 64, 81]
|
||||
|
||||
|
||||
def test_simple_execution_context():
|
||||
graph = Graph()
|
||||
graph.add_chain(*chain)
|
||||
|
||||
ctx = GraphExecutionContext(graph)
|
||||
assert len(ctx.nodes) == len(chain)
|
||||
assert not len(ctx.plugins)
|
||||
|
||||
for i, node in enumerate(chain):
|
||||
assert ctx[i].wrapped is node
|
||||
|
||||
assert not ctx.alive
|
||||
|
||||
ctx.recv(BEGIN, Bag(), END)
|
||||
|
||||
assert not ctx.alive
|
||||
|
||||
ctx.start()
|
||||
|
||||
assert ctx.alive
|
||||
@ -1,24 +0,0 @@
|
||||
from bonobo import inject, service
|
||||
|
||||
|
||||
class MyFoo():
|
||||
pass
|
||||
|
||||
|
||||
def test_service_is_singleton():
|
||||
@service
|
||||
def foo():
|
||||
return MyFoo()
|
||||
|
||||
assert foo() is foo()
|
||||
|
||||
@inject(foo)
|
||||
def bar(myfoo):
|
||||
assert myfoo is foo()
|
||||
|
||||
bar()
|
||||
|
||||
foo2 = foo.define()
|
||||
|
||||
assert type(foo()) == type(foo2())
|
||||
assert foo2() is not foo()
|
||||
Reference in New Issue
Block a user