Source code for nbgrader.plugins.latesubmission

from textwrap import dedent
from traitlets import Enum

from .base import BasePlugin
from typing import Optional


[docs] class LateSubmissionPlugin(BasePlugin): """Predefined methods for assigning penalties for late submission""" penalty_method = Enum( ('none', 'zero'), default_value='none', help=dedent( """ The method for assigning late submission penalties: 'none': do nothing (no penalty assigned) 'zero': assign an overall score of zero (penalty = score) """ ), ).tag(config=True)
[docs] def late_submission_penalty(self, student_id: str, score: float, total_seconds_late: float) -> Optional[float]: """ Return the late submission penalty based on the predefined method. Parameters ---------- student_id: The unique id of the student score: The score the student obtained for the submitted notebook total_seconds_late: The total number of seconds the submitted notebook was late Returns ------- penalty : float OR None The assigned penalty score (None for no assigned penalty) """ self.log.info("Using late submission penalty method: {}".format(self.penalty_method)) if self.penalty_method == 'zero': if total_seconds_late == 0: self.log.error("Assigning a penalty to a notebook that was not submitted late.") return score