Enable additional checks & clean-up unneeded configuration.tags/v1.93.0rc1
@@ -0,0 +1 @@ | |||||
Enable additional linting checks. |
@@ -37,7 +37,6 @@ class HttpClient: | |||||
Deferred: Succeeds when we get a 2xx HTTP response. The result | Deferred: Succeeds when we get a 2xx HTTP response. The result | ||||
will be the decoded JSON body. | will be the decoded JSON body. | ||||
""" | """ | ||||
pass | |||||
def get_json(self, url, args=None): | def get_json(self, url, args=None): | ||||
"""Gets some json from the given host homeserver and path | """Gets some json from the given host homeserver and path | ||||
@@ -53,7 +52,6 @@ class HttpClient: | |||||
Deferred: Succeeds when we get a 2xx HTTP response. The result | Deferred: Succeeds when we get a 2xx HTTP response. The result | ||||
will be the decoded JSON body. | will be the decoded JSON body. | ||||
""" | """ | ||||
pass | |||||
class TwistedHttpClient(HttpClient): | class TwistedHttpClient(HttpClient): | ||||
@@ -239,7 +239,7 @@ def main(args: List[str], environ: MutableMapping[str, str]) -> None: | |||||
log("Could not find %s, will not use" % (jemallocpath,)) | log("Could not find %s, will not use" % (jemallocpath,)) | ||||
# if there are no config files passed to synapse, try adding the default file | # if there are no config files passed to synapse, try adding the default file | ||||
if not any(p.startswith("--config-path") or p.startswith("-c") for p in args): | |||||
if not any(p.startswith(("--config-path", "-c")) for p in args): | |||||
config_dir = environ.get("SYNAPSE_CONFIG_DIR", "/data") | config_dir = environ.get("SYNAPSE_CONFIG_DIR", "/data") | ||||
config_path = environ.get( | config_path = environ.get( | ||||
"SYNAPSE_CONFIG_PATH", config_dir + "/homeserver.yaml" | "SYNAPSE_CONFIG_PATH", config_dir + "/homeserver.yaml" | ||||
@@ -43,33 +43,39 @@ target-version = ['py38', 'py39', 'py310', 'py311'] | |||||
[tool.ruff] | [tool.ruff] | ||||
line-length = 88 | line-length = 88 | ||||
# See https://github.com/charliermarsh/ruff/#pycodestyle | |||||
# See https://beta.ruff.rs/docs/rules/#error-e | |||||
# for error codes. The ones we ignore are: | # for error codes. The ones we ignore are: | ||||
# E731: do not assign a lambda expression, use a def | |||||
# E501: Line too long (black enforces this for us) | # E501: Line too long (black enforces this for us) | ||||
# E731: do not assign a lambda expression, use a def | |||||
# | # | ||||
# flake8-bugbear compatible checks. Its error codes are described at | # flake8-bugbear compatible checks. Its error codes are described at | ||||
# https://github.com/charliermarsh/ruff/#flake8-bugbear | |||||
# B019: Use of functools.lru_cache or functools.cache on methods can lead to memory leaks | |||||
# https://beta.ruff.rs/docs/rules/#flake8-bugbear-b | |||||
# B023: Functions defined inside a loop must not use variables redefined in the loop | # B023: Functions defined inside a loop must not use variables redefined in the loop | ||||
# B024: Abstract base class with no abstract method. | |||||
ignore = [ | ignore = [ | ||||
"B019", | |||||
"B023", | "B023", | ||||
"B024", | |||||
"E501", | "E501", | ||||
"E731", | "E731", | ||||
] | ] | ||||
select = [ | select = [ | ||||
# pycodestyle checks. | |||||
# pycodestyle | |||||
"E", | "E", | ||||
"W", | "W", | ||||
# pyflakes checks. | |||||
# pyflakes | |||||
"F", | "F", | ||||
# flake8-bugbear checks. | |||||
# flake8-bugbear | |||||
"B0", | "B0", | ||||
# flake8-comprehensions checks. | |||||
# flake8-comprehensions | |||||
"C4", | "C4", | ||||
# flake8-2020 | |||||
"YTT", | |||||
# flake8-slots | |||||
"SLOT", | |||||
# flake8-debugger | |||||
"T10", | |||||
# flake8-pie | |||||
"PIE", | |||||
# flake8-executable | |||||
"EXE", | |||||
] | ] | ||||
[tool.isort] | [tool.isort] | ||||
@@ -30,9 +30,10 @@ class SynapsePlugin(Plugin): | |||||
self, fullname: str | self, fullname: str | ||||
) -> Optional[Callable[[MethodSigContext], CallableType]]: | ) -> Optional[Callable[[MethodSigContext], CallableType]]: | ||||
if fullname.startswith( | if fullname.startswith( | ||||
"synapse.util.caches.descriptors.CachedFunction.__call__" | |||||
) or fullname.startswith( | |||||
"synapse.util.caches.descriptors._LruCachedFunction.__call__" | |||||
( | |||||
"synapse.util.caches.descriptors.CachedFunction.__call__", | |||||
"synapse.util.caches.descriptors._LruCachedFunction.__call__", | |||||
) | |||||
): | ): | ||||
return cached_function_method_signature | return cached_function_method_signature | ||||
return None | return None | ||||
@@ -1,4 +1,3 @@ | |||||
#!/usr/bin/env python | |||||
# Copyright 2019 The Matrix.org Foundation C.I.C. | # Copyright 2019 The Matrix.org Foundation C.I.C. | ||||
# | # | ||||
# Licensed under the Apache License, Version 2.0 (the "License"); | # Licensed under the Apache License, Version 2.0 (the "License"); | ||||
@@ -55,7 +55,6 @@ class UnpersistedEventContextBase(ABC): | |||||
A method to convert an UnpersistedEventContext to an EventContext, suitable for | A method to convert an UnpersistedEventContext to an EventContext, suitable for | ||||
sending to the database with the associated event. | sending to the database with the associated event. | ||||
""" | """ | ||||
pass | |||||
@abstractmethod | @abstractmethod | ||||
async def get_prev_state_ids( | async def get_prev_state_ids( | ||||
@@ -69,7 +68,6 @@ class UnpersistedEventContextBase(ABC): | |||||
state_filter: specifies the type of state event to fetch from DB, example: | state_filter: specifies the type of state event to fetch from DB, example: | ||||
EventTypes.JoinRules | EventTypes.JoinRules | ||||
""" | """ | ||||
pass | |||||
@attr.s(slots=True, auto_attribs=True) | @attr.s(slots=True, auto_attribs=True) | ||||
@@ -846,9 +846,7 @@ def _is_media(content_type: str) -> bool: | |||||
def _is_html(content_type: str) -> bool: | def _is_html(content_type: str) -> bool: | ||||
content_type = content_type.lower() | content_type = content_type.lower() | ||||
return content_type.startswith("text/html") or content_type.startswith( | |||||
"application/xhtml" | |||||
) | |||||
return content_type.startswith(("text/html", "application/xhtml")) | |||||
def _is_json(content_type: str) -> bool: | def _is_json(content_type: str) -> bool: | ||||
@@ -62,7 +62,6 @@ class Constraint(metaclass=abc.ABCMeta): | |||||
@abc.abstractmethod | @abc.abstractmethod | ||||
def make_check_clause(self, table: str) -> str: | def make_check_clause(self, table: str) -> str: | ||||
"""Returns an SQL expression that checks the row passes the constraint.""" | """Returns an SQL expression that checks the row passes the constraint.""" | ||||
pass | |||||
@abc.abstractmethod | @abc.abstractmethod | ||||
def make_constraint_clause_postgres(self) -> str: | def make_constraint_clause_postgres(self) -> str: | ||||
@@ -70,7 +69,6 @@ class Constraint(metaclass=abc.ABCMeta): | |||||
Only used on Postgres DBs | Only used on Postgres DBs | ||||
""" | """ | ||||
pass | |||||
@attr.s(auto_attribs=True) | @attr.s(auto_attribs=True) | ||||
@@ -112,7 +112,7 @@ async def main(reactor, loops): | |||||
start = perf_counter() | start = perf_counter() | ||||
# Send a bunch of useful messages | # Send a bunch of useful messages | ||||
for i in range(0, loops): | |||||
for i in range(loops): | |||||
logger.info("test message %s", i) | logger.info("test message %s", i) | ||||
if len(handler._buffer) == handler.maximum_buffer: | if len(handler._buffer) == handler.maximum_buffer: | ||||
@@ -223,7 +223,7 @@ class DeviceTestCase(unittest.HomeserverTestCase): | |||||
# queue a bunch of messages in the inbox | # queue a bunch of messages in the inbox | ||||
requester = create_requester(sender, device_id=DEVICE_ID) | requester = create_requester(sender, device_id=DEVICE_ID) | ||||
for i in range(0, DeviceHandler.DEVICE_MSGS_DELETE_BATCH_LIMIT + 10): | |||||
for i in range(DeviceHandler.DEVICE_MSGS_DELETE_BATCH_LIMIT + 10): | |||||
self.get_success( | self.get_success( | ||||
self.device_message_handler.send_device_message( | self.device_message_handler.send_device_message( | ||||
requester, "message_type", {receiver: {"*": {"val": i}}} | requester, "message_type", {receiver: {"*": {"val": i}}} | ||||
@@ -262,7 +262,7 @@ class FederationTestCase(unittest.FederatingHomeserverTestCase): | |||||
if (ev.type, ev.state_key) | if (ev.type, ev.state_key) | ||||
in {("m.room.create", ""), ("m.room.member", remote_server_user_id)} | in {("m.room.create", ""), ("m.room.member", remote_server_user_id)} | ||||
] | ] | ||||
for _ in range(0, 8): | |||||
for _ in range(8): | |||||
event = make_event_from_dict( | event = make_event_from_dict( | ||||
self.add_hashes_and_signatures_from_other_server( | self.add_hashes_and_signatures_from_other_server( | ||||
{ | { | ||||
@@ -78,11 +78,11 @@ class RemoteHandlerTestCase(LoggerCleanupMixin, TestCase): | |||||
logger = self.get_logger(handler) | logger = self.get_logger(handler) | ||||
# Send some debug messages | # Send some debug messages | ||||
for i in range(0, 3): | |||||
for i in range(3): | |||||
logger.debug("debug %s" % (i,)) | logger.debug("debug %s" % (i,)) | ||||
# Send a bunch of useful messages | # Send a bunch of useful messages | ||||
for i in range(0, 7): | |||||
for i in range(7): | |||||
logger.info("info %s" % (i,)) | logger.info("info %s" % (i,)) | ||||
# The last debug message pushes it past the maximum buffer | # The last debug message pushes it past the maximum buffer | ||||
@@ -108,15 +108,15 @@ class RemoteHandlerTestCase(LoggerCleanupMixin, TestCase): | |||||
logger = self.get_logger(handler) | logger = self.get_logger(handler) | ||||
# Send some debug messages | # Send some debug messages | ||||
for i in range(0, 3): | |||||
for i in range(3): | |||||
logger.debug("debug %s" % (i,)) | logger.debug("debug %s" % (i,)) | ||||
# Send a bunch of useful messages | # Send a bunch of useful messages | ||||
for i in range(0, 10): | |||||
for i in range(10): | |||||
logger.warning("warn %s" % (i,)) | logger.warning("warn %s" % (i,)) | ||||
# Send a bunch of info messages | # Send a bunch of info messages | ||||
for i in range(0, 3): | |||||
for i in range(3): | |||||
logger.info("info %s" % (i,)) | logger.info("info %s" % (i,)) | ||||
# The last debug message pushes it past the maximum buffer | # The last debug message pushes it past the maximum buffer | ||||
@@ -144,7 +144,7 @@ class RemoteHandlerTestCase(LoggerCleanupMixin, TestCase): | |||||
logger = self.get_logger(handler) | logger = self.get_logger(handler) | ||||
# Send a bunch of useful messages | # Send a bunch of useful messages | ||||
for i in range(0, 20): | |||||
for i in range(20): | |||||
logger.warning("warn %s" % (i,)) | logger.warning("warn %s" % (i,)) | ||||
# Allow the reconnection | # Allow the reconnection | ||||
@@ -49,7 +49,7 @@ class ToDeviceStreamTestCase(BaseStreamTestCase): | |||||
# add messages to the device inbox for user1 up until the | # add messages to the device inbox for user1 up until the | ||||
# limit defined for a stream update batch | # limit defined for a stream update batch | ||||
for i in range(0, _STREAM_UPDATE_TARGET_ROW_COUNT): | |||||
for i in range(_STREAM_UPDATE_TARGET_ROW_COUNT): | |||||
msg["content"] = {"device": {}} | msg["content"] = {"device": {}} | ||||
messages = {user1: {"device": msg}} | messages = {user1: {"device": msg}} | ||||
@@ -510,7 +510,7 @@ class FederationTestCase(unittest.HomeserverTestCase): | |||||
Args: | Args: | ||||
number_destinations: Number of destinations to be created | number_destinations: Number of destinations to be created | ||||
""" | """ | ||||
for i in range(0, number_destinations): | |||||
for i in range(number_destinations): | |||||
dest = f"sub{i}.example.com" | dest = f"sub{i}.example.com" | ||||
self._create_destination(dest, 50, 50, 50, 100) | self._create_destination(dest, 50, 50, 50, 100) | ||||
@@ -690,7 +690,7 @@ class DestinationMembershipTestCase(unittest.HomeserverTestCase): | |||||
self._check_fields(channel_desc.json_body["rooms"]) | self._check_fields(channel_desc.json_body["rooms"]) | ||||
# test that both lists have different directions | # test that both lists have different directions | ||||
for i in range(0, number_rooms): | |||||
for i in range(number_rooms): | |||||
self.assertEqual( | self.assertEqual( | ||||
channel_asc.json_body["rooms"][i]["room_id"], | channel_asc.json_body["rooms"][i]["room_id"], | ||||
channel_desc.json_body["rooms"][number_rooms - 1 - i]["room_id"], | channel_desc.json_body["rooms"][number_rooms - 1 - i]["room_id"], | ||||
@@ -777,7 +777,7 @@ class DestinationMembershipTestCase(unittest.HomeserverTestCase): | |||||
Args: | Args: | ||||
number_rooms: Number of rooms to be created | number_rooms: Number of rooms to be created | ||||
""" | """ | ||||
for _ in range(0, number_rooms): | |||||
for _ in range(number_rooms): | |||||
room_id = self.helper.create_room_as( | room_id = self.helper.create_room_as( | ||||
self.admin_user, tok=self.admin_user_tok | self.admin_user, tok=self.admin_user_tok | ||||
) | ) | ||||
@@ -575,7 +575,7 @@ class DeactivateTestCase(unittest.HomeserverTestCase): | |||||
# create a bunch of users and add keys for them | # create a bunch of users and add keys for them | ||||
users = [] | users = [] | ||||
for i in range(0, 20): | |||||
for i in range(20): | |||||
user_id = self.register_user("missPiggy" + str(i), "test") | user_id = self.register_user("missPiggy" + str(i), "test") | ||||
users.append((user_id,)) | users.append((user_id,)) | ||||
@@ -176,10 +176,10 @@ class LoginRestServletTestCase(unittest.HomeserverTestCase): | |||||
def test_POST_ratelimiting_per_address(self) -> None: | def test_POST_ratelimiting_per_address(self) -> None: | ||||
# Create different users so we're sure not to be bothered by the per-user | # Create different users so we're sure not to be bothered by the per-user | ||||
# ratelimiter. | # ratelimiter. | ||||
for i in range(0, 6): | |||||
for i in range(6): | |||||
self.register_user("kermit" + str(i), "monkey") | self.register_user("kermit" + str(i), "monkey") | ||||
for i in range(0, 6): | |||||
for i in range(6): | |||||
params = { | params = { | ||||
"type": "m.login.password", | "type": "m.login.password", | ||||
"identifier": {"type": "m.id.user", "user": "kermit" + str(i)}, | "identifier": {"type": "m.id.user", "user": "kermit" + str(i)}, | ||||
@@ -228,7 +228,7 @@ class LoginRestServletTestCase(unittest.HomeserverTestCase): | |||||
def test_POST_ratelimiting_per_account(self) -> None: | def test_POST_ratelimiting_per_account(self) -> None: | ||||
self.register_user("kermit", "monkey") | self.register_user("kermit", "monkey") | ||||
for i in range(0, 6): | |||||
for i in range(6): | |||||
params = { | params = { | ||||
"type": "m.login.password", | "type": "m.login.password", | ||||
"identifier": {"type": "m.id.user", "user": "kermit"}, | "identifier": {"type": "m.id.user", "user": "kermit"}, | ||||
@@ -277,7 +277,7 @@ class LoginRestServletTestCase(unittest.HomeserverTestCase): | |||||
def test_POST_ratelimiting_per_account_failed_attempts(self) -> None: | def test_POST_ratelimiting_per_account_failed_attempts(self) -> None: | ||||
self.register_user("kermit", "monkey") | self.register_user("kermit", "monkey") | ||||
for i in range(0, 6): | |||||
for i in range(6): | |||||
params = { | params = { | ||||
"type": "m.login.password", | "type": "m.login.password", | ||||
"identifier": {"type": "m.id.user", "user": "kermit"}, | "identifier": {"type": "m.id.user", "user": "kermit"}, | ||||
@@ -169,7 +169,7 @@ class RegisterRestServletTestCase(unittest.HomeserverTestCase): | |||||
@override_config({"rc_registration": {"per_second": 0.17, "burst_count": 5}}) | @override_config({"rc_registration": {"per_second": 0.17, "burst_count": 5}}) | ||||
def test_POST_ratelimiting_guest(self) -> None: | def test_POST_ratelimiting_guest(self) -> None: | ||||
for i in range(0, 6): | |||||
for i in range(6): | |||||
url = self.url + b"?kind=guest" | url = self.url + b"?kind=guest" | ||||
channel = self.make_request(b"POST", url, b"{}") | channel = self.make_request(b"POST", url, b"{}") | ||||
@@ -187,7 +187,7 @@ class RegisterRestServletTestCase(unittest.HomeserverTestCase): | |||||
@override_config({"rc_registration": {"per_second": 0.17, "burst_count": 5}}) | @override_config({"rc_registration": {"per_second": 0.17, "burst_count": 5}}) | ||||
def test_POST_ratelimiting(self) -> None: | def test_POST_ratelimiting(self) -> None: | ||||
for i in range(0, 6): | |||||
for i in range(6): | |||||
request_data = { | request_data = { | ||||
"username": "kermit" + str(i), | "username": "kermit" + str(i), | ||||
"password": "monkey", | "password": "monkey", | ||||
@@ -1223,7 +1223,7 @@ class RegistrationTokenValidityRestServletTestCase(unittest.HomeserverTestCase): | |||||
def test_GET_ratelimiting(self) -> None: | def test_GET_ratelimiting(self) -> None: | ||||
token = "1234" | token = "1234" | ||||
for i in range(0, 6): | |||||
for i in range(6): | |||||
channel = self.make_request( | channel = self.make_request( | ||||
b"GET", | b"GET", | ||||
f"{self.url}?token={token}", | f"{self.url}?token={token}", | ||||
@@ -382,7 +382,7 @@ class ReadWriteLockTestCase(unittest.HomeserverTestCase): | |||||
self.get_success(lock.__aenter__()) | self.get_success(lock.__aenter__()) | ||||
# Wait for ages with the lock, we should not be able to get the lock. | # Wait for ages with the lock, we should not be able to get the lock. | ||||
for _ in range(0, 10): | |||||
for _ in range(10): | |||||
self.reactor.advance((_RENEWAL_INTERVAL_MS / 1000)) | self.reactor.advance((_RENEWAL_INTERVAL_MS / 1000)) | ||||
lock2 = self.get_success( | lock2 = self.get_success( | ||||
@@ -664,7 +664,7 @@ class EventChainBackgroundUpdateTestCase(HomeserverTestCase): | |||||
# Add a bunch of state so that it takes multiple iterations of the | # Add a bunch of state so that it takes multiple iterations of the | ||||
# background update to process the room. | # background update to process the room. | ||||
for i in range(0, 150): | |||||
for i in range(150): | |||||
self.helper.send_state( | self.helper.send_state( | ||||
room_id, event_type="m.test", body={"index": i}, tok=self.token | room_id, event_type="m.test", body={"index": i}, tok=self.token | ||||
) | ) | ||||
@@ -718,12 +718,12 @@ class EventChainBackgroundUpdateTestCase(HomeserverTestCase): | |||||
# Add a bunch of state so that it takes multiple iterations of the | # Add a bunch of state so that it takes multiple iterations of the | ||||
# background update to process the room. | # background update to process the room. | ||||
for i in range(0, 150): | |||||
for i in range(150): | |||||
self.helper.send_state( | self.helper.send_state( | ||||
room_id1, event_type="m.test", body={"index": i}, tok=self.token | room_id1, event_type="m.test", body={"index": i}, tok=self.token | ||||
) | ) | ||||
for i in range(0, 150): | |||||
for i in range(150): | |||||
self.helper.send_state( | self.helper.send_state( | ||||
room_id2, event_type="m.test", body={"index": i}, tok=self.token | room_id2, event_type="m.test", body={"index": i}, tok=self.token | ||||
) | ) | ||||
@@ -227,7 +227,7 @@ class EventFederationWorkerStoreTestCase(tests.unittest.HomeserverTestCase): | |||||
(room_id, event_id), | (room_id, event_id), | ||||
) | ) | ||||
for i in range(0, 20): | |||||
for i in range(20): | |||||
self.get_success( | self.get_success( | ||||
self.store.db_pool.runInteraction("insert", insert_event, i) | self.store.db_pool.runInteraction("insert", insert_event, i) | ||||
) | ) | ||||
@@ -235,7 +235,7 @@ class EventFederationWorkerStoreTestCase(tests.unittest.HomeserverTestCase): | |||||
# this should get the last ten | # this should get the last ten | ||||
r = self.get_success(self.store.get_prev_events_for_room(room_id)) | r = self.get_success(self.store.get_prev_events_for_room(room_id)) | ||||
self.assertEqual(10, len(r)) | self.assertEqual(10, len(r)) | ||||
for i in range(0, 10): | |||||
for i in range(10): | |||||
self.assertEqual("$event_%i:local" % (19 - i), r[i]) | self.assertEqual("$event_%i:local" % (19 - i), r[i]) | ||||
def test_get_rooms_with_many_extremities(self) -> None: | def test_get_rooms_with_many_extremities(self) -> None: | ||||
@@ -277,7 +277,7 @@ class EventFederationWorkerStoreTestCase(tests.unittest.HomeserverTestCase): | |||||
(room_id, event_id), | (room_id, event_id), | ||||
) | ) | ||||
for i in range(0, 20): | |||||
for i in range(20): | |||||
self.get_success( | self.get_success( | ||||
self.store.db_pool.runInteraction("insert", insert_event, i, room1) | self.store.db_pool.runInteraction("insert", insert_event, i, room1) | ||||
) | ) | ||||
@@ -82,7 +82,7 @@ class ProfileStoreTestCase(unittest.HomeserverTestCase): | |||||
self.get_success(self.store.db_pool.runInteraction("", f)) | self.get_success(self.store.db_pool.runInteraction("", f)) | ||||
for i in range(0, 70): | |||||
for i in range(70): | |||||
self.get_success( | self.get_success( | ||||
self.store.db_pool.simple_insert( | self.store.db_pool.simple_insert( | ||||
"profiles", | "profiles", | ||||
@@ -115,7 +115,7 @@ class ProfileStoreTestCase(unittest.HomeserverTestCase): | |||||
) | ) | ||||
expected_values = [] | expected_values = [] | ||||
for i in range(0, 70): | |||||
for i in range(70): | |||||
expected_values.append((f"@hello{i:02}:{self.hs.hostname}",)) | expected_values.append((f"@hello{i:02}:{self.hs.hostname}",)) | ||||
res = self.get_success( | res = self.get_success( | ||||
@@ -38,5 +38,5 @@ class SQLTransactionLimitTestCase(unittest.HomeserverTestCase): | |||||
db_pool = self.hs.get_datastores().databases[0] | db_pool = self.hs.get_datastores().databases[0] | ||||
# force txn limit to roll over at least once | # force txn limit to roll over at least once | ||||
for _ in range(0, 1001): | |||||
for _ in range(1001): | |||||
self.get_success_or_raise(db_pool.runInteraction("test_select", do_select)) | self.get_success_or_raise(db_pool.runInteraction("test_select", do_select)) |
@@ -45,7 +45,7 @@ class UserFiltersStoreTestCase(unittest.HomeserverTestCase): | |||||
self.get_success(self.store.db_pool.runInteraction("", f)) | self.get_success(self.store.db_pool.runInteraction("", f)) | ||||
for i in range(0, 70): | |||||
for i in range(70): | |||||
self.get_success( | self.get_success( | ||||
self.store.db_pool.simple_insert( | self.store.db_pool.simple_insert( | ||||
"user_filters", | "user_filters", | ||||
@@ -82,7 +82,7 @@ class UserFiltersStoreTestCase(unittest.HomeserverTestCase): | |||||
) | ) | ||||
expected_values = [] | expected_values = [] | ||||
for i in range(0, 70): | |||||
for i in range(70): | |||||
expected_values.append((f"@hello{i:02}:{self.hs.hostname}",)) | expected_values.append((f"@hello{i:02}:{self.hs.hostname}",)) | ||||
res = self.get_success( | res = self.get_success( | ||||
@@ -51,12 +51,12 @@ class FilterEventsForServerTestCase(unittest.HomeserverTestCase): | |||||
# before we do that, we persist some other events to act as state. | # before we do that, we persist some other events to act as state. | ||||
self._inject_visibility("@admin:hs", "joined") | self._inject_visibility("@admin:hs", "joined") | ||||
for i in range(0, 10): | |||||
for i in range(10): | |||||
self._inject_room_member("@resident%i:hs" % i) | self._inject_room_member("@resident%i:hs" % i) | ||||
events_to_filter = [] | events_to_filter = [] | ||||
for i in range(0, 10): | |||||
for i in range(10): | |||||
user = "@user%i:%s" % (i, "test_server" if i == 5 else "other_server") | user = "@user%i:%s" % (i, "test_server" if i == 5 else "other_server") | ||||
evt = self._inject_room_member(user, extra_content={"a": "b"}) | evt = self._inject_room_member(user, extra_content={"a": "b"}) | ||||
events_to_filter.append(evt) | events_to_filter.append(evt) | ||||
@@ -74,7 +74,7 @@ class FilterEventsForServerTestCase(unittest.HomeserverTestCase): | |||||
) | ) | ||||
# the result should be 5 redacted events, and 5 unredacted events. | # the result should be 5 redacted events, and 5 unredacted events. | ||||
for i in range(0, 5): | |||||
for i in range(5): | |||||
self.assertEqual(events_to_filter[i].event_id, filtered[i].event_id) | self.assertEqual(events_to_filter[i].event_id, filtered[i].event_id) | ||||
self.assertNotIn("a", filtered[i].content) | self.assertNotIn("a", filtered[i].content) | ||||
@@ -177,7 +177,7 @@ class FilterEventsForServerTestCase(unittest.HomeserverTestCase): | |||||
) | ) | ||||
) | ) | ||||
for i in range(0, len(events_to_filter)): | |||||
for i in range(len(events_to_filter)): | |||||
self.assertEqual( | self.assertEqual( | ||||
events_to_filter[i].event_id, | events_to_filter[i].event_id, | ||||
filtered[i].event_id, | filtered[i].event_id, | ||||
@@ -623,14 +623,14 @@ class CacheDecoratorTestCase(unittest.HomeserverTestCase): | |||||
a = A() | a = A() | ||||
for k in range(0, 12): | |||||
for k in range(12): | |||||
yield a.func(k) | yield a.func(k) | ||||
self.assertEqual(callcount[0], 12) | self.assertEqual(callcount[0], 12) | ||||
# There must have been at least 2 evictions, meaning if we calculate | # There must have been at least 2 evictions, meaning if we calculate | ||||
# all 12 values again, we must get called at least 2 more times | # all 12 values again, we must get called at least 2 more times | ||||
for k in range(0, 12): | |||||
for k in range(12): | |||||
yield a.func(k) | yield a.func(k) | ||||
self.assertTrue( | self.assertTrue( | ||||