From 689db6af9659da3d9227c7c80cab68d4b07330f1 Mon Sep 17 00:00:00 2001 From: Patrick Cloke Date: Wed, 26 Apr 2023 15:05:49 -0400 Subject: [PATCH 1/4] Remove unneeded untyped-defs. --- mypy.ini | 1 - 1 file changed, 1 deletion(-) diff --git a/mypy.ini b/mypy.ini index 8fb87b9b7452..8b2f62bd188d 100644 --- a/mypy.ini +++ b/mypy.ini @@ -34,7 +34,6 @@ exclude = (?x) )$ [mypy-synapse.metrics._reactor_metrics] -disallow_untyped_defs = False # This module imports select.epoll. That exists on Linux, but doesn't on macOS. # See https://github.com/matrix-org/synapse/pull/11771. warn_unused_ignores = False From 8894befda2b14e7c4f70392348f3cd2b0a1c67e0 Mon Sep 17 00:00:00 2001 From: Patrick Cloke Date: Wed, 26 Apr 2023 15:10:11 -0400 Subject: [PATCH 2/4] Add some type ignores so we can check main/cache.py. --- mypy.ini | 1 - synapse/storage/databases/main/cache.py | 16 +++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/mypy.ini b/mypy.ini index 8b2f62bd188d..d10cadc69cb3 100644 --- a/mypy.ini +++ b/mypy.ini @@ -29,7 +29,6 @@ files = exclude = (?x) ^( |synapse/storage/databases/__init__.py - |synapse/storage/databases/main/cache.py |synapse/storage/schema/ )$ diff --git a/synapse/storage/databases/main/cache.py b/synapse/storage/databases/main/cache.py index 096dec7f876e..bd07d2017143 100644 --- a/synapse/storage/databases/main/cache.py +++ b/synapse/storage/databases/main/cache.py @@ -205,13 +205,13 @@ def _process_event_stream_row(self, token: int, row: EventsStreamRow) -> None: ) elif row.type == EventsStreamCurrentStateRow.TypeId: assert isinstance(data, EventsStreamCurrentStateRow) - self._curr_state_delta_stream_cache.entity_has_changed(data.room_id, token) + self._curr_state_delta_stream_cache.entity_has_changed(data.room_id, token) # type: ignore[attr-defined] if data.type == EventTypes.Member: - self.get_rooms_for_user_with_stream_ordering.invalidate( + self.get_rooms_for_user_with_stream_ordering.invalidate( # type: ignore[attr-defined] (data.state_key,) ) - self.get_rooms_for_user.invalidate((data.state_key,)) + self.get_rooms_for_user.invalidate((data.state_key,)) # type: ignore[attr-defined] else: raise Exception("Unknown events stream row type %s" % (row.type,)) @@ -229,7 +229,7 @@ def _invalidate_caches_for_event( # This invalidates any local in-memory cached event objects, the original # process triggering the invalidation is responsible for clearing any external # cached objects. - self._invalidate_local_get_event_cache(event_id) + self._invalidate_local_get_event_cache(event_id) # type: ignore[attr-defined] self._attempt_to_invalidate_cache("have_seen_event", (room_id, event_id)) self._attempt_to_invalidate_cache("get_latest_event_ids_in_room", (room_id,)) @@ -242,10 +242,10 @@ def _invalidate_caches_for_event( self._attempt_to_invalidate_cache("_get_membership_from_event_id", (event_id,)) if not backfilled: - self._events_stream_cache.entity_has_changed(room_id, stream_ordering) + self._events_stream_cache.entity_has_changed(room_id, stream_ordering) # type: ignore[attr-defined] if redacts: - self._invalidate_local_get_event_cache(redacts) + self._invalidate_local_get_event_cache(redacts) # type: ignore[attr-defined] # Caches which might leak edits must be invalidated for the event being # redacted. self._attempt_to_invalidate_cache("get_relations_for_event", (redacts,)) @@ -254,7 +254,7 @@ def _invalidate_caches_for_event( self._attempt_to_invalidate_cache("get_thread_id_for_receipts", (redacts,)) if etype == EventTypes.Member: - self._membership_stream_cache.entity_has_changed(state_key, stream_ordering) + self._membership_stream_cache.entity_has_changed(state_key, stream_ordering) # type: ignore[attr-defined] self._attempt_to_invalidate_cache( "get_invited_rooms_for_local_user", (state_key,) ) @@ -378,6 +378,8 @@ def _send_invalidation_to_replication( ) if isinstance(self.database_engine, PostgresEngine): + assert self._cache_id_gen is not None + # get_next() returns a context manager which is designed to wrap # the transaction. However, we want to only get an ID when we want # to use it, here, so we need to call __enter__ manually, and have From 3e29d56606025f7b2e07cdf284fbf237a2ecc18b Mon Sep 17 00:00:00 2001 From: Patrick Cloke Date: Wed, 26 Apr 2023 15:20:24 -0400 Subject: [PATCH 3/4] Add some ignores to databases/__init__.py --- mypy.ini | 1 - synapse/storage/databases/__init__.py | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/mypy.ini b/mypy.ini index d10cadc69cb3..3b17c59dfcd7 100644 --- a/mypy.ini +++ b/mypy.ini @@ -28,7 +28,6 @@ files = # https://docs.python.org/3/library/re.html#re.X exclude = (?x) ^( - |synapse/storage/databases/__init__.py |synapse/storage/schema/ )$ diff --git a/synapse/storage/databases/__init__.py b/synapse/storage/databases/__init__.py index ce3d1d4e942e..7aa24ccf2121 100644 --- a/synapse/storage/databases/__init__.py +++ b/synapse/storage/databases/__init__.py @@ -95,7 +95,7 @@ def __init__(self, main_store_class: Type[DataStoreT], hs: "HomeServer"): # If we're on a process that can persist events also # instantiate a `PersistEventsStore` if hs.get_instance_name() in hs.config.worker.writers.events: - persist_events = PersistEventsStore(hs, database, main, db_conn) + persist_events = PersistEventsStore(hs, database, main, db_conn) # type: ignore[arg-type] if "state" in database_config.databases: logger.info( @@ -133,6 +133,6 @@ def __init__(self, main_store_class: Type[DataStoreT], hs: "HomeServer"): # We use local variables here to ensure that the databases do not have # optional types. - self.main = main + self.main = main # type: ignore[assignment] self.state = state self.persist_events = persist_events From 33fb2321b0452af6eb3c2b0383342bf0524de648 Mon Sep 17 00:00:00 2001 From: Patrick Cloke Date: Wed, 26 Apr 2023 16:01:20 -0400 Subject: [PATCH 4/4] Newsfragment --- changelog.d/15496.misc | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/15496.misc diff --git a/changelog.d/15496.misc b/changelog.d/15496.misc new file mode 100644 index 000000000000..93ceaeafc9b9 --- /dev/null +++ b/changelog.d/15496.misc @@ -0,0 +1 @@ +Improve type hints.