#!/usr/bin/env python3 """ Hugging Face Spaces entry point for Crop Yield Prediction API """ import sys import os # Add src to Python path sys.path.insert(0, 'src') # Set up proper module structure for joblib loading (same as start.py) try: from models import DataPreprocessor import types # Make it available in multiple namespaces for joblib compatibility globals()['DataPreprocessor'] = DataPreprocessor if '__main__' not in sys.modules or not hasattr(sys.modules['__main__'], 'DataPreprocessor'): if '__main__' in sys.modules: sys.modules['__main__'].DataPreprocessor = DataPreprocessor if 'models' not in sys.modules: models_module = types.ModuleType('models') models_module.DataPreprocessor = DataPreprocessor sys.modules['models'] = models_module print("✅ DataPreprocessor class prepared for joblib loading") except ImportError as e: print(f"Warning: Could not import DataPreprocessor: {e}") # Import the FastAPI app from app import app # This is the entry point for Hugging Face Spaces if __name__ == "__main__": import uvicorn # Get port from environment (Hugging Face Spaces typically uses 7860) port = int(os.environ.get("PORT", 7860)) print("🌾 Starting Crop Yield Prediction API on Hugging Face Spaces") print(f"🚀 Server starting on port {port}") uvicorn.run( app, host="0.0.0.0", port=port, log_level="info" )