Edwin Salguero
Add FRED API key validation at app startup and improve environment variable loading
378ea47 | #!/usr/bin/env python3 | |
| """ | |
| FRED ML - Economic Analytics Platform | |
| Streamlit Cloud Deployment Entry Point | |
| """ | |
| import sys | |
| import os | |
| import streamlit as st | |
| from dotenv import load_dotenv | |
| # Load environment variables from .env file | |
| load_dotenv() | |
| # Check for FRED API key | |
| fred_key = os.getenv("FRED_API_KEY") or st.secrets.get("FRED_API_KEY") | |
| if not fred_key: | |
| st.error("❌ FRED API not available. Please configure your FRED API key.") | |
| st.stop() | |
| # Add debug print | |
| st.write(f"🔑 FRED API Key loaded: {fred_key[:8]}...") | |
| # Add the frontend directory to the path | |
| current_dir = os.path.dirname(os.path.abspath(__file__)) | |
| frontend_dir = os.path.join(current_dir, 'frontend') | |
| if frontend_dir not in sys.path: | |
| sys.path.insert(0, frontend_dir) | |
| # Add the current directory to the path as well | |
| if current_dir not in sys.path: | |
| sys.path.insert(0, current_dir) | |
| main = None # Initialize main as None | |
| try: | |
| # Import only the main function to avoid loading unnecessary modules | |
| from frontend.app import main | |
| print("Successfully imported main function from frontend.app") | |
| except ImportError as e: | |
| print(f"Error importing from frontend.app: {e}") | |
| try: | |
| # Fallback: try importing directly | |
| from app import main | |
| print("Successfully imported main function from app") | |
| except ImportError as e2: | |
| print(f"Error importing from app: {e2}") | |
| # Last resort: define a simple main function | |
| def main(): | |
| st.error("Failed to import main application. Please check the deployment.") | |
| st.info("Contact support if this issue persists.") | |
| print("Using fallback main function") | |
| # Run the main function directly | |
| if __name__ == "__main__": | |
| if main is not None: | |
| main() | |
| else: | |
| st.error("Failed to import main application. Please check the deployment.") | |
| st.info("Contact support if this issue persists.") |