import itertools
from enum import Enum
from typing import Optional, Any
from forte.data.base_pack import PackType, BasePack
__all__ = ["ProcessJobStatus", "ProcessJob"]
ProcessJobStatus = Enum("ProcessJobStatus", "UNPROCESSED QUEUED PROCESSED")
[docs]class ProcessJob:
counter = itertools.count(0)
def __init__(self, pack: Optional[PackType], is_poison: bool):
self.__pack: Optional[PackType] = pack
self.__is_poison: bool = is_poison
self.__status = ProcessJobStatus.UNPROCESSED
self.__id = next(ProcessJob.counter)
def set_status(self, status):
self.__status = status
@property
def id(self):
return self.__id
@property
def pack(self) -> BasePack[Any, Any, Any]:
if self.__pack is None:
raise ValueError("This job do not have a valid pack.")
return self.__pack
[docs] def alter_pack(self, pack: PackType):
"""
This class alter the pack in this job. This should only be controlled by
the system itself. One should not call this function without proper
understanding.
Args:
pack: The pack to be used to replace into this job.
Returns:
None
"""
self.__pack = pack
@property
def is_poison(self) -> bool:
return self.__is_poison
@property
def status(self):
return self.__status