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:
Andrew Ferrazzutti
2025-10-22 16:48:19 -05:00
committed by GitHub
parent cba3a814c6
commit fc244bb592
539 changed files with 4599 additions and 5066 deletions
+3 -4
View File
@@ -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:
+14 -14
View File
@@ -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.
+8 -12
View File
@@ -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)
+3 -3
View File
@@ -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,
+2 -2
View File
@@ -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},
+1 -2
View File
@@ -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
+2 -2
View File
@@ -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
+3 -3
View File
@@ -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}