Tiozin, your friendly ETL framework
Project description
Tiozin
ETL shouldn't require 80 files, 50 YAMLs, and a PhD in complexity.
Tiozin brings it back to basics: Transform. Input. Output. Nothing more, nothing less.
A lightweight Python framework that makes data jobs declarative, testable, and actually enjoyable to write.
Philosophy
Your uncle's advice: keep it simple, readable, and testable.
Tiozin is built around a small set of principles that are not features but constraints that shape the design.
- Declarative: Define what, not how
- Pluggable: Swap runners, registries, and plugins when needed
- Metadata-native: Execution and metadata walk together
- Observable: Logs that actually help
- Testable: Mock anything, validate everything
One-Minute Example
pip install tiozin
Define a declarative job
kind: LinearJob
name: example_job
owner: tiozin@tiozin.com
maintainer: tiozin
cost_center: tio_scrooge
org: tiozin
region: latam
domain: marketing
subdomain: campaigns
layer: refined
product: users
model: customers
runner:
kind: NoOpRunner
name: postgres
log_level: "{{ ENV.LOG_LEVEL }}"
db_url: postgres://user:{{ SECRET.FAKE_PASSWORD }}@host:5432/dbname
inputs:
- kind: NoOpInput
name: load_it
layer: raw
path: .output/lake-{{domain}}-{{layer}}/{{product}}/{{model}}/date={{ DAY[-1] }}
transforms:
- kind: NoOpTransform
name: process_it
strategy: sha256
outputs:
- kind: NoOpOutput
name: save_it
path: .output/lake-{{domain}}-{{layer}}/{{product}}/{{model}}/{{ today }}
Run it:
$ tiozin run examples/jobs/dummy.yaml
Using Python directly
from tiozin import TiozinApp
app = TiozinApp()
app.run("examples/jobs/dummy.yaml")
Done. No ceremony, no boilerplate.
Who is Tiozin for?
Tiozin is human-readable and machine-generatable:
- Data engineers who want reusable pipeline components
- Teams that value declarative jobs
- Projects that require testable ETL logic
- Pipelines where metadata is connected to the execution model
- Teams leveraging AI agents 🤖 to author and maintain data jobs
Documentation
Writing Declarative Jobs
Concepts
Extending Tiozin
- Creating a Provider Family
- Creating Pluggable Tiozins
- Tio Proxy: Adding Cross Cutting Family Features
- Tio Kernel - The Core Family
- Tio Spark - Spark Family Example
- Tio Duckdb - DuckDB Family Example
How-to Guides
Reference
Contributing
Contributions are welcome! See CONTRIBUTING.md for guidelines.
License
This project is licensed under the Mozilla Public License 2.0.
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
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 tiozin-3.0.0.tar.gz.
File metadata
- Download URL: tiozin-3.0.0.tar.gz
- Upload date:
- Size: 95.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","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 |
a8ffb685956b53e0db6775db99b107cc4313c587e3641fa6381376cb445d9cd3
|
|
| MD5 |
4165b1c8b695284359d8525142049b2b
|
|
| BLAKE2b-256 |
1bb2cdfcd77317886a76afbf36187104b94c61ae88fb4f48f0f7cb43223061d8
|
File details
Details for the file tiozin-3.0.0-py3-none-any.whl.
File metadata
- Download URL: tiozin-3.0.0-py3-none-any.whl
- Upload date:
- Size: 151.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","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 |
83030c44dfd9da7a76834f03a978feeff3249f48a52e751a6f0d1caca6183e04
|
|
| MD5 |
7bc76f80d41fc20df2de4d410e6a620c
|
|
| BLAKE2b-256 |
e37d23b087b008596a50e423d10240745cae67ed05d27cae8eb95aae848c2ebb
|