Check databases/__init__ and main/cache with mypy. (#15496)

pull/15507/head
Patrick Cloke 2023-04-27 07:59:14 -04:00 committed by GitHub
parent 6b2f2bd276
commit a346b43837
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 12 additions and 12 deletions

1
changelog.d/15496.misc Normal file
View File

@ -0,0 +1 @@
Improve type hints.

View File

@ -28,13 +28,10 @@ files =
# https://docs.python.org/3/library/re.html#re.X # https://docs.python.org/3/library/re.html#re.X
exclude = (?x) exclude = (?x)
^( ^(
|synapse/storage/databases/__init__.py
|synapse/storage/databases/main/cache.py
|synapse/storage/schema/ |synapse/storage/schema/
)$ )$
[mypy-synapse.metrics._reactor_metrics] [mypy-synapse.metrics._reactor_metrics]
disallow_untyped_defs = False
# This module imports select.epoll. That exists on Linux, but doesn't on macOS. # This module imports select.epoll. That exists on Linux, but doesn't on macOS.
# See https://github.com/matrix-org/synapse/pull/11771. # See https://github.com/matrix-org/synapse/pull/11771.
warn_unused_ignores = False warn_unused_ignores = False

View File

@ -95,7 +95,7 @@ class Databases(Generic[DataStoreT]):
# If we're on a process that can persist events also # If we're on a process that can persist events also
# instantiate a `PersistEventsStore` # instantiate a `PersistEventsStore`
if hs.get_instance_name() in hs.config.worker.writers.events: 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: if "state" in database_config.databases:
logger.info( logger.info(
@ -133,6 +133,6 @@ class Databases(Generic[DataStoreT]):
# We use local variables here to ensure that the databases do not have # We use local variables here to ensure that the databases do not have
# optional types. # optional types.
self.main = main self.main = main # type: ignore[assignment]
self.state = state self.state = state
self.persist_events = persist_events self.persist_events = persist_events

View File

@ -205,13 +205,13 @@ class CacheInvalidationWorkerStore(SQLBaseStore):
) )
elif row.type == EventsStreamCurrentStateRow.TypeId: elif row.type == EventsStreamCurrentStateRow.TypeId:
assert isinstance(data, EventsStreamCurrentStateRow) 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: 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,) (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: else:
raise Exception("Unknown events stream row type %s" % (row.type,)) raise Exception("Unknown events stream row type %s" % (row.type,))
@ -229,7 +229,7 @@ class CacheInvalidationWorkerStore(SQLBaseStore):
# This invalidates any local in-memory cached event objects, the original # This invalidates any local in-memory cached event objects, the original
# process triggering the invalidation is responsible for clearing any external # process triggering the invalidation is responsible for clearing any external
# cached objects. # 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("have_seen_event", (room_id, event_id))
self._attempt_to_invalidate_cache("get_latest_event_ids_in_room", (room_id,)) self._attempt_to_invalidate_cache("get_latest_event_ids_in_room", (room_id,))
@ -242,10 +242,10 @@ class CacheInvalidationWorkerStore(SQLBaseStore):
self._attempt_to_invalidate_cache("_get_membership_from_event_id", (event_id,)) self._attempt_to_invalidate_cache("_get_membership_from_event_id", (event_id,))
if not backfilled: 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: 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 # Caches which might leak edits must be invalidated for the event being
# redacted. # redacted.
self._attempt_to_invalidate_cache("get_relations_for_event", (redacts,)) self._attempt_to_invalidate_cache("get_relations_for_event", (redacts,))
@ -254,7 +254,7 @@ class CacheInvalidationWorkerStore(SQLBaseStore):
self._attempt_to_invalidate_cache("get_thread_id_for_receipts", (redacts,)) self._attempt_to_invalidate_cache("get_thread_id_for_receipts", (redacts,))
if etype == EventTypes.Member: 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( self._attempt_to_invalidate_cache(
"get_invited_rooms_for_local_user", (state_key,) "get_invited_rooms_for_local_user", (state_key,)
) )
@ -378,6 +378,8 @@ class CacheInvalidationWorkerStore(SQLBaseStore):
) )
if isinstance(self.database_engine, PostgresEngine): 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 # get_next() returns a context manager which is designed to wrap
# the transaction. However, we want to only get an ID when we want # 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 # to use it, here, so we need to call __enter__ manually, and have