emmental/lib/publisher.py

20 lines
427 B
Python

# Copyright 2020 (c) Anna Schumaker.
class Publisher:
def __init__(self):
self.subscribers = set()
def publish(self, *args):
funcs = self.subscribers.copy()
for func in funcs:
func(*args)
def register(self, func):
self.subscribers.add(func)
def reset(self):
self.subscribers.clear()
def unregister(self, func):
self.subscribers.discard(func)