# app.py import sys from pathlib import Path # Añadir el directorio actual al path para asegurar que se encuentran los módulos locales # como UI, interface, decorators, config, models. CURRENT_DIR = Path(__file__).parent if str(CURRENT_DIR) not in sys.path: sys.path.insert(0, str(CURRENT_DIR)) # Ahora que el path está configurado, podemos importar los módulos locales. try: import decorators from UI import create_interface import interface as app_interface_module except ImportError as e: print(f"Error crítico de importación en app.py: {e}. Asegúrate de que todos los archivos .py estén en el mismo directorio.") sys.exit(1) # --- Manejo del decorador GPU para el arranque de Gradio local --- # Si el decorador real de HF Spaces fue importado (incluso si es un stub de una lib), # Gradio podría esperar que una función esté decorada. if decorators.was_real_spaces_gpu_imported(): print("INFO (app.py): El decorador GPU de 'spaces' parece estar disponible (o es un stub).") print("INFO (app.py): Se definirá una función dummy decorada para satisfacer el chequeo de Gradio.") @decorators.gpu_decorator(duration=1) # Usa TU gpu_decorator def _app_py_dummy_gpu_function_for_gradio_startup(): """Esta función es solo para satisfacer el chequeo de Gradio.""" # print("Función dummy GPU de app.py ejecutada (no debería hacer nada).") pass else: print("INFO (app.py): El decorador GPU real de 'spaces' no fue importado. No se necesita función dummy para GPU.") # --- Fin del manejo del decorador GPU --- def main(): # Pasa la función de procesamiento real (process_and_plot) a create_interface # app_interface_module.process_and_plot es la función que queremos que el botón llame. print("INFO (app.py): Creando la interfaz Gradio...") demo_instance = create_interface(process_function_for_button=app_interface_module.process_and_plot) print("INFO (app.py): Lanzando la interfaz Gradio localmente...") # Para desarrollo, puedes habilitar debug y share si es necesario. # demo_instance.launch(debug=True, share=True) demo_instance.launch() if __name__ == "__main__": main()