22 lines
573 B
Python
22 lines
573 B
Python
import uuid
|
|
from abc import ABC, abstractmethod
|
|
from typing import Generic, runtime_checkable
|
|
|
|
from option import Option
|
|
|
|
from modules.task import QTask
|
|
from modules.task.factory.metadata import QTaskFactoryMetadata
|
|
from modules.utils.types import A, C, Q, V
|
|
|
|
|
|
class QTaskFactory(ABC, Generic[C, V, Q, A]):
|
|
id: uuid.UUID
|
|
metadata: QTaskFactoryMetadata[C, V]
|
|
default_tasks_to_generate: Option[int] = Option[int].maybe(None)
|
|
|
|
@abstractmethod
|
|
def generate(self) -> QTask[C, V, Q, A]: ...
|
|
|
|
def get_id(self) -> uuid.UUID:
|
|
return self.metadata.id
|