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

disallow-untyped-defs for synapse.push #11023

Merged
merged 3 commits into from
Oct 11, 2021
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/11023.misc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Add additional type hints for `synapse.push`.
3 changes: 3 additions & 0 deletions mypy.ini
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,9 @@ files =
[mypy-synapse.handlers.*]
disallow_untyped_defs = True

[mypy-synapse.push.*]
disallow_untyped_defs = True

[mypy-synapse.rest.*]
disallow_untyped_defs = True

Expand Down
2 changes: 1 addition & 1 deletion scripts/synapse_port_db
Original file line number Diff line number Diff line change
Expand Up @@ -1069,7 +1069,7 @@ class CursesProgress(Progress):

self.stdscr.addstr(0, 0, status, curses.A_BOLD)

max_len = max([len(t) for t in self.tables.keys()])
max_len = max(len(t) for t in self.tables.keys())

left_margin = 5
middle_space = 1
Expand Down
2 changes: 1 addition & 1 deletion synapse/push/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ def on_new_notifications(self, max_token: RoomStreamToken) -> None:
self._start_processing()

@abc.abstractmethod
def _start_processing(self):
def _start_processing(self) -> None:
"""Start processing push notifications."""
raise NotImplementedError()

Expand Down
20 changes: 16 additions & 4 deletions synapse/push/bulk_push_rule_evaluator.py
Original file line number Diff line number Diff line change
Expand Up @@ -290,6 +290,12 @@ def _condition_checker(
return True


MemberMap = Dict[str, Tuple[str, str]]
Rule = Dict[str, dict]
RulesByUser = Dict[str, List[Rule]]
StateGroup = Union[object, int]


@attr.s(slots=True)
class RulesForRoomData:
"""The data stored in the cache by `RulesForRoom`.
Expand All @@ -299,16 +305,16 @@ class RulesForRoomData:
"""

# event_id -> (user_id, state)
member_map = attr.ib(type=Dict[str, Tuple[str, str]], factory=dict)
member_map = attr.ib(type=MemberMap, factory=dict)
# user_id -> rules
rules_by_user = attr.ib(type=Dict[str, List[Dict[str, dict]]], factory=dict)
rules_by_user = attr.ib(type=RulesByUser, factory=dict)

# The last state group we updated the caches for. If the state_group of
# a new event comes along, we know that we can just return the cached
# result.
# On invalidation of the rules themselves (if the user changes them),
# we invalidate everything and set state_group to `object()`
state_group = attr.ib(type=Union[object, int], factory=object)
state_group = attr.ib(type=StateGroup, factory=object)

# A sequence number to keep track of when we're allowed to update the
# cache. We bump the sequence number when we invalidate the cache. If
Expand Down Expand Up @@ -532,7 +538,13 @@ async def _update_rules_with_member_event_ids(

self.update_cache(sequence, members, ret_rules_by_user, state_group)

def update_cache(self, sequence, members, rules_by_user, state_group) -> None:
def update_cache(
self,
sequence: int,
members: MemberMap,
rules_by_user: RulesByUser,
state_group: StateGroup,
) -> None:
if sequence == self.data.sequence:
self.data.member_map.update(members)
self.data.rules_by_user = rules_by_user
Expand Down
4 changes: 3 additions & 1 deletion synapse/push/clientformat.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,9 @@
from synapse.types import UserID


def format_push_rules_for_user(user: UserID, ruleslist) -> Dict[str, Dict[str, list]]:
def format_push_rules_for_user(
user: UserID, ruleslist: List
) -> Dict[str, Dict[str, list]]:
"""Converts a list of rawrules and a enabled map into nested dictionaries
to match the Matrix client-server format for push rules"""

Expand Down
4 changes: 2 additions & 2 deletions synapse/push/httppusher.py
Original file line number Diff line number Diff line change
Expand Up @@ -403,10 +403,10 @@ async def dispatch_push(
rejected = resp["rejected"]
return rejected

async def _send_badge(self, badge):
async def _send_badge(self, badge: int) -> None:
"""
Args:
badge (int): number of unread messages
badge: number of unread messages
"""
logger.debug("Sending updated badge count %d to %s", badge, self.name)
d = {
Expand Down
4 changes: 2 additions & 2 deletions synapse/storage/databases/main/push_rule.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
# limitations under the License.
import abc
import logging
from typing import List, Tuple, Union
from typing import Dict, List, Tuple, Union

from synapse.api.errors import NotFoundError, StoreError
from synapse.push.baserules import list_with_base_rules
Expand Down Expand Up @@ -139,7 +139,7 @@ async def get_push_rules_for_user(self, user_id):
return _load_rules(rows, enabled_map, use_new_defaults)

@cached(max_entries=5000)
async def get_push_rules_enabled_for_user(self, user_id):
async def get_push_rules_enabled_for_user(self, user_id) -> Dict[str, bool]:
results = await self.db_pool.simple_select_list(
table="push_rules_enable",
keyvalues={"user_name": user_id},
Expand Down