Spaces:
Running
Running
| import os | |
| from typing import Dict, Any, Optional | |
| from dotenv import dotenv_values | |
| from pydantic import BaseModel, ConfigDict | |
| from pydantic_settings import BaseSettings | |
| def load_env_config(): | |
| # Try to load from .env file first, then fall back to environment variables | |
| env_file_config = dotenv_values() | |
| env_vars = dict(os.environ) | |
| # Merge .env file values with environment variables (env vars take precedence) | |
| return {**env_file_config, **env_vars} | |
| def get_config() -> Dict[str, Any]: | |
| env_config = load_env_config() | |
| config_model = GlobalConfig.model_construct() | |
| final_config = {**config_model.model_dump(), **env_config} | |
| return final_config | |
| class AppConfig(BaseModel): | |
| """Application configurations.""" | |
| app_name: str = "Creative AdGenesis" | |
| app_version: str = "0.1.0" | |
| app_description: str = ( | |
| "Creative AdGenesis" | |
| ) | |
| debug_mode: bool = False | |
| class GlobalConfig(BaseSettings): | |
| """Typed global core object.""" | |
| APP_CONFIG: AppConfig = AppConfig() | |
| model_config = ConfigDict(extra="ignore") | |
| # Environment | |
| APP_ENV: Optional[str] = "dev" | |
| DEBUG: Optional[bool] = False | |
| MONGO_DB: Optional[str] = None | |
| MONGO_URI: Optional[str] = None | |
| # Cloudflare R2 | |
| R2_BUCKET_NAME: Optional[str] = None | |
| R2_ACCESS_KEY: Optional[str] = None | |
| R2_SECRET_KEY: Optional[str] = None | |
| R2_ENDPOINT: Optional[str] = None | |
| # OpenAI | |
| OPENAI_API_KEY: Optional[str] = None | |
| # Replicate | |
| REPLICATE_API_KEY: Optional[str] = None | |
| GEMINI_API_KEY: Optional[str] = None | |
| # Custom | |
| NEW_BASE: Optional[str] = None | |
| # Load configurations | |
| config_data = get_config() | |
| cnf = GlobalConfig(**config_data) | |
| app_cnf = cnf.APP_CONFIG |