""" MrrrMe Backend Entry Point (UNBUFFERED LOGGING) Forces all print statements to appear immediately in Hugging Face logs """ import uvicorn import os import sys # ✅ CRITICAL: Unbuffered output so logs appear immediately sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', buffering=1) sys.stderr = os.fdopen(sys.stderr.fileno(), 'w', buffering=1) print("\n" + "="*80, flush=True) print("🚀 MrrrMe Modular Backend v2.0 - VERBOSE MODE", flush=True) print("="*80, flush=True) print(f"[Startup] 📅 Starting at: {__import__('datetime').datetime.now()}", flush=True) print(f"[Startup] 🐍 Python: {sys.version}", flush=True) print(f"[Startup] 📁 Working directory: {os.getcwd()}", flush=True) print(f"[Startup] 📁 Script: {__file__}", flush=True) # ✅ Add parent directory to Python path project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) print(f"[Startup] 📁 Project root: {project_root}", flush=True) if project_root not in sys.path: sys.path.insert(0, project_root) print(f"[Startup] ✅ Added to sys.path", flush=True) # Print path print(f"[Startup] 🐍 sys.path (first 5):", flush=True) for i, p in enumerate(sys.path[:5]): print(f"[Startup] {i+1}. {p}", flush=True) # ✅ Test import try: print("\n[Startup] 🔧 Testing imports...", flush=True) from mrrrme.backend.app import app print("[Startup] ✅ Import successful!", flush=True) # Show registered routes routes = [route.path for route in app.routes] print(f"[Startup] 📋 Registered routes: {len(routes)}", flush=True) for route in routes: print(f"[Startup] - {route}", flush=True) except Exception as e: print(f"\n[Startup] ❌ FATAL: Cannot import app!", flush=True) print(f"[Startup] Error: {e}", flush=True) import traceback traceback.print_exc() print("\n[Startup] 🔍 Checking if files exist:", flush=True) files_to_check = [ "mrrrme/__init__.py", "mrrrme/backend/__init__.py", "mrrrme/backend/app.py", "mrrrme/backend/websocket.py", "mrrrme/backend/models/loader.py" ] for f in files_to_check: exists = os.path.exists(f) print(f"[Startup] {'✅' if exists else '❌'} {f}", flush=True) sys.exit(1) if __name__ == "__main__": print("\n" + "="*80, flush=True) print("[Startup] 🌐 Starting FastAPI server...", flush=True) print("[Startup] 🔗 Host: 0.0.0.0:8000", flush=True) print("[Startup] 📝 Logs below (UNBUFFERED):", flush=True) print("="*80 + "\n", flush=True) try: uvicorn.run( app, host="0.0.0.0", port=8000, log_level="info", access_log=True, use_colors=True ) except KeyboardInterrupt: print("\n[Startup] 👋 Shutting down...", flush=True) except Exception as e: print(f"\n[Startup] ❌ Server crashed: {e}", flush=True) import traceback traceback.print_exc() sys.exit(1)