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

First, 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 as_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
@as_task
def GetValues() -> {"word1": str, "word2": str}:
    return {"word1": "Hello", "word2": "world!"}

# default values can also be used as inputs
@as_task
def Concatenate(word1: str, word2: str) -> {"result": str}:
    result = f"{word1} {word2}"
    return result  # you can return the value directly if your task has only one output

# A task can have side-effects and returns nothing
@as_task
def PrintResult(result: str):
    print(result)

@RootCommand.subcommand()
class HelloWorld(Command):
    def setup_tasks(self):
        # instantiate the tasks
        get_values = GetValues()
        concatenate = Concatenate(word2="outflow!")  # you can override task inputs value at instantiation
        print_result = PrintResult()

        # build the workflow
        get_values >> concatenate >> print_result


# 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.

Metadata

Release files for outflow 0.9.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for outflow 0.9.2
File Size Uploaded
outflow-0.9.2.tar.gz 89.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for outflow 0.9.2
File Interpreter ABI Platform
outflow-0.9.2-py3-none-any.whl Python 3 none any Details

Total release size: 223.4 kB

Release files / outflow-0.9.2.tar.gz

Download URL outflow-0.9.2.tar.gz
Size 89.4 kB
Tags Source
SHA-256 checksum
How to use checksums
b2b83535d06e0086ddf4daa5c2d1c8bbe73e75541ef642278da771aac71da49b
BLAKE2b-256 checksum
How to use checksums
4738436154437ba7081c5530c02260b074219c88f7410b36c3336ad058b1d3f0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.1.3 CPython/3.12.6 Darwin/24.6.0

Release files / outflow-0.9.2-py3-none-any.whl

Download URL outflow-0.9.2-py3-none-any.whl
Size 134.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
46bc37c9a96363598490690fc5e36e28f41b0b15882cef91989d48b007ba087c
BLAKE2b-256 checksum
How to use checksums
f0faf2a8e31fcb8bedc4742fb3e20986bf7322a53670ad13d77ebfc0384ba5ec
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.1.3 CPython/3.12.6 Darwin/24.6.0

Release history Release notifications | RSS feed

This release

0.9.2 This release

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.7

2 release files

0.5.5

2 release files

0.5.4

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release 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