diff --git a/CHANGELOG.md b/CHANGELOG.md index c9415ae3..c9b0bdd7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Change log +## v0.9.0 + +* Set status to `failed` or `terminated` if the context manager is used and there is an exception. + ## v0.8.0 * Support NumPy arrays, PyTorch tensors, Matplotlib and Plotly plots and picklable Python objects as artifacts. diff --git a/simvue/__init__.py b/simvue/__init__.py index 3d1137ac..c2805c2a 100644 --- a/simvue/__init__.py +++ b/simvue/__init__.py @@ -2,4 +2,4 @@ from simvue.client import Client from simvue.handler import Handler from simvue.models import RunInput -__version__ = '0.8.0' +__version__ = '0.9.0' diff --git a/simvue/run.py b/simvue/run.py index 15fd5392..5a8dde44 100644 --- a/simvue/run.py +++ b/simvue/run.py @@ -160,9 +160,18 @@ def __init__(self, mode='online'): def __enter__(self): return self - def __exit__(self, type, value, tb): + def __exit__(self, type, value, traceback): if self._name and self._status == 'running': - self.set_status('completed') + if not type: + self.set_status('completed') + else: + self.log_event(f"{type.__name__}: {value}") + if type.__name__ in ('KeyboardInterrupt'): + self.set_status('terminated') + else: + if traceback: + self.log_event(f"Traceback: {traceback}") + self.set_status('failed') def _check_token(self): """