Metadata-Version: 2.4
Name: qualia-sdk
Version: 0.8.0rc12
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Typing :: Typed
Requires-Dist: httpx[http2]>=0.25.0,<1
Requires-Dist: pydantic>=2.0.0
Requires-Dist: opentelemetry-api>=1.20.0
Requires-Dist: opentelemetry-instrumentation-httpx>=0.41b0
Summary: Python SDK for Qualia robot data curation: upload, curate, version and export datasets
Keywords: qualia,robotics,datasets,data-curation,lerobot,mcap
Author: Qualia Studios
License-Expression: MIT
Requires-Python: >=3.10
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
Project-URL: Documentation, https://docs.qualiastudios.dev
Project-URL: Homepage, https://qualiastudios.dev

# Qualia Python SDK — Typed client for robot data curation

**Status:** beta · **Published:** `qualia-sdk` wheels for Python 3.10+

The SDK exposes Qualia resources through typed Python clients and bundles the
native data transfer engine. Dataset versions read immutable selections;
drawings remain drafts until publication. Source features require their matching
server and a separate SDK release.

## Install

<!-- pre-release until the first stable release on prod; drop --pre then -->

```sh
pip install --pre qualia-sdk
```

## Usage

Set `QUALIA_API_KEY` for the intended account, then construct a client:

```python
from qualia import Qualia

client = Qualia()
```

An API key names its account automatically. Set an account override only when
needed; the API guide describes the server requirement and release history.
An `account=` (or `QUALIA_ACCOUNT`) that is not an account UUID is refused with
a `ValueError`; leave it unset to use the key's own account.

`client.data.download("<dataset>")` with no version takes `stable`, the newest
tag. A fresh upload has no tag yet, so it takes the newest version, `v0` (the
upload as it arrived), and reports `{"step": "newest", "version": "<slug>:v0"}`
to `on_progress`. Only a dataset with no version at all is refused. The
[API guide's Data section](docs/api-guide.md#data) has the examples.

## API

- [API guide, examples and release history](docs/api-guide.md)
- [Upload preparation: what prepare found, and confirming task names](docs/api-guide.md#preparation-qualiav1) (`client.preparation`)
- [Episode drafts and version publication](docs/version-publication.md)
- [Server contracts and operations](../../docs/qds/api-reference.md)

## License

MIT

