# app.py from UI import create_interface import interface as app_interface_module # Necesitamos la función process_and_plot import sys # Para manipulación de path si es necesario from pathlib import Path # --- Intento de Neutralizar el decorador problemático para ejecución local --- # Esto es un hack para evitar el error de 'No @spaces.GPU' si Gradio lo busca. try: # Intentar importar el módulo 'decorators' de tu proyecto # Asume que app.py está en la raíz del proyecto y decorators.py también current_dir = Path(__file__).parent if str(current_dir) not in sys.path: sys.path.insert(0, str(current_dir)) import decorators class _GPUNeutralizerLocal: def __init__(self, *args, **kwargs): pass def __call__(self, func): return func # Sobrescribir si existen para que no causen error if hasattr(decorators, 'GPU'): decorators.GPU = _GPUNeutralizerLocal print("INFO (app.py): 'decorators.GPU' neutralizado para ejecución local.") if hasattr(decorators, 'gpu_decorator'): decorators.gpu_decorator = lambda duration=0: lambda func: func print("INFO (app.py): 'decorators.gpu_decorator' neutralizado para ejecución local.") except ImportError: print("ADVERTENCIA (app.py): Módulo 'decorators' no encontrado, no se pudo neutralizar GPU. Puede que no sea necesario.") except Exception as e_dec: print(f"ADVERTENCIA (app.py): Error al intentar neutralizar decoradores: {e_dec}") # --- Fin de la neutralización --- 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. demo_instance = create_interface(process_function_for_button=app_interface_module.process_and_plot) print("Lanzando interfaz Gradio localmente...") demo_instance.launch() if __name__ == "__main__": main()