Metadata-Version: 2.4
Name: pysupertable
Version: 0.1.0
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Rust
Classifier: Topic :: Database
Classifier: Topic :: Scientific/Engineering :: Information Analysis
Requires-Dist: pandas>=1.0 ; extra == 'all'
Requires-Dist: pyarrow>=10.0 ; extra == 'all'
Requires-Dist: pandas>=1.0 ; extra == 'pandas'
Requires-Dist: pyarrow>=10.0 ; extra == 'pyarrow'
Provides-Extra: all
Provides-Extra: pandas
Provides-Extra: pyarrow
Summary: Python bindings for SuperTable - the next-gen open table format
Keywords: table-format,data-lake,parquet,arrow,iceberg,delta
Author-email: SuperTable Team <hello@supertable.io>
License-Expression: MIT OR Apache-2.0
Requires-Python: >=3.8
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
Project-URL: Repository, https://github.com/supertable-project/supertable

# PySuperTable

<p align="center">
  <img src="https://raw.githubusercontent.com/supertable-project/supertable/main/logo.png" alt="SuperTable Logo" width="200"/>
</p>

**The Rust-native open table format for Python** 🚀

PySuperTable provides Python bindings for [SuperTable](https://github.com/supertable-project/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

```bash
pip install pysupertable
```

## Quick Start

```python
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

```python
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

```python
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

