1414from enum import Enum
1515from typing import Any
1616from typing import Optional
17+ from typing import Union
1718
1819
1920class JobType (str , Enum ):
@@ -367,8 +368,14 @@ def from_dict(cls, data: dict[str, Any]) -> JobConfig:
367368 ae_data = data ["audio_events_config" ]
368369 audio_events_config = AudioEventsConfig (** ae_data )
369370
371+ fetch_data = None
372+ if "fetch_data" in data :
373+ fd_data = data ["fetch_data" ]
374+ fetch_data = FetchData (** fd_data )
375+
370376 return cls (
371377 type = job_type ,
378+ fetch_data = fetch_data ,
372379 transcription_config = transcription_config ,
373380 alignment_config = alignment_config ,
374381 notification_config = notification_config ,
@@ -397,6 +404,19 @@ def from_dict(cls, data: dict[str, Any]) -> JobError:
397404 return cls (type = data ["type" ], message = data ["message" ], details = data .get ("details" ))
398405
399406
407+ @dataclass
408+ class FetchDataError :
409+ """Represents a fetch data error."""
410+
411+ message : str
412+ timestamp : str
413+
414+ @classmethod
415+ def from_dict (cls , data : dict [str , Any ]) -> FetchDataError :
416+ """Create FetchDataError from dictionary."""
417+ return cls (message = data ["message" ], timestamp = data ["timestamp" ])
418+
419+
400420@dataclass
401421class JobInfo :
402422 """
@@ -459,7 +479,7 @@ class JobDetails:
459479 data_name : str
460480 duration : Optional [float ] = None
461481 config : Optional [JobConfig ] = None
462- errors : Optional [list [JobError ]] = None
482+ errors : Optional [list [Union [ JobError , FetchDataError ] ]] = None
463483
464484 @classmethod
465485 def from_dict (cls , data : dict [str , Any ]) -> JobDetails :
@@ -468,9 +488,12 @@ def from_dict(cls, data: dict[str, Any]) -> JobDetails:
468488 if "config" in data and data ["config" ]:
469489 config = JobConfig .from_dict (data ["config" ])
470490
471- errors = None
491+ errors : list [ Union [ JobError , FetchDataError ]] = []
472492 if "errors" in data and data ["errors" ]:
473- errors = [JobError .from_dict (error ) for error in data ["errors" ]]
493+ if config and config .fetch_data :
494+ errors = [FetchDataError .from_dict (error ) for error in data ["errors" ]]
495+ else :
496+ errors = [JobError .from_dict (error ) for error in data ["errors" ]]
474497
475498 return cls (
476499 id = data ["id" ],
0 commit comments