config.py•948 B
from __future__ import annotations
from functools import lru_cache
from pydantic import Field
from pydantic_settings import BaseSettings, SettingsConfigDict
class Settings(BaseSettings):
"""Global application settings loaded from environment variables."""
openai_api_key: str = Field(..., env="OPENAI_API_KEY")
openai_model: str = Field("gpt-3.5-turbo-1106", env="OPENAI_MODEL")
# Kubernetes
kubeconfig: str | None = Field(None, env="KUBECONFIG")
# GitHub
github_token: str | None = Field(None, env="GITHUB_TOKEN")
# Azure
azure_client_id: str | None = Field(None, env="AZURE_CLIENT_ID")
azure_tenant_id: str | None = Field(None, env="AZURE_TENANT_ID")
azure_client_secret: str | None = Field(None, env="AZURE_CLIENT_SECRET")
model_config = SettingsConfigDict(env_file=".env", extra="ignore")
@lru_cache(maxsize=1)
def get_settings() -> Settings: # pragma: no cover
return Settings()