Skip to content

Commit 30ef046

Browse files
Adopt shared plain-string helper across parsing utilities
Co-authored-by: Shri Sukhani <shrisukhani@users.noreply.github.com>
1 parent 6e4c55a commit 30ef046

File tree

6 files changed

+20
-12
lines changed

6 files changed

+20
-12
lines changed

hyperbrowser/client/managers/extension_utils.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from hyperbrowser.display_utils import format_string_key_for_error
55
from hyperbrowser.exceptions import HyperbrowserError
66
from hyperbrowser.models.extension import ExtensionResponse
7+
from hyperbrowser.type_utils import is_plain_string
78
from .list_parsing_utils import parse_mapping_list_items
89

910
_MAX_DISPLAYED_MISSING_KEYS = 20
@@ -17,7 +18,7 @@ def _get_type_name(value: Any) -> str:
1718
def _safe_stringify_key(value: object) -> str:
1819
try:
1920
normalized_key = str(value)
20-
if type(normalized_key) is not str:
21+
if not is_plain_string(normalized_key):
2122
raise TypeError("normalized key must be a string")
2223
return normalized_key
2324
except Exception:
@@ -27,7 +28,7 @@ def _safe_stringify_key(value: object) -> str:
2728
def _format_key_display(value: object) -> str:
2829
try:
2930
normalized_key = _safe_stringify_key(value)
30-
if type(normalized_key) is not str:
31+
if not is_plain_string(normalized_key):
3132
raise TypeError("normalized key display must be a string")
3233
except Exception:
3334
return "<unreadable key>"

hyperbrowser/client/managers/list_parsing_utils.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from hyperbrowser.exceptions import HyperbrowserError
44
from hyperbrowser.mapping_utils import read_string_key_mapping
5+
from hyperbrowser.type_utils import is_plain_string
56

67
T = TypeVar("T")
78

@@ -13,7 +14,7 @@ def _safe_key_display_for_error(
1314
) -> str:
1415
try:
1516
key_text = key_display(key)
16-
if type(key_text) is not str:
17+
if not is_plain_string(key_text):
1718
raise TypeError("key display must be a string")
1819
return key_text
1920
except Exception:

hyperbrowser/client/managers/response_utils.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
)
77
from hyperbrowser.exceptions import HyperbrowserError
88
from hyperbrowser.mapping_utils import read_string_key_mapping
9+
from hyperbrowser.type_utils import is_plain_string
910

1011
T = TypeVar("T")
1112
_MAX_OPERATION_NAME_DISPLAY_LENGTH = 120
@@ -32,11 +33,11 @@ def parse_response_model(
3233
model: Type[T],
3334
operation_name: str,
3435
) -> T:
35-
if type(operation_name) is not str:
36+
if not is_plain_string(operation_name):
3637
raise HyperbrowserError("operation_name must be a non-empty string")
3738
try:
3839
normalized_operation_name_input = operation_name.strip()
39-
if type(normalized_operation_name_input) is not str:
40+
if not is_plain_string(normalized_operation_name_input):
4041
raise TypeError("normalized operation_name must be a string")
4142
is_empty_operation_name = len(normalized_operation_name_input) == 0
4243
except HyperbrowserError:

hyperbrowser/display_utils.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from hyperbrowser.type_utils import is_plain_string
2+
13
_TRUNCATED_DISPLAY_SUFFIX = "... (truncated)"
24

35

@@ -7,7 +9,7 @@ def normalize_display_text(value: str, *, max_length: int) -> str:
79
"?" if ord(character) < 32 or ord(character) == 127 else character
810
for character in value
911
).strip()
10-
if type(sanitized_value) is not str:
12+
if not is_plain_string(sanitized_value):
1113
return ""
1214
if not sanitized_value:
1315
return ""

hyperbrowser/exceptions.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# exceptions.py
22
from typing import Optional, Any
33

4+
from hyperbrowser.type_utils import is_plain_string
5+
46
_MAX_EXCEPTION_DISPLAY_LENGTH = 2000
57
_TRUNCATED_EXCEPTION_DISPLAY_SUFFIX = "... (truncated)"
68

@@ -21,14 +23,14 @@ def _safe_exception_text(value: Any, *, fallback: str) -> str:
2123
text_value = str(value)
2224
except Exception:
2325
return fallback
24-
if type(text_value) is not str:
26+
if not is_plain_string(text_value):
2527
return fallback
2628
try:
2729
sanitized_value = "".join(
2830
"?" if ord(character) < 32 or ord(character) == 127 else character
2931
for character in text_value
3032
)
31-
if type(sanitized_value) is not str:
33+
if not is_plain_string(sanitized_value):
3234
return fallback
3335
if sanitized_value.strip():
3436
return _truncate_exception_text(sanitized_value)

hyperbrowser/mapping_utils.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from typing import Any, Callable, Dict, List
33

44
from hyperbrowser.exceptions import HyperbrowserError
5+
from hyperbrowser.type_utils import is_plain_string
56

67

78
def read_string_mapping_keys(
@@ -24,7 +25,7 @@ def read_string_mapping_keys(
2425
) from exc
2526
normalized_keys: List[str] = []
2627
for key in mapping_keys:
27-
if type(key) is str:
28+
if is_plain_string(key):
2829
normalized_keys.append(key)
2930
continue
3031
raise HyperbrowserError(non_string_key_error_builder(key))
@@ -55,7 +56,7 @@ def read_string_key_mapping(
5556
except Exception as exc:
5657
try:
5758
key_text = key_display(key)
58-
if type(key_text) is not str:
59+
if not is_plain_string(key_text):
5960
raise TypeError("mapping key display must be a string")
6061
except Exception:
6162
key_text = "<unreadable key>"
@@ -75,7 +76,7 @@ def copy_mapping_values_by_string_keys(
7576
) -> Dict[str, object]:
7677
normalized_mapping: Dict[str, object] = {}
7778
for key in keys:
78-
if type(key) is not str:
79+
if not is_plain_string(key):
7980
raise HyperbrowserError("mapping key list must contain plain strings")
8081
try:
8182
normalized_mapping[key] = mapping_value[key]
@@ -84,7 +85,7 @@ def copy_mapping_values_by_string_keys(
8485
except Exception as exc:
8586
try:
8687
key_text = key_display(key)
87-
if type(key_text) is not str:
88+
if not is_plain_string(key_text):
8889
raise TypeError("mapping key display must be a string")
8990
except Exception:
9091
key_text = "<unreadable key>"

0 commit comments

Comments
 (0)