A declarative data engineering framework - Explicit over implicit, Stories over magic
Project description
Odibi
Declarative data pipelines. YAML in, star schemas out.
Odibi is a framework for building data pipelines. You describe what you want in YAML; Odibi handles how. Every run generates a "Data Story" — an audit report showing exactly what happened to your data.
🤖 AI/LLM Users: For comprehensive context, see docs/ODIBI_DEEP_CONTEXT.md — 2,200+ lines covering all patterns, transformers, validation, connections, and runtime behavior.
⚡ Quick Start
pip install odibi
Option 1: Start from a template
odibi init my_project --template star-schema
cd my_project
odibi run odibi.yaml
odibi story last # View the audit report
Option 2: Clone the reference example
git clone https://github.com/henryodibi11/Odibi.git
cd Odibi/docs/examples/canonical/runnable
odibi run 04_fact_table.yaml
This builds a complete star schema in seconds:
- 3 dimension tables (customer, product, date)
- 1 fact table with FK lookups and orphan handling
- HTML audit report
📖 The Canonical Example
pipelines:
- pipeline: build_dimensions
nodes:
- name: dim_customer
read:
connection: source
format: csv
path: customers.csv
pattern:
type: dimension
params:
natural_key: customer_id
surrogate_key: customer_sk
scd_type: 1
write:
connection: gold
format: parquet
path: dim_customer
- name: dim_date
pattern:
type: date_dimension
params:
start_date: "2025-01-01"
end_date: "2025-12-31"
write:
connection: gold
format: parquet
path: dim_date
- pipeline: build_facts
nodes:
- name: fact_sales
depends_on: [dim_customer, dim_date]
read:
connection: source
format: csv
path: orders.csv
pattern:
type: fact
params:
grain: [order_id, line_item_id]
dimensions:
- source_column: customer_id
dimension_table: dim_customer
dimension_key: customer_id
surrogate_key: customer_sk
orphan_handling: unknown
write:
connection: gold
format: parquet
path: fact_sales
🚀 Key Features
| Feature | Description |
|---|---|
| Data Stories | Every run generates an HTML audit report |
| Dimensional Patterns | SCD1/SCD2, date dimension, fact tables built-in |
| Validation & Contracts | Fail-fast checks, quarantine bad rows |
| Dual Engine | Pandas locally, Spark in production — same config |
| Production Ready | Retry, alerting, secrets, Delta Lake support |
📚 Documentation
| Goal | Link |
|---|---|
| Get running in 10 minutes | Golden Path |
| Copy THE working example | THE_REFERENCE.md |
| Solve a specific problem | Playbook |
| Understand when to use what | Decision Guide |
| See all config options | YAML Schema |
📦 Installation
# Standard (Pandas engine)
pip install odibi
# With Spark + Azure support
pip install "odibi[spark,azure]"
🎯 Who is this for?
- Solo data engineers building pipelines without a team
- Analytics engineers moving from dbt to Python-based pipelines
- Anyone tired of writing the same boilerplate for every project
🤝 Contributing
We welcome contributions! See CONTRIBUTING.md.
Maintainer: Henry Odibi (@henryodibi11)
License: Apache 2.0
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 odibi-2.16.0.tar.gz.
File metadata
- Download URL: odibi-2.16.0.tar.gz
- Upload date:
- Size: 687.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3bd119563bf523300fba53cb60a8a8afef06ecd77f073bf595d936fb2f11bb4e
|
|
| MD5 |
fa47bcc0d7862dfd9e193208e5c24cb3
|
|
| BLAKE2b-256 |
13093ea25c743712f4cb16e97d86f72de03729c5bf3920c123d020ef7343cf2f
|
Provenance
The following attestation bundles were made for odibi-2.16.0.tar.gz:
Publisher:
publish.yml on henryodibi11/Odibi
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
odibi-2.16.0.tar.gz -
Subject digest:
3bd119563bf523300fba53cb60a8a8afef06ecd77f073bf595d936fb2f11bb4e - Sigstore transparency entry: 915405251
- Sigstore integration time:
-
Permalink:
henryodibi11/Odibi@d7e6fe8e3c449494b70e01c6f0ff5b24ad434603 -
Branch / Tag:
refs/tags/v2.16.0 - Owner: https://github.com/henryodibi11
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d7e6fe8e3c449494b70e01c6f0ff5b24ad434603 -
Trigger Event:
release
-
Statement type:
File details
Details for the file odibi-2.16.0-py3-none-any.whl.
File metadata
- Download URL: odibi-2.16.0-py3-none-any.whl
- Upload date:
- Size: 705.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
763c03e20fc9d4afd833073cada688dc70ee578b771b46edccbe29066b9b5688
|
|
| MD5 |
1917208ebfab93f2a172ac2a45670c43
|
|
| BLAKE2b-256 |
78fa7584d28ee3b72c4c7b65b5a7d7c1301f257e4eb4babe899f1a47f9a43686
|
Provenance
The following attestation bundles were made for odibi-2.16.0-py3-none-any.whl:
Publisher:
publish.yml on henryodibi11/Odibi
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
odibi-2.16.0-py3-none-any.whl -
Subject digest:
763c03e20fc9d4afd833073cada688dc70ee578b771b46edccbe29066b9b5688 - Sigstore transparency entry: 915405333
- Sigstore integration time:
-
Permalink:
henryodibi11/Odibi@d7e6fe8e3c449494b70e01c6f0ff5b24ad434603 -
Branch / Tag:
refs/tags/v2.16.0 - Owner: https://github.com/henryodibi11
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d7e6fe8e3c449494b70e01c6f0ff5b24ad434603 -
Trigger Event:
release
-
Statement type: