Coverage for polar/kit/hook.py: 47%
13 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 12:42 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 12:42 +0000
1from collections.abc import Callable, Coroutine
2from typing import Any
4type HookFunc[T] = Callable[[T], Coroutine[Any, Any, Any]]
7class Hook[T]:
8 hooks: list[HookFunc[T]]
10 def __init__(self) -> None:
11 self.hooks = []
13 def add(self, fun: HookFunc[T]) -> None:
14 if fun in self.hooks:
15 raise Exception(f"fun is already registered! fun={fun} hooks={self.hooks}")
17 self.hooks.append(fun)
19 async def call(self, payload: T) -> None:
20 for fn in self.hooks:
21 await fn(payload)