Quizard/modules/task/__init__.py
2025-04-18 21:56:38 +03:00

39 lines
1.0 KiB
Python

import uuid
from dataclasses import dataclass
from typing import Generic, override
from option import Option
from modules.tag import Tag, Tags
from modules.task.factory.metadata import QTaskFactoryMetadata
from modules.utils.types import A, C, Q, V
from modules.utils.utils import indent
@dataclass
class QTask(Generic[C, V, Q, A]):
question: Q
answer: A
tags: Tags[C, V]
factory_metadata: Option[QTaskFactoryMetadata[C, V]] = Option[
QTaskFactoryMetadata[C, V]
].maybe(None)
id: uuid.UUID = uuid.uuid4()
def __init__(
self,
question: Q,
answer: A,
tags: Tags[C, V] | list[Tag[C, V]] | None = None,
):
self.question = question
self.answer = answer
if isinstance(tags, list):
self.tags = Tags[C, V](tags)
elif isinstance(tags, Tags):
self.tags = tags
@override
def __str__(self) -> str:
return f"Question:\n{indent(str(self.question))}\nAnswer:\n{indent(str(self.answer))}\nTags:\n{indent(str(self.tags))}"