from collections.abc import Callable
from typing import Generic, TypeVar
from bokeh.document import Document
__all__ = ['TimeoutUpdateValue']
T = TypeVar('T')
class _Missing:
pass
missing = _Missing()
[docs]
class TimeoutUpdateValue(Generic[T]):
[docs]
def __init__(self,
document: Document,
callback: Callable[[T], None],
delay=1000):
self.__document = document
self.__value: T | _Missing = missing
self.__callback = callback
self.delay = delay
[docs]
def update(self, value: T):
old_value = self.__value
self.__value = value
if old_value is missing:
self.__document.add_timeout_callback(self.callback, self.delay)
[docs]
def callback(self):
value = self.__value
self.__value = missing
if not isinstance(value, _Missing):
self.__callback(value)