11 """List timestamped runs, newest first. Intentionally cheap: no per-run `du`
12 (that would stat thousands of DB subdirs across every run). Size/duration are
13 filled in by the per-run index once a run is opened."""
15 if not config.ELODIN_DIR.is_dir():
18 texts = descriptions.all_texts()
19 for entry
in config.ELODIN_DIR.iterdir():
20 if not entry.is_dir():
22 m = config.RUN_RE.match(entry.name)
26 started = datetime.strptime(m.group(
"date") + m.group(
"time"),
"%Y%m%d%H%M%S")
33 "started": started.isoformat(),
34 "cached": export_cache.is_cached(entry.name),
38 "simulated": m.group(
"sim")
is not None,
41 "description": texts.get(entry.name,
""),
44 runs.sort(key=
lambda r: r[
"started"], reverse=
True)