diff --git a/stubs/txredisapi.pyi b/stubs/txredisapi.pyi
index 2d8ca018fb..695a2307c2 100644
--- a/stubs/txredisapi.pyi
+++ b/stubs/txredisapi.pyi
@@ -18,6 +18,8 @@ from typing import Any, List, Optional, Type, Union
from twisted.internet import protocol
from twisted.internet.defer import Deferred
+from twisted.internet.interfaces import IAddress
+from twisted.python.failure import Failure
class RedisProtocol(protocol.Protocol):
def publish(self, channel: str, message: bytes) -> "Deferred[None]": ...
@@ -34,11 +36,14 @@ class RedisProtocol(protocol.Protocol):
def get(self, key: str) -> "Deferred[Any]": ...
class SubscriberProtocol(RedisProtocol):
- def __init__(self, *args, **kwargs): ...
+ def __init__(self, *args: object, **kwargs: object): ...
password: Optional[str]
- def subscribe(self, channels: Union[str, List[str]]): ...
- def connectionMade(self): ...
- def connectionLost(self, reason): ...
+ def subscribe(self, channels: Union[str, List[str]]) -> "Deferred[None]": ...
+ def connectionMade(self) -> None: ...
+ # type-ignore: twisted.internet.protocol.Protocol provides a default argument for
+ # `reason`. txredisapi's LineReceiver Protocol doesn't. But that's fine: it's what's
+ # actually specified in twisted.internet.interfaces.IProtocol.
+ def connectionLost(self, reason: Failure) -> None: ... # type: ignore[override]
def lazyConnection(
host: str = ...,
@@ -74,7 +79,7 @@ class RedisFactory(protocol.ReconnectingClientFactory):
replyTimeout: Optional[int] = None,
convertNumbers: Optional[int] = True,
): ...
- def buildProtocol(self, addr) -> RedisProtocol: ...
+ def buildProtocol(self, addr: IAddress) -> RedisProtocol: ...
class SubscriberFactory(RedisFactory):
def __init__(self) -> None: ...
|