ColabWan / shared /prompt_enhancer /streaming.py
1ripon1's picture
Upload folder using huggingface_hub
7344bef verified
Raw
History Blame Contribute Delete
711 Bytes
from __future__ import annotations
import time
from typing import Any, Callable
class ThrottledStreamEmitter:
def __init__(self, interval_seconds: float = 1.0):
self.interval_seconds = max(0.0, float(interval_seconds))
self._last_emit_at = 0.0
def emit(self, callback: Callable[..., Any] | None, /, *args, force: bool = False, **kwargs) -> bool:
if not callable(callback):
return False
now = time.monotonic()
if not force and self.interval_seconds > 0 and self._last_emit_at > 0 and (now - self._last_emit_at) < self.interval_seconds:
return False
self._last_emit_at = now
callback(*args, **kwargs)
return True