| """ | |
| Main application settings. | |
| This module aggregates all settings into a single Settings class. | |
| For most use cases, import individual settings directly: | |
| from src.backend.configs import get_cv_settings, get_openai_settings | |
| cv = get_cv_settings() | |
| openai = get_openai_settings() | |
| """ | |
| from functools import lru_cache | |
| from pydantic import Field | |
| from pydantic_settings import BaseSettings, SettingsConfigDict | |
| from dotenv import load_dotenv | |
| # Load environment variables | |
| load_dotenv() | |
| from .cv import CVUploadSettings | |
| from .database import DatabaseSettings | |
| from .openai import OpenAISettings | |
| class Settings(BaseSettings): | |
| """ | |
| Aggregated application settings. | |
| Combines all configuration in one place. Individual settings | |
| can also be accessed via their dedicated getter functions. | |
| """ | |
| model_config = SettingsConfigDict( | |
| extra="ignore", | |
| ) | |
| cv: CVUploadSettings = Field(default_factory=CVUploadSettings) | |
| database: DatabaseSettings = Field(default_factory=DatabaseSettings) | |
| openai: OpenAISettings = Field(default_factory=OpenAISettings) | |
| def get_settings() -> Settings: | |
| """Get cached main settings instance.""" | |
| return Settings() | |