""" Configuration settings for GATE Motion Analysis Gradio deployment. Optimized for HuggingFace Spaces and similar cloud platforms. """ import os from pathlib import Path # Application settings APP_NAME = "GATE Motion Analysis" APP_VERSION = "2.0.0" APP_DESCRIPTION = "GPU-optimized motion analysis for exercise form feedback" # Server configuration DEFAULT_PORT = 7860 DEFAULT_HOST = "0.0.0.0" # Feature flags ENABLE_DEBUG = os.getenv("DEBUG_MODE", "false").lower() == "true" ENABLE_GPU = os.getenv("USE_GPU", "false").lower() == "true" ENABLE_ANALYTICS = False # Disabled to prevent tracking errors ENABLE_API_DOCS = False # Disabled to reduce overhead # File upload limits MAX_FILE_SIZE_MB = 50 SUPPORTED_VIDEO_FORMATS = [".mp4", ".avi", ".mov", ".mkv"] SUPPORTED_IMAGE_FORMATS = [".jpg", ".jpeg", ".png", ".bmp", ".webp"] # Exercise configuration DEFAULT_EXERCISES = [ "Squats", "Push-ups", "Lunges", "Bicep Curls", "Deadlifts", "Planks", "Jumping Jacks" ] # UI theme settings UI_THEME = "soft" # Options: "default", "soft", "glass", "monochrome" UI_PRIMARY_COLOR = "#2563eb" UI_SUCCESS_COLOR = "#059669" UI_WARNING_COLOR = "#f59e0b" UI_ERROR_COLOR = "#dc2626" # Performance settings MAX_CONCURRENT_USERS = 10 REQUEST_TIMEOUT_SECONDS = 30 ENABLE_QUEUE = False # Disabled to prevent internal API calls MAX_QUEUE_SIZE = 50 # Security settings ALLOWED_ORIGINS = ["*"] # Restrict in production ENABLE_CORS = True DISABLE_SSL_VERIFY = True # For development only # Gradio launch configuration LAUNCH_CONFIG = { "server_name": DEFAULT_HOST, "server_port": int(os.getenv("PORT", DEFAULT_PORT)), "share": False, # Disabled to prevent external service issues "show_error": True, "show_api": ENABLE_API_DOCS, "quiet": not ENABLE_DEBUG, "favicon_path": None, # Prevents favicon 404 errors "max_threads": 1, # Single thread to avoid concurrency issues "analytics_enabled": ENABLE_ANALYTICS } # Error messages ERROR_MESSAGES = { "no_file": "Please upload a file to analyze", "invalid_format": "Unsupported file format. Please use JPG, PNG, or MP4", "file_too_large": f"File size exceeds {MAX_FILE_SIZE_MB}MB limit", "processing_error": "Error processing file. Please try again", "server_error": "Server error. Please contact support" } # Success messages SUCCESS_MESSAGES = { "analysis_complete": "Analysis completed successfully", "upload_success": "File uploaded successfully", "system_ready": "System ready for analysis" } def get_app_info(): """Get application information for display.""" return { "name": APP_NAME, "version": APP_VERSION, "description": APP_DESCRIPTION, "debug_mode": ENABLE_DEBUG, "gpu_enabled": ENABLE_GPU } def get_system_status(): """Get current system status.""" return { "status": "operational", "uptime": "N/A", # Could be calculated from start time "memory_usage": "N/A", # Could be calculated from system "cpu_usage": "N/A" # Could be calculated from system }