Spaces:
Running
Running
| # 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() |