36 lines
837 B
Python
36 lines
837 B
Python
#!/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] |