Skip to content
Snippets Groups Projects
Unverified Commit d8bab679 authored by Patrick Cloke's avatar Patrick Cloke Committed by GitHub
Browse files

Fix incorrect type hints for txredis. (#12042)

Some properties were marked as RedisProtocol instead of ConnectionHandler,
which wraps RedisProtocol instance(s).
parent 26211fec
No related branches found
No related tags found
No related merge requests found
Correct type hints for txredis.
...@@ -20,7 +20,7 @@ from twisted.internet import protocol ...@@ -20,7 +20,7 @@ from twisted.internet import protocol
from twisted.internet.defer import Deferred from twisted.internet.defer import Deferred
class RedisProtocol(protocol.Protocol): class RedisProtocol(protocol.Protocol):
def publish(self, channel: str, message: bytes): ... def publish(self, channel: str, message: bytes) -> "Deferred[None]": ...
def ping(self) -> "Deferred[None]": ... def ping(self) -> "Deferred[None]": ...
def set( def set(
self, self,
...@@ -52,11 +52,14 @@ def lazyConnection( ...@@ -52,11 +52,14 @@ def lazyConnection(
convertNumbers: bool = ..., convertNumbers: bool = ...,
) -> RedisProtocol: ... ) -> RedisProtocol: ...
class ConnectionHandler: ... # ConnectionHandler doesn't actually inherit from RedisProtocol, but it proxies
# most methods to it via ConnectionHandler.__getattr__.
class ConnectionHandler(RedisProtocol):
def disconnect(self) -> "Deferred[None]": ...
class RedisFactory(protocol.ReconnectingClientFactory): class RedisFactory(protocol.ReconnectingClientFactory):
continueTrying: bool continueTrying: bool
handler: RedisProtocol handler: ConnectionHandler
pool: List[RedisProtocol] pool: List[RedisProtocol]
replyTimeout: Optional[int] replyTimeout: Optional[int]
def __init__( def __init__(
......
...@@ -21,7 +21,7 @@ from synapse.logging.context import make_deferred_yieldable ...@@ -21,7 +21,7 @@ from synapse.logging.context import make_deferred_yieldable
from synapse.util import json_decoder, json_encoder from synapse.util import json_decoder, json_encoder
if TYPE_CHECKING: if TYPE_CHECKING:
from txredisapi import RedisProtocol from txredisapi import ConnectionHandler
from synapse.server import HomeServer from synapse.server import HomeServer
...@@ -63,7 +63,7 @@ class ExternalCache: ...@@ -63,7 +63,7 @@ class ExternalCache:
def __init__(self, hs: "HomeServer"): def __init__(self, hs: "HomeServer"):
if hs.config.redis.redis_enabled: if hs.config.redis.redis_enabled:
self._redis_connection: Optional[ self._redis_connection: Optional[
"RedisProtocol" "ConnectionHandler"
] = hs.get_outbound_redis_connection() ] = hs.get_outbound_redis_connection()
else: else:
self._redis_connection = None self._redis_connection = None
......
...@@ -93,7 +93,7 @@ class RedisSubscriber(txredisapi.SubscriberProtocol): ...@@ -93,7 +93,7 @@ class RedisSubscriber(txredisapi.SubscriberProtocol):
synapse_handler: "ReplicationCommandHandler" synapse_handler: "ReplicationCommandHandler"
synapse_stream_name: str synapse_stream_name: str
synapse_outbound_redis_connection: txredisapi.RedisProtocol synapse_outbound_redis_connection: txredisapi.ConnectionHandler
def __init__(self, *args: Any, **kwargs: Any): def __init__(self, *args: Any, **kwargs: Any):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
...@@ -313,7 +313,7 @@ class RedisDirectTcpReplicationClientFactory(SynapseRedisFactory): ...@@ -313,7 +313,7 @@ class RedisDirectTcpReplicationClientFactory(SynapseRedisFactory):
protocol = RedisSubscriber protocol = RedisSubscriber
def __init__( def __init__(
self, hs: "HomeServer", outbound_redis_connection: txredisapi.RedisProtocol self, hs: "HomeServer", outbound_redis_connection: txredisapi.ConnectionHandler
): ):
super().__init__( super().__init__(
...@@ -353,7 +353,7 @@ def lazyConnection( ...@@ -353,7 +353,7 @@ def lazyConnection(
reconnect: bool = True, reconnect: bool = True,
password: Optional[str] = None, password: Optional[str] = None,
replyTimeout: int = 30, replyTimeout: int = 30,
) -> txredisapi.RedisProtocol: ) -> txredisapi.ConnectionHandler:
"""Creates a connection to Redis that is lazily set up and reconnects if the """Creates a connection to Redis that is lazily set up and reconnects if the
connections is lost. connections is lost.
""" """
......
...@@ -145,7 +145,7 @@ from synapse.util.stringutils import random_string ...@@ -145,7 +145,7 @@ from synapse.util.stringutils import random_string
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
if TYPE_CHECKING: if TYPE_CHECKING:
from txredisapi import RedisProtocol from txredisapi import ConnectionHandler
from synapse.handlers.oidc import OidcHandler from synapse.handlers.oidc import OidcHandler
from synapse.handlers.saml import SamlHandler from synapse.handlers.saml import SamlHandler
...@@ -807,7 +807,7 @@ class HomeServer(metaclass=abc.ABCMeta): ...@@ -807,7 +807,7 @@ class HomeServer(metaclass=abc.ABCMeta):
return AccountHandler(self) return AccountHandler(self)
@cache_in_self @cache_in_self
def get_outbound_redis_connection(self) -> "RedisProtocol": def get_outbound_redis_connection(self) -> "ConnectionHandler":
""" """
The Redis connection used for replication. The Redis connection used for replication.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment