From 452652431a32ef4bc6dbb549efe858b0c3e71466 Mon Sep 17 00:00:00 2001 From: Joshua Harlow Date: Wed, 10 Sep 2014 11:36:21 -0700 Subject: [PATCH] Example which shows how to move values from one task to another Part of blueprint more-examples Change-Id: I05151c3f827d6a8a0b6a7f0aeab17bab2c8ce440 --- doc/source/examples.rst | 12 ++++ taskflow/examples/simple_linear_pass.out.txt | 9 +++ taskflow/examples/simple_linear_pass.py | 68 ++++++++++++++++++++ 3 files changed, 89 insertions(+) create mode 100644 taskflow/examples/simple_linear_pass.out.txt create mode 100644 taskflow/examples/simple_linear_pass.py diff --git a/doc/source/examples.rst b/doc/source/examples.rst index 9199bc11..10850190 100644 --- a/doc/source/examples.rst +++ b/doc/source/examples.rst @@ -1,3 +1,15 @@ +Passing values from and to tasks +================================ + +.. note:: + + Full source located at :example:`simple_linear_pass`. + +.. literalinclude:: ../../taskflow/examples/simple_linear_pass.py + :language: python + :linenos: + :lines: 16- + Making phone calls ================== diff --git a/taskflow/examples/simple_linear_pass.out.txt b/taskflow/examples/simple_linear_pass.out.txt new file mode 100644 index 00000000..1e58a63c --- /dev/null +++ b/taskflow/examples/simple_linear_pass.out.txt @@ -0,0 +1,9 @@ +Constructing... +Loading... +Compiling... +Preparing... +Running... +Executing 'a' +Executing 'b' +Got input 'a' +Done... diff --git a/taskflow/examples/simple_linear_pass.py b/taskflow/examples/simple_linear_pass.py new file mode 100644 index 00000000..bda25216 --- /dev/null +++ b/taskflow/examples/simple_linear_pass.py @@ -0,0 +1,68 @@ +# -*- coding: utf-8 -*- + +# Copyright (C) 2014 Yahoo! Inc. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import logging +import os +import sys + +logging.basicConfig(level=logging.ERROR) + +self_dir = os.path.abspath(os.path.dirname(__file__)) +top_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), + os.pardir, + os.pardir)) +sys.path.insert(0, top_dir) +sys.path.insert(0, self_dir) + +from taskflow import engines +from taskflow.patterns import linear_flow +from taskflow import task + +# INTRO: This examples shows how a task (in a linear/serial workflow) can +# produce an output that can be then consumed/used by a downstream task. + + +class TaskA(task.Task): + default_provides = ['a'] + + def execute(self): + print("Executing '%s'" % (self.name)) + return 'a' + + +class TaskB(task.Task): + def execute(self, a): + print("Executing '%s'" % (self.name)) + print("Got input '%s'" % (a)) + + +print("Constructing...") +wf = linear_flow.Flow("pass-from-to") +wf.add(TaskA('a'), TaskB('b')) + +print("Loading...") +e = engines.load(wf) + +print("Compiling...") +e.compile() + +print("Preparing...") +e.prepare() + +print("Running...") +e.run() + +print("Done...")