from typing import Generic, Protocol, runtime_checkable from option import Option from modules.fabric_metadata import QTaskFactoryMetadata from modules.task import QTask from utils.types import A, C, Q, V @runtime_checkable class QTaskFactory(Protocol, Generic[C, V, Q, A]): metadata: QTaskFactoryMetadata[C, V] default_tasks_to_generate: Option[int] = Option.maybe(None) def generate(self) -> QTask[C, V, Q, A]: ...