""" Main entry point for the Model Capability Leaderboard application. """ import streamlit as st # Import configuration from src.utils.config import app_config, metrics_config # Import data functions from src.utils.data_loader import ( load_metric_data, process_data, filter_and_prepare_data, format_display_dataframe ) # Import styles from src.styles.base import load_all_styles # Import components from src.components.header import render_page_header, render_footer from src.components.filters import ( initialize_session_state, render_metric_selection, render_task_selection, render_model_type_selection ) from src.components.leaderboard import render_leaderboard_table, render_empty_state from src.components.tasks import render_task_descriptions def setup_page(): """ Set up the Streamlit page configuration """ st.set_page_config( page_title=app_config['title'], layout=app_config['layout'], initial_sidebar_state=app_config['initial_sidebar_state'] ) # Load all styles load_all_styles() def main(): """ Main application function """ # Set up page setup_page() # Render header render_page_header() # Load data current_metric = list(metrics_config.keys())[0] metric_data = load_metric_data(metrics_config[current_metric]["file"]) df = process_data(metric_data) # Initialize session state initialize_session_state(df) # Create tabs tabs = st.tabs(["📊 Leaderboard", "📑 Benchmark Details"]) # Tab 1: Leaderboard with tabs[0]: # Render filter components selected_metric = render_metric_selection() selected_tasks = render_task_selection(df) selected_model_types = render_model_type_selection(df) # Render leaderboard if selections are valid if selected_tasks and selected_model_types: # Filter and prepare data filtered_df = filter_and_prepare_data(df, selected_tasks, selected_model_types) # Format data for display display_df, metric_columns = format_display_dataframe(filtered_df, selected_tasks) # Render the leaderboard table render_leaderboard_table(display_df, metric_columns) else: # Show empty state render_empty_state() # Tab 2: Benchmark Details with tabs[1]: # Render task descriptions render_task_descriptions() # Render footer render_footer() if __name__ == "__main__": main()