Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit 2ca4e34

Browse files
Bugbear: Add Mutable Parameter fixes (#9682)
Part of #9366 Adds in fixes for B006 and B008, both relating to mutable parameter lint errors. Signed-off-by: Jonathan de Jong <[email protected]>
1 parent 64f4f50 commit 2ca4e34

38 files changed

+224
-113
lines changed

changelog.d/9682.misc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Introduce flake8-bugbear to the test suite and fix some of its lint violations.

contrib/cmdclient/console.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import time
2525
import urllib
2626
from http import TwistedHttpClient
27+
from typing import Optional
2728

2829
import nacl.encoding
2930
import nacl.signing
@@ -718,7 +719,7 @@ def _run_and_pprint(
718719
method,
719720
path,
720721
data=None,
721-
query_params={"access_token": None},
722+
query_params: Optional[dict] = None,
722723
alt_text=None,
723724
):
724725
"""Runs an HTTP request and pretty prints the output.
@@ -729,6 +730,8 @@ def _run_and_pprint(
729730
data: Raw JSON data if any
730731
query_params: dict of query parameters to add to the url
731732
"""
733+
query_params = query_params or {"access_token": None}
734+
732735
url = self._url() + path
733736
if "access_token" in query_params:
734737
query_params["access_token"] = self._tok()

contrib/cmdclient/http.py

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import json
1717
import urllib
1818
from pprint import pformat
19+
from typing import Optional
1920

2021
from twisted.internet import defer, reactor
2122
from twisted.web.client import Agent, readBody
@@ -85,8 +86,9 @@ def get_json(self, url, args=None):
8586
body = yield readBody(response)
8687
defer.returnValue(json.loads(body))
8788

88-
def _create_put_request(self, url, json_data, headers_dict={}):
89+
def _create_put_request(self, url, json_data, headers_dict: Optional[dict] = None):
8990
"""Wrapper of _create_request to issue a PUT request"""
91+
headers_dict = headers_dict or {}
9092

9193
if "Content-Type" not in headers_dict:
9294
raise defer.error(RuntimeError("Must include Content-Type header for PUTs"))
@@ -95,14 +97,22 @@ def _create_put_request(self, url, json_data, headers_dict={}):
9597
"PUT", url, producer=_JsonProducer(json_data), headers_dict=headers_dict
9698
)
9799

98-
def _create_get_request(self, url, headers_dict={}):
100+
def _create_get_request(self, url, headers_dict: Optional[dict] = None):
99101
"""Wrapper of _create_request to issue a GET request"""
100-
return self._create_request("GET", url, headers_dict=headers_dict)
102+
return self._create_request("GET", url, headers_dict=headers_dict or {})
101103

102104
@defer.inlineCallbacks
103105
def do_request(
104-
self, method, url, data=None, qparams=None, jsonreq=True, headers={}
106+
self,
107+
method,
108+
url,
109+
data=None,
110+
qparams=None,
111+
jsonreq=True,
112+
headers: Optional[dict] = None,
105113
):
114+
headers = headers or {}
115+
106116
if qparams:
107117
url = "%s?%s" % (url, urllib.urlencode(qparams, True))
108118

@@ -123,8 +133,12 @@ def do_request(
123133
defer.returnValue(json.loads(body))
124134

125135
@defer.inlineCallbacks
126-
def _create_request(self, method, url, producer=None, headers_dict={}):
136+
def _create_request(
137+
self, method, url, producer=None, headers_dict: Optional[dict] = None
138+
):
127139
"""Creates and sends a request to the given url"""
140+
headers_dict = headers_dict or {}
141+
128142
headers_dict["User-Agent"] = ["Synapse Cmd Client"]
129143

130144
retries_left = 5

setup.cfg

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ ignore =
1818
# E203: whitespace before ':' (which is contrary to pep8?)
1919
# E731: do not assign a lambda expression, use a def
2020
# E501: Line too long (black enforces this for us)
21-
# B00*: Subsection of the bugbear suite (TODO: add in remaining fixes)
22-
ignore=W503,W504,E203,E731,E501,B006,B007,B008
21+
# B007: Subsection of the bugbear suite (TODO: add in remaining fixes)
22+
ignore=W503,W504,E203,E731,E501,B007
2323

2424
[isort]
2525
line_length = 88

synapse/appservice/scheduler.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949
components.
5050
"""
5151
import logging
52-
from typing import List
52+
from typing import List, Optional
5353

5454
from synapse.appservice import ApplicationService, ApplicationServiceState
5555
from synapse.events import EventBase
@@ -191,11 +191,11 @@ async def send(
191191
self,
192192
service: ApplicationService,
193193
events: List[EventBase],
194-
ephemeral: List[JsonDict] = [],
194+
ephemeral: Optional[List[JsonDict]] = None,
195195
):
196196
try:
197197
txn = await self.store.create_appservice_txn(
198-
service=service, events=events, ephemeral=ephemeral
198+
service=service, events=events, ephemeral=ephemeral or []
199199
)
200200
service_is_up = await self._is_service_up(service)
201201
if service_is_up:

synapse/config/ratelimiting.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
from typing import Dict
15+
from typing import Dict, Optional
1616

1717
from ._base import Config
1818

@@ -21,8 +21,10 @@ class RateLimitConfig:
2121
def __init__(
2222
self,
2323
config: Dict[str, float],
24-
defaults={"per_second": 0.17, "burst_count": 3.0},
24+
defaults: Optional[Dict[str, float]] = None,
2525
):
26+
defaults = defaults or {"per_second": 0.17, "burst_count": 3.0}
27+
2628
self.per_second = config.get("per_second", defaults["per_second"])
2729
self.burst_count = int(config.get("burst_count", defaults["burst_count"]))
2830

synapse/events/__init__.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -330,9 +330,11 @@ def __init__(
330330
self,
331331
event_dict: JsonDict,
332332
room_version: RoomVersion,
333-
internal_metadata_dict: JsonDict = {},
333+
internal_metadata_dict: Optional[JsonDict] = None,
334334
rejected_reason: Optional[str] = None,
335335
):
336+
internal_metadata_dict = internal_metadata_dict or {}
337+
336338
event_dict = dict(event_dict)
337339

338340
# Signatures is a dict of dicts, and this is faster than doing a
@@ -386,9 +388,11 @@ def __init__(
386388
self,
387389
event_dict: JsonDict,
388390
room_version: RoomVersion,
389-
internal_metadata_dict: JsonDict = {},
391+
internal_metadata_dict: Optional[JsonDict] = None,
390392
rejected_reason: Optional[str] = None,
391393
):
394+
internal_metadata_dict = internal_metadata_dict or {}
395+
392396
event_dict = dict(event_dict)
393397

394398
# Signatures is a dict of dicts, and this is faster than doing a
@@ -507,9 +511,11 @@ def _event_type_from_format_version(format_version: int) -> Type[EventBase]:
507511
def make_event_from_dict(
508512
event_dict: JsonDict,
509513
room_version: RoomVersion = RoomVersions.V1,
510-
internal_metadata_dict: JsonDict = {},
514+
internal_metadata_dict: Optional[JsonDict] = None,
511515
rejected_reason: Optional[str] = None,
512516
) -> EventBase:
513517
"""Construct an EventBase from the given event dict"""
514518
event_type = _event_type_from_format_version(room_version.event_format)
515-
return event_type(event_dict, room_version, internal_metadata_dict, rejected_reason)
519+
return event_type(
520+
event_dict, room_version, internal_metadata_dict or {}, rejected_reason
521+
)

synapse/federation/units.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
"""
1919

2020
import logging
21+
from typing import Optional
2122

2223
import attr
2324

@@ -98,7 +99,7 @@ class Transaction(JsonEncodedObject):
9899
"pdus",
99100
]
100101

101-
def __init__(self, transaction_id=None, pdus=[], **kwargs):
102+
def __init__(self, transaction_id=None, pdus: Optional[list] = None, **kwargs):
102103
"""If we include a list of pdus then we decode then as PDU's
103104
automatically.
104105
"""
@@ -107,7 +108,7 @@ def __init__(self, transaction_id=None, pdus=[], **kwargs):
107108
if "edus" in kwargs and not kwargs["edus"]:
108109
del kwargs["edus"]
109110

110-
super().__init__(transaction_id=transaction_id, pdus=pdus, **kwargs)
111+
super().__init__(transaction_id=transaction_id, pdus=pdus or [], **kwargs)
111112

112113
@staticmethod
113114
def create_new(pdus, **kwargs):

synapse/handlers/appservice.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ def notify_interested_services_ephemeral(
182182
self,
183183
stream_key: str,
184184
new_token: Optional[int],
185-
users: Collection[Union[str, UserID]] = [],
185+
users: Optional[Collection[Union[str, UserID]]] = None,
186186
):
187187
"""This is called by the notifier in the background
188188
when a ephemeral event handled by the homeserver.
@@ -215,7 +215,7 @@ def notify_interested_services_ephemeral(
215215
# We only start a new background process if necessary rather than
216216
# optimistically (to cut down on overhead).
217217
self._notify_interested_services_ephemeral(
218-
services, stream_key, new_token, users
218+
services, stream_key, new_token, users or []
219219
)
220220

221221
@wrap_as_background_process("notify_interested_services_ephemeral")

synapse/handlers/federation.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1790,7 +1790,7 @@ async def _make_and_verify_event(
17901790
room_id: str,
17911791
user_id: str,
17921792
membership: str,
1793-
content: JsonDict = {},
1793+
content: JsonDict,
17941794
params: Optional[Dict[str, Union[str, Iterable[str]]]] = None,
17951795
) -> Tuple[str, EventBase, RoomVersion]:
17961796
(

0 commit comments

Comments
 (0)