Metadata-Version: 2.4
Name: strata-client
Version: 0.3.0
Summary: Lightweight Python client for Strata — materialize, persist, and query artifacts over HTTP.
Project-URL: Homepage, https://github.com/bearing-research/strata
Project-URL: Repository, https://github.com/bearing-research/strata
Author-email: Fangchen Li <fangchen.li@outlook.com>
License-Expression: Apache-2.0
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Python: >=3.12
Requires-Dist: httpx>=0.28.0
Requires-Dist: pyarrow>=18.0.0
Provides-Extra: all
Requires-Dist: datafusion>=50.1.0; extra == 'all'
Requires-Dist: duckdb>=1.1.0; extra == 'all'
Requires-Dist: pandas>=2.0.0; extra == 'all'
Requires-Dist: polars>=1.36.1; extra == 'all'
Provides-Extra: datafusion
Requires-Dist: datafusion>=50.1.0; extra == 'datafusion'
Provides-Extra: duckdb
Requires-Dist: duckdb>=1.1.0; extra == 'duckdb'
Provides-Extra: pandas
Requires-Dist: pandas>=2.0.0; extra == 'pandas'
Provides-Extra: polars
Requires-Dist: polars>=1.36.1; extra == 'polars'
Description-Content-Type: text/markdown

# strata-client

A lightweight Python client for a [Strata](https://github.com/bearing-research/strata)
server. Depends only on `httpx` + `pyarrow` — none of the server's stack
(no pyiceberg / fastapi / duckdb / pydantic, no Rust extension), so it drops
into any analysis venv, training image, CI job, or notebook without dragging
the deployable service along.

```bash
pip install strata-client
```

```python
from strata_client import StrataClient

with StrataClient() as client:  # resolves the server URL from
                                # STRATA_SERVER_URL / STRATA_HOST / STRATA_PORT
    art = client.materialize(
        inputs=["file:///warehouse#db.events"],
        transform={"executor": "scan@v1", "params": {}},
    )
    table = client.fetch(art.uri)

    # Registry: names, aliases, tags, audit
    client.put(table, name="team/dataset/raw")
    client.set_alias("taxi/tip-model", "champion", art.artifact_id, art.version)
```

The server distribution (`strata-notebook`) depends on this package and
re-exports it as `strata.client` for backward compatibility.
