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

remove constantly lib use and switch to enums. #12624

Merged
merged 6 commits into from
May 4, 2022
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/12624.misc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Remove use of constantly library and switch to enums for EventRedactBehaviour. Contributed by @andrewdoh.
3 changes: 0 additions & 3 deletions mypy.ini
Original file line number Diff line number Diff line change
Expand Up @@ -244,9 +244,6 @@ ignore_missing_imports = True
[mypy-canonicaljson]
ignore_missing_imports = True

[mypy-constantly]
ignore_missing_imports = True

[mypy-ijson.*]
ignore_missing_imports = True

Expand Down
2 changes: 1 addition & 1 deletion synapse/handlers/events.py
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ async def get_event(
event.
"""
redact_behaviour = (
EventRedactBehaviour.AS_IS if show_redacted else EventRedactBehaviour.REDACT
EventRedactBehaviour.as_is if show_redacted else EventRedactBehaviour.redact
)
event = await self.store.get_event(
event_id, check_room_id=room_id, redact_behaviour=redact_behaviour
Expand Down
4 changes: 2 additions & 2 deletions synapse/handlers/federation.py
Original file line number Diff line number Diff line change
Expand Up @@ -316,7 +316,7 @@ async def _maybe_backfill_inner(

events_to_check = await self.store.get_events_as_list(
event_ids_to_check,
redact_behaviour=EventRedactBehaviour.AS_IS,
redact_behaviour=EventRedactBehaviour.as_is,
get_prev_content=False,
)

Expand Down Expand Up @@ -1494,7 +1494,7 @@ async def _sync_partial_state_room(

events = await self.store.get_events_as_list(
batch,
redact_behaviour=EventRedactBehaviour.AS_IS,
redact_behaviour=EventRedactBehaviour.as_is,
allow_rejected=True,
)
for event in events:
Expand Down
2 changes: 1 addition & 1 deletion synapse/handlers/federation_event.py
Original file line number Diff line number Diff line change
Expand Up @@ -860,7 +860,7 @@ async def _resolve_state_at_missing_prevs(
evs = await self._store.get_events(
list(state_map.values()),
get_prev_content=False,
redact_behaviour=EventRedactBehaviour.AS_IS,
redact_behaviour=EventRedactBehaviour.as_is,
)
event_map.update(evs)

Expand Down
4 changes: 2 additions & 2 deletions synapse/handlers/message.py
Original file line number Diff line number Diff line change
Expand Up @@ -1407,7 +1407,7 @@ async def persist_and_notify_client_event(

original_event = await self.store.get_event(
event.redacts,
redact_behaviour=EventRedactBehaviour.AS_IS,
redact_behaviour=EventRedactBehaviour.as_is,
get_prev_content=False,
allow_rejected=False,
allow_none=True,
Expand Down Expand Up @@ -1504,7 +1504,7 @@ async def persist_and_notify_client_event(

original_event = await self.store.get_event(
event.redacts,
redact_behaviour=EventRedactBehaviour.AS_IS,
redact_behaviour=EventRedactBehaviour.as_is,
get_prev_content=False,
allow_rejected=False,
allow_none=True,
Expand Down
2 changes: 1 addition & 1 deletion synapse/state/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -800,7 +800,7 @@ def get_events(

return self.store.get_events(
event_ids,
redact_behaviour=EventRedactBehaviour.AS_IS,
redact_behaviour=EventRedactBehaviour.as_is,
get_prev_content=False,
allow_rejected=allow_rejected,
)
Expand Down
42 changes: 21 additions & 21 deletions synapse/storage/databases/main/events_worker.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

import logging
import threading
from enum import Enum, auto
from typing import (
TYPE_CHECKING,
Any,
Expand All @@ -30,7 +31,6 @@
)

import attr
from constantly import NamedConstant, Names
from prometheus_client import Gauge
from typing_extensions import Literal

Expand Down Expand Up @@ -150,14 +150,14 @@ class _EventRow:
outlier: bool


class EventRedactBehaviour(Names):
class EventRedactBehaviour(Enum):
"""
What to do when retrieving a redacted event from the database.
"""

AS_IS = NamedConstant()
REDACT = NamedConstant()
BLOCK = NamedConstant()
as_is = auto()
redact = auto()
block = auto()


class EventsWorkerStore(SQLBaseStore):
Expand Down Expand Up @@ -327,7 +327,7 @@ async def have_censored_event(self, event_id: str) -> bool:
async def get_event(
self,
event_id: str,
redact_behaviour: EventRedactBehaviour = EventRedactBehaviour.REDACT,
redact_behaviour: EventRedactBehaviour = EventRedactBehaviour.redact,
get_prev_content: bool = ...,
allow_rejected: bool = ...,
allow_none: Literal[False] = ...,
Expand All @@ -339,7 +339,7 @@ async def get_event(
async def get_event(
self,
event_id: str,
redact_behaviour: EventRedactBehaviour = EventRedactBehaviour.REDACT,
redact_behaviour: EventRedactBehaviour = EventRedactBehaviour.redact,
get_prev_content: bool = ...,
allow_rejected: bool = ...,
allow_none: Literal[True] = ...,
Expand All @@ -350,7 +350,7 @@ async def get_event(
async def get_event(
self,
event_id: str,
redact_behaviour: EventRedactBehaviour = EventRedactBehaviour.REDACT,
redact_behaviour: EventRedactBehaviour = EventRedactBehaviour.redact,
get_prev_content: bool = False,
allow_rejected: bool = False,
allow_none: bool = False,
Expand All @@ -362,9 +362,9 @@ async def get_event(
event_id: The event_id of the event to fetch

redact_behaviour: Determine what to do with a redacted event. Possible values:
* AS_IS - Return the full event body with no redacted content
* REDACT - Return the event but with a redacted body
* DISALLOW - Do not return redacted events (behave as per allow_none
* as_is - Return the full event body with no redacted content
* redact - Return the event but with a redacted body
* block - Do not return redacted events (behave as per allow_none
if the event is redacted)

get_prev_content: If True and event is a state event,
Expand Down Expand Up @@ -406,7 +406,7 @@ async def get_event(
async def get_events(
self,
event_ids: Collection[str],
redact_behaviour: EventRedactBehaviour = EventRedactBehaviour.REDACT,
redact_behaviour: EventRedactBehaviour = EventRedactBehaviour.redact,
get_prev_content: bool = False,
allow_rejected: bool = False,
) -> Dict[str, EventBase]:
Expand All @@ -417,9 +417,9 @@ async def get_events(

redact_behaviour: Determine what to do with a redacted event. Possible
values:
* AS_IS - Return the full event body with no redacted content
* REDACT - Return the event but with a redacted body
* DISALLOW - Do not return redacted events (omit them from the response)
* as_is - Return the full event body with no redacted content
* redact - Return the event but with a redacted body
* block - Do not return redacted events (omit them from the response)

get_prev_content: If True and event is a state event,
include the previous states content in the unsigned field.
Expand All @@ -442,7 +442,7 @@ async def get_events(
async def get_events_as_list(
self,
event_ids: Collection[str],
redact_behaviour: EventRedactBehaviour = EventRedactBehaviour.REDACT,
redact_behaviour: EventRedactBehaviour = EventRedactBehaviour.redact,
get_prev_content: bool = False,
allow_rejected: bool = False,
) -> List[EventBase]:
Expand All @@ -455,9 +455,9 @@ async def get_events_as_list(
event_ids: The event_ids of the events to fetch

redact_behaviour: Determine what to do with a redacted event. Possible values:
* AS_IS - Return the full event body with no redacted content
* REDACT - Return the event but with a redacted body
* DISALLOW - Do not return redacted events (omit them from the response)
* as_is - Return the full event body with no redacted content
* redact - Return the event but with a redacted body
* block - Do not return redacted events (omit them from the response)

get_prev_content: If True and event is a state event,
include the previous states content in the unsigned field.
Expand Down Expand Up @@ -568,10 +568,10 @@ async def get_events_as_list(
event = entry.event

if entry.redacted_event:
if redact_behaviour == EventRedactBehaviour.BLOCK:
if redact_behaviour == EventRedactBehaviour.block:
# Skip this event
continue
elif redact_behaviour == EventRedactBehaviour.REDACT:
elif redact_behaviour == EventRedactBehaviour.redact:
event = entry.redacted_event

events.append(event)
Expand Down
8 changes: 4 additions & 4 deletions synapse/storage/databases/main/search.py
Original file line number Diff line number Diff line change
Expand Up @@ -494,11 +494,11 @@ async def search_msgs(

results = list(filter(lambda row: row["room_id"] in room_ids, results))

# We set redact_behaviour to BLOCK here to prevent redacted events being returned in
# We set redact_behaviour to block here to prevent redacted events being returned in
# search results (which is a data leak)
events = await self.get_events_as_list( # type: ignore[attr-defined]
[r["event_id"] for r in results],
redact_behaviour=EventRedactBehaviour.BLOCK,
redact_behaviour=EventRedactBehaviour.block,
)

event_map = {ev.event_id: ev for ev in events}
Expand Down Expand Up @@ -652,11 +652,11 @@ async def search_rooms(

results = list(filter(lambda row: row["room_id"] in room_ids, results))

# We set redact_behaviour to BLOCK here to prevent redacted events being returned in
# We set redact_behaviour to block here to prevent redacted events being returned in
# search results (which is a data leak)
events = await self.get_events_as_list( # type: ignore[attr-defined]
[r["event_id"] for r in results],
redact_behaviour=EventRedactBehaviour.BLOCK,
redact_behaviour=EventRedactBehaviour.block,
)

event_map = {ev.event_id: ev for ev in events}
Expand Down
2 changes: 1 addition & 1 deletion synapse/storage/databases/main/signatures.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ async def get_event_reference_hashes(
"""
events = await self.get_events(
event_ids,
redact_behaviour=EventRedactBehaviour.AS_IS,
redact_behaviour=EventRedactBehaviour.as_is,
allow_rejected=True,
)

Expand Down
4 changes: 2 additions & 2 deletions synapse/storage/persist_events.py
Original file line number Diff line number Diff line change
Expand Up @@ -943,7 +943,7 @@ async def _prune_extremities(
dropped_events = await self.main_store.get_events(
dropped_extrems,
allow_rejected=True,
redact_behaviour=EventRedactBehaviour.AS_IS,
redact_behaviour=EventRedactBehaviour.as_is,
)

new_senders = {get_domain_from_id(e.sender) for e, _ in events_context}
Expand Down Expand Up @@ -974,7 +974,7 @@ async def _prune_extremities(
prev_events = await self.main_store.get_events(
new_events,
allow_rejected=True,
redact_behaviour=EventRedactBehaviour.AS_IS,
redact_behaviour=EventRedactBehaviour.as_is,
)
events_to_check = prev_events.values()

Expand Down