Source code for qibocal.auto.history

"""Track execution history."""

from .runcard import Id
from .task import Completed


[docs]def add_timings_to_meta(meta, history): for task_id, iteration in history: completed = history[(task_id, iteration)] if task_id not in meta: meta[task_id] = {} if "acquisition" not in meta[task_id] and completed.data_time > 0: meta[task_id]["acquisition"] = completed.data_time if "fit" not in meta[task_id] and completed.results_time > 0: meta[task_id]["fit"] = completed.results_time if "acquisition" in meta[task_id]: meta[task_id]["tot"] = meta[task_id]["acquisition"] if "fit" in meta[task_id]: meta[task_id]["tot"] += meta[task_id]["fit"] return meta
[docs]class History(dict[tuple[Id, int], Completed]): """Execution history. This is not only used for logging and debugging, but it is an actual part of the execution itself, since later routines can retrieve the output of former ones from here. """
[docs] def push(self, completed: Completed): """Adding completed task to history.""" self[completed.task.uid] = completed
[docs] def iterations(self, task_id: Id): """Count task id present in history.""" counter = 0 for task, _ in self: if task == task_id: counter += 1 return counter
# TODO: implemet time_travel()