Mizan / src /core /config.py
nmmursit's picture
Refactor codebase structure
bc37111
"""
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()