#!/usr/bin/env python3 # -*- coding: utf-8 -*- from typing import Self, Callable, Any, Optional class Event: def __init__(self:Self) -> None: self.__events:dict[int, Callable[[Optional[Any]], Any|None]] = {} def execute(self:Self, *inputs:Any|None) -> None: results:dict[int, Any|None] = {} for i, event in self.__events.items(): results[i] = event(*inputs) return results def add(self:Self, event:Callable[[Optional[Any]], Any|None]) -> int: i:int = 0 l:int = len(self.__events) while i < l: if i not in self.__events: break i += 1 self.__events[i] = event return i def remove(self:Self, i:int) -> None: if i in self.__events: del self.__events[i] def clean(self:Self) -> None: self.__events = {}