Skip to main content

rypipe

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.

Python Rust License Tests Docs PyPI


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 parser, and was later extracted and abstracted. 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

Any parser you build on rypipe (or any adapter package you install) gets this same API: a small Rust crate behind a clean, chainable Python interface with fused filtering, parallel parsing, and bounded-memory streaming. The quick start below shows crxml as a concrete example; your format's adapter would look and behave the same.

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.

  • Measured performance. On the documented 533 MB crxml workload, ~4.2 GB/s parallel and ~950 MB/s single-threaded (Ryzen 7 5800X). Arrow export moves string/dictionary buffers without copying; primitive arrays are copied. 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 rayon scales to many cores.
  • Memory bounded: stream files larger than RAM with iter_record_batches and 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 RecordBatch and 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

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


rypipe badge

Metadata

Release files for rypipe 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for rypipe 0.5.0
File Size Uploaded
rypipe-0.5.0.tar.gz 222.8 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for rypipe 0.5.0
File
rypipe-0.5.0-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details
rypipe-0.5.0-cp310-abi3-musllinux_1_2_x86_64.whl CPython 3.10 abi3 Linux musl 1.2+ x86-64 Details
rypipe-0.5.0-cp310-abi3-musllinux_1_2_aarch64.whl CPython 3.10 abi3 Linux musl 1.2+ ARM64 Details
rypipe-0.5.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 abi3 Linux glibc 2.17+ x86-64 Details
rypipe-0.5.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.10 abi3 Linux glibc 2.17+ ARM64 Details
rypipe-0.5.0-cp310-abi3-macosx_11_0_arm64.whl CPython 3.10 abi3 macOS 11.0+ ARM64 Details
rypipe-0.5.0-cp310-abi3-macosx_10_12_x86_64.whl CPython 3.10 abi3 macOS 10.12+ x86-64 Details

Total release size: 5.4 MB

Release files / rypipe-0.5.0.tar.gz

Download URL rypipe-0.5.0.tar.gz
Size 222.8 kB
Tags Source
SHA-256 checksum
How to use checksums
af13363e9fd3968b239f72da5f7934832a770e2d81f7dde53be9788cb7f84767
BLAKE2b-256 checksum
How to use checksums
2ace352c822d4649ca710ffcd13e67f5e630095e373ee8b34c49a4828c401b77
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 Oct 1, 2026.

Transparency log

Release files / rypipe-0.5.0-cp310-abi3-win_amd64.whl

Download URL rypipe-0.5.0-cp310-abi3-win_amd64.whl
Size 645.6 kB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
ebb625f21f89abf2d1ec8fdfaebfdbe66eb542389dc2a4e45d877dd634cde651
BLAKE2b-256 checksum
How to use checksums
7f927f42b1f6bb2a753ade83b8133df32f6cb48bb3a0dacaa925f3cfe48e67e3
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 Oct 1, 2026.

Transparency log

Release files / rypipe-0.5.0-cp310-abi3-musllinux_1_2_x86_64.whl

Download URL rypipe-0.5.0-cp310-abi3-musllinux_1_2_x86_64.whl
Size 926.2 kB
Tags CPython 3.10 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
d55353b64b269838ca45405b23572507d3727143f17c2f78d19d443e555a1170
BLAKE2b-256 checksum
How to use checksums
fe79aab40ed1c304593f32b91029046cae0588aecfb1682acdc36337a83ca6cf
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 Oct 1, 2026.

Transparency log

Release files / rypipe-0.5.0-cp310-abi3-musllinux_1_2_aarch64.whl

Download URL rypipe-0.5.0-cp310-abi3-musllinux_1_2_aarch64.whl
Size 860.2 kB
Tags CPython 3.10 Linux musl 1.2+ ARM64 abi3
SHA-256 checksum
How to use checksums
8542f0b9c368877155a8712898bcdd0dc1c6a072f6a694ff3f91e4ec93864797
BLAKE2b-256 checksum
How to use checksums
132bf8965daaac4e48aff33a68b9f4e1f0f819f27a8c3c69e22d2b742229b285
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 Oct 1, 2026.

Transparency log

Release files / rypipe-0.5.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL rypipe-0.5.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 713.6 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
a6680d8055519e2a1466ab3fc68d3d9fc83edf3f33c44a39ec9381bdcf847c44
BLAKE2b-256 checksum
How to use checksums
1c7db1f1b65a69a8f2b3bf0e00b912a35f36a8d3977c6181de31a2e2fe4a317e
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 Oct 1, 2026.

Transparency log

Release files / rypipe-0.5.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL rypipe-0.5.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 699.9 kB
Tags CPython 3.10 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
30afb62a186adfc1d3fab4cef4fac9b2742e43f23ef55141d768670a3ecfddd1
BLAKE2b-256 checksum
How to use checksums
afd79cd0948025ff61f17d0153c4b1582c3a74a419e8c4436846c0b87d33dc96
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 Oct 1, 2026.

Transparency log

Release files / rypipe-0.5.0-cp310-abi3-macosx_11_0_arm64.whl

Download URL rypipe-0.5.0-cp310-abi3-macosx_11_0_arm64.whl
Size 644.2 kB
Tags CPython 3.10 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
6048cbc8bf18c8090b6692606be63ef5a0195cc5cf4212ebc6270301609e5c81
BLAKE2b-256 checksum
How to use checksums
87d00b0c23695a9877c90c3002058836982336b1666c2eded76f982e00cb8b14
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 Oct 1, 2026.

Transparency log

Release files / rypipe-0.5.0-cp310-abi3-macosx_10_12_x86_64.whl

Download URL rypipe-0.5.0-cp310-abi3-macosx_10_12_x86_64.whl
Size 679.6 kB
Tags CPython 3.10 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
9db1757fae3c1bcef781b220847c6a60cee36350f96bbc96a91ae1063e6219d8
BLAKE2b-256 checksum
How to use checksums
e87c6b9a72f268f5f8370c3c1335dda4ce2270524fb1984daa0fca0e0cd1dbcb
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 Oct 1, 2026.

Transparency log

Release history Release notifications | RSS feed

0.5.1

8 release files

This release

0.5.0 This release

8 release files

0.4.0

8 release files

0.3.1

8 release files

0.3.0

8 release files

0.1.0

8 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page