Guava Avatar

Solid Python example

Download

Cleaned up a python helper from an old codebase.

debounce.py python

A decorator that debounces a function by N seconds.

import threading
import functools

def debounce(wait_seconds: float):
    def decorator(fn):
        timer = None

        @functools.wraps(fn)
        def wrapper(*args, **kwargs):
            nonlocal timer
            if timer is not None:
                timer.cancel()
            timer = threading.Timer(wait_seconds, lambda: fn(*args, **kwargs))
            timer.daemon = True
            timer.start()

        return wrapper
    return decorator

Feel free to fork and adapt.

Developer Discussions