""" Configuration Module for HuggingFace Space Simplified configuration for the public Mizan leaderboard. """ import os from dataclasses import dataclass, field from pathlib import Path from dotenv import load_dotenv # Load environment variables load_dotenv() @dataclass class ApiSettings: """API settings for evaluation submissions.""" url: str = field(default_factory=lambda: os.environ.get("API_URL", "")) username: str = field(default_factory=lambda: os.environ.get("API_USERNAME", "")) password: str = field(default_factory=lambda: os.environ.get("API_PASSWORD", "")) timeout: int = 30 @property def is_configured(self) -> bool: """Check if API is fully configured.""" return bool(self.url and self.username and self.password) @dataclass class UISettings: """UI-specific settings.""" port: int = 7860 max_table_height: int = 600 debug: bool = field(default_factory=lambda: os.environ.get("DEBUG", "false").lower() == "true") @dataclass class DataSettings: """Data file settings.""" csv_file: Path = field(default_factory=lambda: Path("leaderboard_data.csv")) @dataclass class Settings: """Main application settings container.""" api: ApiSettings = field(default_factory=ApiSettings) ui: UISettings = field(default_factory=UISettings) data: DataSettings = field(default_factory=DataSettings) # Global settings instance settings = Settings()