Skip to content

Commit 93cb025

Browse files
Support title and reason keys in transport error extraction
Co-authored-by: Shri Sukhani <shrisukhani@users.noreply.github.com>
1 parent 13f6f5e commit 93cb025

2 files changed

Lines changed: 20 additions & 2 deletions

File tree

‎hyperbrowser/transport/error_utils.py‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ def _stringify_error_value(value: Any, *, _depth: int = 0) -> str:
5050
if isinstance(value, str):
5151
return value
5252
if isinstance(value, dict):
53-
for key in ("message", "error", "detail", "errors", "msg"):
53+
for key in ("message", "error", "detail", "errors", "msg", "title", "reason"):
5454
nested_value = value.get(key)
5555
if nested_value is not None:
5656
return _stringify_error_value(nested_value, _depth=_depth + 1)
@@ -94,7 +94,7 @@ def _fallback_message() -> str:
9494

9595
extracted_message: str
9696
if isinstance(error_data, dict):
97-
for key in ("message", "error", "detail", "errors"):
97+
for key in ("message", "error", "detail", "errors", "title", "reason"):
9898
message = error_data.get(key)
9999
if message is not None:
100100
candidate_message = _stringify_error_value(message)

‎tests/test_transport_error_utils.py‎

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,24 @@ def test_extract_error_message_extracts_errors_list_messages():
303303
assert message == "first issue; second issue"
304304

305305

306+
def test_extract_error_message_uses_title_field_when_present():
307+
message = extract_error_message(
308+
_DummyResponse({"title": "Request validation failed"}),
309+
RuntimeError("fallback detail"),
310+
)
311+
312+
assert message == "Request validation failed"
313+
314+
315+
def test_extract_error_message_uses_reason_field_when_present():
316+
message = extract_error_message(
317+
_DummyResponse({"reason": "service temporarily unavailable"}),
318+
RuntimeError("fallback detail"),
319+
)
320+
321+
assert message == "service temporarily unavailable"
322+
323+
306324
def test_extract_error_message_truncates_long_errors_lists():
307325
errors_payload = {"errors": [{"msg": f"issue-{index}"} for index in range(12)]}
308326
message = extract_error_message(

0 commit comments

Comments
 (0)