""" Main application for Dynamic Highscores system. This file integrates all components into a unified application. """ import os import gradio as gr import threading import time from database_schema import DynamicHighscoresDB from auth import HuggingFaceAuth, create_login_ui, setup_auth_handlers from benchmark_selection import BenchmarkSelector, create_benchmark_selection_ui from evaluation_queue import EvaluationQueue, create_model_submission_ui from leaderboard import Leaderboard, create_leaderboard_ui from sample_benchmarks import add_sample_benchmarks # Initialize components in main thread db = DynamicHighscoresDB() auth_manager = HuggingFaceAuth(db) benchmark_selector = BenchmarkSelector(db, auth_manager) evaluation_queue = EvaluationQueue(db, auth_manager) leaderboard = Leaderboard(db) # Initialize sample benchmarks if none exist print("Checking for existing benchmarks...") benchmarks = db.get_benchmarks() if not benchmarks or len(benchmarks) == 0: print("No benchmarks found. Adding sample benchmarks...") try: num_added = add_sample_benchmarks() print(f"Added {num_added} sample benchmarks.") except Exception as e: print(f"Error adding sample benchmarks: {str(e)}") # Custom CSS css = """ .info-text { background-color: rgba(53, 130, 220, 0.1); padding: 12px; border-radius: 8px; border-left: 4px solid #3498db; margin: 12px 0; } """ # Create Gradio app - NO THEME, NO OAUTH with gr.Blocks(css=css, title="Dynamic Highscores") as app: gr.Markdown("# 🏆 Dynamic Highscores", elem_classes=["header"]) gr.Markdown(""" Welcome to Dynamic Highscores - a community benchmark platform for evaluating and comparing language models. - **Add your own benchmarks** from HuggingFace datasets - **Submit your models** for CPU-only evaluation - **Compare performance** across different models and benchmarks - **Filter results** by model type (Merge, Agent, Reasoning, Coding, etc.) """, elem_classes=["info-text"]) # Main tabs with gr.Tabs() as tabs: with gr.TabItem("📊 Leaderboard", id=0): leaderboard_ui = create_leaderboard_ui(leaderboard, db) with gr.TabItem("🚀 Submit Model", id=1): submission_ui = create_model_submission_ui(evaluation_queue, auth_manager, db) with gr.TabItem("🔍 Benchmarks", id=2): benchmark_ui = create_benchmark_selection_ui(benchmark_selector, auth_manager) # Launch the app if __name__ == "__main__": app.launch()