Spaces:
Sleeping
Sleeping
| """Helpers for running Tabras workloads on Hugging Face ZeroGPU. | |
| The real `spaces.GPU` decorator is available inside Hugging Face Spaces. Local | |
| and test environments may not have the `spaces` package installed, so this | |
| module falls back to an identity decorator while keeping call sites identical. | |
| """ | |
| from collections.abc import Callable | |
| from typing import Any, TypeVar, overload | |
| F = TypeVar("F", bound=Callable[..., Any]) | |
| try: | |
| import spaces | |
| except ImportError: # pragma: no cover - exercised when HF Spaces SDK is absent | |
| spaces = None | |
| def gpu(func: F, /) -> F: ... | |
| def gpu(func: None = None, /, **kwargs: Any) -> Callable[[F], F]: ... | |
| # Decorate a callable with `spaces.GPU` when available, otherwise leave it as-is. | |
| def gpu(func: F | None = None, /, **kwargs: Any) -> F | Callable[[F], F]: | |
| if spaces is None: | |
| if func is None: | |
| return lambda wrapped: wrapped | |
| return func | |
| decorator = spaces.GPU(**kwargs) | |
| if func is None: | |
| return decorator | |
| return decorator(func) | |