owenkaplinsky's picture
update from github stable code (#3)
3370983 verified
"""
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)
@lru_cache
def get_settings() -> Settings:
"""Get cached main settings instance."""
return Settings()