Lakoc commited on
Commit
9c94547
·
1 Parent(s): 236b98b

fix of init loading bug of the space chatgpt

Browse files
Files changed (1) hide show
  1. app.py +128 -62
app.py CHANGED
@@ -1,35 +1,70 @@
1
  import os
2
-
3
  import gradio as gr
4
  from gradio_modal import Modal
5
 
6
- from content import HEADER_MARKDOWN, LEADERBOARD_TAB_TITLE_MARKDOWN, SUBMISSION_TAB_TITLE_MARKDOWN, \
7
- ADDITIONAL_NOTES_MARKDOWN, LEADERBOARD_CSS
 
 
 
 
 
8
  from leaderboard_server import LeaderboardServer
9
 
10
- # Initialize server and task list
 
 
 
11
  DATA_ROOT = os.environ.get("DATA_ROOT")
 
 
12
  server = LeaderboardServer(local_leaderboard_path=DATA_ROOT)
13
  TASKS = list(server.tasks_metadata.keys())
14
- EXPECTED_TOKEN = os.environ.get("SUBMISSION_TOKEN")
15
 
16
 
 
 
 
17
  def get_datasets_for_task(task):
18
  path = os.path.join("references", task)
19
- if not os.path.exists(path):
20
  return []
21
  return [f.replace(".json", "") for f in os.listdir(path) if f.endswith(".json")]
22
 
23
 
24
  def update_datasets(task):
25
- return gr.CheckboxGroup(choices=get_datasets_for_task(task), value=get_datasets_for_task(task))
 
 
 
 
 
 
 
26
 
27
 
28
- def submit_model(task, datasets, hyp_file, submitted_by, model_id, model_link_input, token, normalize):
 
 
 
 
 
 
 
 
 
29
  if not hyp_file:
30
  return gr.update(visible=True, value="⚠️ Please upload a hypothesis file.")
31
 
32
- if not submitted_by.strip() or not model_id.strip() or not model_link_input.strip() or not token.strip():
 
 
 
 
 
 
 
33
  return gr.update(visible=True, value="⚠️ All fields are required.")
34
 
35
  if token.strip() != EXPECTED_TOKEN:
@@ -39,22 +74,16 @@ def submit_model(task, datasets, hyp_file, submitted_by, model_id, model_link_in
39
  "submitted_by": submitted_by.strip(),
40
  "model_id": model_id.strip(),
41
  "model_link": model_link_input.strip(),
42
- "normalize": normalize # Include normalization info in metadata if needed
43
  }
44
 
45
- leaderboard_df = server.get_leaderboard(task)
46
- if len(leaderboard_df) > 0:
47
- existing = leaderboard_df[
48
- (leaderboard_df["Submitted by"] == submitted_by.strip()) &
49
- (leaderboard_df["Model ID"] == model_id.strip())
50
- ]
51
- # TODO: Uncomment this after testing done
52
- # if not existing.empty:
53
- # return gr.update(value="❌ A submission with this name and model ID already exists.", visible=True)
54
-
55
  try:
56
  server.prepare_model_for_submission(
57
- hyp_file.name, metadata, task, datasets, normalize=normalize
 
 
 
 
58
  )
59
  return gr.update(visible=True, value="✅ Submission successful!")
60
  except Exception as e:
@@ -62,85 +91,122 @@ def submit_model(task, datasets, hyp_file, submitted_by, model_id, model_link_in
62
  return gr.update(visible=True, value=f"❌ Error: {str(e)}")
63
 
64
 
65
- def get_leaderboard_df(task):
66
- return server.get_leaderboard(task)
67
-
68
-
69
- # Gradio UI
70
  with gr.Blocks(css=LEADERBOARD_CSS) as demo:
71
  gr.Markdown(HEADER_MARKDOWN)
72
 
73
- with gr.Tabs(selected=0) as tabs:
 
74
  with gr.Tab("📈 Leaderboard"):
75
  gr.Markdown(LEADERBOARD_TAB_TITLE_MARKDOWN)
76
 
77
- first_task = TASKS[0] if len(TASKS) > 0 else None
78
-
79
  leaderboard_task_dropdown = gr.Dropdown(
80
  choices=TASKS,
81
- value=first_task,
82
- label="Select Task for Leaderboard"
83
  )
84
 
85
- leaderboard_output = gr.components.Dataframe(
86
- datatype=["markdown", "markdown", "float", "float", "float", "float", "float", "float"],
87
- value=None,
 
 
 
 
 
 
 
 
 
88
  interactive=False,
89
- label="Leaderboard"
90
  )
91
 
92
  leaderboard_task_dropdown.change(
93
  fn=get_leaderboard_df,
94
  inputs=leaderboard_task_dropdown,
95
- outputs=leaderboard_output
96
  )
97
 
 
98
  with gr.Tab("📤 Submit"):
99
  gr.Markdown(SUBMISSION_TAB_TITLE_MARKDOWN)
100
 
101
  with gr.Row():
102
- task_dropdown = gr.Dropdown(choices=TASKS, value=TASKS[0], label="Select Task")
103
- dataset_checkboxes = gr.CheckboxGroup(choices=get_datasets_for_task(TASKS[0]), label="Select Datasets",
104
- value=get_datasets_for_task(TASKS[0]))
105
- task_dropdown.change(fn=update_datasets, inputs=task_dropdown, outputs=dataset_checkboxes)
 
 
 
 
 
 
 
 
 
 
 
 
 
106
 
107
  with gr.Row():
108
  submitted_by_input = gr.Text(label="Submitted by")
109
  model_id_input = gr.Text(label="Model Identifier")
110
- model_link_input = gr.Text(label="Model Link", placeholder="Link to model or code repository")
111
- token_input = gr.Text(label="Submission Token", type="password")
112
-
113
- hyp_file_upload = gr.File(label="Upload Hypothesis JSON", file_types=[".json"])
 
 
 
 
 
 
 
 
 
114
 
115
- normalize_checkbox = gr.Checkbox(label="Apply Chime-8 Normalization", value=True)
 
 
 
116
 
117
  submit_btn = gr.Button("Submit")
118
 
119
- with Modal("Submission Feedback", visible=False) as loading_msg:
120
- feedback_text = gr.Text(visible=True, label="⏳ Processing your submission...")
 
 
 
 
121
  gr.Markdown(ADDITIONAL_NOTES_MARKDOWN)
122
 
123
  submit_btn.click(
124
- lambda: gr.update(visible=True), # Show loading
125
- outputs=loading_msg
126
  ).then(
127
  fn=submit_model,
128
- inputs=[task_dropdown, dataset_checkboxes, hyp_file_upload,
129
- submitted_by_input, model_id_input, model_link_input, token_input, normalize_checkbox],
130
- outputs=[feedback_text],
 
 
 
 
 
 
 
 
131
  ).then(
132
- fn=lambda task: get_leaderboard_df(task),
133
  inputs=task_dropdown,
134
- outputs=leaderboard_output
135
  )
136
- demo.load(
137
- fn=lambda: gr.Tabs(selected=1),
138
- outputs=[tabs]
139
- ).then(
140
- fn=get_leaderboard_df,
141
- inputs=[leaderboard_task_dropdown],
142
- outputs=[leaderboard_output]
143
- )
144
 
145
  if __name__ == "__main__":
146
  demo.launch()
 
1
  import os
 
2
  import gradio as gr
3
  from gradio_modal import Modal
4
 
5
+ from content import (
6
+ HEADER_MARKDOWN,
7
+ LEADERBOARD_TAB_TITLE_MARKDOWN,
8
+ SUBMISSION_TAB_TITLE_MARKDOWN,
9
+ ADDITIONAL_NOTES_MARKDOWN,
10
+ LEADERBOARD_CSS,
11
+ )
12
  from leaderboard_server import LeaderboardServer
13
 
14
+
15
+ # --------------------
16
+ # Init
17
+ # --------------------
18
  DATA_ROOT = os.environ.get("DATA_ROOT")
19
+ EXPECTED_TOKEN = os.environ.get("SUBMISSION_TOKEN")
20
+
21
  server = LeaderboardServer(local_leaderboard_path=DATA_ROOT)
22
  TASKS = list(server.tasks_metadata.keys())
23
+ FIRST_TASK = TASKS[0] if TASKS else None
24
 
25
 
26
+ # --------------------
27
+ # Helpers
28
+ # --------------------
29
  def get_datasets_for_task(task):
30
  path = os.path.join("references", task)
31
+ if not task or not os.path.exists(path):
32
  return []
33
  return [f.replace(".json", "") for f in os.listdir(path) if f.endswith(".json")]
34
 
35
 
36
  def update_datasets(task):
37
+ datasets = get_datasets_for_task(task)
38
+ return gr.CheckboxGroup(choices=datasets, value=datasets)
39
+
40
+
41
+ def get_leaderboard_df(task):
42
+ if not task:
43
+ return None
44
+ return server.get_leaderboard(task)
45
 
46
 
47
+ def submit_model(
48
+ task,
49
+ datasets,
50
+ hyp_file,
51
+ submitted_by,
52
+ model_id,
53
+ model_link_input,
54
+ token,
55
+ normalize,
56
+ ):
57
  if not hyp_file:
58
  return gr.update(visible=True, value="⚠️ Please upload a hypothesis file.")
59
 
60
+ if not all(
61
+ [
62
+ submitted_by.strip(),
63
+ model_id.strip(),
64
+ model_link_input.strip(),
65
+ token.strip(),
66
+ ]
67
+ ):
68
  return gr.update(visible=True, value="⚠️ All fields are required.")
69
 
70
  if token.strip() != EXPECTED_TOKEN:
 
74
  "submitted_by": submitted_by.strip(),
75
  "model_id": model_id.strip(),
76
  "model_link": model_link_input.strip(),
77
+ "normalize": normalize,
78
  }
79
 
 
 
 
 
 
 
 
 
 
 
80
  try:
81
  server.prepare_model_for_submission(
82
+ hyp_file.name,
83
+ metadata,
84
+ task,
85
+ datasets,
86
+ normalize=normalize,
87
  )
88
  return gr.update(visible=True, value="✅ Submission successful!")
89
  except Exception as e:
 
91
  return gr.update(visible=True, value=f"❌ Error: {str(e)}")
92
 
93
 
94
+ # --------------------
95
+ # UI
96
+ # --------------------
 
 
97
  with gr.Blocks(css=LEADERBOARD_CSS) as demo:
98
  gr.Markdown(HEADER_MARKDOWN)
99
 
100
+ with gr.Tabs() as tabs:
101
+ # -------- Leaderboard Tab --------
102
  with gr.Tab("📈 Leaderboard"):
103
  gr.Markdown(LEADERBOARD_TAB_TITLE_MARKDOWN)
104
 
 
 
105
  leaderboard_task_dropdown = gr.Dropdown(
106
  choices=TASKS,
107
+ value=FIRST_TASK,
108
+ label="Select Task for Leaderboard",
109
  )
110
 
111
+ leaderboard_output = gr.Dataframe(
112
+ value=get_leaderboard_df(FIRST_TASK),
113
+ datatype=[
114
+ "markdown",
115
+ "markdown",
116
+ "float",
117
+ "float",
118
+ "float",
119
+ "float",
120
+ "float",
121
+ "float",
122
+ ],
123
  interactive=False,
124
+ label="Leaderboard",
125
  )
126
 
127
  leaderboard_task_dropdown.change(
128
  fn=get_leaderboard_df,
129
  inputs=leaderboard_task_dropdown,
130
+ outputs=leaderboard_output,
131
  )
132
 
133
+ # -------- Submit Tab --------
134
  with gr.Tab("📤 Submit"):
135
  gr.Markdown(SUBMISSION_TAB_TITLE_MARKDOWN)
136
 
137
  with gr.Row():
138
+ task_dropdown = gr.Dropdown(
139
+ choices=TASKS,
140
+ value=FIRST_TASK,
141
+ label="Select Task",
142
+ )
143
+
144
+ dataset_checkboxes = gr.CheckboxGroup(
145
+ choices=get_datasets_for_task(FIRST_TASK),
146
+ value=get_datasets_for_task(FIRST_TASK),
147
+ label="Select Datasets",
148
+ )
149
+
150
+ task_dropdown.change(
151
+ fn=update_datasets,
152
+ inputs=task_dropdown,
153
+ outputs=dataset_checkboxes,
154
+ )
155
 
156
  with gr.Row():
157
  submitted_by_input = gr.Text(label="Submitted by")
158
  model_id_input = gr.Text(label="Model Identifier")
159
+ model_link_input = gr.Text(
160
+ label="Model Link",
161
+ placeholder="Link to model or code repository",
162
+ )
163
+ token_input = gr.Text(
164
+ label="Submission Token",
165
+ type="password",
166
+ )
167
+
168
+ hyp_file_upload = gr.File(
169
+ label="Upload Hypothesis JSON",
170
+ file_types=[".json"],
171
+ )
172
 
173
+ normalize_checkbox = gr.Checkbox(
174
+ label="Apply Chime-8 Normalization",
175
+ value=True,
176
+ )
177
 
178
  submit_btn = gr.Button("Submit")
179
 
180
+ with Modal("Submission Feedback", visible=False) as modal:
181
+ feedback_text = gr.Text(
182
+ visible=True,
183
+ label="Submission status",
184
+ )
185
+
186
  gr.Markdown(ADDITIONAL_NOTES_MARKDOWN)
187
 
188
  submit_btn.click(
189
+ fn=lambda: gr.update(visible=True),
190
+ outputs=modal,
191
  ).then(
192
  fn=submit_model,
193
+ inputs=[
194
+ task_dropdown,
195
+ dataset_checkboxes,
196
+ hyp_file_upload,
197
+ submitted_by_input,
198
+ model_id_input,
199
+ model_link_input,
200
+ token_input,
201
+ normalize_checkbox,
202
+ ],
203
+ outputs=feedback_text,
204
  ).then(
205
+ fn=get_leaderboard_df,
206
  inputs=task_dropdown,
207
+ outputs=leaderboard_output,
208
  )
209
+
 
 
 
 
 
 
 
210
 
211
  if __name__ == "__main__":
212
  demo.launch()