Coverage for e2xgrader/utils/extra_cells.py: 80%
35 statements
« prev ^ index » next coverage.py v7.4.2, created at 2024-03-14 13:22 +0100
« prev ^ index » next coverage.py v7.4.2, created at 2024-03-14 13:22 +0100
1def is_extra_cell(cell):
2 """Returns True if the cell is a form cell."""
3 if "nbgrader" not in cell.metadata:
4 return False
5 return "extended_cell" in cell.metadata
8def is_attachment_cell(cell):
9 return is_extra_cell(cell) and cell.metadata.extended_cell.type == "attachments"
12def is_singlechoice(cell):
13 return is_extra_cell(cell) and cell.metadata.extended_cell.type == "singlechoice"
16def is_multiplechoice(cell):
17 return is_extra_cell(cell) and cell.metadata.extended_cell.type == "multiplechoice"
20def is_diagram(cell):
21 return is_extra_cell(cell) and cell.metadata.extended_cell.type == "diagram"
24def get_options(cell):
25 if is_extra_cell(cell) and "options" in cell.metadata.extended_cell:
26 return {
27 key: value["value"]
28 for key, value in cell.metadata.extended_cell["options"].items()
29 }
30 return dict()
33def get_choices(cell):
34 if is_singlechoice(cell) or is_multiplechoice(cell):
35 choice = cell.metadata.extended_cell.get("choice", [])
36 return [int(i) for i in choice]
37 return []
40def get_num_of_choices(cell):
41 if is_multiplechoice(cell):
42 return cell.metadata.extended_cell.num_of_choices
45def get_instructor_choices(cell):
46 if (
47 (is_singlechoice(cell) or is_multiplechoice(cell))
48 and ("source" in cell.metadata.extended_cell)
49 and ("choice" in cell.metadata.extended_cell.source)
50 ):
51 return [int(i) for i in cell.metadata.extended_cell.source.choice]
52 return []
55def clear_choices(cell):
56 if is_extra_cell(cell):
57 cell.metadata.extended_cell.choice = []
60def has_solution(cell):
61 if is_singlechoice(cell) or is_multiplechoice(cell):
62 return "source" in cell.metadata.extended_cell
63 return False