Skip to content

Commit 12af376

Browse files
add a typed dict so that the set meta has the right types
1 parent 22e1bb0 commit 12af376

File tree

2 files changed

+37
-24
lines changed

2 files changed

+37
-24
lines changed

marking_and_admin/mark_functions.py

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
from google.auth.transport.requests import Request
2323
from google_auth_oauthlib.flow import InstalledAppFlow
2424
from googleapiclient.discovery import build
25+
from marker import set_meta
2526
from pandas import DataFrame, Series
2627

2728

@@ -627,7 +628,7 @@ def get_last_commit(row: Series) -> str:
627628
# TODO: find out why I was returning a no commits error
628629

629630

630-
def mark_week(
631+
def mark_set(
631632
mark_sheet: DataFrame,
632633
set_number: int = 1,
633634
timeout: int = 10,
@@ -666,12 +667,12 @@ def do_the_marking(
666667
force_marking=False,
667668
marking_spreadsheet_id: str = "16tESt_4BUf-9-oD04suTprkd1O0oEl6WjzflF_avSKY", # 2022
668669
marks_csv: str = "marks.csv",
669-
w1: dict[str, int | bool] = {"timeout": 5, "active": False},
670-
w2: dict[str, int | bool] = {"timeout": 5, "active": False},
671-
w3: dict[str, int | bool] = {"timeout": 5, "active": False},
672-
w4: dict[str, int | bool] = {"timeout": 5, "active": False},
673-
w5: dict[str, int | bool] = {"timeout": 5, "active": False},
674-
exam: dict[str, int | bool] = {"timeout": 5, "active": False},
670+
set_1: set_meta = {"timeout": 5, "active": False},
671+
set_2: set_meta = {"timeout": 5, "active": False},
672+
set_3: set_meta = {"timeout": 5, "active": False},
673+
set_4: set_meta = {"timeout": 5, "active": False},
674+
set_5: set_meta = {"timeout": 5, "active": False},
675+
exam: set_meta = {"timeout": 5, "active": False},
675676
test_number_of_students: int = 0,
676677
force_repos: list[str] = [],
677678
) -> None:
@@ -728,22 +729,22 @@ def do_the_marking(
728729
mark_sheet["updated"] = mark_sheet.apply(update_repos, axis=1)
729730
mark_sheet["last_commit"] = mark_sheet.apply(get_last_commit, axis=1)
730731

731-
mark_sheet["set1"] = mark_week(
732-
mark_sheet, set_number=1, timeout=w1["timeout"], active=w1["active"]
732+
mark_sheet["set1"] = mark_set(
733+
mark_sheet, set_number=1, timeout=set_1["timeout"], active=set_1["active"]
733734
)
734-
mark_sheet["set2"] = mark_week(
735-
mark_sheet, set_number=2, timeout=w2["timeout"], active=w2["active"]
735+
mark_sheet["set2"] = mark_set(
736+
mark_sheet, set_number=2, timeout=set_2["timeout"], active=set_2["active"]
736737
)
737-
mark_sheet["set3"] = mark_week(
738-
mark_sheet, set_number=3, timeout=w3["timeout"], active=w3["active"]
738+
mark_sheet["set3"] = mark_set(
739+
mark_sheet, set_number=3, timeout=set_3["timeout"], active=set_3["active"]
739740
)
740-
mark_sheet["set4"] = mark_week(
741-
mark_sheet, set_number=4, timeout=w4["timeout"], active=w4["active"]
741+
mark_sheet["set4"] = mark_set(
742+
mark_sheet, set_number=4, timeout=set_4["timeout"], active=set_4["active"]
742743
)
743-
mark_sheet["set5"] = mark_week(
744-
mark_sheet, set_number=5, timeout=w5["timeout"], active=w5["active"]
744+
mark_sheet["set5"] = mark_set(
745+
mark_sheet, set_number=5, timeout=set_5["timeout"], active=set_5["active"]
745746
)
746-
mark_sheet["exam"] = mark_week(
747+
mark_sheet["exam"] = mark_set(
747748
mark_sheet, set_number=8, timeout=exam["timeout"], active=exam["active"]
748749
)
749750
mark_sheet.drop(["name"], axis=1, errors="ignore", inplace=True)
@@ -797,6 +798,9 @@ def convert_one_results_dict_to_an_int(results_dict) -> int:
797798
convert_one_results_dict_to_an_int
798799
)
799800

801+
mark_sheet["exam_data"] = mark_sheet[f"exam"]
802+
mark_sheet[f"exam"] = mark_sheet[f"exam"].apply(convert_one_results_dict_to_an_int)
803+
800804

801805
def get_student_data():
802806
students = None

marking_and_admin/marker.py

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,18 @@
66
"""
77
import os
88
import sys
9+
from typing import TypedDict
910

1011
from mark_functions import do_the_marking
1112

13+
14+
class set_meta(TypedDict):
15+
"""week is just to keep the typechecker happy."""
16+
17+
timeout: int
18+
active: bool
19+
20+
1221
MARKING_SPREADSHEET_ID = os.getenv("GOOGLE_SHEETS_KEY", "")
1322

1423

@@ -22,12 +31,12 @@
2231
force_marking=True,
2332
marking_spreadsheet_id=MARKING_SPREADSHEET_ID,
2433
marks_csv="marking_and_admin/marks.csv",
25-
mark_w1={"timeout":15, "active":True},
26-
mark_w2={"timeout":15, "active":True},
27-
mark_w3={"timeout":30, "active":True},
28-
mark_w4={"timeout":50, "active":True},
29-
mark_w5={"timeout":50, "active":False},
30-
mark_exam={"timeout":45, "active":True},
34+
set_1={"timeout": 15, "active": True},
35+
set_2={"timeout": 15, "active": True},
36+
set_3={"timeout": 30, "active": True},
37+
set_4={"timeout": 50, "active": True},
38+
set_5={"timeout": 50, "active": False},
39+
exam={"timeout": 45, "active": True},
3140
test_number_of_students=0, # if more than 0, will only mark a sample of N repos
3241
force_repos=["lvl-lim", "JeWang"],
3342
)

0 commit comments

Comments
 (0)