> ## Documentation Index
> Fetch the complete documentation index at: https://docs.agno.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Fully Python Workflow

> Replace the steps list with a single Python function that controls the whole run.

If you'd rather control the execution flow yourself, pass a single Python function as
the workflow's steps instead of a list. You still get workflow features like storage,
streaming, and session management.

```python fully_python_workflow.py theme={null}
from agno.workflow import Workflow, WorkflowExecutionInput


def custom_workflow_function(
    workflow: Workflow,
    execution_input: WorkflowExecutionInput,
) -> str:
    topic = str(execution_input.input)
    sections = [
        f"Market definition for {topic}",
        "Customer segments",
        "Competitive risks",
    ]
    return "\n".join(f"- {section}" for section in sections)

workflow = Workflow(
    name="Function-Based Workflow",
    steps=custom_workflow_function,
)

workflow.print_response("Evaluate the market potential for quantum computing applications", markdown=True)
```

## Developer Resources

* [Function-Based Workflow](/workflows/usage/function-instead-of-steps)

Migrating from v1 workflows? See the [Workflows migration guide](/other/workflows-migration).
