src/ab/decorate/when_ready_hooks.py (18 lines of code) (raw):

callbacks = {} class CallbackFunction: def __init__(self, name, func): self.name = name self.func = func def __call__(self, *args, **kwargs): return self.func() def when_ready(name=None): """ the 'callback' function must be a function without parameters """ def register_func(func): register_callback(name, func) return func return register_func def register_callback(name, func): name = name or func.__name__ callbacks[name] = CallbackFunction(name, func) def do_callback(server): for k, v in callbacks.items(): v()