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

Commit b7186c6

Browse files
authored
Add type hints to state handler. (#10482)
1 parent 228decf commit b7186c6

File tree

4 files changed

+29
-19
lines changed

4 files changed

+29
-19
lines changed

changelog.d/10482.misc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Additional type hints in the state handler.

synapse/state/__init__.py

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import logging
1717
from collections import defaultdict, namedtuple
1818
from typing import (
19+
TYPE_CHECKING,
1920
Any,
2021
Awaitable,
2122
Callable,
@@ -52,6 +53,10 @@
5253
from synapse.util.caches.expiringcache import ExpiringCache
5354
from synapse.util.metrics import Measure, measure_func
5455

56+
if TYPE_CHECKING:
57+
from synapse.server import HomeServer
58+
from synapse.storage.databases.main import DataStore
59+
5560
logger = logging.getLogger(__name__)
5661
metrics_logger = logging.getLogger("synapse.state.metrics")
5762

@@ -74,7 +79,7 @@
7479
POWER_KEY = (EventTypes.PowerLevels, "")
7580

7681

77-
def _gen_state_id():
82+
def _gen_state_id() -> str:
7883
global _NEXT_STATE_ID
7984
s = "X%d" % (_NEXT_STATE_ID,)
8085
_NEXT_STATE_ID += 1
@@ -109,7 +114,7 @@ def __init__(
109114
# `state_id` is either a state_group (and so an int) or a string. This
110115
# ensures we don't accidentally persist a state_id as a stateg_group
111116
if state_group:
112-
self.state_id = state_group
117+
self.state_id: Union[str, int] = state_group
113118
else:
114119
self.state_id = _gen_state_id()
115120

@@ -122,7 +127,7 @@ class StateHandler:
122127
where necessary
123128
"""
124129

125-
def __init__(self, hs):
130+
def __init__(self, hs: "HomeServer"):
126131
self.clock = hs.get_clock()
127132
self.store = hs.get_datastore()
128133
self.state_store = hs.get_storage().state
@@ -507,7 +512,7 @@ class StateResolutionHandler:
507512
be storage-independent.
508513
"""
509514

510-
def __init__(self, hs):
515+
def __init__(self, hs: "HomeServer"):
511516
self.clock = hs.get_clock()
512517

513518
self.resolve_linearizer = Linearizer(name="state_resolve_lock")
@@ -657,13 +662,15 @@ async def resolve_events_with_store(
657662
finally:
658663
self._record_state_res_metrics(room_id, m.get_resource_usage())
659664

660-
def _record_state_res_metrics(self, room_id: str, rusage: ContextResourceUsage):
665+
def _record_state_res_metrics(
666+
self, room_id: str, rusage: ContextResourceUsage
667+
) -> None:
661668
room_metrics = self._state_res_metrics[room_id]
662669
room_metrics.cpu_time += rusage.ru_utime + rusage.ru_stime
663670
room_metrics.db_time += rusage.db_txn_duration_sec
664671
room_metrics.db_events += rusage.evt_db_fetch_count
665672

666-
def _report_metrics(self):
673+
def _report_metrics(self) -> None:
667674
if not self._state_res_metrics:
668675
# no state res has happened since the last iteration: don't bother logging.
669676
return
@@ -773,16 +780,13 @@ def _make_state_cache_entry(
773780
)
774781

775782

776-
@attr.s(slots=True)
783+
@attr.s(slots=True, auto_attribs=True)
777784
class StateResolutionStore:
778785
"""Interface that allows state resolution algorithms to access the database
779786
in well defined way.
780-
781-
Args:
782-
store (DataStore)
783787
"""
784788

785-
store = attr.ib()
789+
store: "DataStore"
786790

787791
def get_events(
788792
self, event_ids: Iterable[str], allow_rejected: bool = False

synapse/storage/databases/state/store.py

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -372,18 +372,23 @@ def _insert_into_cache(
372372
)
373373

374374
async def store_state_group(
375-
self, event_id, room_id, prev_group, delta_ids, current_state_ids
375+
self,
376+
event_id: str,
377+
room_id: str,
378+
prev_group: Optional[int],
379+
delta_ids: Optional[StateMap[str]],
380+
current_state_ids: StateMap[str],
376381
) -> int:
377382
"""Store a new set of state, returning a newly assigned state group.
378383
379384
Args:
380-
event_id (str): The event ID for which the state was calculated
381-
room_id (str)
382-
prev_group (int|None): A previous state group for the room, optional.
383-
delta_ids (dict|None): The delta between state at `prev_group` and
385+
event_id: The event ID for which the state was calculated
386+
room_id
387+
prev_group: A previous state group for the room, optional.
388+
delta_ids: The delta between state at `prev_group` and
384389
`current_state_ids`, if `prev_group` was given. Same format as
385390
`current_state_ids`.
386-
current_state_ids (dict): The state to store. Map of (type, state_key)
391+
current_state_ids: The state to store. Map of (type, state_key)
387392
to event_id.
388393
389394
Returns:

synapse/storage/state.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -570,8 +570,8 @@ async def store_state_group(
570570
event_id: str,
571571
room_id: str,
572572
prev_group: Optional[int],
573-
delta_ids: Optional[dict],
574-
current_state_ids: dict,
573+
delta_ids: Optional[StateMap[str]],
574+
current_state_ids: StateMap[str],
575575
) -> int:
576576
"""Store a new set of state, returning a newly assigned state group.
577577

0 commit comments

Comments
 (0)