From 1360400b95ccf8dcfd555a97abaafd80afc26128 Mon Sep 17 00:00:00 2001 From: Erik Johnston Date: Wed, 18 Mar 2026 14:53:26 +0000 Subject: [PATCH] Rename --- synapse/app/admin_cmd.py | 8 ++++---- synapse/appservice/api.py | 4 ++-- synapse/events/utils.py | 18 +++++++++--------- synapse/handlers/admin.py | 4 ++-- synapse/handlers/events.py | 6 +++--- synapse/handlers/initial_sync.py | 16 ++++++++-------- synapse/handlers/message.py | 4 ++-- synapse/handlers/pagination.py | 8 ++++---- synapse/handlers/relations.py | 12 ++++++------ synapse/handlers/room.py | 12 ++++++------ synapse/handlers/search.py | 12 ++++++------ synapse/handlers/sliding_sync/__init__.py | 6 +++--- synapse/handlers/sync.py | 12 ++++++------ synapse/notifier.py | 6 +++--- synapse/rest/admin/events.py | 4 ++-- synapse/rest/admin/rooms.py | 6 +++--- synapse/rest/client/notifications.py | 4 ++-- synapse/rest/client/room.py | 8 ++++---- synapse/rest/client/sync.py | 10 +++++----- synapse/types/handlers/sliding_sync.py | 4 ++-- synapse/visibility.py | 12 ++++++------ tests/events/test_utils.py | 6 +++--- tests/rest/client/test_retention.py | 4 ++-- 23 files changed, 93 insertions(+), 93 deletions(-) diff --git a/synapse/app/admin_cmd.py b/synapse/app/admin_cmd.py index 36aaca5190..55691afc48 100644 --- a/synapse/app/admin_cmd.py +++ b/synapse/app/admin_cmd.py @@ -34,7 +34,7 @@ from synapse.config._base import ConfigError from synapse.config.homeserver import HomeServerConfig from synapse.config.logger import setup_logging from synapse.events import EventBase -from synapse.events.utils import ClientEvent +from synapse.events.utils import FilteredEvent from synapse.handlers.admin import ExfiltrationWriter from synapse.server import HomeServer from synapse.storage.database import DatabasePool, LoggingDatabaseConnection @@ -151,7 +151,7 @@ class FileExfiltrationWriter(ExfiltrationWriter): if list(os.listdir(self.base_directory)): raise Exception("Directory must be empty") - def write_events(self, room_id: str, events: list[ClientEvent]) -> None: + def write_events(self, room_id: str, events: list[FilteredEvent]) -> None: room_directory = os.path.join(self.base_directory, "rooms", room_id) os.makedirs(room_directory, exist_ok=True) events_file = os.path.join(room_directory, "events") @@ -176,7 +176,7 @@ class FileExfiltrationWriter(ExfiltrationWriter): def write_invite( self, room_id: str, event: EventBase, state: StateMap[EventBase] ) -> None: - self.write_events(room_id, [ClientEvent(event=event, membership=None)]) + self.write_events(room_id, [FilteredEvent(event=event, membership=None)]) # We write the invite state somewhere else as they aren't full events # and are only a subset of the state at the event. @@ -192,7 +192,7 @@ class FileExfiltrationWriter(ExfiltrationWriter): def write_knock( self, room_id: str, event: EventBase, state: StateMap[EventBase] ) -> None: - self.write_events(room_id, [ClientEvent(event=event, membership=None)]) + self.write_events(room_id, [FilteredEvent(event=event, membership=None)]) # We write the knock state somewhere else as they aren't full events # and are only a subset of the state at the event. diff --git a/synapse/appservice/api.py b/synapse/appservice/api.py index 4a7354c036..d9702e7765 100644 --- a/synapse/appservice/api.py +++ b/synapse/appservice/api.py @@ -40,7 +40,7 @@ from synapse.appservice import ( TransactionUnusedFallbackKeys, ) from synapse.events import EventBase -from synapse.events.utils import ClientEvent, SerializeEventConfig +from synapse.events.utils import FilteredEvent, SerializeEventConfig from synapse.http.client import SimpleHttpClient, is_unknown_endpoint from synapse.logging import opentracing from synapse.metrics import SERVER_NAME_LABEL @@ -545,7 +545,7 @@ class ApplicationServiceApi(SimpleHttpClient): ) -> list[JsonDict]: time_now = self.clock.time_msec() return await self._event_serializer.serialize_events( - [ClientEvent(event=e, membership=None) for e in events], + [FilteredEvent(event=e, membership=None) for e in events], time_now, config=SerializeEventConfig( as_client_event=True, diff --git a/synapse/events/utils.py b/synapse/events/utils.py index 5e658b0764..dda8c58e2f 100644 --- a/synapse/events/utils.py +++ b/synapse/events/utils.py @@ -418,7 +418,7 @@ def format_event_for_client_v2_without_room_id(d: JsonDict) -> JsonDict: @attr.s(slots=True, frozen=True, auto_attribs=True) -class ClientEvent: +class FilteredEvent: """An event annotated with per-user data for client serialization. Produced by filter_and_transform_events_for_client. Carries the user's @@ -430,13 +430,13 @@ class ClientEvent: membership: str | None @classmethod - def state(cls, event: "EventBase") -> "ClientEvent": + def state(cls, event: "EventBase") -> "FilteredEvent": """Wrap a state event with no per-user membership annotation. The event must be a state event (i.e. have a state_key). """ assert event.is_state(), ( - f"ClientEvent.state() called with non-state event {event.event_id}" + f"FilteredEvent.state() called with non-state event {event.event_id}" ) return cls(event=event, membership=None) @@ -631,7 +631,7 @@ class EventClientSerializer: async def serialize_event( self, - event: JsonDict | ClientEvent, + event: JsonDict | FilteredEvent, time_now: int, *, config: SerializeEventConfig = _DEFAULT_SERIALIZE_EVENT_CONFIG, @@ -653,7 +653,7 @@ class EventClientSerializer: The serialized event """ # To handle the case of presence events and the like - if not isinstance(event, ClientEvent): + if not isinstance(event, FilteredEvent): return event base_event = event.event @@ -769,7 +769,7 @@ class EventClientSerializer: # `sender` of the edit; however MSC3925 proposes extending it to the whole # of the edit, which is what we do here. serialized_aggregations[RelationTypes.REPLACE] = await self.serialize_event( - ClientEvent(event=event_aggregations.replace, membership=None), + FilteredEvent(event=event_aggregations.replace, membership=None), time_now, config=config, ) @@ -779,7 +779,7 @@ class EventClientSerializer: thread = event_aggregations.thread serialized_latest_event = await self.serialize_event( - ClientEvent(event=thread.latest_event, membership=None), + FilteredEvent(event=thread.latest_event, membership=None), time_now, config=config, bundle_aggregations=bundled_aggregations, @@ -804,7 +804,7 @@ class EventClientSerializer: @trace async def serialize_events( self, - events: Collection[JsonDict | ClientEvent], + events: Collection[JsonDict | FilteredEvent], time_now: int, *, config: SerializeEventConfig = _DEFAULT_SERIALIZE_EVENT_CONFIG, @@ -831,7 +831,7 @@ class EventClientSerializer: # Batch-fetch all redaction events in one go rather than one per event. redaction_ids: set[str] = set() for e in events: - base = e.event if isinstance(e, ClientEvent) else e + base = e.event if isinstance(e, FilteredEvent) else e if isinstance(base, EventBase): redacted_by = base.internal_metadata.redacted_by if redacted_by is not None: diff --git a/synapse/handlers/admin.py b/synapse/handlers/admin.py index 1799755aac..7327da292c 100644 --- a/synapse/handlers/admin.py +++ b/synapse/handlers/admin.py @@ -33,7 +33,7 @@ import attr from synapse.api.constants import Direction, EventTypes, Membership from synapse.api.errors import SynapseError from synapse.events import EventBase -from synapse.events.utils import ClientEvent +from synapse.events.utils import FilteredEvent from synapse.types import ( JsonMapping, Requester, @@ -520,7 +520,7 @@ class ExfiltrationWriter(metaclass=abc.ABCMeta): """Interface used to specify how to write exported data.""" @abc.abstractmethod - def write_events(self, room_id: str, events: list[ClientEvent]) -> None: + def write_events(self, room_id: str, events: list[FilteredEvent]) -> None: """Write a batch of events for a room.""" raise NotImplementedError() diff --git a/synapse/handlers/events.py b/synapse/handlers/events.py index a70f10e877..2518716bc7 100644 --- a/synapse/handlers/events.py +++ b/synapse/handlers/events.py @@ -25,7 +25,7 @@ from typing import TYPE_CHECKING, Iterable from synapse.api.constants import EduTypes, EventTypes, Membership, PresenceState from synapse.api.errors import AuthError, SynapseError -from synapse.events.utils import ClientEvent, SerializeEventConfig +from synapse.events.utils import FilteredEvent, SerializeEventConfig from synapse.handlers.presence import format_user_presence_state from synapse.storage.databases.main.events_worker import EventRedactBehaviour from synapse.streams.config import PaginationConfig @@ -101,7 +101,7 @@ class EventStreamHandler: # joined room, we need to send down presence for those users. to_add: list[JsonDict] = [] for event in events: - if not isinstance(event, ClientEvent): + if not isinstance(event, FilteredEvent): continue if event.event.type == EventTypes.Member: if event.event.membership != Membership.JOIN: @@ -154,7 +154,7 @@ class EventHandler: room_id: str | None, event_id: str, show_redacted: bool = False, - ) -> ClientEvent | None: + ) -> FilteredEvent | None: """Retrieve a single specified event on behalf of a user. The event will be transformed in a user-specific and time-specific way, e.g. having unsigned metadata added or being erased depending on who is accessing. diff --git a/synapse/handlers/initial_sync.py b/synapse/handlers/initial_sync.py index df78457838..56c16ba469 100644 --- a/synapse/handlers/initial_sync.py +++ b/synapse/handlers/initial_sync.py @@ -30,7 +30,7 @@ from synapse.api.constants import ( Membership, ) from synapse.api.errors import SynapseError -from synapse.events.utils import ClientEvent, SerializeEventConfig +from synapse.events.utils import FilteredEvent, SerializeEventConfig from synapse.events.validator import EventValidator from synapse.handlers.presence import format_user_presence_state from synapse.handlers.receipts import ReceiptEventSource @@ -186,7 +186,7 @@ class InitialSyncHandler: invite_event = await self.store.get_event(event.event_id) d["invite"] = await self._event_serializer.serialize_event( - ClientEvent(event=invite_event, membership=None), + FilteredEvent(event=invite_event, membership=None), time_now, config=serializer_options, ) @@ -226,7 +226,7 @@ class InitialSyncHandler: ).addErrback(unwrapFirstError) client_messages: list[ - ClientEvent + FilteredEvent ] = await filter_and_transform_events_for_client( self._storage_controllers, user_id, @@ -252,7 +252,7 @@ class InitialSyncHandler: } d["state"] = await self._event_serializer.serialize_events( - [ClientEvent.state(e) for e in current_state.values()], + [FilteredEvent.state(e) for e in current_state.values()], time_now=time_now, config=serializer_options, ) @@ -385,7 +385,7 @@ class InitialSyncHandler: ) client_messages: list[ - ClientEvent + FilteredEvent ] = await filter_and_transform_events_for_client( self._storage_controllers, requester.user.to_string(), @@ -415,7 +415,7 @@ class InitialSyncHandler: "state": ( # Don't bundle aggregations as this is a deprecated API. await self._event_serializer.serialize_events( - [ClientEvent.state(e) for e in room_state.values()], + [FilteredEvent.state(e) for e in room_state.values()], time_now, config=serialize_options, ) @@ -441,7 +441,7 @@ class InitialSyncHandler: serialize_options = SerializeEventConfig(requester=requester) # Don't bundle aggregations as this is a deprecated API. state = await self._event_serializer.serialize_events( - [ClientEvent.state(e) for e in current_state.values()], + [FilteredEvent.state(e) for e in current_state.values()], time_now, config=serialize_options, ) @@ -503,7 +503,7 @@ class InitialSyncHandler: ) client_messages: list[ - ClientEvent + FilteredEvent ] = await filter_and_transform_events_for_client( self._storage_controllers, requester.user.to_string(), diff --git a/synapse/handlers/message.py b/synapse/handlers/message.py index ceb1523eca..319d70cbe8 100644 --- a/synapse/handlers/message.py +++ b/synapse/handlers/message.py @@ -62,7 +62,7 @@ from synapse.events.snapshot import ( UnpersistedEventContextBase, ) from synapse.events.utils import ( - ClientEvent, + FilteredEvent, SerializeEventConfig, maybe_upsert_event_field, ) @@ -265,7 +265,7 @@ class MessageHandler: room_state = room_state_events[membership_event_id] events = await self._event_serializer.serialize_events( - [ClientEvent.state(e) for e in room_state.values()], + [FilteredEvent.state(e) for e in room_state.values()], self.clock.time_msec(), config=SerializeEventConfig(requester=requester), ) diff --git a/synapse/handlers/pagination.py b/synapse/handlers/pagination.py index 4e39cc28eb..e424905c72 100644 --- a/synapse/handlers/pagination.py +++ b/synapse/handlers/pagination.py @@ -29,7 +29,7 @@ from synapse.api.constants import Direction, EventTypes, Membership from synapse.api.errors import SynapseError from synapse.api.filtering import Filter from synapse.events import EventBase -from synapse.events.utils import ClientEvent +from synapse.events.utils import FilteredEvent from synapse.handlers.relations import BundledAggregations from synapse.handlers.worker_lock import NEW_EVENT_DURING_PURGE_LOCK_NAME from synapse.logging.opentracing import trace @@ -80,7 +80,7 @@ class GetMessagesResult: Everything needed to serialize a `/messages` response. """ - messages_chunk: list[ClientEvent] + messages_chunk: list[FilteredEvent] """ A list of room events. @@ -692,9 +692,9 @@ class PaginationHandler: is_peeking=(member_event_id is None), ) else: - client_events = [ClientEvent(event=e, membership=None) for e in events] + client_events = [FilteredEvent(event=e, membership=None) for e in events] - client_events_result: list[ClientEvent] = client_events + client_events_result: list[FilteredEvent] = client_events # if after the filter applied there are no more events # return immediately - but there might be more in next_token batch diff --git a/synapse/handlers/relations.py b/synapse/handlers/relations.py index 6fc108190c..61602bce03 100644 --- a/synapse/handlers/relations.py +++ b/synapse/handlers/relations.py @@ -33,7 +33,7 @@ import attr from synapse.api.constants import Direction, EventTypes, RelationTypes from synapse.api.errors import SynapseError from synapse.events import EventBase, relation_from_event -from synapse.events.utils import ClientEvent, SerializeEventConfig +from synapse.events.utils import FilteredEvent, SerializeEventConfig from synapse.logging.context import make_deferred_yieldable, run_in_background from synapse.logging.opentracing import trace from synapse.storage.databases.main.relations import ThreadsNextBatch, _RelatedEvent @@ -154,7 +154,7 @@ class RelationsHandler: [e.event_id for e in related_events] ) - client_events: list[ClientEvent] = await filter_and_transform_events_for_client( + client_events: list[FilteredEvent] = await filter_and_transform_events_for_client( self._storage_controllers, user_id, events, @@ -432,7 +432,7 @@ class RelationsHandler: @trace async def get_bundled_aggregations( - self, events: Iterable[EventBase | ClientEvent], user_id: str + self, events: Iterable[EventBase | FilteredEvent], user_id: str ) -> dict[str, BundledAggregations]: """Generate bundled aggregations for events. @@ -449,8 +449,8 @@ class RelationsHandler: The results may include additional events which are related to the requested events. """ - # Unwrap ClientEvent wrappers to get bare EventBase objects. - base_events = [e.event if isinstance(e, ClientEvent) else e for e in events] + # Unwrap FilteredEvent wrappers to get bare EventBase objects. + base_events = [e.event if isinstance(e, FilteredEvent) else e for e in events] # De-duplicated events by ID to handle the same event requested multiple times. events_by_id = {} @@ -602,7 +602,7 @@ class RelationsHandler: # Limit the returned threads to those the user has participated in. events = [event for event in events if participated[event.event_id]] - client_events: list[ClientEvent] = await filter_and_transform_events_for_client( + client_events: list[FilteredEvent] = await filter_and_transform_events_for_client( self._storage_controllers, user_id, events, diff --git a/synapse/handlers/room.py b/synapse/handlers/room.py index 60a0622499..629e08f713 100644 --- a/synapse/handlers/room.py +++ b/synapse/handlers/room.py @@ -67,7 +67,7 @@ from synapse.api.room_versions import KNOWN_ROOM_VERSIONS, RoomVersion from synapse.event_auth import validate_event_for_room_version from synapse.events import EventBase from synapse.events.snapshot import UnpersistedEventContext -from synapse.events.utils import ClientEvent, copy_and_fixup_power_levels_contents +from synapse.events.utils import FilteredEvent, copy_and_fixup_power_levels_contents from synapse.handlers.relations import BundledAggregations from synapse.rest.admin._base import assert_user_is_admin from synapse.streams import EventSource @@ -109,9 +109,9 @@ FIVE_MINUTES_IN_MS = 5 * 60 * 1000 @attr.s(slots=True, frozen=True, auto_attribs=True) class EventContext: - events_before: list[ClientEvent] - event: ClientEvent - events_after: list[ClientEvent] + events_before: list[FilteredEvent] + event: FilteredEvent + events_after: list[FilteredEvent] state: list[EventBase] aggregations: dict[str, BundledAggregations] start: str @@ -1916,9 +1916,9 @@ class RoomContextHandler: # The user is peeking if they aren't in the room already is_peeking = not is_user_in_room - async def filter_evts(events: list[EventBase]) -> list[ClientEvent]: + async def filter_evts(events: list[EventBase]) -> list[FilteredEvent]: if use_admin_priviledge: - return [ClientEvent(event=e, membership=None) for e in events] + return [FilteredEvent(event=e, membership=None) for e in events] return await filter_and_transform_events_for_client( self._storage_controllers, user.to_string(), diff --git a/synapse/handlers/search.py b/synapse/handlers/search.py index 6c6816efbc..30e072d011 100644 --- a/synapse/handlers/search.py +++ b/synapse/handlers/search.py @@ -29,7 +29,7 @@ from unpaddedbase64 import decode_base64, encode_base64 from synapse.api.constants import EventTypes, Membership from synapse.api.errors import NotFoundError, SynapseError from synapse.api.filtering import Filter -from synapse.events.utils import ClientEvent, SerializeEventConfig +from synapse.events.utils import FilteredEvent, SerializeEventConfig from synapse.types import JsonDict, Requester, StrCollection, StreamKeyType, UserID from synapse.types.state import StateFilter from synapse.visibility import filter_and_transform_events_for_client @@ -47,7 +47,7 @@ class _SearchResult: # A mapping of event ID to the rank of that event. rank_map: dict[str, int] # A list of the resulting events. - allowed_events: list[ClientEvent] + allowed_events: list[FilteredEvent] # A map of room ID to results. room_groups: dict[str, JsonDict] # A set of event IDs to highlight. @@ -359,7 +359,7 @@ class SearchHandler: state_results[room_id] = list(state.values()) aggregations = await self._relations_handler.get_bundled_aggregations( - # Generate an iterable of ClientEvent for all the events that will be + # Generate an iterable of FilteredEvent for all the events that will be # returned, including contextual events. itertools.chain( # The events_before and events_after for each context. @@ -416,7 +416,7 @@ class SearchHandler: if state_results: rooms_cat_res["state"] = { room_id: await self._event_serializer.serialize_events( - [ClientEvent.state(e) for e in state_events], + [FilteredEvent.state(e) for e in state_events], time_now, config=serialize_options, ) @@ -550,7 +550,7 @@ class SearchHandler: highlights = set() - room_events: list[ClientEvent] = [] + room_events: list[FilteredEvent] = [] i = 0 pagination_token = batch_token @@ -633,7 +633,7 @@ class SearchHandler: async def _calculate_event_contexts( self, user: UserID, - allowed_events: list[ClientEvent], + allowed_events: list[FilteredEvent], before_limit: int, after_limit: int, include_profile: bool, diff --git a/synapse/handlers/sliding_sync/__init__.py b/synapse/handlers/sliding_sync/__init__.py index 779ff24b51..1cc587d4a7 100644 --- a/synapse/handlers/sliding_sync/__init__.py +++ b/synapse/handlers/sliding_sync/__init__.py @@ -23,7 +23,7 @@ from typing_extensions import assert_never from synapse.api.constants import Direction, EventTypes, Membership from synapse.events import EventBase -from synapse.events.utils import ClientEvent, strip_event +from synapse.events.utils import FilteredEvent, strip_event from synapse.handlers.relations import BundledAggregations from synapse.handlers.sliding_sync.extensions import SlidingSyncExtensionHandler from synapse.handlers.sliding_sync.room_lists import ( @@ -679,7 +679,7 @@ class SlidingSyncHandler: # membership. Currently, we have to make all of these optional because # `invite`/`knock` rooms only have `stripped_state`. See # https://github.com/matrix-org/matrix-spec-proposals/pull/3575#discussion_r1653045932 - timeline_events: list[ClientEvent] = [] + timeline_events: list[FilteredEvent] = [] bundled_aggregations: dict[str, BundledAggregations] | None = None limited: bool | None = None prev_batch_token: StreamToken | None = None @@ -1485,7 +1485,7 @@ class SlidingSyncHandler: self, room_id: str, to_token: StreamToken, - timeline: list[ClientEvent], + timeline: list[FilteredEvent], check_outside_timeline: bool, ) -> int | None: """Get a bump stamp for the room, if we have a bump event and it has diff --git a/synapse/handlers/sync.py b/synapse/handlers/sync.py index 47eba34a22..6a790f8d96 100644 --- a/synapse/handlers/sync.py +++ b/synapse/handlers/sync.py @@ -43,7 +43,7 @@ from synapse.api.filtering import FilterCollection from synapse.api.presence import UserPresenceState from synapse.api.room_versions import KNOWN_ROOM_VERSIONS from synapse.events import EventBase -from synapse.events.utils import ClientEvent +from synapse.events.utils import FilteredEvent from synapse.handlers.relations import BundledAggregations from synapse.logging import issue9533_logger from synapse.logging.context import current_context @@ -124,7 +124,7 @@ class SyncConfig: @attr.s(slots=True, frozen=True, auto_attribs=True) class TimelineBatch: prev_batch: StreamToken - events: Sequence[ClientEvent] + events: Sequence[FilteredEvent] limited: bool # A mapping of event ID to the bundled aggregations for the above events. # This is only calculated if limited is true. @@ -149,7 +149,7 @@ class JoinedSyncResult: state: StateMap[EventBase] ephemeral: list[JsonDict] account_data: list[JsonDict] - sticky: list[ClientEvent] + sticky: list[FilteredEvent] unread_notifications: JsonDict unread_thread_notifications: JsonDict summary: JsonDict | None @@ -700,7 +700,7 @@ class SyncHandler: log_kv({"limited": limited}) - client_recents: list[ClientEvent] + client_recents: list[FilteredEvent] if potential_recents: recents = await sync_config.filter_collection.filter_room_timeline( potential_recents @@ -839,7 +839,7 @@ class SyncHandler: ) loaded_recents_client: list[ - ClientEvent + FilteredEvent ] = await filter_and_transform_events_for_client( self._storage_controllers, sync_config.user.to_string(), @@ -2883,7 +2883,7 @@ class SyncHandler: if room_builder.rtype == "joined": unread_notifications: dict[str, int] = {} - sticky_events: list[ClientEvent] = [] + sticky_events: list[FilteredEvent] = [] if sticky_event_ids: # As per MSC4354: # Remove sticky events that are already in the timeline, else we will needlessly duplicate diff --git a/synapse/notifier.py b/synapse/notifier.py index 2b6c13dd74..f1cec74462 100644 --- a/synapse/notifier.py +++ b/synapse/notifier.py @@ -41,7 +41,7 @@ from twisted.internet.defer import Deferred from synapse.api.constants import EduTypes, EventTypes, HistoryVisibility, Membership from synapse.api.errors import AuthError from synapse.events import EventBase -from synapse.events.utils import ClientEvent +from synapse.events.utils import FilteredEvent from synapse.handlers.presence import format_user_presence_state from synapse.logging import issue9533_logger from synapse.logging.context import PreserveLoggingContext @@ -211,7 +211,7 @@ class _NotifierUserStream: @attr.s(slots=True, frozen=True, auto_attribs=True) class EventStreamResult: - events: list[JsonDict | ClientEvent] + events: list[JsonDict | FilteredEvent] start_token: StreamToken end_token: StreamToken @@ -766,7 +766,7 @@ class Notifier: # The events fetched from each source are a JsonDict, EventBase, or # UserPresenceState, but see below for UserPresenceState being # converted to JsonDict. - events: list[JsonDict | ClientEvent] = [] + events: list[JsonDict | FilteredEvent] = [] end_token = from_token for keyname, source in self.event_sources.sources.get_sources(): diff --git a/synapse/rest/admin/events.py b/synapse/rest/admin/events.py index 01bfadd35e..31673ca061 100644 --- a/synapse/rest/admin/events.py +++ b/synapse/rest/admin/events.py @@ -3,7 +3,7 @@ from typing import TYPE_CHECKING from synapse.api.errors import NotFoundError from synapse.events.utils import ( - ClientEvent, + FilteredEvent, SerializeEventConfig, format_event_raw, ) @@ -67,7 +67,7 @@ class EventRestServlet(RestServlet): ) res = { "event": await self._event_serializer.serialize_event( - ClientEvent(event=event, membership=None), + FilteredEvent(event=event, membership=None), self._clock.time_msec(), config=config, ) diff --git a/synapse/rest/admin/rooms.py b/synapse/rest/admin/rooms.py index 4d9cda807a..61511b9360 100644 --- a/synapse/rest/admin/rooms.py +++ b/synapse/rest/admin/rooms.py @@ -29,7 +29,7 @@ from synapse.api.constants import Direction, EventTypes, JoinRules, Membership from synapse.api.errors import AuthError, Codes, NotFoundError, SynapseError from synapse.api.filtering import Filter from synapse.events.utils import ( - ClientEvent, + FilteredEvent, SerializeEventConfig, ) from synapse.handlers.pagination import ( @@ -531,7 +531,7 @@ class RoomStateRestServlet(RestServlet): events = await self.store.get_events(event_ids.values()) now = self.clock.time_msec() room_state = await self._event_serializer.serialize_events( - [ClientEvent.state(e) for e in events.values()], now + [FilteredEvent.state(e) for e in events.values()], now ) ret = {"state": room_state} @@ -900,7 +900,7 @@ class RoomEventContextServlet(RestServlet): bundle_aggregations=event_context.aggregations, ), "state": await self._event_serializer.serialize_events( - [ClientEvent.state(e) for e in event_context.state], + [FilteredEvent.state(e) for e in event_context.state], time_now, ), "start": event_context.start, diff --git a/synapse/rest/client/notifications.py b/synapse/rest/client/notifications.py index 43562f1eb9..f80a43b297 100644 --- a/synapse/rest/client/notifications.py +++ b/synapse/rest/client/notifications.py @@ -24,7 +24,7 @@ from typing import TYPE_CHECKING from synapse.api.constants import ReceiptTypes from synapse.events.utils import ( - ClientEvent, + FilteredEvent, SerializeEventConfig, format_event_for_client_v2_without_room_id, ) @@ -112,7 +112,7 @@ class NotificationsServlet(RestServlet): "ts": pa.received_ts, "event": ( await self._event_serializer.serialize_event( - ClientEvent(event=notif_events[pa.event_id], membership=None), + FilteredEvent(event=notif_events[pa.event_id], membership=None), now, config=serialize_options, ) diff --git a/synapse/rest/client/room.py b/synapse/rest/client/room.py index 87126db8a4..b60441256d 100644 --- a/synapse/rest/client/room.py +++ b/synapse/rest/client/room.py @@ -52,7 +52,7 @@ from synapse.api.errors import ( ) from synapse.api.filtering import Filter from synapse.events.utils import ( - ClientEvent, + FilteredEvent, EventClientSerializer, SerializeEventConfig, format_event_for_client_v2, @@ -287,7 +287,7 @@ class RoomStateEventRestServlet(RestServlet): if format == "event": event = await self._event_serializer.serialize_event( - ClientEvent.state(data), + FilteredEvent.state(data), self.clock.time_msec(), config=SerializeEventConfig( event_format=format_event_for_client_v2, @@ -867,7 +867,7 @@ async def encode_messages_response( serialized_result[ "state" ] = await serialize_deps.event_serializer.serialize_events( - [ClientEvent.state(e) for e in get_messages_result.state], + [FilteredEvent.state(e) for e in get_messages_result.state], time_now, config=serialize_options, ) @@ -1175,7 +1175,7 @@ class RoomEventContextServlet(RestServlet): config=serializer_options, ), "state": await self._event_serializer.serialize_events( - [ClientEvent.state(e) for e in event_context.state], + [FilteredEvent.state(e) for e in event_context.state], time_now, config=serializer_options, ), diff --git a/synapse/rest/client/sync.py b/synapse/rest/client/sync.py index 97f84eb764..969e069f5e 100644 --- a/synapse/rest/client/sync.py +++ b/synapse/rest/client/sync.py @@ -30,7 +30,7 @@ from synapse.api.filtering import FilterCollection from synapse.api.presence import UserPresenceState from synapse.api.ratelimiting import Ratelimiter from synapse.events.utils import ( - ClientEvent, + FilteredEvent, SerializeEventConfig, format_event_for_client_v2_without_room_id, format_event_raw, @@ -448,7 +448,7 @@ class SyncRestServlet(RestServlet): invited = {} for room in rooms: invite = await self._event_serializer.serialize_event( - ClientEvent(event=room.invite, membership=None), + FilteredEvent(event=room.invite, membership=None), time_now, config=serialize_options, ) @@ -486,7 +486,7 @@ class SyncRestServlet(RestServlet): knocked = {} for room in rooms: knock = await self._event_serializer.serialize_event( - ClientEvent(event=room.knock, membership=None), + FilteredEvent(event=room.knock, membership=None), time_now, config=serialize_options, ) @@ -600,7 +600,7 @@ class SyncRestServlet(RestServlet): ) serialized_state = await self._event_serializer.serialize_events( - [ClientEvent.state(e) for e in state_events], + [FilteredEvent.state(e) for e in state_events], time_now, config=serialize_options, ) @@ -990,7 +990,7 @@ class SlidingSyncRestServlet(RestServlet): ): serialized_required_state = ( await self.event_serializer.serialize_events( - [ClientEvent.state(e) for e in room_result.required_state], + [FilteredEvent.state(e) for e in room_result.required_state], time_now, config=serialize_options, ) diff --git a/synapse/types/handlers/sliding_sync.py b/synapse/types/handlers/sliding_sync.py index 9692ead0b3..1a84bf1ff8 100644 --- a/synapse/types/handlers/sliding_sync.py +++ b/synapse/types/handlers/sliding_sync.py @@ -34,7 +34,7 @@ from pydantic import ConfigDict from synapse.api.constants import EventTypes from synapse.events import EventBase -from synapse.events.utils import ClientEvent +from synapse.events.utils import FilteredEvent from synapse.types import ( DeviceListUpdates, JsonDict, @@ -186,7 +186,7 @@ class SlidingSyncResult: # Should be empty for invite/knock rooms with `stripped_state` required_state: list[EventBase] # Should be empty for invite/knock rooms with `stripped_state` - timeline_events: list[ClientEvent] + timeline_events: list[FilteredEvent] bundled_aggregations: dict[str, "BundledAggregations"] | None # Optional because it's only relevant to invite/knock rooms stripped_state: list[JsonDict] diff --git a/synapse/visibility.py b/synapse/visibility.py index f2736eec6c..fc3e9dfa49 100644 --- a/synapse/visibility.py +++ b/synapse/visibility.py @@ -37,7 +37,7 @@ from synapse.api.constants import ( ) from synapse.events import EventBase from synapse.events.snapshot import EventContext -from synapse.events.utils import ClientEvent, prune_event +from synapse.events.utils import FilteredEvent, prune_event from synapse.logging.opentracing import trace from synapse.storage.controllers import StorageControllers from synapse.storage.databases.main import DataStore @@ -81,7 +81,7 @@ async def filter_and_transform_events_for_client( is_peeking: bool = False, always_include_ids: frozenset[str] = frozenset(), filter_send_to_client: bool = True, -) -> list[ClientEvent]: +) -> list[FilteredEvent]: """ Check which events a user is allowed to see. If the user can see the event but its sender asked for their data to be erased, prune the content of the event. @@ -101,7 +101,7 @@ async def filter_and_transform_events_for_client( also be called to check whether a user can see the state at a given point. Returns: - The filtered events, wrapped in ClientEvent with the requesting user's + The filtered events, wrapped in FilteredEvent with the requesting user's membership at each event annotated for use during serialization (MSC4115). """ # Filter out events that have been soft failed so that we don't relay them @@ -175,7 +175,7 @@ async def filter_and_transform_events_for_client( room_id ] = await storage.main.get_retention_policy_for_room(room_id) - def allowed(event: EventBase) -> ClientEvent | None: + def allowed(event: EventBase) -> FilteredEvent | None: state_after_event = event_id_to_state.get(event.event_id) filtered = _check_client_allowed_to_see_event( user_id=user_id, @@ -232,9 +232,9 @@ async def filter_and_transform_events_for_client( else Membership.LEAVE ) - return ClientEvent(event=filtered, membership=user_membership) + return FilteredEvent(event=filtered, membership=user_membership) - # Check each event: gives an iterable of None or a ClientEvent. + # Check each event: gives an iterable of None or a FilteredEvent. filtered_events = map(allowed, events) # Turn it into a list and remove None entries before returning. diff --git a/tests/events/test_utils.py b/tests/events/test_utils.py index 6727a92437..8ac02ccd88 100644 --- a/tests/events/test_utils.py +++ b/tests/events/test_utils.py @@ -29,7 +29,7 @@ from synapse.api.constants import EventContentFields from synapse.api.room_versions import RoomVersions from synapse.events import EventBase, make_event_from_dict from synapse.events.utils import ( - ClientEvent, + FilteredEvent, PowerLevelsContent, SerializeEventConfig, _split_field, @@ -661,7 +661,7 @@ class SerializeEventTestCase(HomeserverTestCase): ) -> JsonDict: return self.get_success( self._event_serializer.serialize_event( - ClientEvent(event=ev, membership=None), + FilteredEvent(event=ev, membership=None), 1479807801915, config=SerializeEventConfig( only_event_fields=fields, @@ -782,7 +782,7 @@ class SerializeEventTestCase(HomeserverTestCase): def test_event_fields_fail_if_fields_not_str(self) -> None: self.get_failure( self._event_serializer.serialize_event( - ClientEvent( + FilteredEvent( event=MockEvent(room_id="!foo:bar", content={"foo": "bar"}), membership=None, ), diff --git a/tests/rest/client/test_retention.py b/tests/rest/client/test_retention.py index da9677d4f5..1f8d9154ca 100644 --- a/tests/rest/client/test_retention.py +++ b/tests/rest/client/test_retention.py @@ -23,7 +23,7 @@ from unittest.mock import Mock from twisted.internet.testing import MemoryReactor from synapse.api.constants import EventTypes -from synapse.events.utils import ClientEvent +from synapse.events.utils import FilteredEvent from synapse.rest import admin from synapse.rest.client import login, room from synapse.server import HomeServer @@ -258,7 +258,7 @@ class RetentionTestCase(unittest.HomeserverTestCase): time_now = self.clock.time_msec() serialized = self.get_success( self.serializer.serialize_event( - ClientEvent(event=event, membership=None), time_now + FilteredEvent(event=event, membership=None), time_now ) )