Skip to main content

Python bindings for SuperTable - the next-gen open table format

Project description

PySuperTable

SuperTable Logo

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


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

If you're not sure about the file name format, learn more about wheel file names.

pysupertable-0.1.1-cp312-cp312-manylinux_2_39_x86_64.whl (40.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.39+ x86-64

File details

Details for the file pysupertable-0.1.1-cp312-cp312-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for pysupertable-0.1.1-cp312-cp312-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 17700fb3d9e0613df15429c693598ef331bd0a3c7709203d17a6e43ab28629c5
MD5 b9f651558520f19e02a93af17801f6b8
BLAKE2b-256 dcfb5eecc79d31241868d01a5aa77bfc6744d580c2791d279841af84af459456

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page