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)
| File | Size | Uploaded | |
|---|---|---|---|
| bundlebase-0.12.1.tar.gz | 810.1 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| 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
|