Add final type hint to synapse.server. (#15035)

This commit is contained in:
Patrick Cloke 2023-02-09 09:49:04 -05:00 committed by GitHub
parent 7081bb56e2
commit 733531ee3e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 11 additions and 12 deletions

View file

@ -21,7 +21,7 @@
import abc
import functools
import logging
from typing import TYPE_CHECKING, Any, Callable, Dict, List, Optional, TypeVar, cast
from typing import TYPE_CHECKING, Callable, Dict, List, Optional, TypeVar, cast
from twisted.internet.interfaces import IOpenSSLContextFactory
from twisted.internet.tcp import Port
@ -144,10 +144,10 @@ if TYPE_CHECKING:
from synapse.handlers.saml import SamlHandler
T = TypeVar("T", bound=Callable[..., Any])
T = TypeVar("T")
def cache_in_self(builder: T) -> T:
def cache_in_self(builder: Callable[["HomeServer"], T]) -> Callable[["HomeServer"], T]:
"""Wraps a function called e.g. `get_foo`, checking if `self.foo` exists and
returning if so. If not, calls the given function and sets `self.foo` to it.
@ -166,7 +166,7 @@ def cache_in_self(builder: T) -> T:
building = [False]
@functools.wraps(builder)
def _get(self):
def _get(self: "HomeServer") -> T:
try:
return getattr(self, depname)
except AttributeError:
@ -185,9 +185,7 @@ def cache_in_self(builder: T) -> T:
return dep
# We cast here as we need to tell mypy that `_get` has the same signature as
# `builder`.
return cast(T, _get)
return _get
class HomeServer(metaclass=abc.ABCMeta):