""" Defnes information about a task """fromdatetimeimportdatetimefromenumimportEnumfromabcimportABCfromtypingimportOptionalimportpydantic.v1aspydantic
[docs]classTaskStatus(Enum):"""The statuses that the task can be in."""INIT="initialized"QUEUE="queued"PRE="preprocessing"RUN="running"POST="postprocessing"SUCCESS="success"ERROR="error"
classTaskBase(pydantic.BaseModel,ABC):"""Base config for all task objects."""classConfig:"""configure class"""arbitrary_types_allowed=TrueclassChargeType(str,Enum):"""The payment method of task."""FREE="free"PAID="paid"classTaskBlockInfo(TaskBase):"""The block info that task will be blocked by all three features of DE, User limit and Insufficient balance"""chargeType:ChargeType=NonemaxFreeCount:int=NonemaxGridPoints:int=NonemaxTimeSteps:int=None
[docs]classTaskInfo(TaskBase):"""General information about task."""taskId:strtaskName:str=NonenodeSize:int=NonecompletedAt:Optional[datetime]=Nonestatus:str=NonerealCost:float=NonetimeSteps:int=NonesolverVersion:str=NonecreateAt:Optional[datetime]=NoneestCostMin:float=NoneestCostMax:float=NonerealFlexUnit:float=NoneoriRealFlexUnit:float=NoneestFlexUnit:float=NoneestFlexCreditTimeStepping:float=NoneestFlexCreditPostProcess:float=NoneestFlexCreditMode:float=Nones3Storage:float=NonestartSolverTime:Optional[datetime]=NonefinishSolverTime:Optional[datetime]=NonetotalSolverTime:int=NonecallbackUrl:str=NonetaskType:str=NonemetadataStatus:str=NonetaskBlockInfo:TaskBlockInfo=None
classRunInfo(TaskBase):"""Information about the run."""perc_done:pydantic.confloat(ge=0.0,le=100.0)field_decay:pydantic.confloat(ge=0.0,le=1.0)defdisplay(self):"""Print some info."""print(f" - {self.perc_done:.2f} (%) done")print(f" - {self.field_decay:.2e} field decay from max")