mirror of
https://github.com/element-hq/synapse.git
synced 2026-08-06 23:40:14 +00:00
Use type hinting generics in standard collections (#19046)
aka PEP 585, added in Python 3.9 - https://peps.python.org/pep-0585/ - https://docs.astral.sh/ruff/rules/non-pep585-annotation/
This commit is contained in:
@@ -19,7 +19,6 @@
|
||||
#
|
||||
import os.path
|
||||
import subprocess
|
||||
from typing import List
|
||||
|
||||
from incremental import Version
|
||||
from zope.interface import implementer
|
||||
@@ -85,7 +84,7 @@ subjectAltName = %(sanentries)s
|
||||
"""
|
||||
|
||||
|
||||
def create_test_cert_file(sanlist: List[bytes]) -> str:
|
||||
def create_test_cert_file(sanlist: list[bytes]) -> str:
|
||||
"""build an x509 certificate file
|
||||
|
||||
Args:
|
||||
@@ -151,7 +150,7 @@ class TestServerTLSConnectionFactory:
|
||||
"""An SSL connection creator which returns connections which present a certificate
|
||||
signed by our test CA."""
|
||||
|
||||
def __init__(self, sanlist: List[bytes]):
|
||||
def __init__(self, sanlist: list[bytes]):
|
||||
"""
|
||||
Args:
|
||||
sanlist: a list of subjectAltName values for the cert
|
||||
@@ -166,7 +165,7 @@ class TestServerTLSConnectionFactory:
|
||||
|
||||
|
||||
def wrap_server_factory_for_tls(
|
||||
factory: IProtocolFactory, clock: IReactorTime, sanlist: List[bytes]
|
||||
factory: IProtocolFactory, clock: IReactorTime, sanlist: list[bytes]
|
||||
) -> TLSMemoryBIOFactory:
|
||||
"""Wrap an existing Protocol Factory with a test TLSMemoryBIOFactory
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
import base64
|
||||
import logging
|
||||
import os
|
||||
from typing import Generator, List, Optional, cast
|
||||
from typing import Generator, Optional, cast
|
||||
from unittest.mock import AsyncMock, call, patch
|
||||
|
||||
import treq
|
||||
@@ -110,7 +110,7 @@ class MatrixFederationAgentTests(unittest.TestCase):
|
||||
client_factory: IProtocolFactory,
|
||||
ssl: bool = True,
|
||||
expected_sni: Optional[bytes] = None,
|
||||
tls_sanlist: Optional[List[bytes]] = None,
|
||||
tls_sanlist: Optional[list[bytes]] = None,
|
||||
) -> HTTPChannel:
|
||||
"""Builds a test server, and completes the outgoing client connection
|
||||
Args:
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
# [This file includes modifications made by New Vector Limited]
|
||||
#
|
||||
#
|
||||
from typing import Dict, Generator, List, Tuple, cast
|
||||
from typing import Generator, cast
|
||||
from unittest.mock import Mock
|
||||
|
||||
from twisted.internet import defer
|
||||
@@ -44,20 +44,20 @@ class SrvResolverTestCase(unittest.TestCase):
|
||||
type=dns.SRV, payload=dns.Record_SRV(target=host_name)
|
||||
)
|
||||
|
||||
result_deferred: "Deferred[Tuple[List[dns.RRHeader], None, None]]" = Deferred()
|
||||
result_deferred: "Deferred[tuple[list[dns.RRHeader], None, None]]" = Deferred()
|
||||
dns_client_mock.lookupService.return_value = result_deferred
|
||||
|
||||
cache: Dict[bytes, List[Server]] = {}
|
||||
cache: dict[bytes, list[Server]] = {}
|
||||
resolver = SrvResolver(dns_client=dns_client_mock, cache=cache)
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def do_lookup() -> Generator["Deferred[object]", object, List[Server]]:
|
||||
def do_lookup() -> Generator["Deferred[object]", object, list[Server]]:
|
||||
with LoggingContext(
|
||||
name="one",
|
||||
server_name="test_server",
|
||||
) as ctx:
|
||||
resolve_d = resolver.resolve_service(service_name)
|
||||
result: List[Server]
|
||||
result: list[Server]
|
||||
result = yield defer.ensureDeferred(resolve_d) # type: ignore[assignment]
|
||||
|
||||
# should have restored our context
|
||||
@@ -95,7 +95,7 @@ class SrvResolverTestCase(unittest.TestCase):
|
||||
cache = {service_name: [cast(Server, entry)]}
|
||||
resolver = SrvResolver(dns_client=dns_client_mock, cache=cache)
|
||||
|
||||
servers: List[Server]
|
||||
servers: list[Server]
|
||||
servers = yield defer.ensureDeferred(resolver.resolve_service(service_name)) # type: ignore[assignment]
|
||||
|
||||
dns_client_mock.lookupService.assert_called_once_with(service_name)
|
||||
@@ -122,7 +122,7 @@ class SrvResolverTestCase(unittest.TestCase):
|
||||
dns_client=dns_client_mock, cache=cache, get_time=clock.time
|
||||
)
|
||||
|
||||
servers: List[Server]
|
||||
servers: list[Server]
|
||||
servers = yield defer.ensureDeferred(resolver.resolve_service(service_name)) # type: ignore[assignment]
|
||||
|
||||
self.assertFalse(dns_client_mock.lookupService.called)
|
||||
@@ -138,7 +138,7 @@ class SrvResolverTestCase(unittest.TestCase):
|
||||
|
||||
service_name = b"test_service.example.com"
|
||||
|
||||
cache: Dict[bytes, List[Server]] = {}
|
||||
cache: dict[bytes, list[Server]] = {}
|
||||
resolver = SrvResolver(dns_client=dns_client_mock, cache=cache)
|
||||
|
||||
with self.assertRaises(error.DNSServerError):
|
||||
@@ -152,10 +152,10 @@ class SrvResolverTestCase(unittest.TestCase):
|
||||
|
||||
service_name = b"test_service.example.com"
|
||||
|
||||
cache: Dict[bytes, List[Server]] = {}
|
||||
cache: dict[bytes, list[Server]] = {}
|
||||
resolver = SrvResolver(dns_client=dns_client_mock, cache=cache)
|
||||
|
||||
servers: List[Server]
|
||||
servers: list[Server]
|
||||
servers = yield defer.ensureDeferred(resolver.resolve_service(service_name)) # type: ignore[assignment]
|
||||
|
||||
self.assertEqual(len(servers), 0)
|
||||
@@ -167,10 +167,10 @@ class SrvResolverTestCase(unittest.TestCase):
|
||||
"""
|
||||
service_name = b"test_service.example.com"
|
||||
|
||||
lookup_deferred: "Deferred[Tuple[List[dns.RRHeader], None, None]]" = Deferred()
|
||||
lookup_deferred: "Deferred[tuple[list[dns.RRHeader], None, None]]" = Deferred()
|
||||
dns_client_mock = Mock()
|
||||
dns_client_mock.lookupService.return_value = lookup_deferred
|
||||
cache: Dict[bytes, List[Server]] = {}
|
||||
cache: dict[bytes, list[Server]] = {}
|
||||
resolver = SrvResolver(dns_client=dns_client_mock, cache=cache)
|
||||
|
||||
# Old versions of Twisted don't have an ensureDeferred in failureResultOf.
|
||||
@@ -193,10 +193,10 @@ class SrvResolverTestCase(unittest.TestCase):
|
||||
"""
|
||||
service_name = b"test_service.example.com"
|
||||
|
||||
lookup_deferred: "Deferred[Tuple[List[dns.RRHeader], None, None]]" = Deferred()
|
||||
lookup_deferred: "Deferred[tuple[list[dns.RRHeader], None, None]]" = Deferred()
|
||||
dns_client_mock = Mock()
|
||||
dns_client_mock.lookupService.return_value = lookup_deferred
|
||||
cache: Dict[bytes, List[Server]] = {}
|
||||
cache: dict[bytes, list[Server]] = {}
|
||||
resolver = SrvResolver(dns_client=dns_client_mock, cache=cache)
|
||||
|
||||
# Old versions of Twisted don't have an ensureDeferred in successResultOf.
|
||||
|
||||
@@ -26,12 +26,8 @@ from typing import (
|
||||
Any,
|
||||
Callable,
|
||||
ContextManager,
|
||||
Dict,
|
||||
Generator,
|
||||
List,
|
||||
Optional,
|
||||
Set,
|
||||
Tuple,
|
||||
TypeVar,
|
||||
Union,
|
||||
)
|
||||
@@ -208,7 +204,7 @@ def make_request_with_cancellation_test(
|
||||
|
||||
# The set of previously seen `await`s.
|
||||
# Each element is a stringified stack trace.
|
||||
seen_awaits: Set[Tuple[str, ...]] = set()
|
||||
seen_awaits: set[tuple[str, ...]] = set()
|
||||
|
||||
_log_for_request(
|
||||
0, f"Running make_request_with_cancellation_test for {test_name}..."
|
||||
@@ -337,7 +333,7 @@ class Deferred__await__Patch:
|
||||
deferred_patch.unblock_awaits()
|
||||
"""
|
||||
|
||||
def __init__(self, seen_awaits: Set[Tuple[str, ...]], request_number: int):
|
||||
def __init__(self, seen_awaits: set[tuple[str, ...]], request_number: int):
|
||||
"""
|
||||
Args:
|
||||
seen_awaits: The set of stack traces of `await`s that have been previously
|
||||
@@ -365,10 +361,10 @@ class Deferred__await__Patch:
|
||||
# unresolved `Deferred` and return it out of `Deferred.__await__` /
|
||||
# `coroutine.send()`. We have to resolve it later, in case the `await`ing
|
||||
# coroutine is part of some shared processing, such as `@cached`.
|
||||
self._to_unblock: Dict[Deferred, Union[object, Failure]] = {}
|
||||
self._to_unblock: dict[Deferred, Union[object, Failure]] = {}
|
||||
|
||||
# The last stack we logged.
|
||||
self._previous_stack: List[inspect.FrameInfo] = []
|
||||
self._previous_stack: list[inspect.FrameInfo] = []
|
||||
|
||||
def patch(self) -> ContextManager[Mock]:
|
||||
"""Returns a context manager which patches `Deferred.__await__`."""
|
||||
@@ -507,8 +503,8 @@ def _log_for_request(request_number: int, message: str) -> None:
|
||||
|
||||
|
||||
def _log_await_stack(
|
||||
stack: List[inspect.FrameInfo],
|
||||
previous_stack: List[inspect.FrameInfo],
|
||||
stack: list[inspect.FrameInfo],
|
||||
previous_stack: list[inspect.FrameInfo],
|
||||
request_number: int,
|
||||
note: str,
|
||||
) -> None:
|
||||
@@ -566,7 +562,7 @@ def _format_stack_frame(frame_info: inspect.FrameInfo) -> str:
|
||||
)
|
||||
|
||||
|
||||
def _get_stack(skip_frames: int) -> List[inspect.FrameInfo]:
|
||||
def _get_stack(skip_frames: int) -> list[inspect.FrameInfo]:
|
||||
"""Captures the stack for a request.
|
||||
|
||||
Skips any twisted frames and stops at `JsonResource.wrapped_async_request_handler`.
|
||||
@@ -622,6 +618,6 @@ def _get_stack_frame_method_name(frame_info: inspect.FrameInfo) -> str:
|
||||
return method_name
|
||||
|
||||
|
||||
def _hash_stack(stack: List[inspect.FrameInfo]) -> Tuple[str, ...]:
|
||||
def _hash_stack(stack: list[inspect.FrameInfo]) -> tuple[str, ...]:
|
||||
"""Turns a stack into a hashable value that can be put into a set."""
|
||||
return tuple(_format_stack_frame(frame) for frame in stack)
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
#
|
||||
|
||||
from io import BytesIO
|
||||
from typing import Tuple, Union
|
||||
from typing import Union
|
||||
from unittest.mock import Mock
|
||||
|
||||
from netaddr import IPSet
|
||||
@@ -59,7 +59,7 @@ class ReadMultipartResponseTests(TestCase):
|
||||
|
||||
def _build_multipart_response(
|
||||
self, response_length: Union[int, str], max_length: int
|
||||
) -> Tuple[
|
||||
) -> tuple[
|
||||
BytesIO,
|
||||
"Deferred[MultipartResponse]",
|
||||
_MultipartParserProtocol,
|
||||
@@ -209,7 +209,7 @@ class ReadMultipartResponseTests(TestCase):
|
||||
class ReadBodyWithMaxSizeTests(TestCase):
|
||||
def _build_response(
|
||||
self, length: Union[int, str] = UNKNOWN_LENGTH
|
||||
) -> Tuple[
|
||||
) -> tuple[
|
||||
BytesIO,
|
||||
"Deferred[int]",
|
||||
_DiscardBodyWithMaxSizeProtocol,
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
#
|
||||
#
|
||||
import io
|
||||
from typing import Any, Dict, Generator
|
||||
from typing import Any, Generator
|
||||
from unittest.mock import ANY, Mock, create_autospec
|
||||
|
||||
from netaddr import IPSet
|
||||
@@ -745,7 +745,7 @@ class FederationClientTests(HomeserverTestCase):
|
||||
|
||||
|
||||
class FederationClientProxyTests(BaseMultiWorkerStreamTestCase):
|
||||
def default_config(self) -> Dict[str, Any]:
|
||||
def default_config(self) -> dict[str, Any]:
|
||||
conf = super().default_config()
|
||||
conf["instance_map"] = {
|
||||
"main": {"host": "testserv", "port": 8765},
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
# [This file includes modifications made by New Vector Limited]
|
||||
#
|
||||
#
|
||||
from typing import Set
|
||||
|
||||
from parameterized import parameterized
|
||||
|
||||
@@ -64,7 +63,7 @@ class ProxyTests(TestCase):
|
||||
def test_parse_connection_header_value(
|
||||
self,
|
||||
connection_header_value: bytes,
|
||||
expected_extra_headers_to_remove: Set[str],
|
||||
expected_extra_headers_to_remove: set[str],
|
||||
) -> None:
|
||||
"""
|
||||
Tests that the connection header value is parsed correctly
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
import base64
|
||||
import logging
|
||||
import os
|
||||
from typing import List, Optional
|
||||
from typing import Optional
|
||||
from unittest.mock import patch
|
||||
|
||||
import treq
|
||||
@@ -252,7 +252,7 @@ class ProxyAgentTests(TestCase):
|
||||
server_factory: IProtocolFactory,
|
||||
ssl: bool = False,
|
||||
expected_sni: Optional[bytes] = None,
|
||||
tls_sanlist: Optional[List[bytes]] = None,
|
||||
tls_sanlist: Optional[list[bytes]] = None,
|
||||
) -> IProtocol:
|
||||
"""Builds a test server, and completes the outgoing client connection
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
import json
|
||||
from http import HTTPStatus
|
||||
from io import BytesIO
|
||||
from typing import Tuple, Union
|
||||
from typing import Union
|
||||
from unittest.mock import Mock
|
||||
|
||||
from synapse.api.errors import Codes, SynapseError
|
||||
@@ -108,11 +108,11 @@ class CancellableRestServlet(RestServlet):
|
||||
self.clock = hs.get_clock()
|
||||
|
||||
@cancellable
|
||||
async def on_GET(self, request: SynapseRequest) -> Tuple[int, JsonDict]:
|
||||
async def on_GET(self, request: SynapseRequest) -> tuple[int, JsonDict]:
|
||||
await self.clock.sleep(1.0)
|
||||
return HTTPStatus.OK, {"result": True}
|
||||
|
||||
async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]:
|
||||
async def on_POST(self, request: SynapseRequest) -> tuple[int, JsonDict]:
|
||||
await self.clock.sleep(1.0)
|
||||
return HTTPStatus.OK, {"result": True}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user