Coverage for e2xgrader/graders/singlechoice.py: 100%

13 statements  

« prev     ^ index     » next       coverage.py v7.4.2, created at 2024-03-14 13:22 +0100

1from logging import Logger 

2from typing import Optional, Tuple 

3 

4from nbformat.notebooknode import NotebookNode 

5 

6from ..utils.extra_cells import get_choices, get_instructor_choices 

7from .base import BaseGrader 

8 

9 

10class SingleChoiceGrader(BaseGrader): 

11 def determine_grade( 

12 self, cell: NotebookNode, log: Logger = None 

13 ) -> Tuple[Optional[float], float]: 

14 max_points = float(cell.metadata["nbgrader"]["points"]) 

15 student_choices = get_choices(cell) 

16 instructor_choices = get_instructor_choices(cell) 

17 

18 if ( 

19 (len(student_choices) > 0) 

20 and (len(instructor_choices) > 0) 

21 and (student_choices[0] == instructor_choices[0]) 

22 ): 

23 return max_points, max_points 

24 

25 return 0, max_points