File tree Expand file tree Collapse file tree
hyperbrowser/client/managers Expand file tree Collapse file tree Original file line number Diff line number Diff line change 55from hyperbrowser .models .extension import ExtensionResponse
66
77_MAX_DISPLAYED_MISSING_KEYS = 20
8+ _MAX_DISPLAYED_MISSING_KEY_LENGTH = 120
89
910
1011def _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+
2132def _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 ]
Original file line number Diff line number Diff 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+
135147def test_parse_extension_list_response_data_missing_key_handles_unprintable_keys ():
136148 class _BrokenStringKey :
137149 def __str__ (self ) -> str :
You can’t perform that action at this time.
0 commit comments