Python bindings for SuperTable - the next-gen open table format
Project description
PySuperTable
The Rust-native open table format for Python 🚀
PySuperTable provides Python bindings for SuperTable, bringing blazing-fast lakehouse operations to your Python workflows.
Features
- ⚡ Rust Performance: Native Rust core with zero-copy Arrow integration
- 🔄 ACID Transactions: Full optimistic concurrency control
- 🕰️ Time Travel: Query any historical snapshot
- 🧬 Schema Evolution: Add, drop, rename columns safely
- 📊 DataFusion & Polars: Native query engine integration
- 🔌 Iceberg Compatible: REST Catalog API compatible
Installation
pip install pysupertable
Quick Start
import supertable as st
# Create a table
schema = st.Schema([
st.Field(1, "id", "long", required=True),
st.Field(2, "name", "string", required=True),
st.Field(3, "value", "double", required=False),
])
table = st.create_table("s3://my-bucket/warehouse/my_table", schema)
# Query with SQL
df = table.sql("SELECT * FROM my_table WHERE id > 100")
# Time travel
historical = table.snapshot_at("2024-01-01T00:00:00Z")
# Schema evolution
table.add_column("email", "string")
Integration with Pandas
import supertable as st
import pandas as pd
table = st.open_table("s3://my-bucket/warehouse/my_table")
# Read as Pandas DataFrame
df = table.to_pandas()
# Query with filters
df = table.sql("SELECT * FROM my_table WHERE value > 100").to_pandas()
Integration with PyArrow
import supertable as st
import pyarrow as pa
table = st.open_table("s3://my-bucket/warehouse/my_table")
# Read as Arrow Table
arrow_table = table.to_arrow()
# Write Arrow data
table.append(arrow_table)
Why PySuperTable?
| Feature | PySuperTable | pyiceberg | delta-rs |
|---|---|---|---|
| Cold Start | ~10ms | ~500ms | ~200ms |
| Memory Overhead | Low | High (JVM) | Medium |
| Native Rust | ✅ | ❌ | ✅ |
| Zero-copy Arrow | ✅ | ✅ | ✅ |
Requirements
- Python 3.8+
- Supported platforms: Linux, macOS, Windows
License
Apache-2.0 OR MIT
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 Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
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 pysupertable-0.1.1-cp312-cp312-manylinux_2_39_x86_64.whl.
File metadata
- Download URL: pysupertable-0.1.1-cp312-cp312-manylinux_2_39_x86_64.whl
- Upload date:
- Size: 40.3 MB
- Tags: CPython 3.12, manylinux: glibc 2.39+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
17700fb3d9e0613df15429c693598ef331bd0a3c7709203d17a6e43ab28629c5
|
|
| MD5 |
b9f651558520f19e02a93af17801f6b8
|
|
| BLAKE2b-256 |
dcfb5eecc79d31241868d01a5aa77bfc6744d580c2791d279841af84af459456
|