Skip to content

Commit a9dcd80

Browse files
committed
Added decorator to prevent pre-mature Run function calls
1 parent b145006 commit a9dcd80

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

simvue/run.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,20 @@ def validate_timestamp(timestamp):
175175
return True
176176

177177

178+
def check_run_initialised(
179+
function: typing.Callable[..., typing.Any],
180+
) -> typing.Callable[..., typing.Any]:
181+
def _wrapper(self: "Run", *args: typing.Any, **kwargs: typing.Any) -> typing.Any:
182+
if not self._simvue:
183+
raise RuntimeError(
184+
"Simvue Run must be initialised before calling "
185+
f"'{function.__name__}'"
186+
)
187+
return function(self, *args, **kwargs)
188+
189+
return _wrapper
190+
191+
178192
class Run(object):
179193
"""
180194
Track simulation details based on token and URL
@@ -184,6 +198,7 @@ def __init__(self, mode="online"):
184198
self._uuid = str(uuid.uuid4())
185199
self._mode = mode
186200
self._name = None
201+
self._worker = None
187202
self._executor = Executor(self)
188203
self._id = None
189204
self._suppress_errors = False
@@ -595,6 +610,7 @@ def config(
595610
if storage_id:
596611
self._storage_id = storage_id
597612

613+
@check_run_initialised
598614
def update_metadata(self, metadata):
599615
"""
600616
Add/update metadata
@@ -635,6 +651,7 @@ def update_tags(self, tags):
635651

636652
return False
637653

654+
@check_run_initialised
638655
def log_event(self, message, timestamp=None):
639656
"""
640657
Write event
@@ -671,6 +688,7 @@ def log_event(self, message, timestamp=None):
671688

672689
return True
673690

691+
@check_run_initialised
674692
def log_metrics(self, metrics, step=None, time=None, timestamp=None):
675693
"""
676694
Write metrics
@@ -721,6 +739,7 @@ def log_metrics(self, metrics, step=None, time=None, timestamp=None):
721739

722740
return True
723741

742+
@check_run_initialised
724743
def save(
725744
self,
726745
filename,
@@ -823,6 +842,7 @@ def save(
823842

824843
return True
825844

845+
@check_run_initialised
826846
def save_directory(self, directory, category, filetype=None, preserve_path=False):
827847
"""
828848
Upload a whole directory
@@ -854,6 +874,7 @@ def save_directory(self, directory, category, filetype=None, preserve_path=False
854874

855875
return True
856876

877+
@check_run_initialised
857878
def save_all(self, items, category, filetype=None, preserve_path=False):
858879
"""
859880
Save the list of files and/or directories
@@ -869,6 +890,7 @@ def save_all(self, items, category, filetype=None, preserve_path=False):
869890
else:
870891
self._error(f"{item}: No such file or directory")
871892

893+
@check_run_initialised
872894
def set_status(self, status):
873895
"""
874896
Set run status
@@ -915,6 +937,7 @@ def close(self):
915937

916938
self._shutdown_event.set()
917939

940+
@check_run_initialised
918941
def set_folder_details(self, path, metadata={}, tags=[], description=None):
919942
"""
920943
Add metadata to the specified folder
@@ -954,6 +977,7 @@ def set_folder_details(self, path, metadata={}, tags=[], description=None):
954977

955978
return False
956979

980+
@check_run_initialised
957981
def add_alerts(self, ids=None, names=None):
958982
"""
959983
Add one or more existing alerts by name or id
@@ -980,6 +1004,7 @@ def add_alerts(self, ids=None, names=None):
9801004

9811005
return False
9821006

1007+
@check_run_initialised
9831008
def add_alert(
9841009
self,
9851010
name,
@@ -1086,6 +1111,7 @@ def add_alert(
10861111

10871112
return False
10881113

1114+
@check_run_initialised
10891115
def log_alert(self, name, state):
10901116
"""
10911117
Set the state of an alert

0 commit comments

Comments
 (0)