filename_counter: Counter = Counter()
all_json_keys: Counter = Counter()
samples_for_show: List = []
for i, row in enumerate(tqdm(ds_test, desc="inspecting structure", total=200)):
if i >= 200:
break
p = parse_task(row["task_binary"])
if p["format"] in ("tar", "zip"):
for name, body in p["files"].items():
filename_counter[name] += 1
if name.endswith(".json") and isinstance(body, str):
try:
obj = json.loads(body)
if isinstance(obj, dict):
for k in obj.keys():
all_json_keys[k] += 1
except Exception:
pass
if len(samples_for_show) < 2:
samples_for_show.append((row["path"], p))
print("\nMost common filenames inside task archives:")
for name, n in filename_counter.most_common(15):
print(f" {n:>4} {name}")
print("\nMost common top-level JSON keys (across any *.json):")
for k, n in all_json_keys.most_common(20):
print(f" {n:>4} {k}")
if samples_for_show:
print(f"\nFull file listing for one sample task ({samples_for_show[0][0]}):")
for name, body in samples_for_show[0][1]["files"].items():
sz = len(body) if isinstance(body, (str, bytes)) else 0
print(f" {name} ({sz:,} B)")
VERIFIER_FILE_PATTERNS = ("verifier", "verify", "grader", "judge", "score", "eval")
VERIFIER_JSON_KEYS = ("verifier", "verifier_config", "judge", "grader",
"rubric", "test_patch", "FAIL_TO_PASS", "tests")
def has_verifier(parsed: Dict[str, Any]) -> bool:
"""Detect verifiers via filename, JSON content, or both."""
if parsed["format"] not in ("tar", "zip"):
c = parsed.get("content")
if isinstance(c, dict):
return any(k in c for k in VERIFIER_JSON_KEYS)
return False
files = parsed["files"]
for name in files:
low = name.lower()
if any(pat in low for pat in VERIFIER_FILE_PATTERNS):
return True
for name, body in files.items():
if name.endswith((".json", ".yaml", ".yml")) and isinstance(body, str):
try:
obj = json.loads(body)
if isinstance(obj, dict) and any(k in obj for k in VERIFIER_JSON_KEYS):
return True
except Exception:
pass
low = body.lower()
if "verifier" in low or "test_patch" in low:
return True
return False
class TaskTroveExplorer:
"""High-level interface to the open-thoughts/TaskTrove dataset."""
def __init__(self, split: str = "test", dataset_id: str = DATASET_ID):
self.dataset_id = dataset_id
self.split = split
self._ds = load_dataset(dataset_id, split=split, streaming=True)
def iter(self, limit: Optional[int] = None,
source_filter: Optional[str] = None) -> Iterator[Dict[str, Any]]:
rx = re.compile(source_filter) if source_filter else None
n = 0
for row in self._ds:
if rx and not rx.search(source_of(row["path"])):
continue
yield row
n += 1
if limit is not None and n >= limit:
return
def sample(self, n: int = 5,
source_filter: Optional[str] = None) -> List[Dict[str, Any]]:
out = []
for row in self.iter(limit=n, source_filter=source_filter):
parsed = parse_task(row["task_binary"])
parsed["path"] = row["path"]
parsed["source"] = source_of(row["path"])
out.append(parsed)
return out
def summary(self, limit: int = 1000,
source_filter: Optional[str] = None) -> pd.DataFrame:
rows = []
for row in self.iter(limit=limit, source_filter=source_filter):
parsed = parse_task(row["task_binary"])
rows.append({
"source": source_of(row["path"]),
"compressed": parsed["compressed_size"],
"raw": parsed["raw_size"],
"format": parsed["format"],
"n_files": len(parsed.get("files", {})),
"has_verifier": has_verifier(parsed),
})
df = pd.DataFrame(rows)
if df.empty:
return df
return (df.groupby("source")
.agg(n=("compressed", "count"),
mean_compressed_kb=("compressed", lambda s: s.mean()/1024),
mean_raw_kb=("raw", lambda s: s.mean()/1024),
mean_n_files=("n_files", "mean"),
verifier_rate=("has_verifier", "mean"))
.round(2)
.sort_values("n", ascending=False))
@staticmethod
def has_verifier(parsed: Dict[str, Any]) -> bool:
return has_verifier(parsed)
def export(self, output_dir: Union[str, Path], n: int = 10,
source_filter: Optional[str] = None) -> Path:
output_dir = Path(output_dir)
output_dir.mkdir(parents=True, exist_ok=True)
for parsed in self.sample(n=n, source_filter=source_filter):
slug = parsed["path"].replace("/", "_")
tdir = output_dir / slug
tdir.mkdir(exist_ok=True)
if parsed["format"] in ("tar", "zip"):
for name, body in parsed["files"].items():
out = tdir / name
out.parent.mkdir(parents=True, exist_ok=True)
if isinstance(body, str):
out.write_text(body, encoding="utf-8")
else:
out.write_bytes(body)
else:
content = parsed.get("content", b"")
if isinstance(content, (dict, list)):
(tdir / "task.json").write_text(json.dumps(content, indent=2))
elif isinstance(content, str):
(tdir / "task.txt").write_text(content)
else:
(tdir / "task.bin").write_bytes(content)
print(f"✓ exported tasks to {output_dir.resolve()}")
return output_dir
explorer = TaskTroveExplorer(split="test")
print("\nSample of 3 parsed tasks:")
for s in explorer.sample(n=3):
print(f"path: {s['path']} | source: {s['source']} | format: {s['format']} | "
f"files: {len(s.get('files', {}))} | verifier: {has_verifier(s)}")