import uuid from dataclasses import dataclass, field from typing import Generic, Optional from option import Option from utils.utils import C, V @dataclass(frozen=True) class QTaskFactoryMetadata(Generic[C, V]): name: Option[str] = Option.maybe(None) description: Option[str] = Option.maybe(None) id: uuid.UUID = uuid.uuid4() @staticmethod def from_values( name: Optional[str] = None, description: Optional[str] = None, ) -> "QTaskFactoryMetadata[C, V]": return QTaskFactoryMetadata( name=Option.maybe(name), description=Option.maybe(description), )