Ir para o conteúdo

With Workflow

The start command supports two mutually exclusive entry points:

Flag When to use
--step / -s Run a single @action-decorated function
--workflow / -w Run a factory that returns a DotFlow instance

Single step

dotflow start --step docs_src.cli.cli_with_workflow:step_one

Full workflow factory

The factory must be a plain callable (no @action) that returns a configured DotFlow — the CLI is responsible for calling .start().

dotflow start --workflow docs_src.cli.cli_with_workflow:pipeline
dotflow start --workflow docs_src.cli.cli_with_workflow:pipeline --mode parallel
from os import system

from dotflow import DotFlow, action


@action
def step_one():
    return "step one done"


@action
def step_two():
    return "step two done"


def pipeline() -> DotFlow:
    workflow = DotFlow()
    workflow.task.add(step=step_one)
    workflow.task.add(step=step_two)

    return workflow


def main():
    system(
        "dotflow start --step docs_src.cli.cli_with_workflow:step_one"
    )
    system(
        "dotflow start --workflow docs_src.cli.cli_with_workflow:pipeline"
    )
    system(
        "dotflow start --workflow docs_src.cli.cli_with_workflow:pipeline"
        " --mode parallel"
    )


if __name__ == "__main__":
    main()

Note

Passing both --step and --workflow at the same time is an error.