Skip to content

Commit 750f476

Browse files
Truncate oversized extension key diagnostics
Co-authored-by: Shri Sukhani <shrisukhani@users.noreply.github.com>
1 parent 6e2faac commit 750f476

2 files changed

Lines changed: 24 additions & 1 deletion

File tree

hyperbrowser/client/managers/extension_utils.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from hyperbrowser.models.extension import ExtensionResponse
66

77
_MAX_DISPLAYED_MISSING_KEYS = 20
8+
_MAX_DISPLAYED_MISSING_KEY_LENGTH = 120
89

910

1011
def _get_type_name(value: Any) -> str:
@@ -18,8 +19,18 @@ def _safe_stringify_key(value: object) -> str:
1819
return f"<unprintable {_get_type_name(value)}>"
1920

2021

22+
def _format_key_display(value: object) -> str:
23+
normalized_key = _safe_stringify_key(value)
24+
if len(normalized_key) <= _MAX_DISPLAYED_MISSING_KEY_LENGTH:
25+
return normalized_key
26+
return (
27+
f"{normalized_key[:_MAX_DISPLAYED_MISSING_KEY_LENGTH]}"
28+
"... (truncated)"
29+
)
30+
31+
2132
def _summarize_mapping_keys(mapping: Mapping[object, object]) -> str:
22-
key_names = sorted(_safe_stringify_key(key) for key in mapping.keys())
33+
key_names = sorted(_format_key_display(key) for key in mapping.keys())
2334
if not key_names:
2435
return "[]"
2536
displayed_keys = key_names[:_MAX_DISPLAYED_MISSING_KEYS]

tests/test_extension_utils.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,18 @@ def test_parse_extension_list_response_data_missing_key_limits_key_list_size():
132132
parse_extension_list_response_data(payload)
133133

134134

135+
def test_parse_extension_list_response_data_missing_key_truncates_long_key_names():
136+
long_key = "k" * 160
137+
with pytest.raises(
138+
HyperbrowserError,
139+
match=(
140+
"Expected 'extensions' key in response but got "
141+
r"\[k{120}\.\.\. \(truncated\)\] keys"
142+
),
143+
):
144+
parse_extension_list_response_data({long_key: "value"})
145+
146+
135147
def test_parse_extension_list_response_data_missing_key_handles_unprintable_keys():
136148
class _BrokenStringKey:
137149
def __str__(self) -> str:

0 commit comments

Comments
 (0)