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

Commit 97d1739

Browse files
committed
Fixup types
1 parent d910534 commit 97d1739

File tree

6 files changed

+72
-28
lines changed

6 files changed

+72
-28
lines changed

synapse/appservice/__init__.py

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,13 @@
1414
# limitations under the License.
1515
import logging
1616
import re
17-
from typing import TYPE_CHECKING
17+
from typing import TYPE_CHECKING, List
1818

1919
from synapse.api.constants import EventTypes
2020
from synapse.appservice.api import ApplicationServiceApi
21-
from synapse.types import GroupID, get_domain_from_id
22-
from synapse.util.caches.descriptors import cached
21+
from synapse.events import EventBase
22+
from synapse.types import GroupID, UserID, get_domain_from_id
23+
from synapse.util.caches.descriptors import _CacheContext, cached
2324

2425
if TYPE_CHECKING:
2526
from synapse.storage.databases.main import DataStore
@@ -35,7 +36,13 @@ class ApplicationServiceState:
3536
class AppServiceTransaction:
3637
"""Represents an application service transaction."""
3738

38-
def __init__(self, service, id, events, ephemeral=None):
39+
def __init__(
40+
self,
41+
service: ApplicationService,
42+
id: int,
43+
events: List[EventBase],
44+
ephemeral=None,
45+
):
3946
self.service = service
4047
self.id = id
4148
self.events = events
@@ -198,9 +205,11 @@ async def _matches_user(self, event, store):
198205
return does_match
199206

200207
@cached(num_args=1, cache_context=True)
201-
async def matches_user_in_member_list(self, room_id, store, cache_context):
208+
async def matches_user_in_member_list(
209+
self, room_id: str, store: DataStore, cache_context: _CacheContext
210+
):
202211
member_list = await store.get_users_in_room(
203-
room_id, on_invalidate=cache_context.invalidate
212+
room_id
204213
)
205214

206215
# check joined member events
@@ -246,15 +255,17 @@ async def is_interested(self, event, store=None) -> bool:
246255
return False
247256

248257
@cached(num_args=1, cache_context=True)
249-
async def is_interested_in_presence(self, user_id, store, cache_context):
258+
async def is_interested_in_presence(
259+
self, user_id: UserID, store: DataStore, cache_context: _CacheContext
260+
):
250261
# Find all the rooms the sender is in
251262
if self.is_interested_in_user(user_id.to_string()):
252263
return True
253264
room_ids = await store.get_rooms_for_user(user_id.to_string())
254265

255266
# Then find out if the appservice is interested in any of those rooms
256267
for room_id in room_ids:
257-
if await self.matches_user_in_member_list(room_id, store, cache_context):
268+
if await self.matches_user_in_member_list(room_id, store):
258269
return True
259270
return False
260271

synapse/appservice/api.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,13 @@
1414
# limitations under the License.
1515
import logging
1616
import urllib
17-
from typing import TYPE_CHECKING, Optional
17+
from typing import TYPE_CHECKING, Any, List, Optional
1818

1919
from prometheus_client import Counter
2020

2121
from synapse.api.constants import EventTypes, ThirdPartyEntityKind
2222
from synapse.api.errors import CodeMessageException
23+
from synapse.events import EventBase
2324
from synapse.events.utils import serialize_event
2425
from synapse.http.client import SimpleHttpClient
2526
from synapse.types import JsonDict, ThirdPartyInstanceID
@@ -201,7 +202,13 @@ async def _get() -> Optional[JsonDict]:
201202
key = (service.id, protocol)
202203
return await self.protocol_meta_cache.wrap(key, _get)
203204

204-
async def push_bulk(self, service, events, ephemeral=None, txn_id=None):
205+
async def push_bulk(
206+
self,
207+
service: ApplicationService,
208+
events: List[EventBase],
209+
ephemeral: Optional[Any] = None,
210+
txn_id: Optional[int] = None,
211+
):
205212
if service.url is None:
206213
return True
207214

@@ -211,10 +218,9 @@ async def push_bulk(self, service, events, ephemeral=None, txn_id=None):
211218
logger.warning(
212219
"push_bulk: Missing txn ID sending events to %s", service.url
213220
)
214-
txn_id = str(0)
215-
txn_id = str(txn_id)
221+
txn_id = 0
216222

217-
uri = service.url + ("/transactions/%s" % urllib.parse.quote(txn_id))
223+
uri = service.url + ("/transactions/%s" % urllib.parse.quote(str(txn_id)))
218224
body = {"events": events}
219225
if ephemeral:
220226
body["de.sorunome.msc2409.ephemeral"] = ephemeral

synapse/appservice/scheduler.py

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,10 @@
4949
components.
5050
"""
5151
import logging
52+
from typing import Any, List, Optional
5253

53-
from synapse.appservice import ApplicationServiceState
54+
from synapse.appservice import ApplicationService, ApplicationServiceState
55+
from synapse.events import EventBase
5456
from synapse.logging.context import run_in_background
5557
from synapse.metrics.background_process_metrics import run_as_background_process
5658

@@ -82,10 +84,12 @@ async def start(self):
8284
for service in services:
8385
self.txn_ctrl.start_recoverer(service)
8486

85-
def submit_event_for_as(self, service, event):
87+
def submit_event_for_as(self, service: ApplicationService, event: EventBase):
8688
self.queuer.enqueue(service, event)
8789

88-
def submit_ephemeral_events_for_as(self, service, events):
90+
def submit_ephemeral_events_for_as(
91+
self, service: ApplicationService, events: List[Any]
92+
):
8993
self.queuer.enqueue_ephemeral(service, events)
9094

9195

@@ -99,7 +103,7 @@ class _ServiceQueuer:
99103

100104
def __init__(self, txn_ctrl, clock):
101105
self.queued_events = {} # dict of {service_id: [events]}
102-
self.queued_ephemeral = {} # dict of {service_id: [events]}
106+
self.queued_ephemeral = {} # dict of {service_id: [events]}
103107

104108
# the appservices which currently have a transaction in flight
105109
self.requests_in_flight = set()
@@ -118,7 +122,7 @@ def enqueue(self, service, event):
118122
"as-sender-%s" % (service.id), self._send_request, service
119123
)
120124

121-
def enqueue_ephemeral(self, service, events):
125+
def enqueue_ephemeral(self, service: ApplicationService, events: List[Any]):
122126
self.queued_ephemeral.setdefault(service.id, []).extend(events)
123127

124128
# start a sender for this appservice if we don't already have one
@@ -130,7 +134,9 @@ def enqueue_ephemeral(self, service, events):
130134
"as-sender-%s" % (service.id), self._send_request, service
131135
)
132136

133-
async def _send_request(self, service, ephemeral=None):
137+
async def _send_request(
138+
self, service: ApplicationService, ephemeral: Optional[Any] = None
139+
):
134140
# sanity-check: we shouldn't get here if this service already has a sender
135141
# running.
136142
assert service.id not in self.requests_in_flight
@@ -175,9 +181,16 @@ def __init__(self, clock, store, as_api):
175181
# for UTs
176182
self.RECOVERER_CLASS = _Recoverer
177183

178-
async def send(self, service, events, ephemeral=None):
184+
async def send(
185+
self,
186+
service: ApplicationService,
187+
events: List[EventBase],
188+
ephemeral: Optional[Any] = None,
189+
):
179190
try:
180-
txn = await self.store.create_appservice_txn(service=service, events=events, ephemeral=ephemeral)
191+
txn = await self.store.create_appservice_txn(
192+
service=service, events=events, ephemeral=ephemeral
193+
)
181194
service_is_up = await self.is_service_up(service)
182195
if service_is_up:
183196
sent = await txn.send(self.as_api)
@@ -221,7 +234,7 @@ def start_recoverer(self, service):
221234
recoverer.recover()
222235
logger.info("Now %i active recoverers", len(self.recoverers))
223236

224-
async def is_service_up(self, service):
237+
async def is_service_up(self, service: ApplicationService):
225238
state = await self.store.get_appservice_state(service)
226239
return state == ApplicationServiceState.UP or state is None
227240

synapse/handlers/receipts.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
# limitations under the License.
1515
import logging
1616

17+
from synapse.appservice import ApplicationService
1718
from synapse.handlers._base import BaseHandler
1819
from synapse.types import ReadReceipt, get_domain_from_id
1920
from synapse.util.async_helpers import maybe_awaitable
@@ -140,7 +141,9 @@ async def get_new_events(self, from_key, room_ids, **kwargs):
140141

141142
return (events, to_key)
142143

143-
async def get_new_events_as(self, from_key, service, **kwargs):
144+
async def get_new_events_as(
145+
self, from_key: int, service: ApplicationService, **kwargs
146+
):
144147
from_key = int(from_key)
145148
to_key = self.get_current_key()
146149

synapse/storage/databases/main/appservice.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,11 @@
1515
# limitations under the License.
1616
import logging
1717
import re
18+
from typing import Any, List, Optional
1819

19-
from synapse.appservice import AppServiceTransaction
20+
from synapse.appservice import ApplicationService, AppServiceTransaction
2021
from synapse.config.appservice import load_appservices
22+
from synapse.events import EventBase
2123
from synapse.storage._base import SQLBaseStore, db_to_json
2224
from synapse.storage.database import DatabasePool
2325
from synapse.storage.databases.main.events_worker import EventsWorkerStore
@@ -172,7 +174,12 @@ async def set_appservice_state(self, service, state) -> None:
172174
"application_services_state", {"as_id": service.id}, {"state": state}
173175
)
174176

175-
async def create_appservice_txn(self, service, events, ephemeral=None):
177+
async def create_appservice_txn(
178+
self,
179+
service: ApplicationService,
180+
events: List[EventBase],
181+
ephemeral: Optional[Any] = None,
182+
):
176183
"""Atomically creates a new transaction for this application service
177184
with the given list of events.
178185
@@ -353,7 +360,9 @@ def get_new_events_for_appservice_txn(txn):
353360

354361
return upper_bound, events
355362

356-
async def get_type_stream_id_for_appservice(self, service, type: str) -> int:
363+
async def get_type_stream_id_for_appservice(
364+
self, service: ApplicationService, type: str
365+
) -> int:
357366
def get_type_stream_id_for_appservice_txn(txn):
358367
stream_id_type = "%s_stream_id" % type
359368
txn.execute(
@@ -371,7 +380,7 @@ def get_type_stream_id_for_appservice_txn(txn):
371380
)
372381

373382
async def set_type_stream_id_for_appservice(
374-
self, service, type: str, pos: int
383+
self, service: ApplicationService, type: str, pos: int
375384
) -> None:
376385
def set_type_stream_id_for_appservice_txn(txn):
377386
stream_id_type = "%s_stream_id" % type

synapse/storage/databases/main/receipts.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,9 @@ def f(txn):
284284
return results
285285

286286
@cached(num_args=2,)
287-
async def _get_linearized_receipts_for_all_rooms(self, to_key, from_key=None):
287+
async def _get_linearized_receipts_for_all_rooms(
288+
self, to_key: int, from_key: Optional[int] = None
289+
):
288290
def f(txn):
289291
if from_key:
290292
sql = """

0 commit comments

Comments
 (0)