diff --git a/cascade/base/history_handler.py b/cascade/base/history_handler.py index c99df4ea..f9a37ad5 100644 --- a/cascade/base/history_handler.py +++ b/cascade/base/history_handler.py @@ -93,6 +93,10 @@ def log(self, obj: Any) -> None: ---------- obj: Any Meta data of the object + + Raises + ------ + MetaIOError - if log writing fails """ # Use serialize nac back to prevent false diffs due to diff --git a/cascade/meta/data_registrator.py b/cascade/meta/data_registrator.py index 20306227..b951813b 100644 --- a/cascade/meta/data_registrator.py +++ b/cascade/meta/data_registrator.py @@ -19,7 +19,7 @@ import pendulum -from ..base import HistoryHandler +from ..base import HistoryHandler, MetaIOError @dataclass @@ -146,8 +146,24 @@ class DataRegistrator: has some properties changed during the time. """ - def __init__(self, filepath: str) -> None: - self._logger = HistoryHandler(filepath) + def __init__(self, filepath: str, raise_on_fail: bool = False) -> None: + """ + Parameters + ---------- + filepath : str + Path to the log file for HistoryLogger + raise_on_fail : bool, optional + Whether to raise a warning or an exception in case when + logger failed to read a file for some reason, by default False + """ + self._raise_on_fail = raise_on_fail + try: + self._logger = HistoryHandler(filepath) + except MetaIOError as e: + if self._raise_on_fail: + raise e + else: + warnings.warn(str(e)) def register(self, card: DataCard) -> None: """ @@ -170,4 +186,10 @@ def register(self, card: DataCard) -> None: now = str(pendulum.now(tz="UTC")) card.data["updated_at"] = now - self._logger.log(card.data) + try: + self._logger.log(card.data) + except MetaIOError as e: + if self._raise_on_fail: + raise e + else: + warnings.warn(str(e))