from enum import Enum from typing import Generic from option import Some from Quizard import Quizard, QuizTask, QuizTaskGeneratorMetadata, TaskGenerator class TagCategory(str, Enum): TOPIC = "topic" DIFFICULTY = "difficulty" class TopicTag(str, Enum): AVERAGE = "average" VARIANCE = "variance" class MyTaskGenerator(TaskGenerator[TagCategory, TopicTag]): def __init__(self): self.metadata = QuizTaskGeneratorMetadata[TagCategory, TopicTag].from_values( name=self.__class__.__name__, ) class AverageTask(MyTaskGenerator): def generate(self): return QuizTask( "What is an average of 3, 4, 5 and 6?", "4.5", tags=[ (TagCategory.TOPIC, TopicTag.AVERAGE), ], ) class AverageTask1(MyTaskGenerator): def generate(self): return QuizTask( "What is an average of 1, 2, 3 and 4?", "2.5", tags=[ (TagCategory.TOPIC, TopicTag.VARIANCE), ], ) default_amount = Some(1) quizard = Quizard([AverageTask(), AverageTask1()], 3) quizard.fillTaskPool() print(*[task.generator_metadata.id for task in quizard.taskPool], sep="\n\n")