Metadata-Version: 2.1
Name: ara-labs-sdk
Version: 1.0.1
Summary: Python SDK for ARA, the decision data plane: one temporally ordered record of every entity, feature, and decision your ML systems produce
License: ARA Proprietary — see LICENSE
Project-URL: Homepage, https://aralabs.ai
Project-URL: Docs, https://aralabs.ai/docs
Project-URL: Bug Tracker, https://aralabs.ai/support
Requires-Python: >=3.12
Requires-Dist: flatbuffers>=23.5.26
Description-Content-Type: text/markdown

# ARA Python SDK

Python client for the [ARA temporal ML feature store](https://aralabs.ai).

## Quick Start

```bash
pip install ara-labs-sdk
```

```python
from ara_store import ARAStore

store = ARAStore()  # localhost:50051-50055, 5 partitions

# Write features
store.write(entity_id=42, features={"score": 0.97, "clicks": 14})

# Read latest
vals = store.get_latest(entity_id=42, feature_names=["score", "clicks"])

# Point-in-time read
from datetime import datetime, timezone
snap = store.get_snapshot(42, ["score"], as_of=datetime(2025, 11, 1, tzinfo=timezone.utc))
```

## Requirements

- Python 3.9+
- ARA server running (see [quickstart](https://aralabs.ai/docs))
- `flatbuffers>=23.5.26`

## Retry Contract

Read APIs (`get_latest`, `get_snapshot`, `get_snapshot_batch`) already perform
internal SDK retries for transient transport failures.

- Default: `3` retries (`4` total attempts)
- Configure: `ARA_SDK_READ_MAX_RETRIES`
- Disable metadata injection (regression testing only): `ARA_SDK_NO_METADATA=true`

Recommendation: avoid wrapping these read APIs in an additional generic retry
loop unless you intentionally want a larger total retry budget, since stacked
retries can multiply request volume.

## License

ARA Proprietary — see [LICENSE](https://aralabs.ai/pricing).
