1414
1515import logging
1616from typing import (
17+ TYPE_CHECKING ,
1718 Awaitable ,
1819 Callable ,
1920 Collection ,
3233
3334from twisted .internet import defer
3435
35- import synapse .server
3636from synapse .api .constants import EventTypes , HistoryVisibility , Membership
3737from synapse .api .errors import AuthError
3838from synapse .events import EventBase
5353from synapse .util .metrics import Measure
5454from synapse .visibility import filter_events_for_client
5555
56+ if TYPE_CHECKING :
57+ from synapse .server import HomeServer
58+
5659logger = logging .getLogger (__name__ )
5760
5861notified_events_counter = Counter ("synapse_notifier_notified_events" , "" )
@@ -82,7 +85,7 @@ class _NotificationListener:
8285
8386 __slots__ = ["deferred" ]
8487
85- def __init__ (self , deferred ):
88+ def __init__ (self , deferred : "defer.Deferred" ):
8689 self .deferred = deferred
8790
8891
@@ -124,7 +127,7 @@ def notify(
124127 stream_key : str ,
125128 stream_id : Union [int , RoomStreamToken ],
126129 time_now_ms : int ,
127- ):
130+ ) -> None :
128131 """Notify any listeners for this user of a new event from an
129132 event source.
130133 Args:
@@ -152,7 +155,7 @@ def notify(
152155 self .notify_deferred = ObservableDeferred (defer .Deferred ())
153156 noify_deferred .callback (self .current_token )
154157
155- def remove (self , notifier : "Notifier" ):
158+ def remove (self , notifier : "Notifier" ) -> None :
156159 """Remove this listener from all the indexes in the Notifier
157160 it knows about.
158161 """
@@ -188,7 +191,7 @@ class EventStreamResult:
188191 start_token : StreamToken
189192 end_token : StreamToken
190193
191- def __bool__ (self ):
194+ def __bool__ (self ) -> bool :
192195 return bool (self .events )
193196
194197
@@ -212,7 +215,7 @@ class Notifier:
212215
213216 UNUSED_STREAM_EXPIRY_MS = 10 * 60 * 1000
214217
215- def __init__ (self , hs : "synapse.server. HomeServer" ):
218+ def __init__ (self , hs : "HomeServer" ):
216219 self .user_to_user_stream : Dict [str , _NotifierUserStream ] = {}
217220 self .room_to_user_streams : Dict [str , Set [_NotifierUserStream ]] = {}
218221
@@ -248,7 +251,7 @@ def __init__(self, hs: "synapse.server.HomeServer"):
248251 # This is not a very cheap test to perform, but it's only executed
249252 # when rendering the metrics page, which is likely once per minute at
250253 # most when scraping it.
251- def count_listeners ():
254+ def count_listeners () -> int :
252255 all_user_streams : Set [_NotifierUserStream ] = set ()
253256
254257 for streams in list (self .room_to_user_streams .values ()):
@@ -270,7 +273,7 @@ def count_listeners():
270273 "synapse_notifier_users" , "" , [], lambda : len (self .user_to_user_stream )
271274 )
272275
273- def add_replication_callback (self , cb : Callable [[], None ]):
276+ def add_replication_callback (self , cb : Callable [[], None ]) -> None :
274277 """Add a callback that will be called when some new data is available.
275278 Callback is not given any arguments. It should *not* return a Deferred - if
276279 it needs to do any asynchronous work, a background thread should be started and
@@ -284,7 +287,7 @@ async def on_new_room_event(
284287 event_pos : PersistedEventPosition ,
285288 max_room_stream_token : RoomStreamToken ,
286289 extra_users : Optional [Collection [UserID ]] = None ,
287- ):
290+ ) -> None :
288291 """Unwraps event and calls `on_new_room_event_args`."""
289292 await self .on_new_room_event_args (
290293 event_pos = event_pos ,
@@ -307,7 +310,7 @@ async def on_new_room_event_args(
307310 event_pos : PersistedEventPosition ,
308311 max_room_stream_token : RoomStreamToken ,
309312 extra_users : Optional [Collection [UserID ]] = None ,
310- ):
313+ ) -> None :
311314 """Used by handlers to inform the notifier something has happened
312315 in the room, room event wise.
313316
@@ -338,7 +341,9 @@ async def on_new_room_event_args(
338341
339342 self .notify_replication ()
340343
341- def _notify_pending_new_room_events (self , max_room_stream_token : RoomStreamToken ):
344+ def _notify_pending_new_room_events (
345+ self , max_room_stream_token : RoomStreamToken
346+ ) -> None :
342347 """Notify for the room events that were queued waiting for a previous
343348 event to be persisted.
344349 Args:
@@ -374,7 +379,7 @@ def _notify_pending_new_room_events(self, max_room_stream_token: RoomStreamToken
374379 )
375380 self ._on_updated_room_token (max_room_stream_token )
376381
377- def _on_updated_room_token (self , max_room_stream_token : RoomStreamToken ):
382+ def _on_updated_room_token (self , max_room_stream_token : RoomStreamToken ) -> None :
378383 """Poke services that might care that the room position has been
379384 updated.
380385 """
@@ -386,13 +391,13 @@ def _on_updated_room_token(self, max_room_stream_token: RoomStreamToken):
386391 if self .federation_sender :
387392 self .federation_sender .notify_new_events (max_room_stream_token )
388393
389- def _notify_app_services (self , max_room_stream_token : RoomStreamToken ):
394+ def _notify_app_services (self , max_room_stream_token : RoomStreamToken ) -> None :
390395 try :
391396 self .appservice_handler .notify_interested_services (max_room_stream_token )
392397 except Exception :
393398 logger .exception ("Error notifying application services of event" )
394399
395- def _notify_pusher_pool (self , max_room_stream_token : RoomStreamToken ):
400+ def _notify_pusher_pool (self , max_room_stream_token : RoomStreamToken ) -> None :
396401 try :
397402 self ._pusher_pool .on_new_notifications (max_room_stream_token )
398403 except Exception :
@@ -475,8 +480,8 @@ async def wait_for_events(
475480 user_id : str ,
476481 timeout : int ,
477482 callback : Callable [[StreamToken , StreamToken ], Awaitable [T ]],
478- room_ids = None ,
479- from_token = StreamToken .START ,
483+ room_ids : Optional [ Collection [ str ]] = None ,
484+ from_token : StreamToken = StreamToken .START ,
480485 ) -> T :
481486 """Wait until the callback returns a non empty response or the
482487 timeout fires.
@@ -700,14 +705,14 @@ def remove_expired_streams(self) -> None:
700705 for expired_stream in expired_streams :
701706 expired_stream .remove (self )
702707
703- def _register_with_keys (self , user_stream : _NotifierUserStream ):
708+ def _register_with_keys (self , user_stream : _NotifierUserStream ) -> None :
704709 self .user_to_user_stream [user_stream .user_id ] = user_stream
705710
706711 for room in user_stream .rooms :
707712 s = self .room_to_user_streams .setdefault (room , set ())
708713 s .add (user_stream )
709714
710- def _user_joined_room (self , user_id : str , room_id : str ):
715+ def _user_joined_room (self , user_id : str , room_id : str ) -> None :
711716 new_user_stream = self .user_to_user_stream .get (user_id )
712717 if new_user_stream is not None :
713718 room_streams = self .room_to_user_streams .setdefault (room_id , set ())
@@ -719,7 +724,7 @@ def notify_replication(self) -> None:
719724 for cb in self .replication_callbacks :
720725 cb ()
721726
722- def notify_remote_server_up (self , server : str ):
727+ def notify_remote_server_up (self , server : str ) -> None :
723728 """Notify any replication that a remote server has come back up"""
724729 # We call federation_sender directly rather than registering as a
725730 # callback as a) we already have a reference to it and b) it introduces
0 commit comments