Browse Source

Fix type hint errors from Twisted trunk (#16526)

tags/v1.96.0rc1
Patrick Cloke 6 months ago
committed by GitHub
parent
commit
3ab861ab9e
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 17 additions and 8 deletions
  1. +1
    -0
      changelog.d/16526.misc
  2. +11
    -5
      synapse/util/file_consumer.py
  3. +1
    -0
      tests/handlers/test_appservice.py
  4. +1
    -1
      tests/http/server/_base.py
  5. +1
    -1
      tests/http/test_matrixfederationclient.py
  6. +2
    -1
      tests/unittest.py

+ 1
- 0
changelog.d/16526.misc View File

@@ -0,0 +1 @@
Improve type hints.

+ 11
- 5
synapse/util/file_consumer.py View File

@@ -13,7 +13,7 @@
# limitations under the License.

import queue
from typing import BinaryIO, Optional, Union, cast
from typing import Any, BinaryIO, Optional, Union, cast

from twisted.internet import threads
from twisted.internet.defer import Deferred
@@ -58,7 +58,9 @@ class BackgroundFileConsumer:
self._bytes_queue: queue.Queue[Optional[bytes]] = queue.Queue()

# Deferred that is resolved when finished writing
self._finished_deferred: Optional[Deferred[None]] = None
#
# This is really Deferred[None], but mypy doesn't seem to like that.
self._finished_deferred: Optional[Deferred[Any]] = None

# If the _writer thread throws an exception it gets stored here.
self._write_exception: Optional[Exception] = None
@@ -80,9 +82,13 @@ class BackgroundFileConsumer:
self.streaming = streaming
self._finished_deferred = run_in_background(
threads.deferToThreadPool,
self._reactor,
self._reactor.getThreadPool(),
self._writer,
# mypy seems to get confused with the chaining of ParamSpec from
# run_in_background to deferToThreadPool.
#
# For Twisted trunk, ignore arg-type; for Twisted release ignore unused-ignore.
self._reactor, # type: ignore[arg-type,unused-ignore]
self._reactor.getThreadPool(), # type: ignore[arg-type,unused-ignore]
self._writer, # type: ignore[arg-type,unused-ignore]
)
if not streaming:
self._producer.resumeProducing()


+ 1
- 0
tests/handlers/test_appservice.py View File

@@ -156,6 +156,7 @@ class AppServiceHandlerTestCase(unittest.TestCase):
result = self.successResultOf(
defer.ensureDeferred(self.handler.query_room_alias_exists(room_alias))
)
assert result is not None

self.mock_as_api.query_alias.assert_called_once_with(
interested_service, room_alias_str


+ 1
- 1
tests/http/server/_base.py View File

@@ -335,7 +335,7 @@ class Deferred__next__Patch:
self._request_number = request_number
self._seen_awaits = seen_awaits

self._original_Deferred___next__ = Deferred.__next__
self._original_Deferred___next__ = Deferred.__next__ # type: ignore[misc,unused-ignore]

# The number of `await`s on `Deferred`s we have seen so far.
self.awaits_seen = 0


+ 1
- 1
tests/http/test_matrixfederationclient.py View File

@@ -70,7 +70,7 @@ class FederationClientTests(HomeserverTestCase):
"""

@defer.inlineCallbacks
def do_request() -> Generator["Deferred[object]", object, object]:
def do_request() -> Generator["Deferred[Any]", object, object]:
with LoggingContext("one") as context:
fetch_d = defer.ensureDeferred(
self.cl.get_json("testserv:8008", "foo/bar")


+ 2
- 1
tests/unittest.py View File

@@ -30,6 +30,7 @@ from typing import (
Generic,
Iterable,
List,
Mapping,
NoReturn,
Optional,
Tuple,
@@ -251,7 +252,7 @@ class TestCase(unittest.TestCase):
except AssertionError as e:
raise (type(e))(f"Assert error for '.{key}':") from e

def assert_dict(self, required: dict, actual: dict) -> None:
def assert_dict(self, required: Mapping, actual: Mapping) -> None:
"""Does a partial assert of a dict.

Args:


Loading…
Cancel
Save