← Lesson
Plans Are Data, Not Poetry
Joeven
Run
Reset
Python loads on first run
def parse_plan(raw_steps): plan = [] for i, row in enumerate(raw_steps, start=1): if "do" not in row: return {"error": "step missing do", "i": i} plan.append({ "id": row.get("id", i), "do": row["do"], "tool": row.get("tool"), "status": "todo", }) return {"ok": True, "plan": plan} def mark(plan, step_id, status): for s in plan: if s["id"] == step_id: s["status"] = status return True return False def next_todo(plan): for s in plan: if s["status"] == "todo": return s return None parsed = parse_plan([ {"do": "lookup", "tool": "get_order"}, {"do": "refund", "tool": "charge"}, ]) plan = parsed["plan"] mark(plan, 1, "done") print("next", next_todo(plan)["do"]) print("bad", parse_plan([{"tool": "oops"}]))
Run to execute this in your browser. Nothing is sent to a server.