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.