mirror of
https://github.com/rr-/pq-cli.git
synced 2026-11-12 22:40:36 -07:00
Python 3.10 is the minimum, so annotations use `X | None`, `list[X]` and friends, enforced by ruff's pyupgrade rules. The remaining typing names are imported directly, with abstract types coming from collections.abc. first() is now generic over the item and default.
16 lines
439 B
Python
16 lines
439 B
Python
from collections.abc import Callable
|
|
from typing import Any
|
|
|
|
|
|
class EventHandler:
|
|
def __init__(self) -> None:
|
|
self.callbacks: list[Callable[..., Any]] = []
|
|
|
|
def __call__(self, *args: Any, **kwargs: Any) -> None:
|
|
for callback in self.callbacks:
|
|
callback(*args, **kwargs)
|
|
|
|
def __iadd__(self, callback: Callable[..., Any]) -> "EventHandler":
|
|
self.callbacks.append(callback)
|
|
return self
|