Skip to content

Commit d4ded47

Browse files
committed
lint/small refactor
1 parent b508483 commit d4ded47

File tree

4 files changed

+55
-53
lines changed

4 files changed

+55
-53
lines changed

src/kernelbot/cogs/admin_cog.py

Lines changed: 5 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,9 @@
2020
)
2121
from kernelbot.env import env
2222
from kernelbot.ui.misc import ConfirmationView, DeleteConfirmationModal, GPUSelectionView
23-
from libkernelbot.consts import GitHubGPU, ModalGPU, SubmissionMode, get_gpu_by_name
23+
from libkernelbot.consts import GitHubGPU, ModalGPU, get_gpu_by_name
2424
from libkernelbot.leaderboard_db import LeaderboardDoesNotExist, LeaderboardItem, SubmissionItem
25-
from libkernelbot.submission import compute_score
26-
from libkernelbot.task import LeaderboardDefinition, make_task_definition
25+
from libkernelbot.task import LeaderboardDefinition, LeaderboardTask, make_task_definition
2726
from libkernelbot.utils import (
2827
KernelBotError,
2928
setup_logging,
@@ -401,7 +400,7 @@ async def _submit_milestones(
401400
leaderboard_item = db.get_leaderboard(leaderboard_name)
402401
milestones = db.get_leaderboard_milestones(leaderboard_item["id"])
403402

404-
task: "LeaderboardTask" = leaderboard_item["task"]
403+
task: LeaderboardTask = leaderboard_item["task"]
405404

406405
# ok, submit all that are missing
407406
submit_tasks = []
@@ -410,50 +409,6 @@ async def _submit_milestones(
410409
reporters = MultiProgressReporterDiscord(interaction)
411410
await reporters.show(f"Milestone runs for {leaderboard_name}")
412411

413-
async def submit_milestone(milestone, gpu, reporter):
414-
result = await backend.submit_leaderboard(
415-
-1,
416-
milestone["code"],
417-
"milestone.py",
418-
gpu,
419-
reporter,
420-
task,
421-
SubmissionMode.LEADERBOARD,
422-
None,
423-
)
424-
425-
# we do not allow milestone runs to fail
426-
if not result.success:
427-
logger.error(f"Milestone run failed: {result}")
428-
raise KernelBotError(f"Milestone run failed: {result.error}")
429-
430-
for key, value in result.runs.items():
431-
if not value.run.success or not value.run.passed:
432-
logger.error(f"Milestone run {key} failed: {value}")
433-
raise KernelBotError(f"Milestone run {key} failed.")
434-
435-
with backend.db as db:
436-
for key, value in result.runs.items():
437-
# Only store LB runs in the database;
438-
# we still want to run test/benchmark to validate
439-
# that the code actually passes, but for all other
440-
# purposes we only need the leaderboard run
441-
if key != SubmissionMode.LEADERBOARD.value:
442-
continue
443-
444-
db.create_submission_run(
445-
milestone=milestone["id"],
446-
start=value.start,
447-
end=value.end,
448-
mode=key,
449-
runner=gpu.name,
450-
score=compute_score(result, task, -1),
451-
secret=False,
452-
compilation=value.compilation,
453-
result=value.run,
454-
system=result.system,
455-
)
456-
457412
if gpus is None:
458413
gpus = leaderboard_item["gpu_types"]
459414

@@ -479,8 +434,9 @@ async def submit_milestone(milestone, gpu, reporter):
479434
continue
480435

481436
submit_tasks.append(
482-
submit_milestone(
437+
backend.submit_milestone_run(
483438
milestone,
439+
task,
484440
get_gpu_by_name(gpu),
485441
reporters.add_run(f"Milestone {milestone['name']} on {gpu}"),
486442
)

src/libkernelbot/backend.py

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,8 @@ async def get_milestone_result(
299299

300300
if len(runs) == 0:
301301
return [
302-
f"⚠️ No runs available for milestone `{milestone_name}`. Maybe they haven't been triggered yet?"
302+
f"⚠️ No runs available for milestone `{milestone_name}`. "
303+
f"Maybe they haven't been triggered yet?"
303304
]
304305
if gpu is not None:
305306
runs = [r for r in runs if r["runner"] == gpu]
@@ -313,3 +314,47 @@ async def get_milestone_result(
313314
messages.append(f"{milestone_name} on {run['runner']}\n```{log}```\n")
314315

315316
return messages
317+
318+
async def submit_milestone_run(self, milestone, task, gpu, reporter):
319+
result = await self.submit_leaderboard(
320+
-1,
321+
milestone["code"],
322+
"milestone.py",
323+
gpu,
324+
reporter,
325+
task,
326+
SubmissionMode.LEADERBOARD,
327+
None,
328+
)
329+
330+
# we do not allow milestone runs to fail
331+
if not result.success:
332+
logger.error(f"Milestone run failed: {result}")
333+
raise KernelBotError(f"Milestone run failed: {result.error}")
334+
335+
for key, value in result.runs.items():
336+
if not value.run.success or not value.run.passed:
337+
logger.error(f"Milestone run {key} failed: {value}")
338+
raise KernelBotError(f"Milestone run {key} failed.")
339+
340+
with self.db as db:
341+
for key, value in result.runs.items():
342+
# Only store LB runs in the database;
343+
# we still want to run test/benchmark to validate
344+
# that the code actually passes, but for all other
345+
# purposes we only need the leaderboard run
346+
if key != SubmissionMode.LEADERBOARD.value:
347+
continue
348+
349+
db.create_submission_run(
350+
milestone=milestone["id"],
351+
start=value.start,
352+
end=value.end,
353+
mode=key,
354+
runner=gpu.name,
355+
score=compute_score(result, task, -1),
356+
secret=False,
357+
compilation=value.compilation,
358+
result=value.run,
359+
system=result.system,
360+
)

src/libkernelbot/leaderboard_db.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -478,8 +478,8 @@ def create_submission_run(
478478
}
479479
self.cursor.execute(
480480
"""
481-
INSERT INTO leaderboard.runs (submission_id, milestone_id, start_time, end_time, mode,
482-
secret, runner, score, passed, compilation, meta, result, system_info
481+
INSERT INTO leaderboard.runs (submission_id, milestone_id, start_time, end_time,
482+
mode, secret, runner, score, passed, compilation, meta, result, system_info
483483
)
484484
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
485485
""",

src/migrations/20250725_01_hwite-add-milestone-table.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
"""
1212
CREATE TABLE IF NOT EXISTS leaderboard.milestones (
1313
id SERIAL PRIMARY KEY,
14-
leaderboard_id INTEGER NOT NULL REFERENCES leaderboard.leaderboard(id) ON DELETE CASCADE,
14+
leaderboard_id INTEGER NOT NULL REFERENCES leaderboard.leaderboard(id)
15+
ON DELETE CASCADE,
1516
name TEXT NOT NULL,
1617
code TEXT NOT NULL,
1718
description TEXT,

0 commit comments

Comments
 (0)