Skip to main content

Bundlebase

Like Docker, but for data.

Documentation | PyPI | Issues

Features

  • Multiple Formats: Support for Parquet, CSV, JSON, and more
  • Version Control: Built-in commit system for data pipeline versioning
  • Python Native: Seamless async/sync Python API with type hints
  • High Performance: Rust-powered core with Apache Arrow columnar format
  • Fluent API: Chain operations with intuitive, readable syntax

Installation

pip install bundlebase

Quick Start

Async API

import bundlebase

# Create a new bundle and chain operations
c = await (bundlebase.create()
    .attach("data.parquet")
    .filter("age >= 18")
    .remove_column("ssn")
    .rename_column("fname", "first_name"))

# Convert to pandas
df = await c.to_pandas()

# Commit changes
await c.commit("Cleaned customer data")

Sync API

import bundlebase.sync as dc

# Same operations, no await needed
c = (dc.create()
    .attach("data.parquet")
    .filter("age >= 18")
    .remove_column("ssn")
    .rename_column("fname", "first_name"))

df = c.to_pandas()
c.commit("Cleaned customer data")

Streaming Large Datasets

Process data larger than RAM efficiently:

import bundlebase

# Stream batches instead of loading everything
c = await bundlebase.open("huge_dataset.parquet")

total_rows = 0
async for batch in bundlebase.stream_batches(c):
    # Each batch is ~100MB, not entire dataset
    total_rows += batch.num_rows
    # Memory is freed after each iteration

print(f"Processed {total_rows} rows")

Core Operations

Data Loading

c = await bundlebase.create()
c = c.attach("data.parquet")      # Parquet files
c = c.attach("data.csv")          # CSV files
c = c.attach("data.json")         # JSON files

Data Transformation

c = c.filter("active = true")              # Filter rows
c = c.select(["id", "name", "email"])      # Select columns
c = c.remove_column("temp_field")          # Remove columns
c = c.rename_column("old", "new")          # Rename columns
c = c.select("SELECT * FROM self WHERE ...") # SQL queries

Data Export

df = await c.to_pandas()    # → pandas DataFrame
df = await c.to_polars()    # → polars DataFrame
arr = await c.to_numpy()    # → NumPy array
data = await c.to_dict()    # → Python dict

Indexing

c = c.create_index("email")        # Create index for fast lookups
c = c.rebuild_index("email")       # Rebuild existing index

Joining

c = await bundlebase.create()
c = c.attach("customers.parquet")
c = c.join(
    "orders.parquet",
    left_on="customer_id",
    right_on="id",
    join_type="inner"
)

Development

Prerequisites

  • Rust (latest stable)
  • Python 3.9+
  • Poetry

Setup

# Install Python dependencies
poetry install

# Build Rust extension
maturin develop

# Run tests
cargo test              # Rust tests
poetry run pytest       # Python tests

Contributing

Contributions are welcome!

License

Distributed under the Apache 2.0 license.

Metadata

Release files for bundlebase 0.12.1

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

Source distribution (sdist)

Source distribution for bundlebase 0.12.1
File Size Uploaded
bundlebase-0.12.1.tar.gz 810.1 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for bundlebase 0.12.1
File
bundlebase-0.12.1-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
bundlebase-0.12.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64 Details
bundlebase-0.12.1-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
bundlebase-0.12.1-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
bundlebase-0.12.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details
bundlebase-0.12.1-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details

Total release size: 360.3 MB

Release files / bundlebase-0.12.1.tar.gz

Download URL bundlebase-0.12.1.tar.gz
Size 810.1 kB
Tags Source
SHA-256 checksum
How to use checksums
3ce8c5019d50c109943bef126cd03f510c895f22a7fe566ee156601ae5f08a5f
BLAKE2b-256 checksum
How to use checksums
aa41a05a3c503a70a335f664c469fc9a175d68aebae7ed4da8731b1859e09063
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release files / bundlebase-0.12.1-cp314-cp314-win_amd64.whl

Download URL bundlebase-0.12.1-cp314-cp314-win_amd64.whl
Size 64.1 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
4b290cc66bff69539f0fb4aea6dc540de0908a0146c8a3a9f4e6494336a0ebdb
BLAKE2b-256 checksum
How to use checksums
d8369e7306ecca01e85dddacb9c32858e47938d582d0295ca2ca84a814d37527
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release files / bundlebase-0.12.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL bundlebase-0.12.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 60.5 MB
Tags CPython 3.14 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
4317d9c78ffe86f95d0d950bd1379afca51219090e220a8eb55712eda519f817
BLAKE2b-256 checksum
How to use checksums
12d8ba9a60fa586c56ad2e36ea22c1113296991a3622fee83be4494fc059438d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release files / bundlebase-0.12.1-cp314-cp314-macosx_11_0_arm64.whl

Download URL bundlebase-0.12.1-cp314-cp314-macosx_11_0_arm64.whl
Size 55.2 MB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
b98d70d7afe62117ae31e74c7aeed00198edbe4d9b4b4f6850c0b1a5e1652982
BLAKE2b-256 checksum
How to use checksums
afd20d665781e96cecf5370d7c2e640f185ac1db092f61feda81da61f282b355
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release files / bundlebase-0.12.1-cp313-cp313-win_amd64.whl

Download URL bundlebase-0.12.1-cp313-cp313-win_amd64.whl
Size 64.1 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
491fcb0e9a6476cb4d7c0a9d87ec93aad2a77eba382826417ee83cc587aa8a4c
BLAKE2b-256 checksum
How to use checksums
92e4485d5b4d5eb81028b681cb3c04bf75cab6d2ff0fd3fa2cd2e60d7303dbf3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release files / bundlebase-0.12.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL bundlebase-0.12.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 60.5 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
1d359ce47901602db2eb7b646f175b45c60657fcd5de858b2904345cf450fe06
BLAKE2b-256 checksum
How to use checksums
a453867a18a6b075325317375ea33fd1c1906da2f35b330302d95c5890e121cf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release files / bundlebase-0.12.1-cp313-cp313-macosx_11_0_arm64.whl

Download URL bundlebase-0.12.1-cp313-cp313-macosx_11_0_arm64.whl
Size 55.2 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
824878b7a9d1079d07527909023a8725be6011a3cb193474948d53a528a49181
BLAKE2b-256 checksum
How to use checksums
62aaab6fb553ab342a24db0490d27ad88a14f06b6dc1462d40c4c2a164c58151
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release history Release notifications | RSS feed

This release

0.12.1 This release

7 release files

0.9.0

18 release files

0.7.0

18 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