Skip to main content

Outflow is a framework that helps you build and run task workflows.

The api is as simple as possible while still giving the user full control over the definition and execution of the workflows.

Feature highlight :

  • Simple but powerful API
  • Support for parallelized and distributed execution
  • Centralized command line interface for your pipeline commands
  • Integrated database access, sqlalchemy models and alembic migrations
  • Executions and exceptions logging for tracability
  • Strict type and input/output checking for a robust pipeline

Check out our documentation for more information.

Installing

Install and update using pip:

pip install -U outflow

Quick start

One file starter

Create a pipeline.py script:

# -- pipeline.py
from outflow.core.commands import Command, RootCommand
from outflow.core.pipeline import Pipeline
from outflow.core.tasks import Task


# with the as_task decorator, the function will be automatically converted into a Task subclass
# the signature of the function, including the return type, is used to determine task inputs and outputs
@Task.as_task
def GetValues() -> {'a': str, 'b': str}:
    return {'a': 'hello', 'b': 'world'}

# default values can also be used as inputs
@Task.as_task
def PrintValues(a: str, b: str, c: str = '?' ):
    print(f"{a} {b}{c}")

@RootCommand.subcommand()
class HelloWorld(Command):

    def setup_tasks(self):
        # instantiate tasks
        get_values = GetValues()

        # you can specify inputs value during instantiation
        print_values = PrintValues(c="!")

        # build the workflow
        get_values >> print_values

        # return the terminating task(s) of the workflow
        # they will be used as entrypoints to navigate through the execution tree
        return [print_values]

if __name__ == "__main__":
    # instantiate and run the pipeline
    with Pipeline(
        root_directory=None,
        settings_module="outflow.core.pipeline.default_settings",
        force_dry_run=True,
    ) as pipeline:
        result =  pipeline.run()

and run your first Outflow pipeline:

$ python pipeline.py hello_world

A robust, configurable and well-organized pipeline

You had a brief overview of Outflow's features and you want to go further. Outflow offers command line tools to help you to start your pipeline project.

First, we will need to auto-generate the pipeline structure -- a collection of files including the pipeline settings, the database and the cluster configuration, etc.

$ python -m outflow management create pipeline my_pipeline

Then, we have to create a plugin -- a dedicated folder regrouping the commands, the tasks as well as the description of the database (the models)

$ python -m outflow management create plugin my_namespace.my_plugin --plugin_dir my_pipeline/plugins/my_plugin

In the my_pipeline/settings.py file, add your new plugin to the plugin list:

PLUGINS = [
    'outflow.management',
    'my_namespace.my_plugin',
]

and run the following command:

$ python ./my_pipeline/manage.py my_plugin

You'll see the following output on the command line:

 * outflow.core.pipeline.pipeline - pipeline.py:325 - INFO - No cluster config found in configuration file, running in a local cluster
 * my_namespace.my_plugin.commands - commands.py:49 - INFO - Hello from my_plugin

Your pipeline is up and running. You can now start adding new tasks and commands.

Contributing

For guidance on setting up a development environment and how to make a contribution to Outflow, see the contributing guidelines.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

outflow-0.6.2.tar.gz (78.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

outflow-0.6.2-py3-none-any.whl (114.1 kB view details)

Uploaded Python 3

File details

Details for the file outflow-0.6.2.tar.gz.

File metadata

  • Download URL: outflow-0.6.2.tar.gz
  • Upload date:
  • Size: 78.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.12 CPython/3.8.12 Linux/5.15.7-zen1-1-zen

File hashes

Hashes for outflow-0.6.2.tar.gz
Algorithm Hash digest
SHA256 448fb16e0b72e4e7467e2444fab39ff6de587295664f9f7f7e3c112f1ef6c96d
MD5 1b44542183f1913b945fd41bbb007ad1
BLAKE2b-256 15be1007ee97c2233234913ff69f910cc92da3ce77a9f34d040f1fe6b8c4b5fa

See more details on using hashes here.

File details

Details for the file outflow-0.6.2-py3-none-any.whl.

File metadata

  • Download URL: outflow-0.6.2-py3-none-any.whl
  • Upload date:
  • Size: 114.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.12 CPython/3.8.12 Linux/5.15.7-zen1-1-zen

File hashes

Hashes for outflow-0.6.2-py3-none-any.whl
Algorithm Hash digest
SHA256 312b5df122cc53a81fd48dfaa72fa82b2bac41296999b26831d0cd0f015919fb
MD5 b54a631a4b926068de0142829474c765
BLAKE2b-256 8c7c8f7f04d02f8a66f3e7b9c7c6d5632835a3efdfa922f69aa33e9348cf5ed0

See more details on using hashes here.

Release history Release notifications | RSS feed

0.9.2

2 files

0.9.1

2 files

0.9.0

2 files

0.7.1

2 files

0.7.0

2 files

This release

0.6.2 This release

2 files

0.6.1

2 files

0.6.0

2 files

0.5.7

2 files

0.5.5

2 files

0.5.4

2 files

0.5.3

2 files

0.5.2

2 files

0.5.1

2 files

0.5.0

2 files

0.4.2

2 files

0.4.1

2 files

0.4.0

2 files

0.3.4

2 files

0.3.3

2 files

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page