|
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 |
|
|