Browse Source

Bump mypy-zope & mypy. (#16188)

tags/v1.92.0rc1
Patrick Cloke 8 months ago
committed by GitHub
parent
commit
9ec3da06da
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
39 changed files with 180 additions and 161 deletions
  1. +1
    -0
      changelog.d/16188.misc
  2. +36
    -36
      poetry.lock
  3. +7
    -2
      synapse/_scripts/synapse_port_db.py
  4. +6
    -8
      synapse/logging/opentracing.py
  5. +16
    -1
      synapse/storage/database.py
  6. +3
    -3
      synapse/util/check_dependencies.py
  7. +3
    -3
      tests/appservice/test_api.py
  8. +12
    -12
      tests/federation/test_complexity.py
  9. +2
    -2
      tests/federation/test_federation_catch_up.py
  10. +2
    -2
      tests/federation/test_federation_sender.py
  11. +2
    -2
      tests/federation/transport/test_knocking.py
  12. +5
    -5
      tests/handlers/test_appservice.py
  13. +4
    -4
      tests/handlers/test_cas.py
  14. +2
    -2
      tests/handlers/test_e2e_keys.py
  15. +2
    -2
      tests/handlers/test_federation.py
  16. +2
    -2
      tests/handlers/test_oidc.py
  17. +1
    -1
      tests/handlers/test_password_providers.py
  18. +3
    -3
      tests/handlers/test_register.py
  19. +7
    -7
      tests/handlers/test_saml.py
  20. +13
    -13
      tests/handlers/test_typing.py
  21. +1
    -1
      tests/logging/test_terse_json.py
  22. +2
    -2
      tests/module_api/test_api.py
  23. +1
    -1
      tests/push/test_bulk_push_rule_evaluator.py
  24. +1
    -1
      tests/replication/storage/test_events.py
  25. +2
    -2
      tests/rest/admin/test_user.py
  26. +1
    -1
      tests/rest/admin/test_username_available.py
  27. +1
    -1
      tests/rest/client/test_account.py
  28. +1
    -1
      tests/rest/client/test_events.py
  29. +2
    -2
      tests/rest/client/test_filter.py
  30. +6
    -6
      tests/rest/client/test_rooms.py
  31. +1
    -1
      tests/rest/client/test_shadow_banned.py
  32. +1
    -1
      tests/rest/client/test_third_party_rules.py
  33. +1
    -1
      tests/server.py
  34. +15
    -15
      tests/server_notices/test_resource_limits_server_notices.py
  35. +1
    -1
      tests/storage/test_appservice.py
  36. +6
    -6
      tests/storage/test_monthly_active_users.py
  37. +3
    -3
      tests/test_federation.py
  38. +2
    -2
      tests/test_state.py
  39. +3
    -3
      tests/unittest.py

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

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

+ 36
- 36
poetry.lock View File

@@ -1445,43 +1445,43 @@ files = [


[[package]] [[package]]
name = "mypy" name = "mypy"
version = "1.0.1"
version = "1.4.1"
description = "Optional static typing for Python" description = "Optional static typing for Python"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
files = [ files = [
{file = "mypy-1.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:71a808334d3f41ef011faa5a5cd8153606df5fc0b56de5b2e89566c8093a0c9a"},
{file = "mypy-1.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:920169f0184215eef19294fa86ea49ffd4635dedfdea2b57e45cb4ee85d5ccaf"},
{file = "mypy-1.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27a0f74a298769d9fdc8498fcb4f2beb86f0564bcdb1a37b58cbbe78e55cf8c0"},
{file = "mypy-1.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:65b122a993d9c81ea0bfde7689b3365318a88bde952e4dfa1b3a8b4ac05d168b"},
{file = "mypy-1.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:5deb252fd42a77add936b463033a59b8e48eb2eaec2976d76b6878d031933fe4"},
{file = "mypy-1.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2013226d17f20468f34feddd6aae4635a55f79626549099354ce641bc7d40262"},
{file = "mypy-1.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:48525aec92b47baed9b3380371ab8ab6e63a5aab317347dfe9e55e02aaad22e8"},
{file = "mypy-1.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c96b8a0c019fe29040d520d9257d8c8f122a7343a8307bf8d6d4a43f5c5bfcc8"},
{file = "mypy-1.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:448de661536d270ce04f2d7dddaa49b2fdba6e3bd8a83212164d4174ff43aa65"},
{file = "mypy-1.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:d42a98e76070a365a1d1c220fcac8aa4ada12ae0db679cb4d910fabefc88b994"},
{file = "mypy-1.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e64f48c6176e243ad015e995de05af7f22bbe370dbb5b32bd6988438ec873919"},
{file = "mypy-1.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fdd63e4f50e3538617887e9aee91855368d9fc1dea30da743837b0df7373bc4"},
{file = "mypy-1.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:dbeb24514c4acbc78d205f85dd0e800f34062efcc1f4a4857c57e4b4b8712bff"},
{file = "mypy-1.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a2948c40a7dd46c1c33765718936669dc1f628f134013b02ff5ac6c7ef6942bf"},
{file = "mypy-1.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5bc8d6bd3b274dd3846597855d96d38d947aedba18776aa998a8d46fabdaed76"},
{file = "mypy-1.0.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:17455cda53eeee0a4adb6371a21dd3dbf465897de82843751cf822605d152c8c"},
{file = "mypy-1.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e831662208055b006eef68392a768ff83596035ffd6d846786578ba1714ba8f6"},
{file = "mypy-1.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e60d0b09f62ae97a94605c3f73fd952395286cf3e3b9e7b97f60b01ddfbbda88"},
{file = "mypy-1.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:0af4f0e20706aadf4e6f8f8dc5ab739089146b83fd53cb4a7e0e850ef3de0bb6"},
{file = "mypy-1.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:24189f23dc66f83b839bd1cce2dfc356020dfc9a8bae03978477b15be61b062e"},
{file = "mypy-1.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:93a85495fb13dc484251b4c1fd7a5ac370cd0d812bbfc3b39c1bafefe95275d5"},
{file = "mypy-1.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f546ac34093c6ce33f6278f7c88f0f147a4849386d3bf3ae193702f4fe31407"},
{file = "mypy-1.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c6c2ccb7af7154673c591189c3687b013122c5a891bb5651eca3db8e6c6c55bd"},
{file = "mypy-1.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:15b5a824b58c7c822c51bc66308e759243c32631896743f030daf449fe3677f3"},
{file = "mypy-1.0.1-py3-none-any.whl", hash = "sha256:eda5c8b9949ed411ff752b9a01adda31afe7eae1e53e946dbdf9db23865e66c4"},
{file = "mypy-1.0.1.tar.gz", hash = "sha256:28cea5a6392bb43d266782983b5a4216c25544cd7d80be681a155ddcdafd152d"},
]
[package.dependencies]
mypy-extensions = ">=0.4.3"
{file = "mypy-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:566e72b0cd6598503e48ea610e0052d1b8168e60a46e0bfd34b3acf2d57f96a8"},
{file = "mypy-1.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ca637024ca67ab24a7fd6f65d280572c3794665eaf5edcc7e90a866544076878"},
{file = "mypy-1.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0dde1d180cd84f0624c5dcaaa89c89775550a675aff96b5848de78fb11adabcd"},
{file = "mypy-1.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8c4d8e89aa7de683e2056a581ce63c46a0c41e31bd2b6d34144e2c80f5ea53dc"},
{file = "mypy-1.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:bfdca17c36ae01a21274a3c387a63aa1aafe72bff976522886869ef131b937f1"},
{file = "mypy-1.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7549fbf655e5825d787bbc9ecf6028731973f78088fbca3a1f4145c39ef09462"},
{file = "mypy-1.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:98324ec3ecf12296e6422939e54763faedbfcc502ea4a4c38502082711867258"},
{file = "mypy-1.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:141dedfdbfe8a04142881ff30ce6e6653c9685b354876b12e4fe6c78598b45e2"},
{file = "mypy-1.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8207b7105829eca6f3d774f64a904190bb2231de91b8b186d21ffd98005f14a7"},
{file = "mypy-1.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:16f0db5b641ba159eff72cff08edc3875f2b62b2fa2bc24f68c1e7a4e8232d01"},
{file = "mypy-1.4.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:470c969bb3f9a9efcedbadcd19a74ffb34a25f8e6b0e02dae7c0e71f8372f97b"},
{file = "mypy-1.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5952d2d18b79f7dc25e62e014fe5a23eb1a3d2bc66318df8988a01b1a037c5b"},
{file = "mypy-1.4.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:190b6bab0302cec4e9e6767d3eb66085aef2a1cc98fe04936d8a42ed2ba77bb7"},
{file = "mypy-1.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:9d40652cc4fe33871ad3338581dca3297ff5f2213d0df345bcfbde5162abf0c9"},
{file = "mypy-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:01fd2e9f85622d981fd9063bfaef1aed6e336eaacca00892cd2d82801ab7c042"},
{file = "mypy-1.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2460a58faeea905aeb1b9b36f5065f2dc9a9c6e4c992a6499a2360c6c74ceca3"},
{file = "mypy-1.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2746d69a8196698146a3dbe29104f9eb6a2a4d8a27878d92169a6c0b74435b6"},
{file = "mypy-1.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ae704dcfaa180ff7c4cfbad23e74321a2b774f92ca77fd94ce1049175a21c97f"},
{file = "mypy-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:43d24f6437925ce50139a310a64b2ab048cb2d3694c84c71c3f2a1626d8101dc"},
{file = "mypy-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c482e1246726616088532b5e964e39765b6d1520791348e6c9dc3af25b233828"},
{file = "mypy-1.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:43b592511672017f5b1a483527fd2684347fdffc041c9ef53428c8dc530f79a3"},
{file = "mypy-1.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34a9239d5b3502c17f07fd7c0b2ae6b7dd7d7f6af35fbb5072c6208e76295816"},
{file = "mypy-1.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5703097c4936bbb9e9bce41478c8d08edd2865e177dc4c52be759f81ee4dd26c"},
{file = "mypy-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:e02d700ec8d9b1859790c0475df4e4092c7bf3272a4fd2c9f33d87fac4427b8f"},
{file = "mypy-1.4.1-py3-none-any.whl", hash = "sha256:45d32cec14e7b97af848bddd97d85ea4f0db4d5a149ed9676caa4eb2f7402bb4"},
{file = "mypy-1.4.1.tar.gz", hash = "sha256:9bbcd9ab8ea1f2e1c8031c21445b511442cc45c89951e49bbf852cbb70755b1b"},
]
[package.dependencies]
mypy-extensions = ">=1.0.0"
tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
typing-extensions = ">=3.10"
typing-extensions = ">=4.1.0"


[package.extras] [package.extras]
dmypy = ["psutil (>=4.0)"] dmypy = ["psutil (>=4.0)"]
@@ -1502,17 +1502,17 @@ files = [


[[package]] [[package]]
name = "mypy-zope" name = "mypy-zope"
version = "0.9.1"
version = "1.0.0"
description = "Plugin for mypy to support zope interfaces" description = "Plugin for mypy to support zope interfaces"
optional = false optional = false
python-versions = "*" python-versions = "*"
files = [ files = [
{file = "mypy-zope-0.9.1.tar.gz", hash = "sha256:4c87dbc71fec35f6533746ecdf9d400cd9281338d71c16b5676bb5ed00a97ca2"},
{file = "mypy_zope-0.9.1-py3-none-any.whl", hash = "sha256:733d4399affe9e61e332ce9c4049418d6775c39b473e4b9f409d51c207c1b71a"},
{file = "mypy-zope-1.0.0.tar.gz", hash = "sha256:be815c2fcb5333aa87e8ec682029ad3214142fe2a05ea383f9ff2d77c98008b7"},
{file = "mypy_zope-1.0.0-py3-none-any.whl", hash = "sha256:9732e9b2198f2aec3343b38a51905ff49d44dc9e39e8e8bc6fc490b232388209"},
] ]


[package.dependencies] [package.dependencies]
mypy = ">=1.0.0,<1.1.0"
mypy = ">=1.0.0,<1.5.0"
"zope.interface" = "*" "zope.interface" = "*"
"zope.schema" = "*" "zope.schema" = "*"




+ 7
- 2
synapse/_scripts/synapse_port_db.py View File

@@ -482,7 +482,10 @@ class Porter:
do_backward[0] = False do_backward[0] = False


if forward_rows or backward_rows: if forward_rows or backward_rows:
headers = [column[0] for column in txn.description]
assert txn.description is not None
headers: Optional[List[str]] = [
column[0] for column in txn.description
]
else: else:
headers = None headers = None


@@ -544,6 +547,7 @@ class Porter:
def r(txn: LoggingTransaction) -> Tuple[List[str], List[Tuple]]: def r(txn: LoggingTransaction) -> Tuple[List[str], List[Tuple]]:
txn.execute(select, (forward_chunk, self.batch_size)) txn.execute(select, (forward_chunk, self.batch_size))
rows = txn.fetchall() rows = txn.fetchall()
assert txn.description is not None
headers = [column[0] for column in txn.description] headers = [column[0] for column in txn.description]


return headers, rows return headers, rows
@@ -919,7 +923,8 @@ class Porter:
def r(txn: LoggingTransaction) -> Tuple[List[str], List[Tuple]]: def r(txn: LoggingTransaction) -> Tuple[List[str], List[Tuple]]:
txn.execute(select) txn.execute(select)
rows = txn.fetchall() rows = txn.fetchall()
headers: List[str] = [column[0] for column in txn.description]
assert txn.description is not None
headers = [column[0] for column in txn.description]


ts_ind = headers.index("ts") ts_ind = headers.index("ts")




+ 6
- 8
synapse/logging/opentracing.py View File

@@ -910,10 +910,10 @@ def _custom_sync_async_decorator(
async def _wrapper( async def _wrapper(
*args: P.args, **kwargs: P.kwargs *args: P.args, **kwargs: P.kwargs
) -> Any: # Return type is RInner ) -> Any: # Return type is RInner
with wrapping_logic(func, *args, **kwargs):
# type-ignore: func() returns R, but mypy doesn't know that R is
# Awaitable here.
return await func(*args, **kwargs) # type: ignore[misc]
# type-ignore: func() returns R, but mypy doesn't know that R is
# Awaitable here.
with wrapping_logic(func, *args, **kwargs): # type: ignore[arg-type]
return await func(*args, **kwargs)


else: else:
# The other case here handles sync functions including those decorated with # The other case here handles sync functions including those decorated with
@@ -980,8 +980,7 @@ def trace_with_opname(
See the module's doc string for usage examples. See the module's doc string for usage examples.
""" """


# type-ignore: mypy bug, see https://github.com/python/mypy/issues/12909
@contextlib.contextmanager # type: ignore[arg-type]
@contextlib.contextmanager
def _wrapping_logic( def _wrapping_logic(
func: Callable[P, R], *args: P.args, **kwargs: P.kwargs func: Callable[P, R], *args: P.args, **kwargs: P.kwargs
) -> Generator[None, None, None]: ) -> Generator[None, None, None]:
@@ -1024,8 +1023,7 @@ def tag_args(func: Callable[P, R]) -> Callable[P, R]:
if not opentracing: if not opentracing:
return func return func


# type-ignore: mypy bug, see https://github.com/python/mypy/issues/12909
@contextlib.contextmanager # type: ignore[arg-type]
@contextlib.contextmanager
def _wrapping_logic( def _wrapping_logic(
func: Callable[P, R], *args: P.args, **kwargs: P.kwargs func: Callable[P, R], *args: P.args, **kwargs: P.kwargs
) -> Generator[None, None, None]: ) -> Generator[None, None, None]:


+ 16
- 1
synapse/storage/database.py View File

@@ -31,6 +31,7 @@ from typing import (
Iterator, Iterator,
List, List,
Optional, Optional,
Sequence,
Tuple, Tuple,
Type, Type,
TypeVar, TypeVar,
@@ -358,7 +359,21 @@ class LoggingTransaction:
return self.txn.rowcount return self.txn.rowcount


@property @property
def description(self) -> Any:
def description(
self,
) -> Optional[
Sequence[
Tuple[
str,
Optional[Any],
Optional[int],
Optional[int],
Optional[int],
Optional[int],
Optional[int],
]
]
]:
return self.txn.description return self.txn.description


def execute_batch(self, sql: str, args: Iterable[Iterable[Any]]) -> None: def execute_batch(self, sql: str, args: Iterable[Iterable[Any]]) -> None:


+ 3
- 3
synapse/util/check_dependencies.py View File

@@ -51,9 +51,9 @@ class DependencyException(Exception):




DEV_EXTRAS = {"lint", "mypy", "test", "dev"} DEV_EXTRAS = {"lint", "mypy", "test", "dev"}
RUNTIME_EXTRAS = (
set(metadata.metadata(DISTRIBUTION_NAME).get_all("Provides-Extra")) - DEV_EXTRAS
)
ALL_EXTRAS = metadata.metadata(DISTRIBUTION_NAME).get_all("Provides-Extra")
assert ALL_EXTRAS is not None
RUNTIME_EXTRAS = set(ALL_EXTRAS) - DEV_EXTRAS
VERSION = metadata.version(DISTRIBUTION_NAME) VERSION = metadata.version(DISTRIBUTION_NAME)






+ 3
- 3
tests/appservice/test_api.py View File

@@ -96,7 +96,7 @@ class ApplicationServiceApiTestCase(unittest.HomeserverTestCase):
) )


# We assign to a method, which mypy doesn't like. # We assign to a method, which mypy doesn't like.
self.api.get_json = Mock(side_effect=get_json) # type: ignore[assignment]
self.api.get_json = Mock(side_effect=get_json) # type: ignore[method-assign]


result = self.get_success( result = self.get_success(
self.api.query_3pe(self.service, "user", PROTOCOL, {b"some": [b"field"]}) self.api.query_3pe(self.service, "user", PROTOCOL, {b"some": [b"field"]})
@@ -168,7 +168,7 @@ class ApplicationServiceApiTestCase(unittest.HomeserverTestCase):
) )


# We assign to a method, which mypy doesn't like. # We assign to a method, which mypy doesn't like.
self.api.get_json = Mock(side_effect=get_json) # type: ignore[assignment]
self.api.get_json = Mock(side_effect=get_json) # type: ignore[method-assign]


result = self.get_success( result = self.get_success(
self.api.query_3pe(self.service, "user", PROTOCOL, {b"some": [b"field"]}) self.api.query_3pe(self.service, "user", PROTOCOL, {b"some": [b"field"]})
@@ -215,7 +215,7 @@ class ApplicationServiceApiTestCase(unittest.HomeserverTestCase):
return RESPONSE return RESPONSE


# We assign to a method, which mypy doesn't like. # We assign to a method, which mypy doesn't like.
self.api.post_json_get_json = Mock(side_effect=post_json_get_json) # type: ignore[assignment]
self.api.post_json_get_json = Mock(side_effect=post_json_get_json) # type: ignore[method-assign]


MISSING_KEYS = [ MISSING_KEYS = [
# Known user, known device, missing algorithm. # Known user, known device, missing algorithm.


+ 12
- 12
tests/federation/test_complexity.py View File

@@ -57,7 +57,7 @@ class RoomComplexityTests(unittest.FederatingHomeserverTestCase):
async def get_current_state_event_counts(room_id: str) -> int: async def get_current_state_event_counts(room_id: str) -> int:
return int(500 * 1.23) return int(500 * 1.23)


store.get_current_state_event_counts = get_current_state_event_counts # type: ignore[assignment]
store.get_current_state_event_counts = get_current_state_event_counts # type: ignore[method-assign]


# Get the room complexity again -- make sure it's our artificial value # Get the room complexity again -- make sure it's our artificial value
channel = self.make_signed_federation_request( channel = self.make_signed_federation_request(
@@ -74,8 +74,8 @@ class RoomComplexityTests(unittest.FederatingHomeserverTestCase):
fed_transport = self.hs.get_federation_transport_client() fed_transport = self.hs.get_federation_transport_client()


# Mock out some things, because we don't want to test the whole join # Mock out some things, because we don't want to test the whole join
fed_transport.client.get_json = AsyncMock(return_value={"v1": 9999}) # type: ignore[assignment]
handler.federation_handler.do_invite_join = AsyncMock( # type: ignore[assignment]
fed_transport.client.get_json = AsyncMock(return_value={"v1": 9999}) # type: ignore[method-assign]
handler.federation_handler.do_invite_join = AsyncMock( # type: ignore[method-assign]
return_value=("", 1) return_value=("", 1)
) )


@@ -105,8 +105,8 @@ class RoomComplexityTests(unittest.FederatingHomeserverTestCase):
fed_transport = self.hs.get_federation_transport_client() fed_transport = self.hs.get_federation_transport_client()


# Mock out some things, because we don't want to test the whole join # Mock out some things, because we don't want to test the whole join
fed_transport.client.get_json = AsyncMock(return_value={"v1": 9999}) # type: ignore[assignment]
handler.federation_handler.do_invite_join = AsyncMock( # type: ignore[assignment]
fed_transport.client.get_json = AsyncMock(return_value={"v1": 9999}) # type: ignore[method-assign]
handler.federation_handler.do_invite_join = AsyncMock( # type: ignore[method-assign]
return_value=("", 1) return_value=("", 1)
) )


@@ -142,8 +142,8 @@ class RoomComplexityTests(unittest.FederatingHomeserverTestCase):
fed_transport = self.hs.get_federation_transport_client() fed_transport = self.hs.get_federation_transport_client()


# Mock out some things, because we don't want to test the whole join # Mock out some things, because we don't want to test the whole join
fed_transport.client.get_json = AsyncMock(return_value=None) # type: ignore[assignment]
handler.federation_handler.do_invite_join = AsyncMock( # type: ignore[assignment]
fed_transport.client.get_json = AsyncMock(return_value=None) # type: ignore[method-assign]
handler.federation_handler.do_invite_join = AsyncMock( # type: ignore[method-assign]
return_value=("", 1) return_value=("", 1)
) )


@@ -151,7 +151,7 @@ class RoomComplexityTests(unittest.FederatingHomeserverTestCase):
async def get_current_state_event_counts(room_id: str) -> int: async def get_current_state_event_counts(room_id: str) -> int:
return 600 return 600


self.hs.get_datastores().main.get_current_state_event_counts = get_current_state_event_counts # type: ignore[assignment]
self.hs.get_datastores().main.get_current_state_event_counts = get_current_state_event_counts # type: ignore[method-assign]


d = handler._remote_join( d = handler._remote_join(
create_requester(u1), create_requester(u1),
@@ -199,8 +199,8 @@ class RoomComplexityAdminTests(unittest.FederatingHomeserverTestCase):
fed_transport = self.hs.get_federation_transport_client() fed_transport = self.hs.get_federation_transport_client()


# Mock out some things, because we don't want to test the whole join # Mock out some things, because we don't want to test the whole join
fed_transport.client.get_json = AsyncMock(return_value={"v1": 9999}) # type: ignore[assignment]
handler.federation_handler.do_invite_join = AsyncMock( # type: ignore[assignment]
fed_transport.client.get_json = AsyncMock(return_value={"v1": 9999}) # type: ignore[method-assign]
handler.federation_handler.do_invite_join = AsyncMock( # type: ignore[method-assign]
return_value=("", 1) return_value=("", 1)
) )


@@ -229,8 +229,8 @@ class RoomComplexityAdminTests(unittest.FederatingHomeserverTestCase):
fed_transport = self.hs.get_federation_transport_client() fed_transport = self.hs.get_federation_transport_client()


# Mock out some things, because we don't want to test the whole join # Mock out some things, because we don't want to test the whole join
fed_transport.client.get_json = AsyncMock(return_value={"v1": 9999}) # type: ignore[assignment]
handler.federation_handler.do_invite_join = AsyncMock( # type: ignore[assignment]
fed_transport.client.get_json = AsyncMock(return_value={"v1": 9999}) # type: ignore[method-assign]
handler.federation_handler.do_invite_join = AsyncMock( # type: ignore[method-assign]
return_value=("", 1) return_value=("", 1)
) )




+ 2
- 2
tests/federation/test_federation_catch_up.py View File

@@ -50,7 +50,7 @@ class FederationCatchUpTestCases(FederatingHomeserverTestCase):
# This mock is crucial for destination_rooms to be populated. # This mock is crucial for destination_rooms to be populated.
# TODO: this seems to no longer be the case---tests pass with this mock # TODO: this seems to no longer be the case---tests pass with this mock
# commented out. # commented out.
state_storage_controller.get_current_hosts_in_room = AsyncMock( # type: ignore[assignment]
state_storage_controller.get_current_hosts_in_room = AsyncMock( # type: ignore[method-assign]
return_value={"test", "host2"} return_value={"test", "host2"}
) )


@@ -436,7 +436,7 @@ class FederationCatchUpTestCases(FederatingHomeserverTestCase):
def wake_destination_track(destination: str) -> None: def wake_destination_track(destination: str) -> None:
woken.add(destination) woken.add(destination)


self.federation_sender.wake_destination = wake_destination_track # type: ignore[assignment]
self.federation_sender.wake_destination = wake_destination_track # type: ignore[method-assign]


# We wait quite long so that all dests can be woken up, since there is a delay # We wait quite long so that all dests can be woken up, since there is a delay
# between them. # between them.


+ 2
- 2
tests/federation/test_federation_sender.py View File

@@ -47,11 +47,11 @@ class FederationSenderReceiptsTestCases(HomeserverTestCase):
federation_transport_client=self.federation_transport_client, federation_transport_client=self.federation_transport_client,
) )


hs.get_storage_controllers().state.get_current_hosts_in_room = AsyncMock( # type: ignore[assignment]
hs.get_storage_controllers().state.get_current_hosts_in_room = AsyncMock( # type: ignore[method-assign]
return_value={"test", "host2"} return_value={"test", "host2"}
) )


hs.get_storage_controllers().state.get_current_hosts_in_room_or_partial_state_approximation = ( # type: ignore[assignment]
hs.get_storage_controllers().state.get_current_hosts_in_room_or_partial_state_approximation = ( # type: ignore[method-assign]
hs.get_storage_controllers().state.get_current_hosts_in_room hs.get_storage_controllers().state.get_current_hosts_in_room
) )




+ 2
- 2
tests/federation/transport/test_knocking.py View File

@@ -218,7 +218,7 @@ class FederationKnockingTestCase(
) -> EventBase: ) -> EventBase:
return pdu return pdu


homeserver.get_federation_server()._check_sigs_and_hash = ( # type: ignore[assignment]
homeserver.get_federation_server()._check_sigs_and_hash = ( # type: ignore[method-assign]
approve_all_signature_checking approve_all_signature_checking
) )


@@ -229,7 +229,7 @@ class FederationKnockingTestCase(
) -> None: ) -> None:
pass pass


homeserver.get_federation_event_handler()._check_event_auth = _check_event_auth # type: ignore[assignment]
homeserver.get_federation_event_handler()._check_event_auth = _check_event_auth # type: ignore[method-assign]


return super().prepare(reactor, clock, homeserver) return super().prepare(reactor, clock, homeserver)




+ 5
- 5
tests/handlers/test_appservice.py View File

@@ -400,11 +400,11 @@ class ApplicationServicesHandlerSendEventsTestCase(unittest.HomeserverTestCase):
# Mock the ApplicationServiceScheduler's _TransactionController's send method so that # Mock the ApplicationServiceScheduler's _TransactionController's send method so that
# we can track any outgoing ephemeral events # we can track any outgoing ephemeral events
self.send_mock = AsyncMock() self.send_mock = AsyncMock()
hs.get_application_service_handler().scheduler.txn_ctrl.send = self.send_mock # type: ignore[assignment]
hs.get_application_service_handler().scheduler.txn_ctrl.send = self.send_mock # type: ignore[method-assign]


# Mock out application services, and allow defining our own in tests # Mock out application services, and allow defining our own in tests
self._services: List[ApplicationService] = [] self._services: List[ApplicationService] = []
self.hs.get_datastores().main.get_app_services = Mock( # type: ignore[assignment]
self.hs.get_datastores().main.get_app_services = Mock( # type: ignore[method-assign]
return_value=self._services return_value=self._services
) )


@@ -898,11 +898,11 @@ class ApplicationServicesHandlerDeviceListsTestCase(unittest.HomeserverTestCase)
# Mock ApplicationServiceApi's put_json, so we can verify the raw JSON that # Mock ApplicationServiceApi's put_json, so we can verify the raw JSON that
# will be sent over the wire # will be sent over the wire
self.put_json = AsyncMock() self.put_json = AsyncMock()
hs.get_application_service_api().put_json = self.put_json # type: ignore[assignment]
hs.get_application_service_api().put_json = self.put_json # type: ignore[method-assign]


# Mock out application services, and allow defining our own in tests # Mock out application services, and allow defining our own in tests
self._services: List[ApplicationService] = [] self._services: List[ApplicationService] = []
self.hs.get_datastores().main.get_app_services = Mock( # type: ignore[assignment]
self.hs.get_datastores().main.get_app_services = Mock( # type: ignore[method-assign]
return_value=self._services return_value=self._services
) )


@@ -1004,7 +1004,7 @@ class ApplicationServicesHandlerOtkCountsTestCase(unittest.HomeserverTestCase):
# Mock the ApplicationServiceScheduler's _TransactionController's send method so that # Mock the ApplicationServiceScheduler's _TransactionController's send method so that
# we can track what's going out # we can track what's going out
self.send_mock = AsyncMock() self.send_mock = AsyncMock()
hs.get_application_service_handler().scheduler.txn_ctrl.send = self.send_mock # type: ignore[assignment] # We assign to a method.
hs.get_application_service_handler().scheduler.txn_ctrl.send = self.send_mock # type: ignore[method-assign] # We assign to a method.


# Define an application service for the tests # Define an application service for the tests
self._service_token = "VERYSECRET" self._service_token = "VERYSECRET"


+ 4
- 4
tests/handlers/test_cas.py View File

@@ -60,7 +60,7 @@ class CasHandlerTestCase(HomeserverTestCase):


# stub out the auth handler # stub out the auth handler
auth_handler = self.hs.get_auth_handler() auth_handler = self.hs.get_auth_handler()
auth_handler.complete_sso_login = AsyncMock() # type: ignore[assignment]
auth_handler.complete_sso_login = AsyncMock() # type: ignore[method-assign]


cas_response = CasResponse("test_user", {}) cas_response = CasResponse("test_user", {})
request = _mock_request() request = _mock_request()
@@ -88,7 +88,7 @@ class CasHandlerTestCase(HomeserverTestCase):


# stub out the auth handler # stub out the auth handler
auth_handler = self.hs.get_auth_handler() auth_handler = self.hs.get_auth_handler()
auth_handler.complete_sso_login = AsyncMock() # type: ignore[assignment]
auth_handler.complete_sso_login = AsyncMock() # type: ignore[method-assign]


# Map a user via SSO. # Map a user via SSO.
cas_response = CasResponse("test_user", {}) cas_response = CasResponse("test_user", {})
@@ -128,7 +128,7 @@ class CasHandlerTestCase(HomeserverTestCase):


# stub out the auth handler # stub out the auth handler
auth_handler = self.hs.get_auth_handler() auth_handler = self.hs.get_auth_handler()
auth_handler.complete_sso_login = AsyncMock() # type: ignore[assignment]
auth_handler.complete_sso_login = AsyncMock() # type: ignore[method-assign]


cas_response = CasResponse("föö", {}) cas_response = CasResponse("föö", {})
request = _mock_request() request = _mock_request()
@@ -159,7 +159,7 @@ class CasHandlerTestCase(HomeserverTestCase):


# stub out the auth handler # stub out the auth handler
auth_handler = self.hs.get_auth_handler() auth_handler = self.hs.get_auth_handler()
auth_handler.complete_sso_login = AsyncMock() # type: ignore[assignment]
auth_handler.complete_sso_login = AsyncMock() # type: ignore[method-assign]


# The response doesn't have the proper userGroup or department. # The response doesn't have the proper userGroup or department.
cas_response = CasResponse("test_user", {}) cas_response = CasResponse("test_user", {})


+ 2
- 2
tests/handlers/test_e2e_keys.py View File

@@ -800,7 +800,7 @@ class E2eKeysHandlerTestCase(unittest.HomeserverTestCase):
remote_master_key = "85T7JXPFBAySB/jwby4S3lBPTqY3+Zg53nYuGmu1ggY" remote_master_key = "85T7JXPFBAySB/jwby4S3lBPTqY3+Zg53nYuGmu1ggY"
remote_self_signing_key = "QeIiFEjluPBtI7WQdG365QKZcFs9kqmHir6RBD0//nQ" remote_self_signing_key = "QeIiFEjluPBtI7WQdG365QKZcFs9kqmHir6RBD0//nQ"


self.hs.get_federation_client().query_client_keys = mock.AsyncMock( # type: ignore[assignment]
self.hs.get_federation_client().query_client_keys = mock.AsyncMock( # type: ignore[method-assign]
return_value={ return_value={
"device_keys": {remote_user_id: {}}, "device_keys": {remote_user_id: {}},
"master_keys": { "master_keys": {
@@ -876,7 +876,7 @@ class E2eKeysHandlerTestCase(unittest.HomeserverTestCase):
remote_master_key = "85T7JXPFBAySB/jwby4S3lBPTqY3+Zg53nYuGmu1ggY" remote_master_key = "85T7JXPFBAySB/jwby4S3lBPTqY3+Zg53nYuGmu1ggY"
remote_self_signing_key = "QeIiFEjluPBtI7WQdG365QKZcFs9kqmHir6RBD0//nQ" remote_self_signing_key = "QeIiFEjluPBtI7WQdG365QKZcFs9kqmHir6RBD0//nQ"


self.hs.get_federation_client().query_user_devices = mock.AsyncMock( # type: ignore[assignment]
self.hs.get_federation_client().query_user_devices = mock.AsyncMock( # type: ignore[method-assign]
return_value={ return_value={
"user_id": remote_user_id, "user_id": remote_user_id,
"stream_id": 1, "stream_id": 1,


+ 2
- 2
tests/handlers/test_federation.py View File

@@ -371,14 +371,14 @@ class FederationTestCase(unittest.FederatingHomeserverTestCase):
# We mock out the FederationClient.backfill method, to pretend that a remote # We mock out the FederationClient.backfill method, to pretend that a remote
# server has returned our fake event. # server has returned our fake event.
federation_client_backfill_mock = AsyncMock(return_value=[event]) federation_client_backfill_mock = AsyncMock(return_value=[event])
self.hs.get_federation_client().backfill = federation_client_backfill_mock # type: ignore[assignment]
self.hs.get_federation_client().backfill = federation_client_backfill_mock # type: ignore[method-assign]


# We also mock the persist method with a side effect of itself. This allows us # We also mock the persist method with a side effect of itself. This allows us
# to track when it has been called while preserving its function. # to track when it has been called while preserving its function.
persist_events_and_notify_mock = Mock( persist_events_and_notify_mock = Mock(
side_effect=self.hs.get_federation_event_handler().persist_events_and_notify side_effect=self.hs.get_federation_event_handler().persist_events_and_notify
) )
self.hs.get_federation_event_handler().persist_events_and_notify = ( # type: ignore[assignment]
self.hs.get_federation_event_handler().persist_events_and_notify = ( # type: ignore[method-assign]
persist_events_and_notify_mock persist_events_and_notify_mock
) )




+ 2
- 2
tests/handlers/test_oidc.py View File

@@ -157,7 +157,7 @@ class OidcHandlerTestCase(HomeserverTestCase):
sso_handler = hs.get_sso_handler() sso_handler = hs.get_sso_handler()
# Mock the render error method. # Mock the render error method.
self.render_error = Mock(return_value=None) self.render_error = Mock(return_value=None)
sso_handler.render_error = self.render_error # type: ignore[assignment]
sso_handler.render_error = self.render_error # type: ignore[method-assign]


# Reduce the number of attempts when generating MXIDs. # Reduce the number of attempts when generating MXIDs.
sso_handler._MAP_USERNAME_RETRIES = 3 sso_handler._MAP_USERNAME_RETRIES = 3
@@ -165,7 +165,7 @@ class OidcHandlerTestCase(HomeserverTestCase):
auth_handler = hs.get_auth_handler() auth_handler = hs.get_auth_handler()
# Mock the complete SSO login method. # Mock the complete SSO login method.
self.complete_sso_login = AsyncMock() self.complete_sso_login = AsyncMock()
auth_handler.complete_sso_login = self.complete_sso_login # type: ignore[assignment]
auth_handler.complete_sso_login = self.complete_sso_login # type: ignore[method-assign]


return hs return hs




+ 1
- 1
tests/handlers/test_password_providers.py View File

@@ -830,7 +830,7 @@ class PasswordAuthProviderTests(unittest.HomeserverTestCase):
username: The username to use for the test. username: The username to use for the test.
registration: Whether to test with registration URLs. registration: Whether to test with registration URLs.
""" """
self.hs.get_identity_handler().send_threepid_validation = AsyncMock( # type: ignore[assignment]
self.hs.get_identity_handler().send_threepid_validation = AsyncMock( # type: ignore[method-assign]
return_value=0 return_value=0
) )




+ 3
- 3
tests/handlers/test_register.py View File

@@ -202,7 +202,7 @@ class RegistrationTestCase(unittest.HomeserverTestCase):


@override_config({"limit_usage_by_mau": True}) @override_config({"limit_usage_by_mau": True})
def test_get_or_create_user_mau_not_blocked(self) -> None: def test_get_or_create_user_mau_not_blocked(self) -> None:
self.store.count_monthly_users = AsyncMock( # type: ignore[assignment]
self.store.count_monthly_users = AsyncMock( # type: ignore[method-assign]
return_value=self.hs.config.server.max_mau_value - 1 return_value=self.hs.config.server.max_mau_value - 1
) )
# Ensure does not throw exception # Ensure does not throw exception
@@ -299,7 +299,7 @@ class RegistrationTestCase(unittest.HomeserverTestCase):
def test_auto_create_auto_join_rooms_when_user_is_the_first_real_user(self) -> None: def test_auto_create_auto_join_rooms_when_user_is_the_first_real_user(self) -> None:
room_alias_str = "#room:test" room_alias_str = "#room:test"


self.store.count_real_users = AsyncMock(return_value=1) # type: ignore[assignment]
self.store.count_real_users = AsyncMock(return_value=1) # type: ignore[method-assign]
self.store.is_real_user = AsyncMock(return_value=True) self.store.is_real_user = AsyncMock(return_value=True)
user_id = self.get_success(self.handler.register_user(localpart="real")) user_id = self.get_success(self.handler.register_user(localpart="real"))
rooms = self.get_success(self.store.get_rooms_for_user(user_id)) rooms = self.get_success(self.store.get_rooms_for_user(user_id))
@@ -314,7 +314,7 @@ class RegistrationTestCase(unittest.HomeserverTestCase):
def test_auto_create_auto_join_rooms_when_user_is_not_the_first_real_user( def test_auto_create_auto_join_rooms_when_user_is_not_the_first_real_user(
self, self,
) -> None: ) -> None:
self.store.count_real_users = AsyncMock(return_value=2) # type: ignore[assignment]
self.store.count_real_users = AsyncMock(return_value=2) # type: ignore[method-assign]
self.store.is_real_user = AsyncMock(return_value=True) self.store.is_real_user = AsyncMock(return_value=True)
user_id = self.get_success(self.handler.register_user(localpart="real")) user_id = self.get_success(self.handler.register_user(localpart="real"))
rooms = self.get_success(self.store.get_rooms_for_user(user_id)) rooms = self.get_success(self.store.get_rooms_for_user(user_id))


+ 7
- 7
tests/handlers/test_saml.py View File

@@ -133,7 +133,7 @@ class SamlHandlerTestCase(HomeserverTestCase):


# stub out the auth handler # stub out the auth handler
auth_handler = self.hs.get_auth_handler() auth_handler = self.hs.get_auth_handler()
auth_handler.complete_sso_login = AsyncMock() # type: ignore[assignment]
auth_handler.complete_sso_login = AsyncMock() # type: ignore[method-assign]


# send a mocked-up SAML response to the callback # send a mocked-up SAML response to the callback
saml_response = FakeAuthnResponse({"uid": "test_user", "username": "test_user"}) saml_response = FakeAuthnResponse({"uid": "test_user", "username": "test_user"})
@@ -163,7 +163,7 @@ class SamlHandlerTestCase(HomeserverTestCase):


# stub out the auth handler # stub out the auth handler
auth_handler = self.hs.get_auth_handler() auth_handler = self.hs.get_auth_handler()
auth_handler.complete_sso_login = AsyncMock() # type: ignore[assignment]
auth_handler.complete_sso_login = AsyncMock() # type: ignore[method-assign]


# Map a user via SSO. # Map a user via SSO.
saml_response = FakeAuthnResponse( saml_response = FakeAuthnResponse(
@@ -205,11 +205,11 @@ class SamlHandlerTestCase(HomeserverTestCase):


# stub out the auth handler # stub out the auth handler
auth_handler = self.hs.get_auth_handler() auth_handler = self.hs.get_auth_handler()
auth_handler.complete_sso_login = AsyncMock() # type: ignore[assignment]
auth_handler.complete_sso_login = AsyncMock() # type: ignore[method-assign]


# mock out the error renderer too # mock out the error renderer too
sso_handler = self.hs.get_sso_handler() sso_handler = self.hs.get_sso_handler()
sso_handler.render_error = Mock(return_value=None) # type: ignore[assignment]
sso_handler.render_error = Mock(return_value=None) # type: ignore[method-assign]


saml_response = FakeAuthnResponse({"uid": "test", "username": "föö"}) saml_response = FakeAuthnResponse({"uid": "test", "username": "föö"})
request = _mock_request() request = _mock_request()
@@ -226,9 +226,9 @@ class SamlHandlerTestCase(HomeserverTestCase):


# stub out the auth handler and error renderer # stub out the auth handler and error renderer
auth_handler = self.hs.get_auth_handler() auth_handler = self.hs.get_auth_handler()
auth_handler.complete_sso_login = AsyncMock() # type: ignore[assignment]
auth_handler.complete_sso_login = AsyncMock() # type: ignore[method-assign]
sso_handler = self.hs.get_sso_handler() sso_handler = self.hs.get_sso_handler()
sso_handler.render_error = Mock(return_value=None) # type: ignore[assignment]
sso_handler.render_error = Mock(return_value=None) # type: ignore[method-assign]


# register a user to occupy the first-choice MXID # register a user to occupy the first-choice MXID
store = self.hs.get_datastores().main store = self.hs.get_datastores().main
@@ -311,7 +311,7 @@ class SamlHandlerTestCase(HomeserverTestCase):


# stub out the auth handler # stub out the auth handler
auth_handler = self.hs.get_auth_handler() auth_handler = self.hs.get_auth_handler()
auth_handler.complete_sso_login = AsyncMock() # type: ignore[assignment]
auth_handler.complete_sso_login = AsyncMock() # type: ignore[method-assign]


# The response doesn't have the proper userGroup or department. # The response doesn't have the proper userGroup or department.
saml_response = FakeAuthnResponse({"uid": "test_user", "username": "test_user"}) saml_response = FakeAuthnResponse({"uid": "test_user", "username": "test_user"})


+ 13
- 13
tests/handlers/test_typing.py View File

@@ -122,15 +122,15 @@ class TypingNotificationsTestCase(unittest.HomeserverTestCase):


self.datastore.get_destination_retry_timings = AsyncMock(return_value=None) self.datastore.get_destination_retry_timings = AsyncMock(return_value=None)


self.datastore.get_device_updates_by_remote = AsyncMock( # type: ignore[assignment]
self.datastore.get_device_updates_by_remote = AsyncMock( # type: ignore[method-assign]
return_value=(0, []) return_value=(0, [])
) )


self.datastore.get_destination_last_successful_stream_ordering = AsyncMock( # type: ignore[assignment]
self.datastore.get_destination_last_successful_stream_ordering = AsyncMock( # type: ignore[method-assign]
return_value=None return_value=None
) )


self.datastore.get_received_txn_response = AsyncMock( # type: ignore[assignment]
self.datastore.get_received_txn_response = AsyncMock( # type: ignore[method-assign]
return_value=None return_value=None
) )


@@ -143,25 +143,25 @@ class TypingNotificationsTestCase(unittest.HomeserverTestCase):
raise AuthError(401, "User is not in the room") raise AuthError(401, "User is not in the room")
return None return None


hs.get_auth().check_user_in_room = Mock( # type: ignore[assignment]
hs.get_auth().check_user_in_room = Mock( # type: ignore[method-assign]
side_effect=check_user_in_room side_effect=check_user_in_room
) )


async def check_host_in_room(room_id: str, server_name: str) -> bool: async def check_host_in_room(room_id: str, server_name: str) -> bool:
return room_id == ROOM_ID return room_id == ROOM_ID


hs.get_event_auth_handler().is_host_in_room = Mock( # type: ignore[assignment]
hs.get_event_auth_handler().is_host_in_room = Mock( # type: ignore[method-assign]
side_effect=check_host_in_room side_effect=check_host_in_room
) )


async def get_current_hosts_in_room(room_id: str) -> Set[str]: async def get_current_hosts_in_room(room_id: str) -> Set[str]:
return {member.domain for member in self.room_members} return {member.domain for member in self.room_members}


hs.get_storage_controllers().state.get_current_hosts_in_room = Mock( # type: ignore[assignment]
hs.get_storage_controllers().state.get_current_hosts_in_room = Mock( # type: ignore[method-assign]
side_effect=get_current_hosts_in_room side_effect=get_current_hosts_in_room
) )


hs.get_storage_controllers().state.get_current_hosts_in_room_or_partial_state_approximation = Mock( # type: ignore[assignment]
hs.get_storage_controllers().state.get_current_hosts_in_room_or_partial_state_approximation = Mock( # type: ignore[method-assign]
side_effect=get_current_hosts_in_room side_effect=get_current_hosts_in_room
) )


@@ -170,24 +170,24 @@ class TypingNotificationsTestCase(unittest.HomeserverTestCase):


self.datastore.get_users_in_room = Mock(side_effect=get_users_in_room) self.datastore.get_users_in_room = Mock(side_effect=get_users_in_room)


self.datastore.get_user_directory_stream_pos = AsyncMock( # type: ignore[assignment]
self.datastore.get_user_directory_stream_pos = AsyncMock( # type: ignore[method-assign]
# we deliberately return a non-None stream pos to avoid # we deliberately return a non-None stream pos to avoid
# doing an initial_sync # doing an initial_sync
return_value=1 return_value=1
) )


self.datastore.get_partial_current_state_deltas = Mock(return_value=(0, None)) # type: ignore[assignment]
self.datastore.get_partial_current_state_deltas = Mock(return_value=(0, None)) # type: ignore[method-assign]


self.datastore.get_to_device_stream_token = Mock( # type: ignore[assignment]
self.datastore.get_to_device_stream_token = Mock( # type: ignore[method-assign]
return_value=0 return_value=0
) )
self.datastore.get_new_device_msgs_for_remote = AsyncMock( # type: ignore[assignment]
self.datastore.get_new_device_msgs_for_remote = AsyncMock( # type: ignore[method-assign]
return_value=([], 0) return_value=([], 0)
) )
self.datastore.delete_device_msgs_for_remote = AsyncMock( # type: ignore[assignment]
self.datastore.delete_device_msgs_for_remote = AsyncMock( # type: ignore[method-assign]
return_value=None return_value=None
) )
self.datastore.set_received_txn_response = AsyncMock( # type: ignore[assignment]
self.datastore.set_received_txn_response = AsyncMock( # type: ignore[method-assign]
return_value=None return_value=None
) )




+ 1
- 1
tests/logging/test_terse_json.py View File

@@ -164,7 +164,7 @@ class TerseJsonTestCase(LoggerCleanupMixin, TestCase):
# Call requestReceived to finish instantiating the object. # Call requestReceived to finish instantiating the object.
request.content = BytesIO() request.content = BytesIO()
# Partially skip some internal processing of SynapseRequest. # Partially skip some internal processing of SynapseRequest.
request._started_processing = Mock() # type: ignore[assignment]
request._started_processing = Mock() # type: ignore[method-assign]
request.request_metrics = Mock(spec=["name"]) request.request_metrics = Mock(spec=["name"])
with patch.object(Request, "render"): with patch.object(Request, "render"):
request.requestReceived(b"POST", b"/_matrix/client/versions", b"1.1") request.requestReceived(b"POST", b"/_matrix/client/versions", b"1.1")


+ 2
- 2
tests/module_api/test_api.py View File

@@ -233,7 +233,7 @@ class ModuleApiTestCase(BaseModuleApiTestCase):
def test_sending_events_into_room(self) -> None: def test_sending_events_into_room(self) -> None:
"""Tests that a module can send events into a room""" """Tests that a module can send events into a room"""
# Mock out create_and_send_nonmember_event to check whether events are being sent # Mock out create_and_send_nonmember_event to check whether events are being sent
self.event_creation_handler.create_and_send_nonmember_event = Mock( # type: ignore[assignment]
self.event_creation_handler.create_and_send_nonmember_event = Mock( # type: ignore[method-assign]
spec=[], spec=[],
side_effect=self.event_creation_handler.create_and_send_nonmember_event, side_effect=self.event_creation_handler.create_and_send_nonmember_event,
) )
@@ -579,7 +579,7 @@ class ModuleApiTestCase(BaseModuleApiTestCase):
# Necessary to fake a remote join. # Necessary to fake a remote join.
fake_stream_id = 1 fake_stream_id = 1
mocked_remote_join = AsyncMock(return_value=("fake-event-id", fake_stream_id)) mocked_remote_join = AsyncMock(return_value=("fake-event-id", fake_stream_id))
self.hs.get_room_member_handler()._remote_join = mocked_remote_join # type: ignore[assignment]
self.hs.get_room_member_handler()._remote_join = mocked_remote_join # type: ignore[method-assign]
fake_remote_host = f"{self.module_api.server_name}-remote" fake_remote_host = f"{self.module_api.server_name}-remote"


# Given that the join is to be faked, we expect the relevant join event not to # Given that the join is to be faked, we expect the relevant join event not to


+ 1
- 1
tests/push/test_bulk_push_rule_evaluator.py View File

@@ -190,7 +190,7 @@ class TestBulkPushRuleEvaluator(HomeserverTestCase):
# Mock the method which calculates push rules -- we do this instead of # Mock the method which calculates push rules -- we do this instead of
# e.g. checking the results in the database because we want to ensure # e.g. checking the results in the database because we want to ensure
# that code isn't even running. # that code isn't even running.
bulk_evaluator._action_for_event_by_user = AsyncMock() # type: ignore[assignment]
bulk_evaluator._action_for_event_by_user = AsyncMock() # type: ignore[method-assign]


# Ensure no actions are generated! # Ensure no actions are generated!
self.get_success(bulk_evaluator.action_for_events_by_user([(event, context)])) self.get_success(bulk_evaluator.action_for_events_by_user([(event, context)]))


+ 1
- 1
tests/replication/storage/test_events.py View File

@@ -58,7 +58,7 @@ def patch__eq__(cls: object) -> Callable[[], None]:


def unpatch() -> None: def unpatch() -> None:
if eq is not None: if eq is not None:
cls.__eq__ = eq # type: ignore[assignment]
cls.__eq__ = eq # type: ignore[method-assign]


return unpatch return unpatch




+ 2
- 2
tests/rest/admin/test_user.py View File

@@ -71,8 +71,8 @@ class UserRegisterTestCase(unittest.HomeserverTestCase):


self.hs.config.registration.registration_shared_secret = "shared" self.hs.config.registration.registration_shared_secret = "shared"


self.hs.get_media_repository = Mock() # type: ignore[assignment]
self.hs.get_deactivate_account_handler = Mock() # type: ignore[assignment]
self.hs.get_media_repository = Mock() # type: ignore[method-assign]
self.hs.get_deactivate_account_handler = Mock() # type: ignore[method-assign]


return self.hs return self.hs




+ 1
- 1
tests/rest/admin/test_username_available.py View File

@@ -50,7 +50,7 @@ class UsernameAvailableTestCase(unittest.HomeserverTestCase):
) )


handler = self.hs.get_registration_handler() handler = self.hs.get_registration_handler()
handler.check_username = check_username # type: ignore[assignment]
handler.check_username = check_username # type: ignore[method-assign]


def test_username_available(self) -> None: def test_username_available(self) -> None:
""" """


+ 1
- 1
tests/rest/client/test_account.py View File

@@ -1346,7 +1346,7 @@ class AccountStatusTestCase(unittest.HomeserverTestCase):
return {} return {}


# Register a mock that will return the expected result depending on the remote. # Register a mock that will return the expected result depending on the remote.
self.hs.get_federation_http_client().post_json = Mock(side_effect=post_json) # type: ignore[assignment]
self.hs.get_federation_http_client().post_json = Mock(side_effect=post_json) # type: ignore[method-assign]


# Check that we've got the correct response from the client-side endpoint. # Check that we've got the correct response from the client-side endpoint.
self._test_status( self._test_status(


+ 1
- 1
tests/rest/client/test_events.py View File

@@ -45,7 +45,7 @@ class EventStreamPermissionsTestCase(unittest.HomeserverTestCase):


hs = self.setup_test_homeserver(config=config) hs = self.setup_test_homeserver(config=config)


hs.get_federation_handler = Mock() # type: ignore[assignment]
hs.get_federation_handler = Mock() # type: ignore[method-assign]


return hs return hs




+ 2
- 2
tests/rest/client/test_filter.py View File

@@ -65,14 +65,14 @@ class FilterTestCase(unittest.HomeserverTestCase):


def test_add_filter_non_local_user(self) -> None: def test_add_filter_non_local_user(self) -> None:
_is_mine = self.hs.is_mine _is_mine = self.hs.is_mine
self.hs.is_mine = lambda target_user: False # type: ignore[assignment]
self.hs.is_mine = lambda target_user: False # type: ignore[method-assign]
channel = self.make_request( channel = self.make_request(
"POST", "POST",
"/_matrix/client/r0/user/%s/filter" % (self.user_id), "/_matrix/client/r0/user/%s/filter" % (self.user_id),
self.EXAMPLE_FILTER_JSON, self.EXAMPLE_FILTER_JSON,
) )


self.hs.is_mine = _is_mine # type: ignore[assignment]
self.hs.is_mine = _is_mine # type: ignore[method-assign]
self.assertEqual(channel.code, 403) self.assertEqual(channel.code, 403)
self.assertEqual(channel.json_body["errcode"], Codes.FORBIDDEN) self.assertEqual(channel.json_body["errcode"], Codes.FORBIDDEN)




+ 6
- 6
tests/rest/client/test_rooms.py View File

@@ -68,7 +68,7 @@ class RoomBase(unittest.HomeserverTestCase):
"red", "red",
) )


self.hs.get_federation_handler = Mock() # type: ignore[assignment]
self.hs.get_federation_handler = Mock() # type: ignore[method-assign]
self.hs.get_federation_handler.return_value.maybe_backfill = AsyncMock( self.hs.get_federation_handler.return_value.maybe_backfill = AsyncMock(
return_value=None return_value=None
) )
@@ -76,7 +76,7 @@ class RoomBase(unittest.HomeserverTestCase):
async def _insert_client_ip(*args: Any, **kwargs: Any) -> None: async def _insert_client_ip(*args: Any, **kwargs: Any) -> None:
return None return None


self.hs.get_datastores().main.insert_client_ip = _insert_client_ip # type: ignore[assignment]
self.hs.get_datastores().main.insert_client_ip = _insert_client_ip # type: ignore[method-assign]


return self.hs return self.hs


@@ -3413,8 +3413,8 @@ class ThreepidInviteTestCase(unittest.HomeserverTestCase):
# a remote IS. We keep the mock for make_and_store_3pid_invite around so we # a remote IS. We keep the mock for make_and_store_3pid_invite around so we
# can check its call_count later on during the test. # can check its call_count later on during the test.
make_invite_mock = AsyncMock(return_value=(Mock(event_id="abc"), 0)) make_invite_mock = AsyncMock(return_value=(Mock(event_id="abc"), 0))
self.hs.get_room_member_handler()._make_and_store_3pid_invite = make_invite_mock # type: ignore[assignment]
self.hs.get_identity_handler().lookup_3pid = AsyncMock( # type: ignore[assignment]
self.hs.get_room_member_handler()._make_and_store_3pid_invite = make_invite_mock # type: ignore[method-assign]
self.hs.get_identity_handler().lookup_3pid = AsyncMock( # type: ignore[method-assign]
return_value=None, return_value=None,
) )


@@ -3477,8 +3477,8 @@ class ThreepidInviteTestCase(unittest.HomeserverTestCase):
# a remote IS. We keep the mock for make_and_store_3pid_invite around so we # a remote IS. We keep the mock for make_and_store_3pid_invite around so we
# can check its call_count later on during the test. # can check its call_count later on during the test.
make_invite_mock = AsyncMock(return_value=(Mock(event_id="abc"), 0)) make_invite_mock = AsyncMock(return_value=(Mock(event_id="abc"), 0))
self.hs.get_room_member_handler()._make_and_store_3pid_invite = make_invite_mock # type: ignore[assignment]
self.hs.get_identity_handler().lookup_3pid = AsyncMock( # type: ignore[assignment]
self.hs.get_room_member_handler()._make_and_store_3pid_invite = make_invite_mock # type: ignore[method-assign]
self.hs.get_identity_handler().lookup_3pid = AsyncMock( # type: ignore[method-assign]
return_value=None, return_value=None,
) )




+ 1
- 1
tests/rest/client/test_shadow_banned.py View File

@@ -84,7 +84,7 @@ class RoomTestCase(_ShadowBannedBase):
def test_invite_3pid(self) -> None: def test_invite_3pid(self) -> None:
"""Ensure that a 3PID invite does not attempt to contact the identity server.""" """Ensure that a 3PID invite does not attempt to contact the identity server."""
identity_handler = self.hs.get_identity_handler() identity_handler = self.hs.get_identity_handler()
identity_handler.lookup_3pid = Mock( # type: ignore[assignment]
identity_handler.lookup_3pid = Mock( # type: ignore[method-assign]
side_effect=AssertionError("This should not get called") side_effect=AssertionError("This should not get called")
) )




+ 1
- 1
tests/rest/client/test_third_party_rules.py View File

@@ -117,7 +117,7 @@ class ThirdPartyRulesTestCase(unittest.FederatingHomeserverTestCase):
async def _check_event_auth(origin: Any, event: Any, context: Any) -> None: async def _check_event_auth(origin: Any, event: Any, context: Any) -> None:
pass pass


hs.get_federation_event_handler()._check_event_auth = _check_event_auth # type: ignore[assignment]
hs.get_federation_event_handler()._check_event_auth = _check_event_auth # type: ignore[method-assign]


return hs return hs




+ 1
- 1
tests/server.py View File

@@ -722,7 +722,7 @@ def _make_test_homeserver_synchronous(server: HomeServer) -> None:
**kwargs, **kwargs,
) )


pool.runWithConnection = runWithConnection # type: ignore[assignment]
pool.runWithConnection = runWithConnection # type: ignore[method-assign]
pool.runInteraction = runInteraction # type: ignore[assignment] pool.runInteraction = runInteraction # type: ignore[assignment]
# Replace the thread pool with a threadless 'thread' pool # Replace the thread pool with a threadless 'thread' pool
pool.threadpool = ThreadPool(clock._reactor) pool.threadpool = ThreadPool(clock._reactor)


+ 15
- 15
tests/server_notices/test_resource_limits_server_notices.py View File

@@ -69,7 +69,7 @@ class TestResourceLimitsServerNotices(unittest.HomeserverTestCase):
self._rlsn = rlsn self._rlsn = rlsn


self._rlsn._store.user_last_seen_monthly_active = AsyncMock(return_value=1000) self._rlsn._store.user_last_seen_monthly_active = AsyncMock(return_value=1000)
self._rlsn._server_notices_manager.send_notice = AsyncMock( # type: ignore[assignment]
self._rlsn._server_notices_manager.send_notice = AsyncMock( # type: ignore[method-assign]
return_value=Mock() return_value=Mock()
) )
self._send_notice = self._rlsn._server_notices_manager.send_notice self._send_notice = self._rlsn._server_notices_manager.send_notice
@@ -82,8 +82,8 @@ class TestResourceLimitsServerNotices(unittest.HomeserverTestCase):
self._rlsn._server_notices_manager.maybe_get_notice_room_for_user = AsyncMock( self._rlsn._server_notices_manager.maybe_get_notice_room_for_user = AsyncMock(
return_value="!something:localhost" return_value="!something:localhost"
) )
self._rlsn._store.add_tag_to_room = AsyncMock(return_value=None) # type: ignore[assignment]
self._rlsn._store.get_tags_for_room = AsyncMock(return_value={}) # type: ignore[assignment]
self._rlsn._store.add_tag_to_room = AsyncMock(return_value=None) # type: ignore[method-assign]
self._rlsn._store.get_tags_for_room = AsyncMock(return_value={}) # type: ignore[method-assign]


@override_config({"hs_disabled": True}) @override_config({"hs_disabled": True})
def test_maybe_send_server_notice_disabled_hs(self) -> None: def test_maybe_send_server_notice_disabled_hs(self) -> None:
@@ -100,13 +100,13 @@ class TestResourceLimitsServerNotices(unittest.HomeserverTestCase):
def test_maybe_send_server_notice_to_user_remove_blocked_notice(self) -> None: def test_maybe_send_server_notice_to_user_remove_blocked_notice(self) -> None:
"""Test when user has blocked notice, but should have it removed""" """Test when user has blocked notice, but should have it removed"""


self._rlsn._auth_blocking.check_auth_blocking = AsyncMock( # type: ignore[assignment]
self._rlsn._auth_blocking.check_auth_blocking = AsyncMock( # type: ignore[method-assign]
return_value=None return_value=None
) )
mock_event = Mock( mock_event = Mock(
type=EventTypes.Message, content={"msgtype": ServerNoticeMsgType} type=EventTypes.Message, content={"msgtype": ServerNoticeMsgType}
) )
self._rlsn._store.get_events = AsyncMock( # type: ignore[assignment]
self._rlsn._store.get_events = AsyncMock( # type: ignore[method-assign]
return_value={"123": mock_event} return_value={"123": mock_event}
) )
self.get_success(self._rlsn.maybe_send_server_notice_to_user(self.user_id)) self.get_success(self._rlsn.maybe_send_server_notice_to_user(self.user_id))
@@ -122,7 +122,7 @@ class TestResourceLimitsServerNotices(unittest.HomeserverTestCase):
""" """
Test when user has blocked notice, but notice ought to be there (NOOP) Test when user has blocked notice, but notice ought to be there (NOOP)
""" """
self._rlsn._auth_blocking.check_auth_blocking = AsyncMock( # type: ignore[assignment]
self._rlsn._auth_blocking.check_auth_blocking = AsyncMock( # type: ignore[method-assign]
return_value=None, return_value=None,
side_effect=ResourceLimitError(403, "foo"), side_effect=ResourceLimitError(403, "foo"),
) )
@@ -130,7 +130,7 @@ class TestResourceLimitsServerNotices(unittest.HomeserverTestCase):
mock_event = Mock( mock_event = Mock(
type=EventTypes.Message, content={"msgtype": ServerNoticeMsgType} type=EventTypes.Message, content={"msgtype": ServerNoticeMsgType}
) )
self._rlsn._store.get_events = AsyncMock( # type: ignore[assignment]
self._rlsn._store.get_events = AsyncMock( # type: ignore[method-assign]
return_value={"123": mock_event} return_value={"123": mock_event}
) )


@@ -142,7 +142,7 @@ class TestResourceLimitsServerNotices(unittest.HomeserverTestCase):
""" """
Test when user does not have blocked notice, but should have one Test when user does not have blocked notice, but should have one
""" """
self._rlsn._auth_blocking.check_auth_blocking = AsyncMock( # type: ignore[assignment]
self._rlsn._auth_blocking.check_auth_blocking = AsyncMock( # type: ignore[method-assign]
return_value=None, return_value=None,
side_effect=ResourceLimitError(403, "foo"), side_effect=ResourceLimitError(403, "foo"),
) )
@@ -155,7 +155,7 @@ class TestResourceLimitsServerNotices(unittest.HomeserverTestCase):
""" """
Test when user does not have blocked notice, nor should they (NOOP) Test when user does not have blocked notice, nor should they (NOOP)
""" """
self._rlsn._auth_blocking.check_auth_blocking = AsyncMock( # type: ignore[assignment]
self._rlsn._auth_blocking.check_auth_blocking = AsyncMock( # type: ignore[method-assign]
return_value=None return_value=None
) )


@@ -168,7 +168,7 @@ class TestResourceLimitsServerNotices(unittest.HomeserverTestCase):
Test when user is not part of the MAU cohort - this should not ever Test when user is not part of the MAU cohort - this should not ever
happen - but ... happen - but ...
""" """
self._rlsn._auth_blocking.check_auth_blocking = AsyncMock( # type: ignore[assignment]
self._rlsn._auth_blocking.check_auth_blocking = AsyncMock( # type: ignore[method-assign]
return_value=None return_value=None
) )
self._rlsn._store.user_last_seen_monthly_active = AsyncMock(return_value=None) self._rlsn._store.user_last_seen_monthly_active = AsyncMock(return_value=None)
@@ -184,7 +184,7 @@ class TestResourceLimitsServerNotices(unittest.HomeserverTestCase):
Test that when server is over MAU limit and alerting is suppressed, then Test that when server is over MAU limit and alerting is suppressed, then
an alert message is not sent into the room an alert message is not sent into the room
""" """
self._rlsn._auth_blocking.check_auth_blocking = AsyncMock( # type: ignore[assignment]
self._rlsn._auth_blocking.check_auth_blocking = AsyncMock( # type: ignore[method-assign]
return_value=None, return_value=None,
side_effect=ResourceLimitError( side_effect=ResourceLimitError(
403, "foo", limit_type=LimitBlockingTypes.MONTHLY_ACTIVE_USER 403, "foo", limit_type=LimitBlockingTypes.MONTHLY_ACTIVE_USER
@@ -199,7 +199,7 @@ class TestResourceLimitsServerNotices(unittest.HomeserverTestCase):
""" """
Test that when a server is disabled, that MAU limit alerting is ignored. Test that when a server is disabled, that MAU limit alerting is ignored.
""" """
self._rlsn._auth_blocking.check_auth_blocking = AsyncMock( # type: ignore[assignment]
self._rlsn._auth_blocking.check_auth_blocking = AsyncMock( # type: ignore[method-assign]
return_value=None, return_value=None,
side_effect=ResourceLimitError( side_effect=ResourceLimitError(
403, "foo", limit_type=LimitBlockingTypes.HS_DISABLED 403, "foo", limit_type=LimitBlockingTypes.HS_DISABLED
@@ -218,21 +218,21 @@ class TestResourceLimitsServerNotices(unittest.HomeserverTestCase):
When the room is already in a blocked state, test that when alerting When the room is already in a blocked state, test that when alerting
is suppressed that the room is returned to an unblocked state. is suppressed that the room is returned to an unblocked state.
""" """
self._rlsn._auth_blocking.check_auth_blocking = AsyncMock( # type: ignore[assignment]
self._rlsn._auth_blocking.check_auth_blocking = AsyncMock( # type: ignore[method-assign]
return_value=None, return_value=None,
side_effect=ResourceLimitError( side_effect=ResourceLimitError(
403, "foo", limit_type=LimitBlockingTypes.MONTHLY_ACTIVE_USER 403, "foo", limit_type=LimitBlockingTypes.MONTHLY_ACTIVE_USER
), ),
) )


self._rlsn._is_room_currently_blocked = AsyncMock( # type: ignore[assignment]
self._rlsn._is_room_currently_blocked = AsyncMock( # type: ignore[method-assign]
return_value=(True, []) return_value=(True, [])
) )


mock_event = Mock( mock_event = Mock(
type=EventTypes.Message, content={"msgtype": ServerNoticeMsgType} type=EventTypes.Message, content={"msgtype": ServerNoticeMsgType}
) )
self._rlsn._store.get_events = AsyncMock( # type: ignore[assignment]
self._rlsn._store.get_events = AsyncMock( # type: ignore[method-assign]
return_value={"123": mock_event} return_value={"123": mock_event}
) )
self.get_success(self._rlsn.maybe_send_server_notice_to_user(self.user_id)) self.get_success(self._rlsn.maybe_send_server_notice_to_user(self.user_id))


+ 1
- 1
tests/storage/test_appservice.py View File

@@ -338,7 +338,7 @@ class ApplicationServiceTransactionStoreTestCase(unittest.HomeserverTestCase):


# we aren't testing store._base stuff here, so mock this out # we aren't testing store._base stuff here, so mock this out
# (ignore needed because Mypy won't allow us to assign to a method otherwise) # (ignore needed because Mypy won't allow us to assign to a method otherwise)
self.store.get_events_as_list = AsyncMock(return_value=events) # type: ignore[assignment]
self.store.get_events_as_list = AsyncMock(return_value=events) # type: ignore[method-assign]


self.get_success(self._insert_txn(self.as_list[1]["id"], 9, other_events)) self.get_success(self._insert_txn(self.as_list[1]["id"], 9, other_events))
self.get_success(self._insert_txn(service.id, 10, events)) self.get_success(self._insert_txn(service.id, 10, events))


+ 6
- 6
tests/storage/test_monthly_active_users.py View File

@@ -252,7 +252,7 @@ class MonthlyActiveUsersTestCase(unittest.HomeserverTestCase):
) )
self.get_success(d) self.get_success(d)


self.store.upsert_monthly_active_user = AsyncMock(return_value=None) # type: ignore[assignment]
self.store.upsert_monthly_active_user = AsyncMock(return_value=None) # type: ignore[method-assign]


d = self.store.populate_monthly_active_users(user_id) d = self.store.populate_monthly_active_users(user_id)
self.get_success(d) self.get_success(d)
@@ -260,9 +260,9 @@ class MonthlyActiveUsersTestCase(unittest.HomeserverTestCase):
self.store.upsert_monthly_active_user.assert_not_called() self.store.upsert_monthly_active_user.assert_not_called()


def test_populate_monthly_users_should_update(self) -> None: def test_populate_monthly_users_should_update(self) -> None:
self.store.upsert_monthly_active_user = AsyncMock(return_value=None) # type: ignore[assignment]
self.store.upsert_monthly_active_user = AsyncMock(return_value=None) # type: ignore[method-assign]


self.store.is_trial_user = AsyncMock(return_value=False) # type: ignore[assignment]
self.store.is_trial_user = AsyncMock(return_value=False) # type: ignore[method-assign]


self.store.user_last_seen_monthly_active = AsyncMock(return_value=None) self.store.user_last_seen_monthly_active = AsyncMock(return_value=None)
d = self.store.populate_monthly_active_users("user_id") d = self.store.populate_monthly_active_users("user_id")
@@ -271,9 +271,9 @@ class MonthlyActiveUsersTestCase(unittest.HomeserverTestCase):
self.store.upsert_monthly_active_user.assert_called_once() self.store.upsert_monthly_active_user.assert_called_once()


def test_populate_monthly_users_should_not_update(self) -> None: def test_populate_monthly_users_should_not_update(self) -> None:
self.store.upsert_monthly_active_user = AsyncMock(return_value=None) # type: ignore[assignment]
self.store.upsert_monthly_active_user = AsyncMock(return_value=None) # type: ignore[method-assign]


self.store.is_trial_user = AsyncMock(return_value=False) # type: ignore[assignment]
self.store.is_trial_user = AsyncMock(return_value=False) # type: ignore[method-assign]
self.store.user_last_seen_monthly_active = AsyncMock( self.store.user_last_seen_monthly_active = AsyncMock(
return_value=self.hs.get_clock().time_msec() return_value=self.hs.get_clock().time_msec()
) )
@@ -356,7 +356,7 @@ class MonthlyActiveUsersTestCase(unittest.HomeserverTestCase):


@override_config({"limit_usage_by_mau": False, "mau_stats_only": False}) @override_config({"limit_usage_by_mau": False, "mau_stats_only": False})
def test_no_users_when_not_tracking(self) -> None: def test_no_users_when_not_tracking(self) -> None:
self.store.upsert_monthly_active_user = AsyncMock(return_value=None) # type: ignore[assignment]
self.store.upsert_monthly_active_user = AsyncMock(return_value=None) # type: ignore[method-assign]


self.get_success(self.store.populate_monthly_active_users("@user:sever")) self.get_success(self.store.populate_monthly_active_users("@user:sever"))




+ 3
- 3
tests/test_federation.py View File

@@ -80,7 +80,7 @@ class MessageAcceptTests(unittest.HomeserverTestCase):
) -> None: ) -> None:
pass pass


federation_event_handler._check_event_auth = _check_event_auth # type: ignore[assignment]
federation_event_handler._check_event_auth = _check_event_auth # type: ignore[method-assign]
self.client = self.hs.get_federation_client() self.client = self.hs.get_federation_client()


async def _check_sigs_and_hash_for_pulled_events_and_fetch( async def _check_sigs_and_hash_for_pulled_events_and_fetch(
@@ -190,7 +190,7 @@ class MessageAcceptTests(unittest.HomeserverTestCase):


# Register the mock on the federation client. # Register the mock on the federation client.
federation_client = self.hs.get_federation_client() federation_client = self.hs.get_federation_client()
federation_client.query_user_devices = Mock(side_effect=query_user_devices) # type: ignore[assignment]
federation_client.query_user_devices = Mock(side_effect=query_user_devices) # type: ignore[method-assign]


# Register a mock on the store so that the incoming update doesn't fail because # Register a mock on the store so that the incoming update doesn't fail because
# we don't share a room with the user. # we don't share a room with the user.
@@ -240,7 +240,7 @@ class MessageAcceptTests(unittest.HomeserverTestCase):


# Register mock device list retrieval on the federation client. # Register mock device list retrieval on the federation client.
federation_client = self.hs.get_federation_client() federation_client = self.hs.get_federation_client()
federation_client.query_user_devices = AsyncMock( # type: ignore[assignment]
federation_client.query_user_devices = AsyncMock( # type: ignore[method-assign]
return_value={ return_value={
"user_id": remote_user_id, "user_id": remote_user_id,
"stream_id": 1, "stream_id": 1,


+ 2
- 2
tests/test_state.py View File

@@ -714,7 +714,7 @@ class StateTestCase(unittest.TestCase):
store = _DummyStore() store = _DummyStore()
store.register_events(old_state_1) store.register_events(old_state_1)
store.register_events(old_state_2) store.register_events(old_state_2)
self.dummy_store.get_events = store.get_events # type: ignore[assignment]
self.dummy_store.get_events = store.get_events # type: ignore[method-assign]


context: EventContext context: EventContext
context = yield self._get_context( context = yield self._get_context(
@@ -773,7 +773,7 @@ class StateTestCase(unittest.TestCase):
store = _DummyStore() store = _DummyStore()
store.register_events(old_state_1) store.register_events(old_state_1)
store.register_events(old_state_2) store.register_events(old_state_2)
self.dummy_store.get_events = store.get_events # type: ignore[assignment]
self.dummy_store.get_events = store.get_events # type: ignore[method-assign]


context: EventContext context: EventContext
context = yield self._get_context( context = yield self._get_context(


+ 3
- 3
tests/unittest.py View File

@@ -395,9 +395,9 @@ class HomeserverTestCase(TestCase):
) )


# Type ignore: mypy doesn't like us assigning to methods. # Type ignore: mypy doesn't like us assigning to methods.
self.hs.get_auth().get_user_by_req = get_requester # type: ignore[assignment]
self.hs.get_auth().get_user_by_access_token = get_requester # type: ignore[assignment]
self.hs.get_auth().get_access_token_from_request = Mock(return_value=token) # type: ignore[assignment]
self.hs.get_auth().get_user_by_req = get_requester # type: ignore[method-assign]
self.hs.get_auth().get_user_by_access_token = get_requester # type: ignore[method-assign]
self.hs.get_auth().get_access_token_from_request = Mock(return_value=token) # type: ignore[method-assign]


if self.needs_threadpool: if self.needs_threadpool:
self.reactor.threadpool = ThreadPool() # type: ignore[assignment] self.reactor.threadpool = ThreadPool() # type: ignore[assignment]


Loading…
Cancel
Save