Dgaze / config /settings.py
lightmate's picture
Update config/settings.py
a6511ad verified
"""
Configuration module for DGaze Gradio application.
Loads settings from environment variables and .env file.
"""
import os
import sys
from dotenv import load_dotenv
# Load environment variables from .env file
load_dotenv()
class Settings:
"""Application settings loaded from environment variables."""
def __init__(self):
# Backend API Configuration - MANDATORY from .env
self.API_BASE_URL = self._get_required_env("API_BASE_URL")
self.API_ENDPOINT = f"{self.API_BASE_URL}/api/verify"
self.HEALTH_ENDPOINT = f"{self.API_BASE_URL}/api/health"
# Auth0 Configuration - MANDATORY for authentication
# For Spaces deployment, these should be set as environment variables
self.AUTH0_DOMAIN = self._get_required_env("AUTH0_DOMAIN")
self.AUTH0_CLIENT_ID = self._get_required_env("AUTH0_CLIENT_ID")
self.AUTH0_CLIENT_SECRET = self._get_required_env("AUTH0_CLIENT_SECRET")
self.AUTH0_AUDIENCE = self._get_required_env("AUTH0_AUDIENCE")
# Gradio Application Configuration
self.GRADIO_SERVER_NAME = os.getenv("GRADIO_SERVER_NAME", "0.0.0.0")
self.GRADIO_SERVER_PORT = int(os.getenv("GRADIO_SERVER_PORT", "7860")) # Default to 7860 for Spaces
self.GRADIO_SHARE = os.getenv("GRADIO_SHARE", "false").lower() == "true"
# Health Check Configuration
self.HEALTH_CHECK_ENABLED = os.getenv("HEALTH_CHECK_ENABLED", "true").lower() == "true"
self.HEALTH_CHECK_INTERVAL = int(os.getenv("HEALTH_CHECK_INTERVAL", "30"))
# Security
self.SECRET_KEY = os.getenv("SECRET_KEY", "your-secret-key-for-sessions")
# Logging Configuration
self.LOG_LEVEL = os.getenv("LOG_LEVEL", "INFO")
self.DEBUG = os.getenv("DEBUG", "false").lower() == "true"
# Rate Limiting
self.RATE_LIMIT_ENABLED = os.getenv("RATE_LIMIT_ENABLED", "true").lower() == "true"
self.RATE_LIMIT_REQUESTS = int(os.getenv("RATE_LIMIT_REQUESTS", "100"))
self.RATE_LIMIT_WINDOW = int(os.getenv("RATE_LIMIT_WINDOW", "3600"))
# Cache Configuration
self.CACHE_ENABLED = os.getenv("CACHE_ENABLED", "true").lower() == "true"
self.CACHE_TTL = int(os.getenv("CACHE_TTL", "3600"))
# OAuth Configuration - Use from .env if provided, otherwise build dynamically
self.OAUTH_REDIRECT_URI = os.getenv("AUTH0_REDIRECT_URI")
if not self.OAUTH_REDIRECT_URI:
self.OAUTH_REDIRECT_URI = f"http://localhost:{self.GRADIO_SERVER_PORT}/auth"
if self.GRADIO_SERVER_NAME != "localhost" and self.GRADIO_SERVER_NAME != "127.0.0.1":
self.OAUTH_REDIRECT_URI = f"http://{self.GRADIO_SERVER_NAME}:{self.GRADIO_SERVER_PORT}/auth"
def _get_required_env(self, var_name: str) -> str:
"""Get a required environment variable or exit with error."""
value = os.getenv(var_name)
if not value:
print(f"ERROR: Required environment variable '{var_name}' not found in .env file!")
print(f"Please add '{var_name}=<your-value>' to your .env file")
sys.exit(1)
return value
# Create a settings instance
settings = Settings()