Skip to content

Commit 2b1d1cc

Browse files
authored
ref(integrations): Rename request_bodies to max_request_body_size (#2247)
* ref(integrations): Rename `request_bodies` to `max_request_body_size` * test: Add mockupdb in test requirements
1 parent ff1be0a commit 2b1d1cc

File tree

11 files changed

+58
-23
lines changed

11 files changed

+58
-23
lines changed

sentry_sdk/client.py

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,16 @@ def _get_options(*args, **kwargs):
8686
rv["include_local_variables"] = value
8787
continue
8888

89+
# Option "request_bodies" was renamed to "max_request_body_size"
90+
if key == "request_bodies":
91+
msg = (
92+
"Deprecated: The option 'request_bodies' was renamed to 'max_request_body_size'. "
93+
"Please use 'max_request_body_size'. The option 'request_bodies' will be removed in the future."
94+
)
95+
logger.warning(msg)
96+
rv["max_request_body_size"] = value
97+
continue
98+
8999
raise TypeError("Unknown option %r" % (key,))
90100

91101
rv[key] = value
@@ -220,11 +230,11 @@ def _capture_envelope(envelope):
220230

221231
self.session_flusher = SessionFlusher(capture_func=_capture_envelope)
222232

223-
request_bodies = ("always", "never", "small", "medium")
224-
if self.options["request_bodies"] not in request_bodies:
233+
max_request_body_size = ("always", "never", "small", "medium")
234+
if self.options["max_request_body_size"] not in max_request_body_size:
225235
raise ValueError(
226-
"Invalid value for request_bodies. Must be one of {}".format(
227-
request_bodies
236+
"Invalid value for max_request_body_size. Must be one of {}".format(
237+
max_request_body_size
228238
)
229239
)
230240

@@ -328,7 +338,9 @@ def _prepare_event(
328338
# Postprocess the event here so that annotated types do
329339
# generally not surface in before_send
330340
if event is not None:
331-
event = serialize(event, request_bodies=self.options.get("request_bodies"))
341+
event = serialize(
342+
event, max_request_body_size=self.options.get("max_request_body_size")
343+
)
332344

333345
before_send = self.options["before_send"]
334346
if (

sentry_sdk/consts.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ def __init__(
178178
http_proxy=None, # type: Optional[str]
179179
https_proxy=None, # type: Optional[str]
180180
ignore_errors=[], # type: Sequence[Union[type, str]] # noqa: B006
181-
request_bodies="medium", # type: str
181+
max_request_body_size="medium", # type: str
182182
before_send=None, # type: Optional[EventProcessor]
183183
before_breadcrumb=None, # type: Optional[BreadcrumbProcessor]
184184
debug=False, # type: bool

sentry_sdk/integrations/_wsgi_common.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def request_body_within_bounds(client, content_length):
3737
if client is None:
3838
return False
3939

40-
bodies = client.options["request_bodies"]
40+
bodies = client.options["max_request_body_size"]
4141
return not (
4242
bodies == "never"
4343
or (bodies == "small" and content_length > 10**3)

sentry_sdk/serializer.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868
MAX_EVENT_BYTES = 10**6
6969

7070
# Maximum depth and breadth of databags. Excess data will be trimmed. If
71-
# request_bodies is "always", request bodies won't be trimmed.
71+
# max_request_body_size is "always", request bodies won't be trimmed.
7272
MAX_DATABAG_DEPTH = 5
7373
MAX_DATABAG_BREADTH = 10
7474
CYCLE_MARKER = "<cyclic>"
@@ -120,7 +120,9 @@ def serialize(event, **kwargs):
120120
path = [] # type: List[Segment]
121121
meta_stack = [] # type: List[Dict[str, Any]]
122122

123-
keep_request_bodies = kwargs.pop("request_bodies", None) == "always" # type: bool
123+
keep_request_bodies = (
124+
kwargs.pop("max_request_body_size", None) == "always"
125+
) # type: bool
124126

125127
def _annotate(**meta):
126128
# type: (**Any) -> None

sentry_sdk/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,7 @@ def removed_because_raw_data(cls):
387387
@classmethod
388388
def removed_because_over_size_limit(cls):
389389
# type: () -> AnnotatedValue
390-
"""The actual value was removed because the size of the field exceeded the configured maximum size (specified with the request_bodies sdk option)"""
390+
"""The actual value was removed because the size of the field exceeded the configured maximum size (specified with the max_request_body_size sdk option)"""
391391
return AnnotatedValue(
392392
value="",
393393
metadata={

test-requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,4 @@ asttokens
1313
responses
1414
pysocks
1515
ipdb
16+
mockupdb

tests/integrations/bottle/test_bottle.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ def test_too_large_raw_request(
211211
sentry_init, input_char, capture_events, app, get_client
212212
):
213213
sentry_init(
214-
integrations=[bottle_sentry.BottleIntegration()], request_bodies="small"
214+
integrations=[bottle_sentry.BottleIntegration()], max_request_body_size="small"
215215
)
216216

217217
data = input_char * 2000
@@ -241,7 +241,7 @@ def index():
241241

242242
def test_files_and_form(sentry_init, capture_events, app, get_client):
243243
sentry_init(
244-
integrations=[bottle_sentry.BottleIntegration()], request_bodies="always"
244+
integrations=[bottle_sentry.BottleIntegration()], max_request_body_size="always"
245245
)
246246

247247
data = {"foo": "a" * 2000, "file": (BytesIO(b"hello"), "hello.txt")}
@@ -276,11 +276,11 @@ def index():
276276
assert not event["request"]["data"]["file"]
277277

278278

279-
def test_json_not_truncated_if_request_bodies_is_always(
279+
def test_json_not_truncated_if_max_request_body_size_is_always(
280280
sentry_init, capture_events, app, get_client
281281
):
282282
sentry_init(
283-
integrations=[bottle_sentry.BottleIntegration()], request_bodies="always"
283+
integrations=[bottle_sentry.BottleIntegration()], max_request_body_size="always"
284284
)
285285

286286
data = {

tests/integrations/flask/test_flask.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -394,7 +394,9 @@ def index():
394394

395395
@pytest.mark.parametrize("input_char", ["a", b"a"])
396396
def test_flask_too_large_raw_request(sentry_init, input_char, capture_events, app):
397-
sentry_init(integrations=[flask_sentry.FlaskIntegration()], request_bodies="small")
397+
sentry_init(
398+
integrations=[flask_sentry.FlaskIntegration()], max_request_body_size="small"
399+
)
398400

399401
data = input_char * 2000
400402

@@ -421,7 +423,9 @@ def index():
421423

422424

423425
def test_flask_files_and_form(sentry_init, capture_events, app):
424-
sentry_init(integrations=[flask_sentry.FlaskIntegration()], request_bodies="always")
426+
sentry_init(
427+
integrations=[flask_sentry.FlaskIntegration()], max_request_body_size="always"
428+
)
425429

426430
data = {"foo": "a" * 2000, "file": (BytesIO(b"hello"), "hello.txt")}
427431

@@ -449,10 +453,12 @@ def index():
449453
assert not event["request"]["data"]["file"]
450454

451455

452-
def test_json_not_truncated_if_request_bodies_is_always(
456+
def test_json_not_truncated_if_max_request_body_size_is_always(
453457
sentry_init, capture_events, app
454458
):
455-
sentry_init(integrations=[flask_sentry.FlaskIntegration()], request_bodies="always")
459+
sentry_init(
460+
integrations=[flask_sentry.FlaskIntegration()], max_request_body_size="always"
461+
)
456462

457463
data = {
458464
"key{}".format(i): "value{}".format(i) for i in range(MAX_DATABAG_BREADTH + 10)

tests/integrations/pyramid/test_pyramid.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -203,10 +203,10 @@ def index(request):
203203
assert event["request"]["data"] == data
204204

205205

206-
def test_json_not_truncated_if_request_bodies_is_always(
206+
def test_json_not_truncated_if_max_request_body_size_is_always(
207207
sentry_init, capture_events, route, get_client
208208
):
209-
sentry_init(integrations=[PyramidIntegration()], request_bodies="always")
209+
sentry_init(integrations=[PyramidIntegration()], max_request_body_size="always")
210210

211211
data = {
212212
"key{}".format(i): "value{}".format(i) for i in range(MAX_DATABAG_BREADTH + 10)
@@ -229,7 +229,7 @@ def index(request):
229229

230230

231231
def test_files_and_form(sentry_init, capture_events, route, get_client):
232-
sentry_init(integrations=[PyramidIntegration()], request_bodies="always")
232+
sentry_init(integrations=[PyramidIntegration()], max_request_body_size="always")
233233

234234
data = {"foo": "a" * 2000, "file": (BytesIO(b"hello"), "hello.txt")}
235235

tests/test_client.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -412,6 +412,20 @@ def test_include_local_variables_deprecation(sentry_init):
412412
fake_warning.assert_not_called()
413413

414414

415+
def test_request_bodies_deprecation(sentry_init):
416+
with mock.patch.object(logger, "warning", mock.Mock()) as fake_warning:
417+
sentry_init(request_bodies="small")
418+
419+
client = Hub.current.client
420+
assert "request_bodies" not in client.options
421+
assert "max_request_body_size" in client.options
422+
assert client.options["max_request_body_size"] == "small"
423+
424+
fake_warning.assert_called_once_with(
425+
"Deprecated: The option 'request_bodies' was renamed to 'max_request_body_size'. Please use 'max_request_body_size'. The option 'request_bodies' will be removed in the future."
426+
)
427+
428+
415429
def test_include_local_variables_enabled(sentry_init, capture_events):
416430
sentry_init(include_local_variables=True)
417431
events = capture_events()

tests/test_serializer.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ def test_trim_databag_breadth(body_normalizer):
132132
assert data.get(key) == value
133133

134134

135-
def test_no_trimming_if_request_bodies_is_always(body_normalizer):
135+
def test_no_trimming_if_max_request_body_size_is_always(body_normalizer):
136136
data = {
137137
"key{}".format(i): "value{}".format(i) for i in range(MAX_DATABAG_BREADTH + 10)
138138
}
@@ -141,6 +141,6 @@ def test_no_trimming_if_request_bodies_is_always(body_normalizer):
141141
curr["nested"] = {}
142142
curr = curr["nested"]
143143

144-
result = body_normalizer(data, request_bodies="always")
144+
result = body_normalizer(data, max_request_body_size="always")
145145

146146
assert result == data

0 commit comments

Comments
 (0)