Maharshi Gor
commited on
Commit
·
20b6852
1
Parent(s):
09f6a16
Fix for dup sub
Browse files- src/submission/submit.py +15 -15
src/submission/submit.py
CHANGED
@@ -17,15 +17,14 @@ from shared.workflows.structs import TossupWorkflow, Workflow
|
|
17 |
from submission.structs import CompetitionType, Submission, SubmissionStatus, SubmissionType
|
18 |
|
19 |
|
20 |
-
def make_unique_submission_key(submission:
|
21 |
-
stype = submission
|
22 |
if stype == "simple_workflow":
|
23 |
-
workflow = submission
|
24 |
-
workflow
|
25 |
-
wstr = json.dumps(workflow, sort_keys=True, ensure_ascii=False)
|
26 |
return f"workflow:{wstr}"
|
27 |
elif stype == "hf_pipeline":
|
28 |
-
return f"hf:{submission
|
29 |
else:
|
30 |
raise ValueError(f"Unsupported submission type {stype}")
|
31 |
|
@@ -213,17 +212,17 @@ def submit_agent(
|
|
213 |
if len(get_user_submissions_today(username, competition_type)) >= DAILY_SUBMISSION_LIMIT_PER_USER:
|
214 |
time_str = get_time_until_next_submission()
|
215 |
return styled_error(
|
216 |
-
f"Daily submission limit of {DAILY_SUBMISSION_LIMIT_PER_USER} reached. Please try again in \n {time_str}."
|
217 |
)
|
218 |
|
219 |
if f"{username}/{model_name}" in get_user_submission_names(competition_type, profile):
|
220 |
return styled_error(
|
221 |
-
f"Submission Error!<br>'{model_name}' already exists. Please use a different name for your submission."
|
222 |
)
|
223 |
|
224 |
is_valid, error_msg = validate_model_name(model_name)
|
225 |
if not is_valid:
|
226 |
-
return styled_error(f"Submission Error! Invalid model name '{model_name}'.<br>{error_msg}")
|
227 |
|
228 |
try:
|
229 |
if submission_type == "simple_workflow":
|
@@ -247,13 +246,14 @@ def submit_agent(
|
|
247 |
# Convert to dictionary format
|
248 |
submission_dict = submission.to_dict()
|
249 |
|
250 |
-
user_submissions =
|
251 |
-
unq_keys = {make_unique_submission_key(s): s
|
252 |
-
submission_key = make_unique_submission_key(
|
253 |
if submission_key in unq_keys:
|
254 |
-
|
255 |
return styled_error(
|
256 |
-
f"Duplicate submission!<br> You submission is equivalent to your previous submission
|
|
|
257 |
)
|
258 |
|
259 |
# Create output directory path
|
@@ -275,7 +275,7 @@ def submit_agent(
|
|
275 |
)
|
276 |
|
277 |
return styled_message(
|
278 |
-
f"Successfully submitted {competition_type} {submission_type} model!<br>"
|
279 |
f"Submission name: {username}/{model_name}<br>"
|
280 |
f"Please wait for up to one day for the model to show up on the leaderboard."
|
281 |
)
|
|
|
17 |
from submission.structs import CompetitionType, Submission, SubmissionStatus, SubmissionType
|
18 |
|
19 |
|
20 |
+
def make_unique_submission_key(submission: Submission) -> str:
|
21 |
+
stype = submission.submission_type
|
22 |
if stype == "simple_workflow":
|
23 |
+
workflow = submission.workflow
|
24 |
+
wstr = json.dumps(workflow.model_dump(), sort_keys=True, ensure_ascii=False)
|
|
|
25 |
return f"workflow:{wstr}"
|
26 |
elif stype == "hf_pipeline":
|
27 |
+
return f"hf:{submission.model_name}"
|
28 |
else:
|
29 |
raise ValueError(f"Unsupported submission type {stype}")
|
30 |
|
|
|
212 |
if len(get_user_submissions_today(username, competition_type)) >= DAILY_SUBMISSION_LIMIT_PER_USER:
|
213 |
time_str = get_time_until_next_submission()
|
214 |
return styled_error(
|
215 |
+
f"‼️ Daily submission limit of {DAILY_SUBMISSION_LIMIT_PER_USER} reached. <br>⏳ Please try again in \n {time_str}."
|
216 |
)
|
217 |
|
218 |
if f"{username}/{model_name}" in get_user_submission_names(competition_type, profile):
|
219 |
return styled_error(
|
220 |
+
f"⚠️ Submission Error!<br>Name '{username}/{model_name}' already exists. Please use a different name for your submission."
|
221 |
)
|
222 |
|
223 |
is_valid, error_msg = validate_model_name(model_name)
|
224 |
if not is_valid:
|
225 |
+
return styled_error(f"🙅🏻♂️ Submission Error! Invalid model name '{model_name}'.<br>{error_msg}")
|
226 |
|
227 |
try:
|
228 |
if submission_type == "simple_workflow":
|
|
|
246 |
# Convert to dictionary format
|
247 |
submission_dict = submission.to_dict()
|
248 |
|
249 |
+
user_submissions = get_user_submissions(username, competition_type)
|
250 |
+
unq_keys = {make_unique_submission_key(s): s for s in user_submissions}
|
251 |
+
submission_key = make_unique_submission_key(submission)
|
252 |
if submission_key in unq_keys:
|
253 |
+
sim_submission = unq_keys[submission_key]
|
254 |
return styled_error(
|
255 |
+
f"⚠️ Duplicate submission!<br> You submission is equivalent to your previous submission "
|
256 |
+
f"'{sim_submission.model_name}'."
|
257 |
)
|
258 |
|
259 |
# Create output directory path
|
|
|
275 |
)
|
276 |
|
277 |
return styled_message(
|
278 |
+
f"✅ Successfully submitted {competition_type} {submission_type} model!<br>"
|
279 |
f"Submission name: {username}/{model_name}<br>"
|
280 |
f"Please wait for up to one day for the model to show up on the leaderboard."
|
281 |
)
|