from __future__ import print_function import sys from weakref import ref class ChannelMonitor: def __init__(self): self._open_channels = set() def add(self, w): wr = ref(w, self._lost) self._open_channels.add(wr) def _lost(self, wr): print("Error: a Wormhole instance was not closed", file=sys.stderr) def close(self, w): self._open_channels.discard(ref(w)) monitor = ChannelMonitor() # singleton