A simple workflow framework for building and managing data processing pipelines
Project description
FlowerPower 🌸 — Build & Orchestrate Data Pipelines
A simple, configuration-driven workflow framework built on Hamilton
FlowerPower is a Python framework for building, configuring, and running data processing pipelines. You write your logic as plain Python functions using Hamilton; FlowerPower takes care of the project structure, layered configuration, execution, the CLI, a web UI, and pluggable I/O.
Hamilton = the DAG, FlowerPower = everything around it. You describe nodes as functions; FlowerPower wires up config, runs, retries, visualization, and orchestration.
✨ Features
- Modular pipelines — Define transforms as Python functions; Hamilton assembles them into a directed acyclic graph (DAG) from their signatures.
- Configuration-driven — Separate logic from settings with layered YAML, env
overlays (
FP_PIPELINE__*),${VAR}interpolation, and runtime kwargs. - Unified interfaces — Drive everything from the Python API
(
FlowerPowerProject), the CLI (flowerpower), or the web UI (Hamilton UI). - Executors — Run locally, in a thread pool, or distributed with Ray.
- Adapters — Track lineage with the Hamilton Tracker, experiments with MLflow.
- Extensible I/O — CSV, JSON, Parquet, DeltaTable, DuckDB, PostgreSQL, MySQL,
MSSQL, Oracle, SQLite, MQTT via the
flowerpower-ioplugin. - Filesystem abstraction — Local, S3, GCS, and more, through fsspeckit.
📦 Installation
FlowerPower requires Python 3.11+. We recommend uv:
uv venv && source .venv/bin/activate
uv pip install flowerpower
Optional extras:
uv pip install 'flowerpower[io]' # I/O plugins
uv pip install 'flowerpower[ui]' # Hamilton UI
uv pip install 'flowerpower[ray]' # distributed execution
uv pip install 'flowerpower[io,ui,ray]' # combine the extras you need
🚀 Quick start
Create a project, a pipeline, and run it:
flowerpower init --name hello-flowerpower
cd hello-flowerpower
flowerpower pipeline new hello
flowerpower pipeline run hello
Or in Python:
from flowerpower import FlowerPowerProject
# 1. create the project
FlowerPowerProject.new(name="hello-flowerpower")
# 2. load it and create a pipeline
project = FlowerPowerProject.load("hello-flowerpower")
project.pipeline_manager.creator.create_pipeline(name="hello")
# 3. (edit pipelines/hello.py + conf/pipelines/hello.yml, then run)
result = project.run("hello")
print(result)
A pipeline module
Write your DAG as functions in pipelines/hello.py. Parameters come from YAML
and are wired in with Hamilton's @parameterize:
from pathlib import Path
from hamilton.function_modifiers import parameterize
from flowerpower.cfg import Config
PARAMS = Config.load(
Path(__file__).parents[1], pipeline_name="hello"
).pipeline.h_params
@parameterize(**PARAMS["greeting_message"]) # PARAMS is a dict — use ["..."]
def greeting_message(message: str) -> str:
return f"{message},"
@parameterize(**PARAMS["target_name"])
def target_name(name: str) -> str:
return f"{name}!"
def full_greeting(greeting_message: str, target_name: str) -> str:
return f"{greeting_message} {target_name}"
# conf/pipelines/hello.yml
params:
greeting_message:
message: "Hello"
target_name:
name: "World"
run:
final_vars: [full_greeting]
project.run("hello") → {'full_greeting': 'Hello, World!'}.
📖 The full, step-by-step walkthrough is in the Tutorial.
⚙️ Running pipelines
FlowerPowerProject.run() (and PipelineManager.run()) accept a RunConfig and/or
keyword overrides — kwargs always win:
from flowerpower.cfg.pipeline.run import RunConfig
# simple
result = project.run("hello")
# with a RunConfig
result = project.run("hello", run_config=RunConfig(log_level="DEBUG"))
# with kwargs overrides
result = project.run(
"hello",
inputs={"greeting_message": {"message": "Hi"}},
final_vars=["full_greeting"],
)
Async runs use Hamilton's async driver via PipelineManager.run_async():
from flowerpower.pipeline import PipelineManager
pm = PipelineManager(base_dir="hello-flowerpower")
result = await pm.run_async("hello")
See the docs for RunConfig & builders, additional modules, and adapters.
🖥️ Web UI
Launch the Hamilton UI to visualize and inspect pipeline runs:
flowerpower ui
📖 Documentation
Full documentation — installation, tutorial, how-to guides, concepts, CLI, and API reference — lives at https://legout.github.io/flowerpower/.
🤝 Contributing
Contributions are welcome. See the contributing guide and open issues or PRs against legout/flowerpower.
📜 License
MIT — see LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file flowerpower-0.35.0.tar.gz.
File metadata
- Download URL: flowerpower-0.35.0.tar.gz
- Upload date:
- Size: 90.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9f7d76cd66e4adbcf5f2d551bb9ce55ca6ac74c9f4c0653bf853c97f3f3c2f88
|
|
| MD5 |
a07f1103865435a79a268b128c9eeb35
|
|
| BLAKE2b-256 |
0047e829ee80591a60e744e9b8020ba783fa3322cc80d47db5a5a08ef2f2797e
|
File details
Details for the file flowerpower-0.35.0-py3-none-any.whl.
File metadata
- Download URL: flowerpower-0.35.0-py3-none-any.whl
- Upload date:
- Size: 107.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c1af7899954f9dba101922d9377f931ec8b7f6a477e0e9e09bd8214c913dbbf1
|
|
| MD5 |
ec044d7e8adeff66c6fb69fdcae1c0ac
|
|
| BLAKE2b-256 |
3285c31dd135ac253d6ae44b75897198530d61b93c70be759b1537da9ad2769f
|