Skip to content

Commit 1564a00

Browse files
committed
Make sender errors type variable covariant
In general we want a `SenderError[list[MoreSpecific]]` to be a subtype of `SenderError[list[LessSpecific]]`, as it is just a container for the sender. Signed-off-by: Leandro Lucarella <[email protected]>
1 parent 0550126 commit 1564a00

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

src/frequenz/channels/_sender.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@
5353
from typing import Generic
5454

5555
from ._exceptions import Error
56-
from ._generic import SenderMessageT_contra
56+
from ._generic import SenderMessageT_co, SenderMessageT_contra
5757

5858

5959
class Sender(ABC, Generic[SenderMessageT_contra]):
@@ -71,13 +71,13 @@ async def send(self, message: SenderMessageT_contra, /) -> None:
7171
"""
7272

7373

74-
class SenderError(Error, Generic[SenderMessageT_contra]):
74+
class SenderError(Error, Generic[SenderMessageT_co]):
7575
"""An error that originated in a [Sender][frequenz.channels.Sender].
7676
7777
All exceptions generated by senders inherit from this exception.
7878
"""
7979

80-
def __init__(self, message: str, sender: Sender[SenderMessageT_contra]):
80+
def __init__(self, message: str, sender: Sender[SenderMessageT_co]):
8181
"""Initialize this error.
8282
8383
Args:
@@ -86,5 +86,5 @@ def __init__(self, message: str, sender: Sender[SenderMessageT_contra]):
8686
happened.
8787
"""
8888
super().__init__(message)
89-
self.sender: Sender[SenderMessageT_contra] = sender
89+
self.sender: Sender[SenderMessageT_co] = sender
9090
"""The sender where the error happened."""

0 commit comments

Comments
 (0)