|
4 | 4 | from hyperbrowser.models.extension import ExtensionResponse |
5 | 5 |
|
6 | 6 |
|
| 7 | +def _get_type_name(value: Any) -> str: |
| 8 | + return type(value).__name__ |
| 9 | + |
| 10 | + |
7 | 11 | def parse_extension_list_response_data(response_data: Any) -> List[ExtensionResponse]: |
8 | 12 | if not isinstance(response_data, dict): |
9 | | - raise HyperbrowserError(f"Expected dict response but got {type(response_data)}") |
| 13 | + raise HyperbrowserError( |
| 14 | + f"Expected dict response but got {_get_type_name(response_data)}" |
| 15 | + ) |
10 | 16 | if "extensions" not in response_data: |
11 | 17 | raise HyperbrowserError( |
12 | 18 | f"Expected 'extensions' key in response but got {response_data.keys()}" |
13 | 19 | ) |
14 | 20 | if not isinstance(response_data["extensions"], list): |
15 | 21 | raise HyperbrowserError( |
16 | | - f"Expected list in 'extensions' key but got {type(response_data['extensions'])}" |
| 22 | + "Expected list in 'extensions' key but got " |
| 23 | + f"{_get_type_name(response_data['extensions'])}" |
17 | 24 | ) |
18 | 25 | parsed_extensions: List[ExtensionResponse] = [] |
19 | 26 | for index, extension in enumerate(response_data["extensions"]): |
20 | 27 | if not isinstance(extension, dict): |
21 | 28 | raise HyperbrowserError( |
22 | | - f"Expected extension object at index {index} but got {type(extension)}" |
| 29 | + "Expected extension object at index " |
| 30 | + f"{index} but got {_get_type_name(extension)}" |
23 | 31 | ) |
24 | 32 | try: |
25 | 33 | parsed_extensions.append(ExtensionResponse(**extension)) |
| 34 | + except HyperbrowserError: |
| 35 | + raise |
26 | 36 | except Exception as exc: |
27 | 37 | raise HyperbrowserError( |
28 | 38 | f"Failed to parse extension at index {index}", |
|
0 commit comments