def test_invert_links(): A = value(1) B = value(2) C = add(A, B) C = get_workflow(C) A = get_workflow(A) B = get_workflow(B) assert is_workflow(C) assert C.nodes[C.root].bound_args.args == (Empty, Empty) assert (C.root, ArgumentAddress(ArgumentKind.regular, 'a', None)) \ in C.links[A.root] assert (C.root, ArgumentAddress(ArgumentKind.regular, 'b', None)) \ in C.links[B.root] deps = invert_links(C.links) assert deps == { A.root: {}, B.root: {}, C.root: { ArgumentAddress(ArgumentKind.regular, 'a', None): A.root, ArgumentAddress(ArgumentKind.regular, 'b', None): B.root } }
def test_is_node_ready(): A = value(1) B = add(1, A) A = get_workflow(A) B = get_workflow(B) assert is_node_ready(A.nodes[A.root]) assert not is_node_ready(B.nodes[B.root])
def test_with_keywords(): A = value(1) B = value(2) C = takes_keywords(a=A, b=B, s="regular!") C = get_workflow(C) A = get_workflow(A) B = get_workflow(B) assert is_workflow(C) assert C.nodes[C.root].bound_args.args == ("regular!",) assert C.nodes[C.root].bound_args.kwargs == {'a': Empty, 'b': Empty}
def test_with_keywords(): A = value(1) B = value(2) C = takes_keywords(a=A, b=B, s="regular!") C = get_workflow(C) A = get_workflow(A) B = get_workflow(B) assert is_workflow(C) assert C.nodes[C.root].bound_args.args == ("regular!", ) assert C.nodes[C.root].bound_args.kwargs == {'a': Empty, 'b': Empty}
def test_merge_workflow(): A = value(1) B = value(2) C = add(A, B) assert is_workflow(C) C = get_workflow(C) A = get_workflow(A) B = get_workflow(B) assert C.nodes[C.root].bound_args.args == (Empty, Empty) assert (C.root, ArgumentAddress(ArgumentKind.regular, 'a', None)) \ in C.links[A.root] assert (C.root, ArgumentAddress(ArgumentKind.regular, 'b', None)) \ in C.links[B.root]
def test_binder(): A = value(1) B = value(2) C = gather(A, B) C = get_workflow(C) A = get_workflow(A) B = get_workflow(B) assert is_workflow(C) assert C.nodes[C.root].bound_args.args == (Empty, Empty) assert (C.root, ArgumentAddress(ArgumentKind.variadic, 'a', 0)) \ in C.links[A.root] assert (C.root, ArgumentAddress(ArgumentKind.variadic, 'a', 1)) \ in C.links[B.root]
def test_invert_links(): A = value(1) B = value(2) C = add(A, B) C = get_workflow(C) A = get_workflow(A) B = get_workflow(B) assert is_workflow(C) assert C.nodes[C.root].bound_args.args == (Empty, Empty) assert (C.root, ArgumentAddress(ArgumentKind.regular, 'a', None)) \ in C.links[A.root] assert (C.root, ArgumentAddress(ArgumentKind.regular, 'b', None)) \ in C.links[B.root] deps = invert_links(C.links) assert deps == { A.root: {}, B.root: {}, C.root: { ArgumentAddress(ArgumentKind.regular, 'a', None): A.root, ArgumentAddress(ArgumentKind.regular, 'b', None): B.root}}
def test_hybrid_coroutine_runner_03(): A1 = [f(i) for i in range(11)] A2 = [g(i) for i in range(7)] B = sum(gather(*(A1+A2))) tic1, c1 = ticcer() tic2, c2 = ticcer() result = Scheduler().run( hybrid_coroutine_worker(selector, { 1: tic_worker(tic1), 2: tic_worker(tic2)}), get_workflow(B)) assert c1() == 11 assert c2() == 7 assert result == 173
def test_hybrid_coroutine_runner_03(): A1 = [f(i) for i in range(11)] A2 = [g(i) for i in range(7)] B = sum(gather(*(A1 + A2))) tic1, c1 = ticcer() tic2, c2 = ticcer() result = Scheduler().run( hybrid_coroutine_worker(selector, { 1: tic_worker(tic1), 2: tic_worker(tic2) }), get_workflow(B)) assert c1() == 11 assert c2() == 7 assert result == 173
def test_get_workflow(): assert get_workflow(4) is None
def run(wf, *, display, n_threads=1): """Run the workflow using the dynamic-exclusion worker.""" worker = dynamic_exclusion_worker(display, n_threads) return noodles.Scheduler(error_handler=display.error_handler)\ .run(worker, get_workflow(wf))
def test_sched_meth(): a = A(5) b = a.mul(5) result = Scheduler().run(process_worker(registry), get_workflow(b)) assert result == 25