Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import pandas as pd | |
| import os | |
| import shutil | |
| import json | |
| from zipfile import ZipFile | |
| # Function to load leaderboard data from a CSV file | |
| def load_leaderboard_data(csv_file_path): | |
| try: | |
| df = pd.read_csv(csv_file_path) | |
| return df | |
| except Exception as e: | |
| print(f"Error loading CSV file: {e}") | |
| return pd.DataFrame() | |
| def save_zip_and_extract_json(zip_path): | |
| if not zip_path: | |
| return "Please upload a ZIP file." | |
| try: | |
| # 1) Determine Space name and persistent base dir | |
| cwd = os.getcwd() | |
| space_name = os.path.basename(cwd) | |
| base_dir = os.path.join("data", space_name, "uploaded_jsons") | |
| os.makedirs(base_dir, exist_ok=True) | |
| # 2) Copy the zip into base_dir | |
| zip_dest = os.path.join(base_dir, os.path.basename(zip_path)) | |
| shutil.copy(zip_path, zip_dest) | |
| # 3) Extract only .json files | |
| extracted = [] | |
| with ZipFile(zip_dest, 'r') as archive: | |
| for member in archive.namelist(): | |
| if member.lower().endswith(".json"): | |
| archive.extract(member, path=base_dir) | |
| extracted.append(member) | |
| if not extracted: | |
| return "No JSON files found in the ZIP." | |
| return f"Extracted JSON files:\n" + "\n".join(extracted) | |
| except Exception as e: | |
| return f"Error processing ZIP file: {str(e)}" | |
| # Load the leaderboard data | |
| leaderboard1 = load_leaderboard_data("leaderboard_swe.csv") | |
| leaderboard2 = load_leaderboard_data("leaderboard_gaia.csv") | |
| # Create the Gradio interface | |
| with gr.Blocks() as demo: | |
| gr.Markdown("# 🏆 TRAIL: Trace Reasoning and Agentic Issue Localization Leaderboard") | |
| with gr.Row(): | |
| with gr.Column(): | |
| gr.Markdown("## TRAIL-SWE Leaderboard") | |
| gr.Dataframe(leaderboard1) | |
| with gr.Column(): | |
| gr.Markdown("## TRAIL-GAIA Leaderboard") | |
| gr.Dataframe(leaderboard2) | |
| with gr.Row(): | |
| gr.Markdown("## Submit Your ZIP of JSONs") | |
| with gr.Row(): | |
| with gr.Column(): | |
| file_input = gr.File( | |
| label="Upload ZIP File", | |
| file_types=['.zip'] | |
| ) | |
| submit_button = gr.Button("Submit", interactive=True) | |
| output = gr.Textbox(label="Status") | |
| def process_upload(file): | |
| if file is None: | |
| return "Please upload a ZIP file." | |
| try: | |
| return save_zip_and_extract_json(file.name) | |
| except Exception as e: | |
| return f"Error: {str(e)}" | |
| submit_button.click( | |
| fn=process_upload, | |
| inputs=file_input, | |
| outputs=output | |
| ) | |
| if __name__ == "__main__": | |
| demo.launch() | |