File size: 5,243 Bytes
9203553
e2473e2
 
cdf268e
e2473e2
6c92442
 
 
 
 
 
 
 
 
 
 
 
9203553
a9273cf
e2473e2
6c92442
 
 
 
 
 
e2473e2
9203553
 
 
 
 
 
04b315a
 
 
e2473e2
 
 
6c92442
e2473e2
 
 
6c92442
e2473e2
 
 
6c92442
 
e2473e2
6c92442
e2473e2
a9273cf
 
 
 
 
e2473e2
6c92442
e2473e2
 
 
 
6c92442
e2473e2
 
 
 
 
 
04b315a
e2473e2
 
 
 
 
2d26479
 
 
 
 
 
 
 
 
 
e2473e2
 
 
 
 
 
9203553
e2473e2
 
 
 
9203553
 
e2473e2
 
9203553
e2473e2
 
 
 
 
 
 
6c92442
 
e2473e2
 
 
 
 
 
 
 
6c92442
e2473e2
 
 
2d26479
e2473e2
 
 
04b315a
 
e2473e2
 
 
 
 
 
0646a3e
e2473e2
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
import logging
import os

import gradio as gr  # type: ignore[import]

from src.content import (
    INTRODUCTION_TEXT,
    INTRODUCTION_TITLE,
    LEADERBOARD_TEXT,
    LEADERBOARD_TITLE,
    SUBMISSION_TEXT_FILES,
    SUBMISSION_TEXT_INTRO,
    SUBMISSION_TEXT_METADATA,
    SUBMISSION_TEXT_SUBMIT,
    SUBMISSION_TEXT_TASK,
    SUBMISSION_TITLE,
)
from src.get_results_for_task import get_results_for_task
from src.leaderboard_formatting import get_types_per_task
from src.submission_uploader import SubmissionUploader
from src.tasks_content import (
    TASKS_DESCRIPTIONS,
    TASKS_PRETTY,
    TASKS_PRETTY_REVERSE,
    get_submission_text_files_for_task,
)

logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s [%(levelname)s] %(message)s",
    handlers=[logging.StreamHandler()],
)

submission_uploader = SubmissionUploader(
    dataset_id=os.environ["DATASET_ID"], private_dataset_id=os.environ["PRIVATE_DATASET_ID"]
)


with gr.Blocks() as demo:
    # intro
    gr.HTML(INTRODUCTION_TITLE)
    gr.Markdown(INTRODUCTION_TEXT, elem_classes="markdown-text")

    # leaderboard
    gr.HTML(LEADERBOARD_TITLE)
    gr.Markdown(LEADERBOARD_TEXT, elem_classes="markdown-text")
    with gr.Tabs():
        for task_pretty in TASKS_PRETTY_REVERSE:
            with gr.TabItem(task_pretty):
                with gr.Row():
                    gr.Markdown(TASKS_DESCRIPTIONS[TASKS_PRETTY_REVERSE[task_pretty]])

                leaderboard_table = gr.components.Dataframe(
                    value=get_results_for_task(task_pretty),
                    interactive=False,
                    datatype=get_types_per_task(TASKS_PRETTY_REVERSE[task_pretty]),
                )

    # submission
    gr.HTML(SUBMISSION_TITLE)
    gr.Markdown(SUBMISSION_TEXT_INTRO, elem_classes="markdown-text")
    with gr.Accordion("🚀 Submit new results"):
        gr.Markdown(SUBMISSION_TEXT_TASK, elem_classes="markdown-text")
        task_selection = gr.Radio(TASKS_PRETTY_REVERSE.keys(), label="Task")

        gr.Markdown(SUBMISSION_TEXT_METADATA, elem_classes="markdown-text")
        with gr.Row():
            with gr.Column():
                model_folder_textbox = gr.Textbox(
                    label="Model Folder",
                    placeholder="How to call a folder related to this submission in our results dataset (should be unique).",
                )
                model_name_textbox = gr.Textbox(
                    label="Model Name",
                    placeholder="How to display model's name on the leaderboard.",
                )
                model_url_textbox = gr.Textbox(
                    label="Model URL",
                    placeholder="Link to a model's page - will be clickable on a leaderboard (optional).",
                )

            with gr.Column():
                url_textbox = gr.Textbox(
                    label="Relevant URLs",
                    placeholder="URLs to relevant resources with additional details about your submission (optional).",
                )
                model_availability_textbox = gr.Textbox(
                    label="Availability",
                    placeholder="Information about the model's availability and licensing.",
                )
                context_size_textbox = gr.Textbox(
                    label="Context Size",
                    placeholder="Context size in tokens used for the submission (should be an integer).",
                )
            with gr.Column():
                submitted_by_textbox = gr.Textbox(
                    label="Submitted By",
                    placeholder="How to display on the leaderboard who submitted the model.",
                )
                contact_textbox = gr.Textbox(
                    label="Contact Information",
                    placeholder="How Long Code Arena team can contact you (won't go to public dataset).",
                )
                comment_textbox = gr.Textbox(
                    label="Comment",
                    placeholder="Any comments you have for Long Code Arena team (optional, won't go to public dataset).",
                )

        gr.Markdown(SUBMISSION_TEXT_FILES, elem_classes="markdown-text")
        task_specific_instructions = gr.Markdown(get_submission_text_files_for_task(None))
        task_selection.select(get_submission_text_files_for_task, [task_selection], task_specific_instructions)
        file_output = gr.File(file_count="multiple")

        gr.Markdown(SUBMISSION_TEXT_SUBMIT, elem_classes="markdown-text")
        submit_button = gr.Button("Submit")
        submission_result = gr.Markdown()
        submit_button.click(
            submission_uploader.upload_files,
            [
                task_selection,
                model_folder_textbox,
                model_name_textbox,
                model_availability_textbox,
                model_url_textbox,
                url_textbox,
                context_size_textbox,
                submitted_by_textbox,
                contact_textbox,
                comment_textbox,
                file_output,
            ],
            submission_result,
        )

if __name__ == "__main__":
    demo.queue(default_concurrency_limit=20)
    demo.launch()