Skip to content

Commit 3a55db3

Browse files
ngc92msaroufim
authored andcommitted
move definition of TypedDicts into separate file
1 parent 3394e4c commit 3a55db3

File tree

2 files changed

+61
-51
lines changed

2 files changed

+61
-51
lines changed

src/libkernelbot/db_types.py

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# This file provides TypeDict definitions for the return types we get from database queries
2+
import datetime
3+
from typing import TYPE_CHECKING, List, NotRequired, Optional, TypedDict
4+
5+
if TYPE_CHECKING:
6+
from libkernelbot.task import LeaderboardTask
7+
8+
9+
class LeaderboardItem(TypedDict):
10+
id: int
11+
name: str
12+
creator_id: int
13+
deadline: datetime.datetime
14+
description: str
15+
task: "LeaderboardTask"
16+
gpu_types: List[str]
17+
forum_id: int
18+
secret_seed: NotRequired[int]
19+
20+
21+
class LeaderboardRankedEntry(TypedDict):
22+
submission_id: int
23+
rank: int
24+
submission_name: str
25+
submission_time: datetime.datetime
26+
submission_score: float
27+
leaderboard_name: str
28+
user_id: int
29+
user_name: str
30+
gpu_type: str
31+
32+
33+
class RunItem(TypedDict):
34+
start_time: datetime.datetime
35+
end_time: datetime.datetime
36+
mode: str
37+
secret: bool
38+
runner: str
39+
score: Optional[float]
40+
passed: bool
41+
compilation: dict
42+
meta: dict
43+
result: dict
44+
system: dict
45+
46+
47+
class SubmissionItem(TypedDict):
48+
submission_id: int
49+
leaderboard_id: int
50+
leaderboard_name: str
51+
file_name: str
52+
user_id: int
53+
submission_time: datetime.datetime
54+
done: bool
55+
code: str
56+
runs: List[RunItem]
57+
58+
59+
__all__ = [LeaderboardItem, LeaderboardRankedEntry, RunItem, SubmissionItem]

src/libkernelbot/leaderboard_db.py

Lines changed: 2 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import dataclasses
22
import datetime
33
import json
4-
from typing import Dict, List, NotRequired, Optional, TypedDict
4+
from typing import Dict, List, Optional
55

66
import psycopg2
77

8+
from libkernelbot.db_types import LeaderboardItem, LeaderboardRankedEntry, RunItem, SubmissionItem
89
from libkernelbot.run_eval import CompileResult, RunResult, SystemInfo
910
from libkernelbot.task import LeaderboardDefinition, LeaderboardTask
1011
from libkernelbot.utils import (
@@ -987,56 +988,6 @@ def validate_cli_id(self, cli_id: str) -> Optional[dict[str, str]]:
987988
raise KernelBotError("Error validating CLI ID") from e
988989

989990

990-
class LeaderboardItem(TypedDict):
991-
id: int
992-
name: str
993-
creator_id: int
994-
deadline: datetime.datetime
995-
description: str
996-
task: "LeaderboardTask"
997-
gpu_types: List[str]
998-
forum_id: int
999-
secret_seed: NotRequired[int]
1000-
1001-
1002-
class LeaderboardRankedEntry(TypedDict):
1003-
submission_id: int
1004-
rank: int
1005-
submission_name: str
1006-
submission_time: datetime.datetime
1007-
submission_score: float
1008-
leaderboard_name: str
1009-
user_id: int
1010-
user_name: str
1011-
gpu_type: str
1012-
1013-
1014-
class RunItem(TypedDict):
1015-
start_time: datetime.datetime
1016-
end_time: datetime.datetime
1017-
mode: str
1018-
secret: bool
1019-
runner: str
1020-
score: Optional[float]
1021-
passed: bool
1022-
compilation: dict
1023-
meta: dict
1024-
result: dict
1025-
system: dict
1026-
1027-
1028-
class SubmissionItem(TypedDict):
1029-
submission_id: int
1030-
leaderboard_id: int
1031-
leaderboard_name: str
1032-
file_name: str
1033-
user_id: int
1034-
submission_time: datetime.datetime
1035-
done: bool
1036-
code: str
1037-
runs: List[RunItem]
1038-
1039-
1040991
class LeaderboardDoesNotExist(KernelBotError):
1041992
def __init__(self, name: str):
1042993
super().__init__(message=f"Leaderboard `{name}` does not exist.", code=404)

0 commit comments

Comments
 (0)