Skip to content

Commit 9f941a7

Browse files
Limit long list-based transport error message output
Co-authored-by: Shri Sukhani <shrisukhani@users.noreply.github.com>
1 parent 08fb991 commit 9f941a7

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

hyperbrowser/transport/error_utils.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,25 @@ def _stringify_error_value(value: Any, *, _depth: int = 0) -> str:
1515
if nested_value is not None:
1616
return _stringify_error_value(nested_value, _depth=_depth + 1)
1717
if isinstance(value, (list, tuple)):
18+
max_list_items = 10
1819
collected_messages = [
1920
item_message
2021
for item_message in (
21-
_stringify_error_value(item, _depth=_depth + 1) for item in value
22+
_stringify_error_value(item, _depth=_depth + 1)
23+
for item in value[:max_list_items]
2224
)
2325
if item_message
2426
]
2527
if collected_messages:
26-
return (
28+
joined_messages = (
2729
collected_messages[0]
2830
if len(collected_messages) == 1
2931
else "; ".join(collected_messages)
3032
)
33+
remaining_items = len(value) - max_list_items
34+
if remaining_items > 0:
35+
return f"{joined_messages}; ... (+{remaining_items} more)"
36+
return joined_messages
3137
try:
3238
return json.dumps(value, sort_keys=True)
3339
except (TypeError, ValueError, RecursionError):

tests/test_transport_error_utils.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,19 @@ def test_extract_error_message_extracts_errors_list_messages():
162162
assert message == "first issue; second issue"
163163

164164

165+
def test_extract_error_message_truncates_long_errors_lists():
166+
errors_payload = {"errors": [{"msg": f"issue-{index}"} for index in range(12)]}
167+
message = extract_error_message(
168+
_DummyResponse(errors_payload),
169+
RuntimeError("fallback detail"),
170+
)
171+
172+
assert "issue-0" in message
173+
assert "issue-9" in message
174+
assert "issue-10" not in message
175+
assert "... (+2 more)" in message
176+
177+
165178
def test_extract_error_message_skips_blank_message_and_uses_detail():
166179
message = extract_error_message(
167180
_DummyResponse({"message": " ", "detail": "useful detail"}),

0 commit comments

Comments
 (0)