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]"

Optional dev CLI (Typer/Rich):

pip install "flowbook[dev]"
flowbook-dev --version
flowbook-dev doctor

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).

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

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.0a1.tar.gz (25.5 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.0a1-py3-none-any.whl (42.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: flowbook-0.1.0a1.tar.gz
  • Upload date:
  • Size: 25.5 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.0a1.tar.gz
Algorithm Hash digest
SHA256 de8381e9badd0e1db9804f25773f623749c40f877ad3f40240d98b842b972b5f
MD5 8da65ab0ec0fc7ccc85d0e7903dc0b0d
BLAKE2b-256 0c2fdba6ab48ae34acbf3f1d7fb979cbff3d8451e72dbf0ce6ab531f8221ba13

See more details on using hashes here.

File details

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

File metadata

  • Download URL: flowbook-0.1.0a1-py3-none-any.whl
  • Upload date:
  • Size: 42.0 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.0a1-py3-none-any.whl
Algorithm Hash digest
SHA256 2c09146481b34101d312d6e608826afa1647e26035c64ef9fbe69dbb2ccea4d8
MD5 822edae3b70b1835181ebc0fc3963386
BLAKE2b-256 8b9965dc6139f2df03127b78cc1255f82c654a2ba8e99a5380189cefee7ec807

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