11import pathlib
22import enum
3- import json
43import csv
54
65from .makeVideo import process as make_video
76
8- from glassesTools import utils
7+ from glassesTools import json , utils
98from glassesTools .recording import Recording
109from glassesTools .eyetracker import EyeTracker
1110
@@ -25,7 +24,7 @@ class Task(utils.AutoName):
2524 Make_Video = enum .auto ()
2625 Unknown = enum .auto ()
2726task_names = [x .value for x in Task ]
28- utils .register_type (utils . CustomTypeEntry (Task ,'__enum.Task__' , utils .enum_val_2_str , lambda x : getattr (Task , x .split ('.' )[1 ])))
27+ json .register_type (json . TypeEntry (Task ,'__enum.Task__' , utils .enum_val_2_str , lambda x : getattr (Task , x .split ('.' )[1 ])))
2928
3029def get_task_name_friendly (name : str | Task ):
3130 if isinstance (name ,Task ):
@@ -85,15 +84,13 @@ class Status(utils.AutoName):
8584 Finished = enum .auto ()
8685 Errored = enum .auto ()
8786status_names = [x .value for x in Status ]
88- utils .register_type (utils . CustomTypeEntry (Status ,'__enum.Status__' , utils .enum_val_2_str , lambda x : getattr (Status , x .split ('.' )[1 ])))
87+ json .register_type (json . TypeEntry (Status ,'__enum.Status__' , utils .enum_val_2_str , lambda x : getattr (Status , x .split ('.' )[1 ])))
8988
9089
9190_status_file = 'glassesValidator.recording'
9291def _create_recording_status_file (file : pathlib .Path ):
9392 task_status_dict = {utils .enum_val_2_str (getattr (Task ,x )): Status .Not_Started for x in Task .__members__ if x not in ['Not_Imported' , 'Make_Video' , 'Unknown' ]}
94-
95- with open (file , 'w' ) as f :
96- json .dump (task_status_dict , f , cls = utils .CustomTypeEncoder )
93+ json .dump (task_status_dict , file )
9794
9895
9996def get_recording_status (path : str | pathlib .Path , create_if_missing = False , skip_if_missing = False ):
@@ -106,8 +103,8 @@ def get_recording_status(path: str | pathlib.Path, create_if_missing = False, sk
106103 elif skip_if_missing :
107104 return None
108105
109- with open (file , 'r' ) as f :
110- return json . load ( f , object_hook = utils . json_reconstitute )
106+ recording_states = json . load (file )
107+ return { k : Status ( recording_states [ k ]) for k in recording_states } # turn state value from string back into enum instance
111108
112109def get_last_finished_step (status : dict [str ,Status ]):
113110 last = Task .Not_Imported
@@ -130,9 +127,7 @@ def update_recording_status(path: str | pathlib.Path, task: Task, status: Status
130127 while (next_task := get_next_task (next_task )) is not None :
131128 rec_status [utils .enum_val_2_str (next_task )] = Status .Not_Started
132129
133- file = path / _status_file
134- with open (file , 'w' ) as f :
135- json .dump (rec_status , f , cls = utils .CustomTypeEncoder , indent = 2 )
130+ json .dump (rec_status , path / _status_file )
136131
137132 return rec_status
138133
0 commit comments