1from __future__ import annotations23import json4import time5from pathlib import Path678class Tracker:9 def __init__(self, path: Path):10 self.path = Path(path); self.path.parent.mkdir(parents=True, exist_ok=True)11 self.t0 = time.time()1213 def log(self, **kw) -> None:14 kw["elapsed_s"] = round(time.time() - self.t0, 1)15 with open(self.path, "a") as fh:16 fh.write(json.dumps(kw, default=float) + "\n")17