Autogenerated type safety parameterisation of all methods

This commit is contained in:
Ian Renton
2026-09-20 20:02:19 +01:00
parent 6037e742cc
commit 324dd1414b
132 changed files with 1228 additions and 706 deletions
+12 -8
View File
@@ -1,7 +1,11 @@
from __future__ import annotations
import logging
import threading
from typing import Any
from tornado.ioloop import IOLoop
from tornado_eventsource.handler import EventSourceHandler
logger = logging.getLogger(__name__)
@@ -10,19 +14,19 @@ class SSEBroadcaster:
"""Bridge between DataStore listener callbacks (which fire on provider threads) to Tornado's async SSE handlers
(which live on the IOLoop thread) to avoid any interdependency between them."""
def __init__(self):
self._handlers = set()
def __init__(self) -> None:
self._handlers: set[EventSourceHandler] = set()
self._lock = threading.Lock()
self._loop = None
self._loop: IOLoop | None = None
def bind_to_web_server_loop(self):
def bind_to_web_server_loop(self) -> None:
self._loop = IOLoop.current()
def register(self, handler):
def register(self, handler: EventSourceHandler) -> None:
with self._lock:
self._handlers.add(handler)
def unregister(self, handler):
def unregister(self, handler: EventSourceHandler) -> None:
with self._lock:
self._handlers.discard(handler)
@@ -31,10 +35,10 @@ class SSEBroadcaster:
with self._lock:
return len(self._handlers)
def publish(self, value):
def publish(self, value: Any) -> None:
self._loop.add_callback(self._broadcast, value)
def _broadcast(self, value):
def _broadcast(self, value: Any) -> None:
with self._lock:
handlers = list(self._handlers)
for handler in handlers: