File size: 2,211 Bytes
d3d8124
e43df9f
de3a711
 
e43df9f
 
 
 
 
 
 
de3a711
 
e43df9f
 
 
 
 
de3a711
e43df9f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d3d8124
 
de3a711
 
e43df9f
 
de3a711
 
e43df9f
 
 
de3a711
d3d8124
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# 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()