Spaces:
Paused
Paused
| from __future__ import annotations | |
| import time | |
| from types import TracebackType | |
| from typing import Optional | |
| from rich.live import Live | |
| from rich.panel import Panel | |
| class LivePanelDisplay: | |
| def __init__(self, msg: str | None = None) -> None: | |
| self.lines = [msg] if msg else [] | |
| self._panel = Live(Panel("\n".join(self.lines)), refresh_per_second=5) | |
| def update(self, msg: str, add_sleep: float | None = None): | |
| self.lines.append(msg) | |
| self._panel.update(Panel("\n".join(self.lines))) | |
| if add_sleep: | |
| time.sleep(add_sleep) | |
| def __enter__(self) -> LivePanelDisplay: | |
| self._panel.__enter__() | |
| return self | |
| def __exit__( | |
| self, | |
| exc_type: Optional[type[BaseException]], | |
| exc_val: Optional[BaseException], | |
| exc_tb: Optional[TracebackType], | |
| ) -> None: | |
| self._panel.stop() | |