Skip to content

Commit 020a62c

Browse files
authored
Fixed batch sdk to handle fetch data errors (#34)
1 parent dd5bfa4 commit 020a62c

File tree

1 file changed

+26
-3
lines changed

1 file changed

+26
-3
lines changed

sdk/batch/speechmatics/batch/_models.py

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from enum import Enum
1515
from typing import Any
1616
from typing import Optional
17+
from typing import Union
1718

1819

1920
class 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
401421
class 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

Comments
 (0)