Spaces:
Sleeping
Sleeping
File size: 7,762 Bytes
fc8d954 9fff15f 993dbef 9fff15f 751b697 fc8d954 554dc8a 9fff15f 751b697 9fff15f fc8d954 a06fdf2 3fb1e00 a06fdf2 9fff15f b201287 71bda18 b201287 76ebb03 e7e6b21 71bda18 0023a7e e7e6b21 3fb1e00 9fff15f 751b697 9fff15f 751b697 9fff15f 751b697 9fff15f 751b697 9fff15f e7e6b21 bd86818 e7e6b21 91094ca e7e6b21 76ebb03 e7e6b21 9fff15f 751b697 3e8b052 9fff15f 4bcef30 9fff15f 751b697 9fff15f a06fdf2 9fff15f 8595073 b8641f6 8595073 9fff15f fc8d954 9fff15f fc8d954 9fff15f fc8d954 9fff15f b8641f6 9fff15f 751b697 9fff15f 8595073 9fff15f a06fdf2 9fff15f 3e8b052 9fff15f b201287 9fff15f | 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 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 | 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.getenv("PRIVATE_DATASET_ID")
)
def get_leaderboard_for_task(task_pretty: str) -> gr.components.Dataframe:
return gr.components.Dataframe(
value=get_results_for_task(task_pretty),
interactive=False,
datatype=get_types_per_task(TASKS_PRETTY_REVERSE[task_pretty]),
)
code_completion_dataset_names = get_results_for_task(TASKS_PRETTY['project_code_completion'])['Dataset Name'].unique().tolist()
def get_leaderboard_for_completion_task(dataset_name: str | None):
df = get_results_for_task(TASKS_PRETTY['project_code_completion'])
if dataset_name is None:
dataset_name = code_completion_dataset_names[0]
filtered_df = df[df['Dataset Name']==dataset_name]
filtered_df.drop(columns=['Dataset'], inplace=True)
return gr.components.Dataframe(
value=filtered_df,
interactive=False,
datatype=get_types_per_task('project_code_completion'),
)
def get_aggregated_leaderboard_for_task(task_pretty: str) -> gr.components.Dataframe:
return gr.components.Dataframe(
value=get_results_for_task(task_pretty),
interactive=False,
datatype=get_types_per_task(TASKS_PRETTY_REVERSE[task_pretty]),
)
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]])
if task_pretty == TASKS_PRETTY['project_code_completion']:
leaderboard_table = get_leaderboard_for_completion_task(dataset_name=None)
else:
leaderboard_table = get_leaderboard_for_task(task_pretty)
task_input = gr.Text(value=task_pretty, visible=False)
if task_pretty == TASKS_PRETTY['project_code_completion']:
dataset_dropdown = gr.Dropdown(choices=code_completion_dataset_names, label="Select the Dataset")
dataset_dropdown.change(
fn=get_leaderboard_for_completion_task,
inputs=dataset_dropdown,
outputs=leaderboard_table
)
refresh_button = gr.Button("π Refresh", variant="secondary")
refresh_button.click(
fn=get_leaderboard_for_completion_task,
inputs=dataset_dropdown,
outputs=leaderboard_table,
)
else:
refresh_button = gr.Button("π Refresh", variant="secondary")
refresh_button.click(
fn=get_leaderboard_for_task,
inputs=task_input,
outputs=leaderboard_table,
)
# submission
'''
gr.HTML(SUBMISSION_TITLE)
gr.Markdown(SUBMISSION_TEXT_INTRO, elem_classes="markdown-text")
with gr.Accordion("π Submit new results", open=False):
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). Use the following format: "[text1](link1), [text2](link2)".',
)
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")
with gr.Row():
with gr.Column(variant="panel"):
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)
with gr.Column():
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()
demo.launch()
|