"""Tools to manipulate tasks""" import random from dataclasses import dataclass from utils.csv_utils import read_csv, filter_data @dataclass class Task: """A record for a task""" id: str question: str options: list # of { label, value } correct: str def load_task(datum): return Task( datum['id'], datum["question"], [ {"value" :"A", "label": datum["A"]}, {"value" :"B", "label": datum["B"]}, {"value" :"C", "label": datum["C"]}, {"value" :"D", "label": datum["D"]}, ], datum["correct"] ) def read(filepath): """load raw data for tasks""" return read_csv(filepath, {"id", "section", "question", "A", "B", "C", "D", "correct"}) def select(data, /, section) -> list: """create tasks records from data for specified section""" data = filter_data(data, section=section) return [load_task(datum) for datum in data] def select1(data, /, taskid): [datum] = filter_data(data, id=taskid) return load_task(datum)