transcript.py 585 B

1234567891011121314151617181920212223
  1. from __future__ import annotations
  2. from dataclasses import dataclass, field
  3. @dataclass
  4. class TranscriptStore:
  5. entries: list[str] = field(default_factory=list)
  6. flushed: bool = False
  7. def append(self, entry: str) -> None:
  8. self.entries.append(entry)
  9. self.flushed = False
  10. def compact(self, keep_last: int = 10) -> None:
  11. if len(self.entries) > keep_last:
  12. self.entries[:] = self.entries[-keep_last:]
  13. def replay(self) -> tuple[str, ...]:
  14. return tuple(self.entries)
  15. def flush(self) -> None:
  16. self.flushed = True