import os import sys import traceback import warnings warnings.filterwarnings("ignore") from ui_manager import UIManager def launch_final_blend_sceneweaver(share: bool = True, debug: bool = False): """Launch SceneWeaver Application""" print("šŸŽØ Starting SceneWeaver...") print("✨ AI-Powered Image Background Generation") try: # Test imports first print("šŸ” Testing imports...") try: # Test creating UIManager print("šŸ” Creating UIManager instance...") ui = UIManager() print("āœ… UIManager instance created successfully") # Note: On Hugging Face Spaces, models will be loaded on-demand # within @spaces.GPU decorated functions to comply with ZeroGPU requirements if os.getenv('SPACE_ID'): print("\nšŸ”§ Detected Hugging Face Spaces environment") print("⚔ Models will load on-demand (ZeroGPU stateless requirement)") print(" First inpainting request: ~7 steps (280s)") print(" Subsequent requests: ~11 steps (245s)") print() # Launch UI print("šŸš€ Launching interface...") interface = ui.launch(share=share, debug=debug) print("āœ… Interface launched successfully") return interface except ImportError as import_error: print(f"āŒ Import failed: {import_error}") print(f"Traceback: {traceback.format_exc()}") raise except Exception as e: print(f"āŒ Failed to launch: {e}") print(f"Full traceback: {traceback.format_exc()}") raise def launch_ui(share: bool = True, debug: bool = False): """Convenience function for Jupyter notebooks""" return launch_final_blend_sceneweaver(share=share, debug=debug) def main(): """Main entry point""" # Check if running in Jupyter/Colab try: get_ipython() is_jupyter = True except NameError: is_jupyter = False if not is_jupyter and len(sys.argv) > 1 and not any('-f' in arg for arg in sys.argv): # Command line mode with arguments share = '--no-share' not in sys.argv debug = '--debug' in sys.argv else: # Default mode share = True debug = False try: interface = launch_final_blend_sceneweaver(share=share, debug=debug) if not is_jupyter: print("šŸ›‘ Press Ctrl+C to stop") try: interface.block_thread() except KeyboardInterrupt: print("šŸ‘‹ Stopped") return interface except Exception as e: print(f"āŒ Error: {e}") if not is_jupyter: sys.exit(1) raise if __name__ == "__main__": main()