rypipe
Format-agnostic columnar ingestion engine. Rust core, Python bindings.
Parse row-oriented byte streams into Apache Arrow tables with parallel scheduling, memory-bounded execution, query pushdown, and a chainable pipeline API. Format adapters live in separate packages.
What is rypipe
rypipe is a format- and source-agnostic ingestion framework that provides a
common execution runtime for turning arbitrary record-oriented data sources
into typed columnar data. It separates format-specific parsing from
format-agnostic execution, so the same engine can parse XML, JSON, CSV, HTML,
or any other row-oriented format once you provide a small adapter.
Add a new format by implementing two small traits: Splitter and
RecordParser.
rypipe was originally developed as the ingestion engine for crxml, a Crystal Reports XML adapter. The engine's design, performance characteristics, and API were shaped by real-world production use with crxml. We use crxml as the primary example throughout the documentation because it demonstrates the full power of the framework: complex nested schemas, large files, parallel processing, and advanced filtering.
Quick start
pip install crxml
import crxml
from crxml import CrystalXMLSource, CastTypes, FilterRows, col
source = CrystalXMLSource("report.xml", row_tag="Details")
# Simple read
table = source.to_arrow()
# Pipeline with stages
result = (
source
| CastTypes({"Amount": float})
| FilterRows(field="Status", op="==", value="Active")
| crxml.to_arrow()
)
# Expression predicates fuse into the Rust parse loop too
result = (
source
| FilterRows((col("Amount") > 100) & (col("Status") == "Active"))
| crxml.to_arrow()
)
# Convert to DataFrame
df = source.to_pandas()
# Constant-memory streaming
for batch in source.iter_record_batches(memory="64MiB"):
writer.write_batch(batch)
Why rypipe
-
One runtime, many formats. XML, JSON, CSV, HTML, TSV, and any future format share the same parallel scheduler, memory-bounded executor, and pushdown infrastructure. An adapter is two small traits, not a full engine. crxml (Crystal Reports XML) is the reference adapter that proved this model.
-
Performance without compromise. ~4.2 GB/s parallel, ~950 MB/s single-threaded (Ryzen 7 5800X, crxml workloads). Zero-copy Arrow export. Predicate-first evaluation. Layout prediction via memcmp.
-
Correctness by construction. Differential testing, fuzz targets, property tests, and a tier-ladder profiler.
-
Python-native ergonomics. Chainable pipeline API with automatic fusion of rename/drop/cast/filter into the Rust parse loop. Streaming with bounded memory. Schema discovery. DataFrame and Parquet sinks.
What rypipe is not
- Not a query engine. No joins, aggregations, window functions, or SQL.
- Not a parser. Each format needs an adapter package.
- Not a data warehouse. It ingests into Arrow; it does not store or serve.
- Not pure Python. Adapters are written in Rust for performance. Python users consume data through adapter APIs; they do not need to write Rust unless creating a new adapter.
Features
- Zero-copy friendly: decoders emit borrowed strings; the engine copies only when necessary.
- GIL-free parsing: heavy work runs outside Python's GIL.
- Parallel by default: chunked parsing with
rayonscales to many cores. - Memory bounded: stream files larger than RAM with
iter_record_batchesand a configurable budget. - Pushdown filters: rename, drop, type, and filter rows while parsing.
- Expression API: polars-style
col(...)predicates that fuse into the parse loop, composable with&,|,~. - Observer hooks: per-row callbacks from the engine, in Rust or Python.
- Transparent decompression: gzip, zstd, and lz4 inputs detected by magic bytes and decompressed automatically.
- Pipeline API: chainable rename/drop/cast/filter stages with automatic fusion.
- Arrow native: produces
RecordBatchand exports via the C Data Interface.
Crates
| Crate | Purpose |
|---|---|
rypipe-core |
Pure Rust engine: Value, ExecutionPlan, TableBuilder, Pipeline, parallel/bounded drivers, Arrow export |
rypipe-python |
PyO3 bindings for adapter packages; exposes the rypipe package |
rypipe-test |
Property-based testing helpers and fixtures for adapter development |
Documentation
- Tutorial: install, first read, pipeline, stages, sinks, streaming
- Writing Adapters: add a new format
- Architecture: how the engine works internally
- Advanced: fusion, execution modes, memory, parallelism
- Python API: full API reference
- Rust API: full API reference
Building
# Rust only
cargo build --workspace --release
# Python extension
maturin develop --release
Testing
# Rust
cargo test --workspace --all-features
# Python
pip install -e ".[dev]"
pytest crates/rypipe-python/tests/
License
MIT
Metadata
Release files for rypipe 0.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| rypipe-0.3.1.tar.gz | 180.7 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| rypipe-0.3.1-cp310-abi3-win_amd64.whl | CPython 3.10 | abi3 | Windows x86-64 | Details |
| rypipe-0.3.1-cp310-abi3-musllinux_1_2_x86_64.whl | CPython 3.10 | abi3 | Linux musl 1.2+ x86-64 | Details |
| rypipe-0.3.1-cp310-abi3-musllinux_1_2_aarch64.whl | CPython 3.10 | abi3 | Linux musl 1.2+ ARM64 | Details |
| rypipe-0.3.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.10 | abi3 | Linux glibc 2.17+ x86-64 | Details |
| rypipe-0.3.1-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | CPython 3.10 | abi3 | Linux glibc 2.17+ ARM64 | Details |
| rypipe-0.3.1-cp310-abi3-macosx_11_0_arm64.whl | CPython 3.10 | abi3 | macOS 11.0+ ARM64 | Details |
| rypipe-0.3.1-cp310-abi3-macosx_10_12_x86_64.whl | CPython 3.10 | abi3 | macOS 10.12+ x86-64 | Details |
Total release size: 2.2 MB
Release files / rypipe-0.3.1.tar.gz
| Download URL | rypipe-0.3.1.tar.gz |
|---|---|
| Size | 180.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6a1624c8a7ad2b890bf341a9f153bacc753aafd5cae8c3e327e223df1133da6b
|
|
BLAKE2b-256 checksum How to use checksums |
2352095638528fe44f339d9397a7e018e7d3fe1e693b569d01c9c03228e71bbe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.
Transparency logRelease files / rypipe-0.3.1-cp310-abi3-win_amd64.whl
| Download URL | rypipe-0.3.1-cp310-abi3-win_amd64.whl |
|---|---|
| Size | 161.3 kB |
| Tags | CPython 3.10 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
a0e9d493a6005e2053b01e9de7b73cfbf5fbe2c1ccb94309c04c7032e16681b3
|
|
BLAKE2b-256 checksum How to use checksums |
9a70fb33ac0a3fdf53dc3d83286b42f684063e363d32c708eeb92628811a6902
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.
Transparency logRelease files / rypipe-0.3.1-cp310-abi3-musllinux_1_2_x86_64.whl
| Download URL | rypipe-0.3.1-cp310-abi3-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 461.2 kB |
| Tags | CPython 3.10 Linux musl 1.2+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
caf9c33c492695134697b879be76909f92e4d6323e8971fbae6e89608905495d
|
|
BLAKE2b-256 checksum How to use checksums |
a76e855ffc8bef3bcebc5d08b67a62ab0cda71182311e05b25c96ae653306b63
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.
Transparency logRelease files / rypipe-0.3.1-cp310-abi3-musllinux_1_2_aarch64.whl
| Download URL | rypipe-0.3.1-cp310-abi3-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 420.5 kB |
| Tags | CPython 3.10 Linux musl 1.2+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
a84e9c305512a7c033379cabcf6f80bf0b338e24b056fd34ed5a58d014435d97
|
|
BLAKE2b-256 checksum How to use checksums |
962e11218c806df13ae98732f20547ee55e1774416ac26ca82f31abdcf0bf47d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.
Transparency logRelease files / rypipe-0.3.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | rypipe-0.3.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 248.5 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
4f25dd2139e41278a57b0bbc7ff0d3abcf37e56e92136b095e004bbaceedbf8f
|
|
BLAKE2b-256 checksum How to use checksums |
5d5cf4e7e91e0c4f83aa3b790d36db370758577a35b0a35d6bd7dfa36e7ce132
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.
Transparency logRelease files / rypipe-0.3.1-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | rypipe-0.3.1-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 251.8 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
e65607c3c21a5379ca6b0a3ee4f0f2ea6cec1222b3eff145d08c5163f2ba69e1
|
|
BLAKE2b-256 checksum How to use checksums |
89e61ddbeb47b4c43a92da5b3f95c5fd763bc46373348df44c88eb4fa224d2f8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.
Transparency logRelease files / rypipe-0.3.1-cp310-abi3-macosx_11_0_arm64.whl
| Download URL | rypipe-0.3.1-cp310-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 233.9 kB |
| Tags | CPython 3.10 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
04d132666da831a83c32ef5ac7b790118bac3d043c6df07da2b49bb6ed7ef495
|
|
BLAKE2b-256 checksum How to use checksums |
ee4a27f70320f1b3141fb2e6a616405caf336cd9f2571a5efa8d7f3583366d35
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.
Transparency logRelease files / rypipe-0.3.1-cp310-abi3-macosx_10_12_x86_64.whl
| Download URL | rypipe-0.3.1-cp310-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 241.6 kB |
| Tags | CPython 3.10 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
55a52f812691bd12d33420767debaf2f19a158d93d896aae977431db21d728aa
|
|
BLAKE2b-256 checksum How to use checksums |
634c550d5a1eb3ac245f4087e5fb21ba123258454af0c718ae77154d8d2e73e7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.
Transparency log