Source code for derobertis_cv.pldata.courses.general
from typing import Any, Dict
import pyexlatex as pl
from derobertis_cv.models.grades.breakdown import GradeBreakdownModel
from derobertis_cv.models.grades.main import GradingModel
from derobertis_cv.models.grades.scale import GradingScaleModel
[docs]
def get_grading_model(**config: Dict[str, Any]) -> GradingModel:
default_breakdown = GradeBreakdownModel({"Lab Exercises": 0.2, "Projects": 0.8})
default_grading_scale = GradingScaleModel(
{
"A": (93, 100),
"A-": (90, 92),
"B+": (87, 89),
"B": (83, 86),
"B-": (80, 82),
"C+": (77, 79),
"C": (73, 76),
"C-": (70, 72),
"D+": (67, 69),
"D": (63, 66),
"D-": (60, 62),
"F": (0, 59),
}
)
default_extra_info = [
pl.SubSection(
[
"""
I will strictly follow standard rounding rules to two decimal places, so 92.450% is the minimum grade for an
A. 92.449% is considered an A-.
""".strip()
],
title="Rounding",
),
pl.SubSection(
[
"""
I will strive for a B average in the class. If this requires boosting grades with a curve, this will be done after
all the projects are submitted. I will not reduce grades with a curve even if grades are higher than a B average.
""".strip()
],
title="Curve",
),
]
data = dict(
breakdown=default_breakdown,
scale=default_grading_scale,
extra_info=default_extra_info,
)
data.update(config)
model = GradingModel(**data) # type: ignore
return model