Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/19712.misc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Small simplifications to the events class.
9 changes: 9 additions & 0 deletions synapse/events/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
)

import attr
from typing_extensions import deprecated
from unpaddedbase64 import encode_base64

from synapse.api.constants import (
Expand Down Expand Up @@ -219,6 +220,9 @@ def __init__(
state_key: DictProperty[str] = DictProperty("state_key")
type: DictProperty[str] = DictProperty("type")

# This is a deprecated property, use `sender` instead. Only used by modules.
user_id: DictProperty[str] = DictProperty("sender")

@property
def event_id(self) -> str:
raise NotImplementedError()
Expand Down Expand Up @@ -360,6 +364,11 @@ def __repr__(self) -> str:
">"
)

# Using `__getitem__` is deprecated. Only used by modules.
@deprecated("Use attribute access instead")
def __getitem__(self, field: str) -> Any | None:
Comment thread
erikjohnston marked this conversation as resolved.
return self._dict[field]


class FrozenEvent(EventBase):
format_version = EventFormatVersions.ROOM_V1_V2 # All events of this type are V1
Expand Down
18 changes: 18 additions & 0 deletions tests/module_api/test_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -828,6 +828,24 @@ async def _on_logged_out_mock(
# Ensure the pushers were deleted after the callback.
self.assertEqual(len(self.hs.get_pusherpool().pushers[user_id].values()), 0)

def test_event_deprecated_methods(self) -> None:
"""Test that deprecated methods on events are still functional."""
user_id = self.register_user("user", "password")
tok = self.login("user", "password")

room_id = self.helper.create_room_as(tok=tok)

state = self.get_success(
self.hs.get_storage_controllers().state.get_current_state(room_id)
)
create_event = state[(EventTypes.Create, "")]

# `.user_id` is a deprecated alias for `.sender`.
self.assertEqual(create_event.user_id, user_id)

# The event supports looking up keys via `__getitem__` although deprecated
self.assertEqual(create_event["room_id"], room_id)


class ModuleApiWorkerTestCase(BaseModuleApiTestCase, BaseMultiWorkerStreamTestCase):
"""For testing ModuleApi functionality in a multi-worker setup"""
Expand Down
Loading