Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit 2649d54

Browse files
authored
Mypy fixes for synapse.handlers.federation (#8422)
For some reason, an apparently unrelated PR upset mypy about this module. Here are a number of little fixes.
1 parent 12f0d18 commit 2649d54

File tree

6 files changed

+19
-11
lines changed

6 files changed

+19
-11
lines changed

changelog.d/8422.misc

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Typing fixes for `synapse.handlers.federation`.

synapse/federation/federation_client.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,12 @@
2424
Dict,
2525
Iterable,
2626
List,
27+
Mapping,
2728
Optional,
2829
Sequence,
2930
Tuple,
3031
TypeVar,
32+
Union,
3133
)
3234

3335
from prometheus_client import Counter
@@ -501,7 +503,7 @@ async def make_membership_event(
501503
user_id: str,
502504
membership: str,
503505
content: dict,
504-
params: Dict[str, str],
506+
params: Optional[Mapping[str, Union[str, Iterable[str]]]],
505507
) -> Tuple[str, EventBase, RoomVersion]:
506508
"""
507509
Creates an m.room.member event, with context, without participating in the room.

synapse/handlers/federation.py

+9-4
Original file line numberDiff line numberDiff line change
@@ -155,8 +155,9 @@ def __init__(self, hs):
155155
self._device_list_updater = hs.get_device_handler().device_list_updater
156156
self._maybe_store_room_on_invite = self.store.maybe_store_room_on_invite
157157

158-
# When joining a room we need to queue any events for that room up
159-
self.room_queues = {}
158+
# When joining a room we need to queue any events for that room up.
159+
# For each room, a list of (pdu, origin) tuples.
160+
self.room_queues = {} # type: Dict[str, List[Tuple[EventBase, str]]]
160161
self._room_pdu_linearizer = Linearizer("fed_room_pdu")
161162

162163
self.third_party_event_rules = hs.get_third_party_event_rules()
@@ -814,6 +815,9 @@ async def backfill(self, dest, room_id, limit, extremities):
814815
dest, room_id, limit=limit, extremities=extremities
815816
)
816817

818+
if not events:
819+
return []
820+
817821
# ideally we'd sanity check the events here for excess prev_events etc,
818822
# but it's hard to reject events at this point without completely
819823
# breaking backfill in the same way that it is currently broken by
@@ -2164,10 +2168,10 @@ async def _check_for_soft_fail(
21642168
# given state at the event. This should correctly handle cases
21652169
# like bans, especially with state res v2.
21662170

2167-
state_sets = await self.state_store.get_state_groups(
2171+
state_sets_d = await self.state_store.get_state_groups(
21682172
event.room_id, extrem_ids
21692173
)
2170-
state_sets = list(state_sets.values())
2174+
state_sets = list(state_sets_d.values()) # type: List[Iterable[EventBase]]
21712175
state_sets.append(state)
21722176
current_states = await self.state_handler.resolve_events(
21732177
room_version, state_sets, event
@@ -2958,6 +2962,7 @@ async def persist_events_and_notify(
29582962
)
29592963
return result["max_stream_id"]
29602964
else:
2965+
assert self.storage.persistence
29612966
max_stream_token = await self.storage.persistence.persist_events(
29622967
event_and_contexts, backfilled=backfilled
29632968
)

synapse/storage/databases/state/store.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
from synapse.storage.state import StateFilter
2525
from synapse.storage.types import Cursor
2626
from synapse.storage.util.sequence import build_sequence_generator
27-
from synapse.types import StateMap
27+
from synapse.types import MutableStateMap, StateMap
2828
from synapse.util.caches.descriptors import cached
2929
from synapse.util.caches.dictionary_cache import DictionaryCache
3030

@@ -208,7 +208,7 @@ def _get_state_for_group_using_cache(self, cache, group, state_filter):
208208

209209
async def _get_state_for_groups(
210210
self, groups: Iterable[int], state_filter: StateFilter = StateFilter.all()
211-
) -> Dict[int, StateMap[str]]:
211+
) -> Dict[int, MutableStateMap[str]]:
212212
"""Gets the state at each of a list of state groups, optionally
213213
filtering by type/state_key
214214

synapse/storage/persist_events.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ def __init__(self, hs, stores: Databases):
197197

198198
async def persist_events(
199199
self,
200-
events_and_contexts: List[Tuple[EventBase, EventContext]],
200+
events_and_contexts: Iterable[Tuple[EventBase, EventContext]],
201201
backfilled: bool = False,
202202
) -> RoomStreamToken:
203203
"""

synapse/storage/state.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
from synapse.api.constants import EventTypes
2222
from synapse.events import EventBase
23-
from synapse.types import StateMap
23+
from synapse.types import MutableStateMap, StateMap
2424

2525
logger = logging.getLogger(__name__)
2626

@@ -349,7 +349,7 @@ async def get_state_group_delta(self, state_group: int):
349349

350350
async def get_state_groups_ids(
351351
self, _room_id: str, event_ids: Iterable[str]
352-
) -> Dict[int, StateMap[str]]:
352+
) -> Dict[int, MutableStateMap[str]]:
353353
"""Get the event IDs of all the state for the state groups for the given events
354354
355355
Args:
@@ -532,7 +532,7 @@ async def get_state_ids_for_event(
532532

533533
def _get_state_for_groups(
534534
self, groups: Iterable[int], state_filter: StateFilter = StateFilter.all()
535-
) -> Awaitable[Dict[int, StateMap[str]]]:
535+
) -> Awaitable[Dict[int, MutableStateMap[str]]]:
536536
"""Gets the state at each of a list of state groups, optionally
537537
filtering by type/state_key
538538

0 commit comments

Comments
 (0)