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 @@ -9,13 +9,22 @@ def _get_type_name(value: Any) -> str:
99 return type (value ).__name__
1010
1111
12+ def _safe_stringify_key (value : object ) -> str :
13+ try :
14+ return str (value )
15+ except Exception :
16+ return f"<unprintable { _get_type_name (value )} >"
17+
18+
1219def parse_extension_list_response_data (response_data : Any ) -> List [ExtensionResponse ]:
1320 if not isinstance (response_data , Mapping ):
1421 raise HyperbrowserError (
1522 f"Expected mapping response but got { _get_type_name (response_data )} "
1623 )
1724 if "extensions" not in response_data :
18- available_keys = ", " .join (sorted (str (key ) for key in response_data .keys ()))
25+ available_keys = ", " .join (
26+ sorted (_safe_stringify_key (key ) for key in response_data .keys ())
27+ )
1928 if available_keys :
2029 available_keys = f"[{ available_keys } ]"
2130 else :
Original file line number Diff line number Diff line change @@ -115,3 +115,18 @@ def test_parse_extension_list_response_data_missing_key_lists_available_keys():
115115 "updatedAt" : "2026-01-01T00:00:00Z" ,
116116 }
117117 )
118+
119+
120+ def test_parse_extension_list_response_data_missing_key_handles_unprintable_keys ():
121+ class _BrokenStringKey :
122+ def __str__ (self ) -> str :
123+ raise RuntimeError ("bad key stringification" )
124+
125+ with pytest .raises (
126+ HyperbrowserError ,
127+ match = (
128+ "Expected 'extensions' key in response but got "
129+ "\\ [<unprintable _BrokenStringKey>\\ ] keys"
130+ ),
131+ ):
132+ parse_extension_list_response_data ({_BrokenStringKey (): "value" })
You can’t perform that action at this time.
0 commit comments