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

Commit

Permalink
disallow-untyped-defs for synapse.push (#11023)
Browse files Browse the repository at this point in the history
  • Loading branch information
David Robertson committed Oct 11, 2021
1 parent 5e29d41 commit e0f11ae
Show file tree
Hide file tree
Showing 7 changed files with 28 additions and 10 deletions.
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 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

0 comments on commit e0f11ae

Please sign in to comment.