File size: 4,582 Bytes
9203553
e2473e2
 
cdf268e
9203553
 
e2473e2
9203553
 
 
 
 
 
 
 
 
 
 
 
 
e2473e2
 
 
9203553
 
 
 
 
 
e2473e2
 
 
9203553
 
 
 
 
 
e2473e2
 
 
 
 
 
 
 
 
 
 
 
 
 
9203553
e2473e2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9203553
e2473e2
 
 
 
9203553
 
 
 
 
e2473e2
 
 
9203553
e2473e2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9203553
 
 
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
import logging
import os

import gradio as gr  # type: ignore[import]
from apscheduler.schedulers.background import BackgroundScheduler
from huggingface_hub import HfApi

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.submission_uploader import SubmissionUploader
from src.tasks import TASKS_DESCRIPTIONS, TASKS_PRETTY, TASKS_PRETTY_REVERSE

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

submission_uploader = SubmissionUploader(os.environ["DATASET_ID"])


def restart_space():
    HfApi(token=os.environ["HF_TOKEN"]).restart_space(
        repo_id="JetBrains-Research/long-code-arena"
    )


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

    gr.HTML(LEADERBOARD_TITLE)
    gr.Markdown(LEADERBOARD_TEXT, elem_classes="markdown-text")

    with gr.Tabs():
        for task in TASKS_PRETTY_REVERSE:
            with gr.TabItem(task):
                with gr.Row():
                    gr.Markdown(TASKS_DESCRIPTIONS[task])

                leaderboard_table = gr.components.Dataframe(
                    value=get_results_for_task(task), interactive=False
                )

    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 = 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.",
                )
                model_name_textbox = gr.Textbox(
                    label="Model Name",
                    placeholder="How to display model's name on the leaderboard.",
                )
                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.",
                )
                url_textbox = gr.Textbox(
                    label="Relevant URLs",
                    placeholder="URLs to relevant resources with additional details about your submission (optional).",
                )
                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")
        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,
                model_folder_textbox,
                model_name_textbox,
                model_availability_textbox,
                url_textbox,
                context_size_textbox,
                submitted_by_textbox,
                file_output,
            ],
            submission_result,
        )

if __name__ == "__main__":
    scheduler = BackgroundScheduler()
    scheduler.add_job(restart_space, "interval", seconds=30 * 60)
    scheduler.start()
    demo.launch()