sirus / backend /ml_module /core /config.py
ranilmukesh's picture
Deploy SiRUS SQL Agent backend
783a952
# ml_module/core/config.py
from pydantic_settings import BaseSettings
from pydantic import Field
from pathlib import Path
import os
class Settings(BaseSettings):
"""
Centralized application settings. Pydantic will automatically load values
from environment variables or a .env file.
"""
# --- LLM Configuration ---
GEMINI_API_KEY: str = Field(default="", env="GEMINI_API_KEY")
# --- MinIO Storage Configuration ---
MINIO_ENDPOINT: str = Field("localhost:9000", env="MINIO_ENDPOINT")
MINIO_ACCESS_KEY: str = Field("minioadmin", env="MINIO_ACCESS_KEY")
MINIO_SECRET_KEY: str = Field("minioadmin", env="MINIO_SECRET_KEY")
MINIO_USE_SECURE: bool = Field(False, env="MINIO_USE_SECURE")
# --- Application Configuration ---
ML_PROJECTS_BUCKET: str = Field("ml-projects", env="ML_PROJECTS_BUCKET")
LOCAL_STORAGE_PATH: str = Field("ml_module/local_minio_sim", env="LOCAL_STORAGE_PATH")
# --- ML Agent Session DB Configuration ---
ML_AGENT_DB_BACKEND: str = Field("sqlite", env="ML_AGENT_DB_BACKEND")
ML_AGENT_DB_URL: str = Field("", env="ML_AGENT_DB_URL")
ML_AGENT_DB_SESSION_TABLE: str = Field("ml_agent_sessions", env="ML_AGENT_DB_SESSION_TABLE")
# --- Supabase Auth Configuration ---
SUPABASE_PROJECT_ID: str = Field("", env="SUPABASE_PROJECT_ID")
SUPABASE_JWKS_URL: str = Field("", env="SUPABASE_JWKS_URL")
SUPABASE_JWT_AUDIENCE: str = Field("", env="SUPABASE_JWT_AUDIENCE")
SUPABASE_JWT_ISSUER: str = Field("", env="SUPABASE_JWT_ISSUER")
SUPABASE_JWT_CACHE_SECONDS: int = Field(300, env="SUPABASE_JWT_CACHE_SECONDS")
# --- Artifact lifecycle & retention ---
ARTIFACT_RETENTION_VERSIONS: int = Field(5, env="ML_ARTIFACT_RETENTION_VERSIONS")
DRAFT_RETENTION_VERSIONS: int = Field(5, env="ML_DRAFT_RETENTION_VERSIONS")
MAX_ARTIFACT_SIZE_MB: int = Field(512, env="ML_MAX_ARTIFACT_SIZE_MB")
class Config:
# Use the backend .env file path dynamically
env_file = str(Path(__file__).resolve().parent.parent.parent / ".env")
env_file_encoding = "utf-8"
extra = "ignore"
# Create a single, importable instance of the settings
settings = Settings()