Spaces:
Build error
Build error
Shiyu Zhao commited on
Commit ·
518f6cc
1
Parent(s): e65749f
Update space
Browse files
app.py
CHANGED
|
@@ -223,14 +223,21 @@ def scan_submissions_directory():
|
|
| 223 |
# Initialize HuggingFace API
|
| 224 |
api = HfApi()
|
| 225 |
|
| 226 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 227 |
try:
|
| 228 |
-
|
| 229 |
repo_id=REPO_ID,
|
| 230 |
repo_type="space"
|
| 231 |
)
|
| 232 |
# Filter for files in submissions directory
|
| 233 |
-
repo_files = [f for f in
|
| 234 |
except Exception as e:
|
| 235 |
print(f"Error listing repository contents: {str(e)}")
|
| 236 |
return
|
|
@@ -238,61 +245,60 @@ def scan_submissions_directory():
|
|
| 238 |
if not repo_files:
|
| 239 |
print("No submissions directory found or empty")
|
| 240 |
return
|
| 241 |
-
|
| 242 |
-
# Track submissions for each split
|
| 243 |
-
submissions_by_split = {
|
| 244 |
-
'test': [],
|
| 245 |
-
'test-0.1': [],
|
| 246 |
-
'human_generated_eval': []
|
| 247 |
-
}
|
| 248 |
|
| 249 |
# Group files by team folders
|
| 250 |
folder_files = {}
|
| 251 |
-
for
|
| 252 |
-
|
| 253 |
-
if
|
| 254 |
continue
|
| 255 |
|
| 256 |
-
|
| 257 |
-
if len(parts) < 3: # submissions/folder_name/file
|
| 258 |
-
continue
|
| 259 |
-
|
| 260 |
-
folder_name = parts[1]
|
| 261 |
if folder_name not in folder_files:
|
| 262 |
folder_files[folder_name] = []
|
| 263 |
-
folder_files[folder_name].append(
|
| 264 |
|
| 265 |
# Process each team folder
|
| 266 |
for folder_name, files in folder_files.items():
|
| 267 |
try:
|
| 268 |
-
#
|
| 269 |
latest_file = next((f for f in files if f.endswith('latest.json')), None)
|
| 270 |
if not latest_file:
|
|
|
|
| 271 |
continue
|
| 272 |
-
|
| 273 |
# Read latest.json
|
| 274 |
try:
|
| 275 |
-
latest_content =
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 276 |
latest_info = json.loads(latest_content)
|
| 277 |
except Exception as e:
|
| 278 |
print(f"Error reading latest.json for {folder_name}: {str(e)}")
|
| 279 |
continue
|
| 280 |
|
|
|
|
| 281 |
if latest_info.get('status') != 'approved':
|
|
|
|
| 282 |
continue
|
| 283 |
-
|
| 284 |
timestamp = latest_info.get('latest_submission')
|
| 285 |
if not timestamp:
|
|
|
|
| 286 |
continue
|
| 287 |
-
|
| 288 |
-
# Find
|
| 289 |
metadata_file = next(
|
| 290 |
(f for f in files if f.endswith(f'metadata_{timestamp}.json')),
|
| 291 |
None
|
| 292 |
)
|
| 293 |
if not metadata_file:
|
|
|
|
| 294 |
continue
|
| 295 |
-
|
| 296 |
# Read metadata file
|
| 297 |
try:
|
| 298 |
metadata_content = api.hf_hub_download(
|
|
@@ -306,19 +312,21 @@ def scan_submissions_directory():
|
|
| 306 |
print(f"Error reading metadata for {folder_name}: {str(e)}")
|
| 307 |
continue
|
| 308 |
|
|
|
|
| 309 |
split = submission_data.get('Split')
|
| 310 |
if split in submissions_by_split:
|
| 311 |
submissions_by_split[split].append(submission_data)
|
| 312 |
-
|
| 313 |
-
# Update corresponding DataFrame
|
| 314 |
update_leaderboard_data(submission_data)
|
| 315 |
-
print(f"
|
|
|
|
|
|
|
| 316 |
|
| 317 |
except Exception as e:
|
| 318 |
print(f"Error processing folder {folder_name}: {str(e)}")
|
| 319 |
continue
|
| 320 |
|
| 321 |
-
|
|
|
|
| 322 |
for split, submissions in submissions_by_split.items():
|
| 323 |
print(f"{split}: {len(submissions)} submissions")
|
| 324 |
|
|
@@ -844,6 +852,11 @@ with gr.Blocks(css=css) as demo:
|
|
| 844 |
gr.Markdown("# Semi-structured Retrieval Benchmark (STaRK) Leaderboard")
|
| 845 |
gr.Markdown("Refer to the [STaRK paper](https://arxiv.org/pdf/2404.13207) for details on metrics, tasks and models.")
|
| 846 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 847 |
# Model type filter
|
| 848 |
model_type_filter = gr.CheckboxGroup(
|
| 849 |
choices=list(model_types.keys()),
|
|
@@ -934,9 +947,7 @@ with gr.Blocks(css=css) as demo:
|
|
| 934 |
|
| 935 |
submit_btn = gr.Button("Submit", variant="primary")
|
| 936 |
result = gr.Textbox(label="Submission Status", interactive=False)
|
| 937 |
-
|
| 938 |
-
# Initialize leaderboard at startup
|
| 939 |
-
initialize_leaderboard()
|
| 940 |
|
| 941 |
# Set up event handlers
|
| 942 |
model_type_filter.change(
|
|
|
|
| 223 |
# Initialize HuggingFace API
|
| 224 |
api = HfApi()
|
| 225 |
|
| 226 |
+
# Track submissions for each split
|
| 227 |
+
submissions_by_split = {
|
| 228 |
+
'test': [],
|
| 229 |
+
'test-0.1': [],
|
| 230 |
+
'human_generated_eval': []
|
| 231 |
+
}
|
| 232 |
+
|
| 233 |
+
# Get all files from repository
|
| 234 |
try:
|
| 235 |
+
all_files = api.list_repo_files(
|
| 236 |
repo_id=REPO_ID,
|
| 237 |
repo_type="space"
|
| 238 |
)
|
| 239 |
# Filter for files in submissions directory
|
| 240 |
+
repo_files = [f for f in all_files if f.startswith('submissions/')]
|
| 241 |
except Exception as e:
|
| 242 |
print(f"Error listing repository contents: {str(e)}")
|
| 243 |
return
|
|
|
|
| 245 |
if not repo_files:
|
| 246 |
print("No submissions directory found or empty")
|
| 247 |
return
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 248 |
|
| 249 |
# Group files by team folders
|
| 250 |
folder_files = {}
|
| 251 |
+
for filepath in repo_files:
|
| 252 |
+
parts = filepath.split('/')
|
| 253 |
+
if len(parts) < 3: # Need at least submissions/team_folder/file
|
| 254 |
continue
|
| 255 |
|
| 256 |
+
folder_name = parts[1] # team_folder name
|
|
|
|
|
|
|
|
|
|
|
|
|
| 257 |
if folder_name not in folder_files:
|
| 258 |
folder_files[folder_name] = []
|
| 259 |
+
folder_files[folder_name].append(filepath)
|
| 260 |
|
| 261 |
# Process each team folder
|
| 262 |
for folder_name, files in folder_files.items():
|
| 263 |
try:
|
| 264 |
+
# Find latest.json in this folder
|
| 265 |
latest_file = next((f for f in files if f.endswith('latest.json')), None)
|
| 266 |
if not latest_file:
|
| 267 |
+
print(f"No latest.json found in {folder_name}")
|
| 268 |
continue
|
| 269 |
+
|
| 270 |
# Read latest.json
|
| 271 |
try:
|
| 272 |
+
latest_content = api.hf_hub_download(
|
| 273 |
+
repo_id=REPO_ID,
|
| 274 |
+
repo_type="space",
|
| 275 |
+
filename=latest_file,
|
| 276 |
+
text=True
|
| 277 |
+
)
|
| 278 |
latest_info = json.loads(latest_content)
|
| 279 |
except Exception as e:
|
| 280 |
print(f"Error reading latest.json for {folder_name}: {str(e)}")
|
| 281 |
continue
|
| 282 |
|
| 283 |
+
# Check submission status
|
| 284 |
if latest_info.get('status') != 'approved':
|
| 285 |
+
print(f"Skipping unapproved submission in {folder_name}")
|
| 286 |
continue
|
| 287 |
+
|
| 288 |
timestamp = latest_info.get('latest_submission')
|
| 289 |
if not timestamp:
|
| 290 |
+
print(f"No timestamp found in latest.json for {folder_name}")
|
| 291 |
continue
|
| 292 |
+
|
| 293 |
+
# Find metadata file
|
| 294 |
metadata_file = next(
|
| 295 |
(f for f in files if f.endswith(f'metadata_{timestamp}.json')),
|
| 296 |
None
|
| 297 |
)
|
| 298 |
if not metadata_file:
|
| 299 |
+
print(f"No matching metadata file found for {folder_name} timestamp {timestamp}")
|
| 300 |
continue
|
| 301 |
+
|
| 302 |
# Read metadata file
|
| 303 |
try:
|
| 304 |
metadata_content = api.hf_hub_download(
|
|
|
|
| 312 |
print(f"Error reading metadata for {folder_name}: {str(e)}")
|
| 313 |
continue
|
| 314 |
|
| 315 |
+
# Update leaderboard
|
| 316 |
split = submission_data.get('Split')
|
| 317 |
if split in submissions_by_split:
|
| 318 |
submissions_by_split[split].append(submission_data)
|
|
|
|
|
|
|
| 319 |
update_leaderboard_data(submission_data)
|
| 320 |
+
print(f"Successfully added submission from {folder_name} to {split} leaderboard")
|
| 321 |
+
else:
|
| 322 |
+
print(f"Invalid split '{split}' found in {folder_name}")
|
| 323 |
|
| 324 |
except Exception as e:
|
| 325 |
print(f"Error processing folder {folder_name}: {str(e)}")
|
| 326 |
continue
|
| 327 |
|
| 328 |
+
# Print summary
|
| 329 |
+
print("\nLeaderboard initialization summary:")
|
| 330 |
for split, submissions in submissions_by_split.items():
|
| 331 |
print(f"{split}: {len(submissions)} submissions")
|
| 332 |
|
|
|
|
| 852 |
gr.Markdown("# Semi-structured Retrieval Benchmark (STaRK) Leaderboard")
|
| 853 |
gr.Markdown("Refer to the [STaRK paper](https://arxiv.org/pdf/2404.13207) for details on metrics, tasks and models.")
|
| 854 |
|
| 855 |
+
# Initialize leaderboard at startup
|
| 856 |
+
print("Starting leaderboard initialization...")
|
| 857 |
+
initialize_leaderboard()
|
| 858 |
+
print("Leaderboard initialization finished")
|
| 859 |
+
|
| 860 |
# Model type filter
|
| 861 |
model_type_filter = gr.CheckboxGroup(
|
| 862 |
choices=list(model_types.keys()),
|
|
|
|
| 947 |
|
| 948 |
submit_btn = gr.Button("Submit", variant="primary")
|
| 949 |
result = gr.Textbox(label="Submission Status", interactive=False)
|
| 950 |
+
|
|
|
|
|
|
|
| 951 |
|
| 952 |
# Set up event handlers
|
| 953 |
model_type_filter.change(
|