File size: 1,976 Bytes
d3d8124
 
 
e43df9f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d3d8124
 
 
 
e43df9f
 
d3d8124
 
e43df9f
 
 
 
 
 
 
 
 
 
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
# decorators.py
from functools import wraps

_actual_spaces_GPU_imported = False
_GPU_decorator_target = None

try:
    from spaces import GPU as ActualSpacesGPU_real # Intentar importar el real
    _GPU_decorator_target = ActualSpacesGPU_real
    _actual_spaces_GPU_imported = True
    print("INFO (decorators.py): Se import贸 'GPU' correctamente desde 'spaces'.")
except ImportError:
    print("ADVERTENCIA (decorators.py): No se pudo importar 'GPU' desde 'spaces'. Se usar谩 un placeholder. "
          "Esto es normal si no se ejecuta en un Hugging Face Space con GPU habilitada.")
    class PlaceholderGPU:
        def __init__(self, duration=100, **kwargs): # Aceptar kwargs comunes como sdk_version
            self.duration = duration
            # print(f"PlaceholderGPU inicializado (duraci贸n: {self.duration}s)")

        def __call__(self, func):
            @wraps(func)
            def wrapper(*args, **kwargs):
                # print(f"PlaceholderGPU: Ejecutando funci贸n decorada '{func.__name__}'")
                return func(*args, **kwargs)
            return wrapper
    _GPU_decorator_target = PlaceholderGPU
except Exception as e:
    print(f"ERROR (decorators.py): Error inesperado al intentar importar/definir GPU: {e}")
    # Fallback a un decorador que no hace absolutamente nada si todo lo dem谩s falla
    _GPU_decorator_target = lambda duration=100, **kwargs: lambda func: func


def gpu_decorator(duration=100):
    """
    Decorador que aplica el @spaces.GPU real si est谩 disponible,
    o un placeholder funcional en otros casos.
    """
    def decorator(func):
        # Usar _GPU_decorator_target que es o el real o el placeholder
        decorated_func = _GPU_decorator_target(duration=duration)(func)
        return decorated_func
    return decorator

def was_real_spaces_gpu_imported():
    """
    Permite a otros m贸dulos verificar si el decorador GPU real de HF Spaces fue importado.
    """
    return _actual_spaces_GPU_imported