Quellcode durchsuchen

allow `on_invalidate=None` in `@cached` methods (#12769)

tags/v1.60.0rc1
David Robertson vor 2 Jahren
committed by GitHub
Ursprung
Commit
5331fb5b47
Es konnte kein GPG-Schlüssel zu dieser Signatur gefunden werden GPG-Schlüssel-ID: 4AEE18F83AFDEB23
3 geänderte Dateien mit 19 neuen und 10 gelöschten Zeilen
  1. +1
    -0
      changelog.d/12769.misc
  2. +16
    -9
      scripts-dev/mypy_synapse_plugin.py
  3. +2
    -1
      synapse/storage/databases/main/roommember.py

+ 1
- 0
changelog.d/12769.misc Datei anzeigen

@@ -0,0 +1 @@
Tweak the mypy plugin so that `@cached` can accept `on_invalidate=None`.

+ 16
- 9
scripts-dev/mypy_synapse_plugin.py Datei anzeigen

@@ -21,7 +21,7 @@ from typing import Callable, Optional, Type
from mypy.nodes import ARG_NAMED_OPT
from mypy.plugin import MethodSigContext, Plugin
from mypy.typeops import bind_self
from mypy.types import CallableType, NoneType
from mypy.types import CallableType, NoneType, UnionType


class SynapsePlugin(Plugin):
@@ -72,13 +72,20 @@ def cached_function_method_signature(ctx: MethodSigContext) -> CallableType:

# Third, we add an optional "on_invalidate" argument.
#
# This is a callable which accepts no input and returns nothing.
calltyp = CallableType(
arg_types=[],
arg_kinds=[],
arg_names=[],
ret_type=NoneType(),
fallback=ctx.api.named_generic_type("builtins.function", []),
# This is a either
# - a callable which accepts no input and returns nothing, or
# - None.
calltyp = UnionType(
[
NoneType(),
CallableType(
arg_types=[],
arg_kinds=[],
arg_names=[],
ret_type=NoneType(),
fallback=ctx.api.named_generic_type("builtins.function", []),
),
]
)

arg_types.append(calltyp)
@@ -95,7 +102,7 @@ def cached_function_method_signature(ctx: MethodSigContext) -> CallableType:


def plugin(version: str) -> Type[SynapsePlugin]:
# This is the entry point of the plugin, and let's us deal with the fact
# This is the entry point of the plugin, and lets us deal with the fact
# that the mypy plugin interface is *not* stable by looking at the version
# string.
#


+ 2
- 1
synapse/storage/databases/main/roommember.py Datei anzeigen

@@ -15,6 +15,7 @@
import logging
from typing import (
TYPE_CHECKING,
Callable,
Collection,
Dict,
FrozenSet,
@@ -634,7 +635,7 @@ class RoomMemberWorkerStore(EventsWorkerStore):
)

async def get_rooms_for_user(
self, user_id: str, on_invalidate=None
self, user_id: str, on_invalidate: Optional[Callable[[], None]] = None
) -> FrozenSet[str]:
"""Returns a set of room_ids the user is currently joined to.



Laden…
Abbrechen
Speichern