Source code for derobertis_cv.models.grades.scale
from dataclasses import dataclass
from typing import Dict, Tuple
[docs]
@dataclass
class GradingScaleModel:
grade_ranges: Dict[str, Tuple[float, float]]
def __post_init__(self):
if len(self.grade_ranges) == 0:
raise ValueError("no grade ranges provided")
last_bot = 101
for grade_name, (bot, top) in self.grade_ranges.items():
if top != last_bot - 1:
raise ValueError(
f"grade range for {grade_name} is not consecutive in {self}. "
f"({top} should be {last_bot} - 1)"
)
last_bot = bot
if bot != 0:
raise ValueError(f"lowest grade did not go to zero, instead went to {bot}")