""" NeoTwin — Configuration Management Centralized settings for the entire application """ from pydantic_settings import BaseSettings from typing import Optional import os class Settings(BaseSettings): """Application settings loaded from environment variables""" # API Keys GEMINI_API_KEY: str = os.getenv("GEMINI_API_KEY", "") HUGGINGFACE_TOKEN: str = os.getenv("HUGGINGFACE_TOKEN", "") # API Configuration API_V1_PREFIX: str = "/api/v1" PROJECT_NAME: str = "NeoTwin" VERSION: str = "1.0.0" # Rate Limiting RATE_LIMIT_PER_MINUTE: int = 15 # Gemini free tier limit RATE_LIMIT_ENABLED: bool = True # Caching REDIS_URL: str = os.getenv("REDIS_URL", "redis://localhost:6379") CACHE_TTL_SECONDS: int = 3600 # 1 hour # Storage STORAGE_PATH: str = os.getenv("STORAGE_PATH", "./data") MAX_FILE_SIZE_MB: int = 100 # Model Configuration GEMINI_MODEL: str = "gemini-2.0-flash" CLIP_MODEL: str = "ViT-L/14" OWL_VIT_MODEL: str = "google/owlvit-large-patch14" SAM2_MODEL: str = "sam2_hiera_large" # Training COLMAP_PATH: str = os.getenv("COLMAP_PATH", "colmap") MAX_TRAINING_ITERATIONS: int = 30000 # Monitoring ENABLE_MONITORING: bool = True SENTRY_DSN: Optional[str] = os.getenv("SENTRY_DSN") # CORS ALLOWED_ORIGINS: list[str] = ["*"] class Config: env_file = ".env" case_sensitive = True settings = Settings()