from functools import lru_cache from pydantic import Field from pydantic_settings import BaseSettings, SettingsConfigDict class Settings(BaseSettings): model_config = SettingsConfigDict(env_file=".env", case_sensitive=False) github_username: str = Field(alias="GITHUB_USERNAME") github_token: str | None = Field(default=None, alias="GITHUB_TOKEN") gitea_base_url: str = Field(alias="GITEA_BASE_URL") gitea_username: str = Field(alias="GITEA_USERNAME") gitea_token: str | None = Field(default=None, alias="GITEA_TOKEN") cache_ttl_seconds: int | None = Field(default=None, alias="CACHE_TTL_SECONDS") cache_dir: str | None = Field(default=None, alias="CACHE_DIR") default_theme: str = Field(default="light", alias="DEFAULT_THEME") service_title: str = Field(default="git-activity-merge", alias="SERVICE_TITLE") @lru_cache(maxsize=1) def get_settings() -> Settings: return Settings()