Events are never removed
There is a bug in method on_event_removed() which prevents events from being removed. So the indicator remains active all the time.
The statement: if key not in self.events and event in self.events[key][1]:
should be: if key in self.events and event in self.events[key][1]:
(remove the "not").