Skip to main content

Config-driven data flow framework with pluggable ops and extensions (Excel, Postgres, FastAPI).

Project description

flowbook — a framework for flexible data flows.

Quickstart

pip install flowbook
flowbook --version
flowbook doctor

Core-only install has no heavy dependencies. For Excel, Postgres, and FastAPI extensions:

pip install "flowbook[full]"

Dev CLI (Typer/Rich) for local development and demos:

pip install "flowbook[dev]"
flowbook --version
flowbook doctor
flowbook db reset    # DB reset + seed (needs flowbook[dev])
flowbook hands-on   # API hands-on flow
flowbook streamlit  # Streamlit UI

flowbook doctor prints Python/OS/flowbook version and suggests pip install "flowbook[excel]", "flowbook[postgres]", "flowbook[fastapi]", or "flowbook[full]" for missing extensions.

Concept

  • Config-driven: Which steps run, in what order, and how inputs are bound—all come from config (pipeline config, ConfigStore, plan templates). Change the flow without changing framework code.
  • Extend via extensions: The behavior of each step is an op registered in a Registry. Add new ops in your own package; the framework only resolves op name → run op. No need to touch the core.
  • Single data rule: Data lives only in Artifacts; steps receive resolved values and return a dict. Contracts are explicit (e.g. PortSpec for inputs).
  • AI-friendly: Config (templates, rules, mappings) is easy for LLMs to generate or choose. New ops (including AI-backed ones) plug in the same way. You can call LLMs inside an op; the engine stays agnostic.

Usage (high-level)

  1. Engine = store (artifacts) + registry (ops) + optional config store. You build it once.
  2. Session = engine.prepare(). Put inputs (logical name → value), then run a pipeline config (list of steps with name, op, inputs).
  3. Optionally run a planner first (e.g. plan_from_template); it produces a plan config that you then execute in the same session.
  4. Steps read from the store (via resolved inputs) and write outputs back; later steps can depend on them. All orchestration is driven by config; new capabilities are new ops in your extensions.

To add your own steps: see Adding custom steps (minimal: one module + one line at startup; optional: package with entry points). To add CLI commands: see Adding custom CLI.

Development

  • CI before commit: npm run ci (lint, typecheck, test) runs automatically via pre-commit. It runs only unit (and smoke) tests; integration and e2e are skipped so CI does not require Postgres. After clone, run:
    poetry install
    pre-commit install
    
    (The dev group includes full extras so tests can run; for a minimal env use pip install flowbook only.)
  • Full test suite (integration + e2e): Start Postgres (see below), then npm run test or poetry run pytest. To run only integration: poetry run pytest -m integration.

License

Apache License 2.0

Running Postgres with Docker Compose

docker compose -f infra/compose.postgres.yml --env-file infra/.env.postgres down -v
docker compose -f infra/compose.postgres.yml --env-file infra/.env.postgres up -d
docker compose -f infra/compose.postgres.yml --env-file infra/.env.postgres logs -f

Dev / Demo

API and Streamlit UI run from the repo for development and demos.

API

FLOWBOOK_DATABASE_URL=postgresql://flowbook:flowbook@localhost:5432/flowbook \
  poetry run uvicorn flowbook.extensions.api.app:app --reload --port 8000

API docs: http://localhost:8000/docs

Streamlit UI

Streamlit runs in a separate venv (pandas version compatibility):

flowbook streamlit

Requires the API to be running. Tabs: Health, Inspect, Import, Artifacts, Export, Download, Configs.

DB reset (dev only)

Safety: Requires FLOWBOOK_DB_RESET=1. Refuses non-localhost DSNs.

FLOWBOOK_DATABASE_URL=... FLOWBOOK_DB_RESET=1 flowbook db reset

Truncates artifacts and configs, then seeds from configs/ (default --config-dir configs).

Hands-on flow

flowbook hands-on

Runs Health -> Inspect -> Import -> Artifacts -> Export -> Download (interactive). Requires API up and a fixture. Generate fixture:

flowbook fixture generate -o tests/fixtures/excel

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flowbook-0.1.0a2.tar.gz (47.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

flowbook-0.1.0a2-py3-none-any.whl (77.1 kB view details)

Uploaded Python 3

File details

Details for the file flowbook-0.1.0a2.tar.gz.

File metadata

  • Download URL: flowbook-0.1.0a2.tar.gz
  • Upload date:
  • Size: 47.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for flowbook-0.1.0a2.tar.gz
Algorithm Hash digest
SHA256 418535f2f8467872c50980aa94389675f318eb57bed42381c544aa995cec1a28
MD5 4dfc44221c51327a99a758706574d09c
BLAKE2b-256 66d1dbdad9ed2077c9393036c50ec3df4bf30bb686553f21b8d76e2bb1b33949

See more details on using hashes here.

File details

Details for the file flowbook-0.1.0a2-py3-none-any.whl.

File metadata

  • Download URL: flowbook-0.1.0a2-py3-none-any.whl
  • Upload date:
  • Size: 77.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for flowbook-0.1.0a2-py3-none-any.whl
Algorithm Hash digest
SHA256 582bc0a0393edc0ef6aba726c1608ade2486c6e0b1b3fbc3d6a3fab280c51ce5
MD5 a9e9e0c9b52ceae945c189d7ef57a387
BLAKE2b-256 1c3cbd5a95b4b0550a7278096c8c7951d6ce053e41c549ea97305f0d4afa8d28

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page