Spaces:
Sleeping
Sleeping
| """Base engine class.""" | |
| from __future__ import annotations | |
| import abc | |
| from typing import Any | |
| class BaseEngine(abc.ABC): | |
| """Lifecycle: lazy -> load() -> ready -> unload().""" | |
| name: str = "base" | |
| def __init__(self) -> None: | |
| self._loaded = False | |
| self._lock_count = 0 | |
| self.last_error: str | None = None | |
| def loaded(self) -> bool: | |
| return self._loaded | |
| def status(self) -> str: | |
| if self._loaded: | |
| return "loaded" | |
| if self.last_error: | |
| return f"error: {self.last_error}" | |
| return "not_loaded" | |
| def load(self) -> None: | |
| if self._loaded: | |
| return | |
| try: | |
| self._do_load() | |
| self._loaded = True | |
| self.last_error = None | |
| except Exception as exc: | |
| self.last_error = str(exc) | |
| raise | |
| def unload(self) -> None: | |
| self._do_unload() | |
| self._loaded = False | |
| def _do_load(self) -> None: ... | |
| def _do_unload(self) -> None: ... | |
| def __repr__(self) -> str: | |
| return f"<{self.__class__.__name__} loaded={self._loaded}>" | |