"""Quickstart step 5 (planned Python SDK) — build the leakage-gated dataset."""

import os
import time
from pathlib import Path

from tessera import Tessera
from tessera._generated import models

client = Tessera(base_url=os.environ["TESSERA_API_BASE"])
state_dir = Path(os.environ.get("TESSERA_STATE_DIR", "."))
label_id = (state_dir / "label_id").read_text().strip()

build = client.api.create_dataset_build(
    models.DatasetBuildRequest(
        entity_type="user",
        labels=[label_id],
        window=models.DatasetWindow(
            max_events_per_entity=8,
            time_range=models.DatasetTimeRange(
                start="2025-01-01T00:00:00Z", end="2025-07-01T00:00:00Z"
            ),
        ),
        split=models.DatasetSplit(method="entity_hash", train=0.7, val=0.1, test=0.2, seed=7),
    )
)

for _ in range(600):
    dataset = client.api.get_dataset(build.dataset_id)
    if dataset.status.value in ("succeeded", "failed", "aborted_leakage"):
        break
    time.sleep(2)

manifest = dataset.manifest or {}
report = dataset.violation_report or {}
print(f"dataset status: {dataset.status.value}")
print(f"violations: {report.get('violations')}")
print(f"train rows: {manifest.get('row_counts', {}).get('train')}")

(state_dir / "dataset_id").write_text(build.dataset_id)
client.close()
