File size: 1,560 Bytes
02b7dec
 
 
 
 
 
9756440
02b7dec
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55d797c
02b7dec
 
 
9756440
 
 
02b7dec
 
 
 
 
 
 
 
 
 
9756440
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
from typing import Optional

import gradio as gr
from loguru import logger

from app_configs import UNSELECTED_PIPELINE_NAME
from components.structs import TossupWorkflow, Workflow
from display.formatting import styled_error
from submission import submit


def get_user_submission_names(profile: gr.OAuthProfile | None) -> list[str]:
    if profile is None:
        logger.error("Authentication required. Please log in to view your submissions.")
        return []
    return submit.get_user_submission_names("tossup", profile)


def get_pipeline_names(competition_type: str, profile: gr.OAuthProfile | None) -> list[str]:
    demo_example_names = submit.get_demo_example_submissions(competition_type)
    user_model_names = submit.get_user_submission_names(competition_type, profile)
    all_names = demo_example_names + user_model_names
    logger.info(f"Loaded model names: {all_names}")
    return all_names


def load_workflow(
    competition_type: str, model_name: str, profile: gr.OAuthProfile | None
) -> Workflow | TossupWorkflow | None:
    if not model_name or model_name == UNSELECTED_PIPELINE_NAME:
        return None
    username, model_name = model_name.split("/")
    if username == "umdclip":
        workflow = submit.load_demo_example(model_name, competition_type)
    elif profile is not None:
        submission = submit.load_submission(model_name, competition_type, profile)
        workflow = submission.workflow
    else:
        raise gr.Error("Authentication required. Please log in to view your submissions.")

    return workflow