@@ -175,6 +175,20 @@ def validate_timestamp(timestamp):
175
175
return True
176
176
177
177
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
+
178
192
class Run (object ):
179
193
"""
180
194
Track simulation details based on token and URL
@@ -184,6 +198,7 @@ def __init__(self, mode="online"):
184
198
self ._uuid = str (uuid .uuid4 ())
185
199
self ._mode = mode
186
200
self ._name = None
201
+ self ._worker = None
187
202
self ._executor = Executor (self )
188
203
self ._id = None
189
204
self ._suppress_errors = False
@@ -595,6 +610,7 @@ def config(
595
610
if storage_id :
596
611
self ._storage_id = storage_id
597
612
613
+ @check_run_initialised
598
614
def update_metadata (self , metadata ):
599
615
"""
600
616
Add/update metadata
@@ -635,6 +651,7 @@ def update_tags(self, tags):
635
651
636
652
return False
637
653
654
+ @check_run_initialised
638
655
def log_event (self , message , timestamp = None ):
639
656
"""
640
657
Write event
@@ -671,6 +688,7 @@ def log_event(self, message, timestamp=None):
671
688
672
689
return True
673
690
691
+ @check_run_initialised
674
692
def log_metrics (self , metrics , step = None , time = None , timestamp = None ):
675
693
"""
676
694
Write metrics
@@ -721,6 +739,7 @@ def log_metrics(self, metrics, step=None, time=None, timestamp=None):
721
739
722
740
return True
723
741
742
+ @check_run_initialised
724
743
def save (
725
744
self ,
726
745
filename ,
@@ -823,6 +842,7 @@ def save(
823
842
824
843
return True
825
844
845
+ @check_run_initialised
826
846
def save_directory (self , directory , category , filetype = None , preserve_path = False ):
827
847
"""
828
848
Upload a whole directory
@@ -854,6 +874,7 @@ def save_directory(self, directory, category, filetype=None, preserve_path=False
854
874
855
875
return True
856
876
877
+ @check_run_initialised
857
878
def save_all (self , items , category , filetype = None , preserve_path = False ):
858
879
"""
859
880
Save the list of files and/or directories
@@ -869,6 +890,7 @@ def save_all(self, items, category, filetype=None, preserve_path=False):
869
890
else :
870
891
self ._error (f"{ item } : No such file or directory" )
871
892
893
+ @check_run_initialised
872
894
def set_status (self , status ):
873
895
"""
874
896
Set run status
@@ -915,6 +937,7 @@ def close(self):
915
937
916
938
self ._shutdown_event .set ()
917
939
940
+ @check_run_initialised
918
941
def set_folder_details (self , path , metadata = {}, tags = [], description = None ):
919
942
"""
920
943
Add metadata to the specified folder
@@ -954,6 +977,7 @@ def set_folder_details(self, path, metadata={}, tags=[], description=None):
954
977
955
978
return False
956
979
980
+ @check_run_initialised
957
981
def add_alerts (self , ids = None , names = None ):
958
982
"""
959
983
Add one or more existing alerts by name or id
@@ -980,6 +1004,7 @@ def add_alerts(self, ids=None, names=None):
980
1004
981
1005
return False
982
1006
1007
+ @check_run_initialised
983
1008
def add_alert (
984
1009
self ,
985
1010
name ,
@@ -1086,6 +1111,7 @@ def add_alert(
1086
1111
1087
1112
return False
1088
1113
1114
+ @check_run_initialised
1089
1115
def log_alert (self , name , state ):
1090
1116
"""
1091
1117
Set the state of an alert
0 commit comments