from enum import Enum, auto
from dataclasses import dataclass, field
from mindiesd.utils.exception import ParametersInvalid
class TaskType(Enum):
PROFILE = auto()
UPDATE_LAYOUT = auto()
@dataclass
class TaskPayload:
task_type: TaskType
worker_rank: int | None = None
moe_layer_idx: int | None = None
data: dict = field(default_factory=dict)
def __post_init__(self):
if not isinstance(self.task_type, TaskType):
raise ParametersInvalid("task_type must be an instance of the TaskType Enum.")
if not isinstance(self.data, dict):
raise ParametersInvalid("data must be a dictionary.")
if self.task_type == TaskType.UPDATE_LAYOUT:
if not self.data:
raise ParametersInvalid("data dictionary cannot be empty when task_type is UPDATE_LAYOUT.")
if self.moe_layer_idx is None:
raise ParametersInvalid("moe_layer_idx must be specified when task_type is UPDATE_LAYOUT.")