Emaad commited on
Commit
4682731
·
unverified ·
1 Parent(s): c84c2f9
Files changed (4) hide show
  1. README.md +1 -1
  2. app.py +14 -22
  3. requirements.txt +1 -3
  4. src/display/utils.py +8 -8
README.md CHANGED
@@ -8,7 +8,7 @@ app_file: app.py
8
  pinned: true
9
  license: apache-2.0
10
  short_description: 'BOOM: Benchmark Of Observability Metrics'
11
- sdk_version: 5.19.0
12
  tags:
13
  - leaderboard
14
  ---
 
8
  pinned: true
9
  license: apache-2.0
10
  short_description: 'BOOM: Benchmark Of Observability Metrics'
11
+ sdk_version: 6.11.0
12
  tags:
13
  - leaderboard
14
  ---
app.py CHANGED
@@ -1,7 +1,5 @@
1
  import gradio as gr
2
- from gradio_leaderboard import Leaderboard, ColumnFilter, SelectColumns
3
  import pandas as pd
4
- from apscheduler.schedulers.background import BackgroundScheduler
5
  from src.populate import get_model_info_df, get_merged_df
6
 
7
  from src.about import (
@@ -107,31 +105,28 @@ def init_leaderboard(dataframe, model_info_df):
107
  ]
108
  )
109
  merged_df = merged_df[cols]
 
 
 
 
 
 
110
  col2type_dict = {c.name: c.type for c in fields(AutoEvalColumn)}
111
  datatype_list = [col2type_dict[col] if col in col2type_dict else "number" for col in merged_df.columns]
112
- model_info_col_list = [c.name for c in fields(AutoEvalColumn) if c.displayed_by_default]
113
- default_selection_list = list(dataframe.columns) + model_info_col_list
114
- return Leaderboard(
115
  value=merged_df,
116
  datatype=datatype_list,
117
- select_columns=SelectColumns(
118
- default_selection=default_selection_list,
119
- cant_deselect=[c.name for c in fields(AutoEvalColumn) if c.never_hidden],
120
- label="Select Columns to Display:",
121
- ),
122
- search_columns=[AutoEvalColumn.model.name],
123
- hide_columns=[c.name for c in fields(AutoEvalColumn) if c.hidden],
124
- filter_columns=[
125
- ColumnFilter(AutoEvalColumn.model_type.name, type="checkboxgroup", label="Model types"),
126
- ],
127
- bool_checkboxgroup_label="Hide models",
128
  column_widths=[40, 180] + [160 for _ in range(len(merged_df.columns) - 2)],
129
  wrap=True,
130
  interactive=False,
 
131
  )
132
 
133
 
134
- demo = gr.Blocks(css=custom_css)
135
  with demo:
136
  gr.HTML(TITLE)
137
  gr.Markdown(INTRODUCTION_TEXT, elem_classes="markdown-text")
@@ -162,10 +157,7 @@ with demo:
162
  label=CITATION_BUTTON_LABEL,
163
  lines=20,
164
  elem_id="citation-button",
165
- show_copy_button=True,
166
  )
167
 
168
- scheduler = BackgroundScheduler()
169
- scheduler.add_job(restart_space, "interval", seconds=1800)
170
- scheduler.start()
171
- demo.queue(default_concurrency_limit=40).launch()
 
1
  import gradio as gr
 
2
  import pandas as pd
 
3
  from src.populate import get_model_info_df, get_merged_df
4
 
5
  from src.about import (
 
105
  ]
106
  )
107
  merged_df = merged_df[cols]
108
+
109
+ # Remove hidden columns
110
+ hidden_cols = [c.name for c in fields(AutoEvalColumn) if c.hidden]
111
+ merged_df = merged_df.drop(columns=[col for col in hidden_cols if col in merged_df.columns], errors='ignore')
112
+
113
+ # Build datatype list
114
  col2type_dict = {c.name: c.type for c in fields(AutoEvalColumn)}
115
  datatype_list = [col2type_dict[col] if col in col2type_dict else "number" for col in merged_df.columns]
116
+
117
+ # Use native Gradio 6 Dataframe with search and filter
118
+ return gr.Dataframe(
119
  value=merged_df,
120
  datatype=datatype_list,
121
+ show_search="filter", # Enable search + per-column filtering
 
 
 
 
 
 
 
 
 
 
122
  column_widths=[40, 180] + [160 for _ in range(len(merged_df.columns) - 2)],
123
  wrap=True,
124
  interactive=False,
125
+ max_height=600,
126
  )
127
 
128
 
129
+ demo = gr.Blocks()
130
  with demo:
131
  gr.HTML(TITLE)
132
  gr.Markdown(INTRODUCTION_TEXT, elem_classes="markdown-text")
 
157
  label=CITATION_BUTTON_LABEL,
158
  lines=20,
159
  elem_id="citation-button",
 
160
  )
161
 
162
+ # Queue memory leak fixed in Gradio 6.11+, no need for scheduled restarts
163
+ demo.queue(default_concurrency_limit=40).launch(css=custom_css)
 
 
requirements.txt CHANGED
@@ -1,9 +1,7 @@
1
- APScheduler
2
  black
3
  datasets
4
- gradio
5
  gradio[oauth]
6
- gradio_leaderboard==0.0.13
7
  gradio_client
8
  huggingface-hub>=0.18.0
9
  matplotlib
 
 
1
  black
2
  datasets
3
+ gradio>=6.11.0
4
  gradio[oauth]
 
5
  gradio_client
6
  huggingface-hub>=0.18.0
7
  matplotlib
src/display/utils.py CHANGED
@@ -1,4 +1,4 @@
1
- from dataclasses import dataclass, make_dataclass
2
  from enum import Enum
3
 
4
  import pandas as pd
@@ -13,7 +13,7 @@ def fields(raw_class):
13
  # These classes are for user facing column names,
14
  # to avoid having to change them all around the code
15
  # when a modif is needed
16
- @dataclass
17
  class ColumnContent:
18
  name: str
19
  type: str
@@ -47,12 +47,12 @@ AutoEvalColumn = make_dataclass("AutoEvalColumn", auto_eval_column_dict, frozen=
47
  ## For the queue columns in the submission tab
48
  @dataclass(frozen=True)
49
  class EvalQueueColumn: # Queue column
50
- model = ColumnContent("model", "markdown", True)
51
- revision = ColumnContent("revision", "str", True)
52
- private = ColumnContent("private", "bool", True)
53
- precision = ColumnContent("precision", "str", True)
54
- weight_type = ColumnContent("weight_type", "str", "Original")
55
- status = ColumnContent("status", "str", True)
56
 
57
 
58
  ## All the model information that we might need
 
1
+ from dataclasses import dataclass, make_dataclass, field
2
  from enum import Enum
3
 
4
  import pandas as pd
 
13
  # These classes are for user facing column names,
14
  # to avoid having to change them all around the code
15
  # when a modif is needed
16
+ @dataclass(frozen=True)
17
  class ColumnContent:
18
  name: str
19
  type: str
 
47
  ## For the queue columns in the submission tab
48
  @dataclass(frozen=True)
49
  class EvalQueueColumn: # Queue column
50
+ model: ColumnContent = ColumnContent("model", "markdown", True)
51
+ revision: ColumnContent = ColumnContent("revision", "str", True)
52
+ private: ColumnContent = ColumnContent("private", "bool", True)
53
+ precision: ColumnContent = ColumnContent("precision", "str", True)
54
+ weight_type: ColumnContent = ColumnContent("weight_type", "str", "Original")
55
+ status: ColumnContent = ColumnContent("status", "str", True)
56
 
57
 
58
  ## All the model information that we might need