44import json
55from abc import ABCMeta , abstractmethod
66from asyncio import StreamReader , StreamWriter
7+ from collections .abc import Mapping , Sequence
8+ from typing import Any
79
810import server .metrics as metrics
911
@@ -25,15 +27,15 @@ def __init__(self, reader: StreamReader, writer: StreamWriter):
2527
2628 @staticmethod
2729 @abstractmethod
28- def encode_message (message : dict ) -> bytes :
30+ def encode_message (message : Mapping [ str , Any ] ) -> bytes :
2931 """
3032 Encode a message as raw bytes. Can be used along with `*_raw` methods.
3133 """
3234 pass # pragma: no cover
3335
3436 @staticmethod
3537 @abstractmethod
36- def decode_message (data : bytes ) -> dict :
38+ def decode_message (data : bytes ) -> dict [ str , Any ] :
3739 """
3840 Decode a message from raw bytes.
3941 """
@@ -46,7 +48,7 @@ def is_connected(self) -> bool:
4648 return not self .writer .is_closing ()
4749
4850 @abstractmethod
49- async def read_message (self ) -> dict :
51+ async def read_message (self ) -> dict [ str , Any ] :
5052 """
5153 Asynchronously read a message from the stream
5254
@@ -58,7 +60,7 @@ async def read_message(self) -> dict:
5860 """
5961 pass # pragma: no cover
6062
61- async def send_message (self , message : dict ) -> None :
63+ async def send_message (self , message : Mapping [ str , Any ] ) -> None :
6264 """
6365 Send a single message in the form of a dictionary
6466
@@ -67,7 +69,7 @@ async def send_message(self, message: dict) -> None:
6769 """
6870 await self .send_raw (self .encode_message (message ))
6971
70- async def send_messages (self , messages : list [ dict ]) -> None :
72+ async def send_messages (self , messages : Sequence [ Mapping [ str , Any ] ]) -> None :
7173 """
7274 Send multiple messages in the form of a list of dictionaries.
7375
@@ -89,7 +91,7 @@ async def send_raw(self, data: bytes) -> None:
8991 self .write_raw (data )
9092 await self .drain ()
9193
92- def write_message (self , message : dict ) -> None :
94+ def write_message (self , message : Mapping [ str , Any ] ) -> None :
9395 """
9496 Write a single message into the message buffer. Should be used when
9597 sending broadcasts or when sending messages that are triggered by
@@ -103,7 +105,7 @@ def write_message(self, message: dict) -> None:
103105
104106 self .write_raw (self .encode_message (message ))
105107
106- def write_messages (self , messages : list [ dict ]) -> None :
108+ def write_messages (self , messages : Sequence [ Mapping [ str , Any ] ]) -> None :
107109 """
108110 Write multiple message into the message buffer.
109111
0 commit comments