SLM_Arena / scripts /materialize_dataset.py
StentorLabs's picture
Publish tested Arena update
cd13720 verified
Raw History Blame Contribute Delete
2.47 kB
#!/usr/bin/env python3
"""Build a deterministic JSONL round snapshot from a local dataset checkout.
This is an offline derived artifact. It never commits or uploads files.
"""
from __future__ import annotations
import argparse
import json
from pathlib import Path
from typing import Any
def read_events(root: Path) -> tuple[list[dict[str, Any]], int]:
events: list[dict[str, Any]] = []
malformed = 0
for path in sorted(root.rglob("*.json")):
if path.name.endswith("schema.json"):
continue
try:
record = json.loads(path.read_text(encoding="utf-8"))
except (OSError, json.JSONDecodeError):
malformed += 1
continue
if isinstance(record, dict) and record.get("round_id") and record.get("event_type"):
events.append(record)
return events, malformed
def materialize(events: list[dict[str, Any]]) -> list[dict[str, Any]]:
rounds: dict[str, dict[str, Any]] = {}
for event in sorted(events, key=lambda item: (item.get("created_at", ""), item.get("event_id", ""))):
round_id = str(event["round_id"])
record = rounds.setdefault(round_id, {"round_id": round_id, "events": {}})
record["events"].setdefault(event["event_type"], []).append(event)
if event["event_type"] == "round_completed":
for key, value in event.items():
if key not in {"event_id", "event_type", "created_at", "round_id"}:
record[key] = value
return [rounds[key] for key in sorted(rounds)]
def main() -> int:
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("dataset_dir", type=Path, help="Local clone or download of the dataset repo")
parser.add_argument("output", type=Path, help="Destination JSONL path")
args = parser.parse_args()
if not args.dataset_dir.is_dir():
parser.error(f"Not a directory: {args.dataset_dir}")
events, malformed = read_events(args.dataset_dir)
rounds = materialize(events)
args.output.parent.mkdir(parents=True, exist_ok=True)
with args.output.open("w", encoding="utf-8", newline="\n") as target:
for round_record in rounds:
target.write(json.dumps(round_record, ensure_ascii=False, sort_keys=True) + "\n")
print(f"Wrote {len(rounds)} derived rounds from {len(events)} events; skipped {malformed} malformed files.")
return 0
if __name__ == "__main__":
raise SystemExit(main())