Skip to content

Commit 692df49

Browse files
authored
Change type annotation from list to Sequence in send_batch and send_sub_entry methods to make variable covariant https://mypy.readthedocs.io/en/stable/generics.html#variance-of-generic-types (rabbitmq-community#219)
1 parent f858d85 commit 692df49

File tree

2 files changed

+9
-8
lines changed

2 files changed

+9
-8
lines changed

rstream/compression.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from collections import defaultdict
88
from dataclasses import dataclass
99
from enum import Enum
10-
from typing import TypeVar
10+
from typing import Sequence, TypeVar
1111

1212
from .amqp import _MessageProtocol
1313
from .utils import RawMessage
@@ -25,7 +25,7 @@ class CompressionType(Enum):
2525

2626
class ICompressionCodec(abc.ABC):
2727
@abc.abstractmethod
28-
def compress(self, messages: list[MessageT]):
28+
def compress(self, messages: Sequence[MessageT]):
2929
pass
3030

3131
@abc.abstractmethod
@@ -60,7 +60,7 @@ class NoneCompressionCodec(ICompressionCodec):
6060
message_count: int = 0
6161
buffer: bytes = bytes()
6262

63-
def compress(self, messages: list[MessageT]):
63+
def compress(self, messages: Sequence[MessageT]):
6464
uncompressed_data = bytes()
6565
for item in messages:
6666
msg = RawMessage(item) if isinstance(item, bytes) else item
@@ -99,7 +99,7 @@ class GzipCompressionCodec(ICompressionCodec):
9999
message_count: int = 0
100100
buffer: bytes = bytes()
101101

102-
def compress(self, messages: list[MessageT]):
102+
def compress(self, messages: Sequence[MessageT]):
103103
uncompressed_data = bytes()
104104
for item in messages:
105105
msg = RawMessage(item) if isinstance(item, bytes) else item
@@ -152,7 +152,7 @@ def get_compression_codec(compression_type: CompressionType) -> ICompressionCode
152152

153153
class CompressionHelper:
154154
@staticmethod
155-
def compress(messages: list[MessageT], compression_type: CompressionType) -> ICompressionCodec:
155+
def compress(messages: Sequence[MessageT], compression_type: CompressionType) -> ICompressionCodec:
156156
codec = StreamCompressionCodecs.get_compression_codec(compression_type=compression_type)
157157
codec.compress(messages=messages)
158158
return codec

rstream/producer.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
Generic,
2020
NoReturn,
2121
Optional,
22+
Sequence,
2223
TypeVar,
2324
Union,
2425
)
@@ -291,7 +292,7 @@ async def _get_or_create_publisher(
291292
async def send_batch(
292293
self,
293294
stream: str,
294-
batch: list[MessageT],
295+
batch: Sequence[MessageT],
295296
publisher_name: Optional[str] = None,
296297
on_publish_confirm: Optional[CB[ConfirmationStatus]] = None,
297298
) -> list[int]:
@@ -311,7 +312,7 @@ async def send_batch(
311312
async def _send_batch(
312313
self,
313314
stream: str,
314-
batch: list[MessageT],
315+
batch: Sequence[MessageT],
315316
publisher_name: Optional[str] = None,
316317
callback: Optional[CB[ConfirmationStatus]] = None,
317318
sync: bool = True,
@@ -575,7 +576,7 @@ async def send(
575576
async def send_sub_entry(
576577
self,
577578
stream: str,
578-
sub_entry_messages: list[MessageT],
579+
sub_entry_messages: Sequence[MessageT],
579580
compression_type: CompressionType = CompressionType.No,
580581
publisher_name: Optional[str] = None,
581582
on_publish_confirm: Optional[CB[ConfirmationStatus]] = None,

0 commit comments

Comments
 (0)