Coverage for e2xgrader/graders/base.py: 82%

11 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 

5from nbgrader.utils import compute_checksum, is_solution 

6from traitlets.config import LoggingConfigurable 

7 

8 

9class BaseGrader(LoggingConfigurable): 

10 def cell_changed(self, cell: NotebookNode): 

11 return not ( 

12 is_solution(cell) 

13 and "checksum" in cell.metadata.nbgrader 

14 and cell.metadata.nbgrader["checksum"] == compute_checksum(cell) 

15 ) 

16 

17 def determine_grade( 

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

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

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

21 return None, max_points