1515from discord .ext import commands , tasks
1616from discord_utils import leaderboard_name_autocomplete , send_discord_message , with_error_handling
1717from leaderboard_db import LeaderboardDoesNotExist , LeaderboardItem , SubmissionItem
18- from task import LeaderboardTask , make_task
18+ from task import LeaderboardDefinition , make_task_definition
1919from ui .misc import ConfirmationView , DeleteConfirmationModal , GPUSelectionView
2020from utils import (
2121 KernelBotError ,
@@ -169,7 +169,7 @@ async def leaderboard_create_local(
169169
170170 directory = Path (env .PROBLEM_DEV_DIR ) / directory
171171 assert directory .resolve ().is_relative_to (Path .cwd () / env .PROBLEM_DEV_DIR )
172- task = make_task (directory )
172+ definition = make_task_definition (directory )
173173
174174 # clearly mark this leaderboard as development-only
175175 leaderboard_name = directory .name + "-dev"
@@ -203,7 +203,7 @@ async def leaderboard_create_local(
203203 interaction ,
204204 leaderboard_name ,
205205 datetime .now (timezone .utc ) + timedelta (days = 365 ),
206- task = task ,
206+ definition = definition ,
207207 forum_id = forum_id ,
208208 gpu = gpu .value if gpu else None ,
209209 ):
@@ -238,7 +238,7 @@ async def leaderboard_create_impl( # noqa: C901
238238 interaction : discord .Interaction ,
239239 leaderboard_name : str ,
240240 deadline : str ,
241- task : LeaderboardTask ,
241+ definition : LeaderboardDefinition ,
242242 gpus : Optional [str | list [str ]],
243243 ):
244244 if len (leaderboard_name ) > 95 :
@@ -271,13 +271,13 @@ async def leaderboard_create_impl( # noqa: C901
271271 forum_thread = await forum_channel .create_thread (
272272 name = leaderboard_name ,
273273 content = self ._leaderboard_opening_message (
274- leaderboard_name , date_value , task .description
274+ leaderboard_name , date_value , definition .description
275275 ),
276276 auto_archive_duration = 10080 , # 7 days
277277 )
278278
279279 success = await self .create_leaderboard_in_db (
280- interaction , leaderboard_name , date_value , task , forum_thread .thread .id , gpus
280+ interaction , leaderboard_name , date_value , definition , forum_thread .thread .id , gpus
281281 )
282282 if not success :
283283 await forum_thread .delete ()
@@ -323,7 +323,7 @@ async def create_leaderboard_in_db(
323323 interaction : discord .Interaction ,
324324 leaderboard_name : str ,
325325 date_value : datetime ,
326- task : LeaderboardTask ,
326+ definition : LeaderboardDefinition ,
327327 forum_id : int ,
328328 gpu : Optional [str | list [str ]] = None ,
329329 ) -> bool :
@@ -350,14 +350,12 @@ async def create_leaderboard_in_db(
350350 with self .bot .leaderboard_db as db :
351351 try :
352352 db .create_leaderboard (
353- {
354- "name" : leaderboard_name ,
355- "deadline" : date_value ,
356- "task" : task ,
357- "gpu_types" : selected_gpus ,
358- "creator_id" : interaction .user .id ,
359- "forum_id" : forum_id ,
360- }
353+ name = leaderboard_name ,
354+ deadline = date_value ,
355+ definition = definition ,
356+ gpu_types = selected_gpus ,
357+ creator_id = interaction .user .id ,
358+ forum_id = forum_id ,
361359 )
362360 except KernelBotError as e :
363361 await send_discord_message (
@@ -617,12 +615,13 @@ async def _create_update_plan( # noqa: C901
617615 if name in leaderboards :
618616 # check for differences
619617 old = leaderboards [name ] # type: LeaderboardItem
620- new_task = make_task (source )
618+ new_def = make_task_definition (source )
619+ new_task = new_def .task
621620
622621 # from the database, we get datetime with timezone,
623622 # so we need to convert here to enable comparison
624623 new_dl = self ._parse_deadline (problem ["deadline" ])
625- new_dl = new_dl .astimezone ()
624+ new_dl = new_dl .astimezone (timezone . utc )
626625 if old ["deadline" ] != new_dl :
627626 pass
628627 elif old ["gpu_types" ] != problem ["gpus" ]:
@@ -729,15 +728,17 @@ async def update_competition(
729728 interaction ,
730729 entry ["name" ],
731730 entry ["deadline" ],
732- make_task (root / entry ["directory" ]),
731+ make_task_definition (root / entry ["directory" ]),
733732 entry ["gpus" ],
734733 )
735734 steps += "done\n "
736735
737736 for entry in update_list :
738737 with self .bot .leaderboard_db as db :
739- task = make_task (root / entry ["directory" ])
740- db .update_leaderboard (entry ["name" ], entry ["deadline" ], task )
738+ task = make_task_definition (root / entry ["directory" ])
739+ db .update_leaderboard (
740+ entry ["name" ], self ._parse_deadline (entry ["deadline" ]), task
741+ )
741742 new_lb : LeaderboardItem = db .get_leaderboard (entry ["name" ])
742743
743744 forum_id = new_lb ["forum_id" ]
0 commit comments