ZooPipe is a data processing framework that allows you to process data in a declarative way.
Project description
ZooPipe
ZooPipe is a lean, ultra-high-performance data processing engine for Python. It leverages a 100% Rust core to handle I/O and orchestration, while keeping the flexibility of Python for schema validation (via Pydantic) and custom data enrichment (via Hooks).
✨ Key Features
- 🚀 100% Native Rust Engine: The core execution loop, including CSV and JSON parsing/writing, is implemented in Rust for maximum throughput.
- 🔍 Declarative Validation: Use Pydantic models to define and validate your data structures naturally.
- 🪝 Python Hooks: Transform and enrich data at any stage using standard Python functions or classes.
- ⚡ Zero-Copy Intent: Minimal overhead between the Rust processing engine and Python validation/hooks.
- 🚨 Automated Error Routing: Native support for routing failed records to a dedicated error output.
- 📊 Multiple Format Support: Optimized readers/writers for CSV, JSONL, and SQL databases (via SQLx with batch inserts).
- 🔧 Pluggable Executors: Choose between single-threaded or multi-threaded execution strategies.
🚀 Quick Start
Installation
uv build
uv run maturin develop --release
Simple Example
from pydantic import BaseModel, ConfigDict
from zoopipe import CSVInputAdapter, CSVOutputAdapter, Pipe
class UserSchema(BaseModel):
model_config = ConfigDict(extra="ignore")
user_id: str
username: str
age: int
pipe = Pipe(
input_adapter=CSVInputAdapter("users.csv"),
output_adapter=CSVOutputAdapter("processed_users.csv"),
error_output_adapter=CSVOutputAdapter("errors.csv"),
schema_model=UserSchema,
)
pipe.start()
pipe.wait()
print(f"Finished! Processed {pipe.report.total_processed} items.")
📚 Documentation
Core Concepts
- Executors Guide - Choose and configure execution strategies
Input/Output Adapters
File Formats
- CSV Adapters - High-performance CSV reading and writing
- JSON Adapters - JSONL and JSON array format support
- Parquet Adapters - Columnar storage for analytics and data lakes
- Arrow Adapters - Apache Arrow IPC format for zero-copy interoperability
Databases
- SQL Adapters - Read from and write to SQL databases with batch optimization
- DuckDB Adapters - Analytical database for OLAP workloads
Advanced
- Python Generator Adapters - In-memory streaming and testing
- Cloud Storage (S3) - Read and write data from Amazon S3 and compatible services
🛠 Architecture
ZooPipe is designed as a thin Python wrapper around a powerful Rust core:
- Python Layer: Configuration, Pydantic models, and custom Hooks.
- Rust Core:
- Adapters: High-speed CSV/JSON/SQL Readers and Writers with optimized batch operations.
- NativePipe: Orchestrates the loop, fetching chunks, calling a consolidated Python batch processor, and routing result batches.
- Executors: Single-threaded or multi-threaded batch processing strategies.
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
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 Distributions
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 zoopipe-2026.1.14.tar.gz.
File metadata
- Download URL: zoopipe-2026.1.14.tar.gz
- Upload date:
- Size: 106.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
72bf5e3bbd088b8a473a2b89498977d7a27657ba0fd7f67eda85f77943558252
|
|
| MD5 |
c0c93e20f44392212a17a0b8a167fb78
|
|
| BLAKE2b-256 |
de4885bc8951150ca1a80a32b57afbbc25c98fb3b02ddb8a22b3d7d0e19a0f7c
|
Provenance
The following attestation bundles were made for zoopipe-2026.1.14.tar.gz:
Publisher:
release.yml on albertobadia/zoopipe
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zoopipe-2026.1.14.tar.gz -
Subject digest:
72bf5e3bbd088b8a473a2b89498977d7a27657ba0fd7f67eda85f77943558252 - Sigstore transparency entry: 821139854
- Sigstore integration time:
-
Permalink:
albertobadia/zoopipe@415986068a93cf893a31e19dd9402508a21dc3f3 -
Branch / Tag:
refs/tags/2026-01-14 - Owner: https://github.com/albertobadia
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@415986068a93cf893a31e19dd9402508a21dc3f3 -
Trigger Event:
release
-
Statement type:
File details
Details for the file zoopipe-2026.1.14-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: zoopipe-2026.1.14-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 24.4 MB
- Tags: PyPy, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e4555c9573fd1cee01813ebf3a1bd01c1a291256a023b7183e28ed750fbc8c06
|
|
| MD5 |
c4ceba1e933fa395a11aab2037617f71
|
|
| BLAKE2b-256 |
c526773b3a305b76b3b6cb6dd782e6cf5f03d947297b1e87cf53d17ea97aeb35
|
Provenance
The following attestation bundles were made for zoopipe-2026.1.14-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl:
Publisher:
release.yml on albertobadia/zoopipe
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zoopipe-2026.1.14-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl -
Subject digest:
e4555c9573fd1cee01813ebf3a1bd01c1a291256a023b7183e28ed750fbc8c06 - Sigstore transparency entry: 821139879
- Sigstore integration time:
-
Permalink:
albertobadia/zoopipe@415986068a93cf893a31e19dd9402508a21dc3f3 -
Branch / Tag:
refs/tags/2026-01-14 - Owner: https://github.com/albertobadia
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@415986068a93cf893a31e19dd9402508a21dc3f3 -
Trigger Event:
release
-
Statement type:
File details
Details for the file zoopipe-2026.1.14-cp310-abi3-win_amd64.whl.
File metadata
- Download URL: zoopipe-2026.1.14-cp310-abi3-win_amd64.whl
- Upload date:
- Size: 17.9 MB
- Tags: CPython 3.10+, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0e726cccf64ced532e7ae071d780d799c377a45c713ff0bf21677aba1506782f
|
|
| MD5 |
9107b94d6b20038a303729ae968b7320
|
|
| BLAKE2b-256 |
30a73527e869b40fdd3a0ee338afebc83f00379dab04d5b88de571c45921e7e4
|
Provenance
The following attestation bundles were made for zoopipe-2026.1.14-cp310-abi3-win_amd64.whl:
Publisher:
release.yml on albertobadia/zoopipe
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zoopipe-2026.1.14-cp310-abi3-win_amd64.whl -
Subject digest:
0e726cccf64ced532e7ae071d780d799c377a45c713ff0bf21677aba1506782f - Sigstore transparency entry: 821139866
- Sigstore integration time:
-
Permalink:
albertobadia/zoopipe@415986068a93cf893a31e19dd9402508a21dc3f3 -
Branch / Tag:
refs/tags/2026-01-14 - Owner: https://github.com/albertobadia
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@415986068a93cf893a31e19dd9402508a21dc3f3 -
Trigger Event:
release
-
Statement type:
File details
Details for the file zoopipe-2026.1.14-cp310-abi3-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: zoopipe-2026.1.14-cp310-abi3-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 24.4 MB
- Tags: CPython 3.10+, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6e1da2e01b7fcc9be6384bce511d0caf377f728db56a56ad647419511d0ded11
|
|
| MD5 |
df2778175bd1918ce10c03f07a078f48
|
|
| BLAKE2b-256 |
ea51e226837fac4b2e5d4ebfa0b840e5e463c10a6c63cc11b3685825e462dfee
|
Provenance
The following attestation bundles were made for zoopipe-2026.1.14-cp310-abi3-manylinux_2_28_x86_64.whl:
Publisher:
release.yml on albertobadia/zoopipe
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zoopipe-2026.1.14-cp310-abi3-manylinux_2_28_x86_64.whl -
Subject digest:
6e1da2e01b7fcc9be6384bce511d0caf377f728db56a56ad647419511d0ded11 - Sigstore transparency entry: 821139864
- Sigstore integration time:
-
Permalink:
albertobadia/zoopipe@415986068a93cf893a31e19dd9402508a21dc3f3 -
Branch / Tag:
refs/tags/2026-01-14 - Owner: https://github.com/albertobadia
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@415986068a93cf893a31e19dd9402508a21dc3f3 -
Trigger Event:
release
-
Statement type:
File details
Details for the file zoopipe-2026.1.14-cp310-abi3-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: zoopipe-2026.1.14-cp310-abi3-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 22.6 MB
- Tags: CPython 3.10+, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
91e6d47d7ee9950e71a49d2e4400d6fa112f87d6f34581ffad353c33f336f38a
|
|
| MD5 |
4cdb161c163664ec285b5d583a81daff
|
|
| BLAKE2b-256 |
8888bc0d77b944c006b40f2b2c52201742fdbfc93ed89210adc8bf443393eb0a
|
Provenance
The following attestation bundles were made for zoopipe-2026.1.14-cp310-abi3-manylinux_2_28_aarch64.whl:
Publisher:
release.yml on albertobadia/zoopipe
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zoopipe-2026.1.14-cp310-abi3-manylinux_2_28_aarch64.whl -
Subject digest:
91e6d47d7ee9950e71a49d2e4400d6fa112f87d6f34581ffad353c33f336f38a - Sigstore transparency entry: 821139855
- Sigstore integration time:
-
Permalink:
albertobadia/zoopipe@415986068a93cf893a31e19dd9402508a21dc3f3 -
Branch / Tag:
refs/tags/2026-01-14 - Owner: https://github.com/albertobadia
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@415986068a93cf893a31e19dd9402508a21dc3f3 -
Trigger Event:
release
-
Statement type:
File details
Details for the file zoopipe-2026.1.14-cp310-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: zoopipe-2026.1.14-cp310-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 19.9 MB
- Tags: CPython 3.10+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
588136bce189e83bd5eddabe6131b0605fb7aad0ac9eb5bc9e47fea1a35a0ea3
|
|
| MD5 |
8f3b12648ae345989eee7b1552dbe104
|
|
| BLAKE2b-256 |
6623869c96801496fb77729b76de68fb369e45d1643bcb64fcbd8f8c53db2668
|
Provenance
The following attestation bundles were made for zoopipe-2026.1.14-cp310-abi3-macosx_11_0_arm64.whl:
Publisher:
release.yml on albertobadia/zoopipe
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zoopipe-2026.1.14-cp310-abi3-macosx_11_0_arm64.whl -
Subject digest:
588136bce189e83bd5eddabe6131b0605fb7aad0ac9eb5bc9e47fea1a35a0ea3 - Sigstore transparency entry: 821139893
- Sigstore integration time:
-
Permalink:
albertobadia/zoopipe@415986068a93cf893a31e19dd9402508a21dc3f3 -
Branch / Tag:
refs/tags/2026-01-14 - Owner: https://github.com/albertobadia
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@415986068a93cf893a31e19dd9402508a21dc3f3 -
Trigger Event:
release
-
Statement type:
File details
Details for the file zoopipe-2026.1.14-cp310-abi3-macosx_10_12_x86_64.whl.
File metadata
- Download URL: zoopipe-2026.1.14-cp310-abi3-macosx_10_12_x86_64.whl
- Upload date:
- Size: 21.5 MB
- Tags: CPython 3.10+, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e94e27f02f046d41485c670a49a7aff62df296f67c6421cd084dc0455fc6aeb3
|
|
| MD5 |
a78838910f63f8f28cdda5c0ccbdeaf7
|
|
| BLAKE2b-256 |
3bd481f0b9997330cd3f34f5ee42816e530761c6a20c693542ababaa5dc19ea6
|
Provenance
The following attestation bundles were made for zoopipe-2026.1.14-cp310-abi3-macosx_10_12_x86_64.whl:
Publisher:
release.yml on albertobadia/zoopipe
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zoopipe-2026.1.14-cp310-abi3-macosx_10_12_x86_64.whl -
Subject digest:
e94e27f02f046d41485c670a49a7aff62df296f67c6421cd084dc0455fc6aeb3 - Sigstore transparency entry: 821139886
- Sigstore integration time:
-
Permalink:
albertobadia/zoopipe@415986068a93cf893a31e19dd9402508a21dc3f3 -
Branch / Tag:
refs/tags/2026-01-14 - Owner: https://github.com/albertobadia
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@415986068a93cf893a31e19dd9402508a21dc3f3 -
Trigger Event:
release
-
Statement type: