| 123456789101112131415161718192021222324252627 | # (c) Nelen & Schuurmansfrom typing import Awaitablefrom typing import Callablefrom typing import Typefrom typing import TypeVarimport blinker__all__ = ["DomainEvent"]T = TypeVar("T", bound="DomainEvent")class DomainEvent:    @classmethod    def _signal(cls) -> blinker.Signal:        return blinker.signal(cls.__name__)    @classmethod    def register_handler(        cls: Type[T], receiver: Callable[[T], Awaitable[None]]    ) -> Callable[[T], Awaitable[None]]:        return cls._signal().connect(receiver)    async def send_async(self) -> None:        await self._signal().send_async(self)
 |