Skip to content

Commit 615452c

Browse files
Make fetch operation-name builder idempotent for prefixed labels
Co-authored-by: Shri Sukhani <shrisukhani@users.noreply.github.com>
1 parent 97835ac commit 615452c

2 files changed

Lines changed: 18 additions & 1 deletion

File tree

hyperbrowser/client/polling.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,13 @@ def build_operation_name(prefix: object, identifier: object) -> str:
124124

125125

126126
def build_fetch_operation_name(operation_name: object) -> str:
127-
return build_operation_name(_FETCH_OPERATION_NAME_PREFIX, operation_name)
127+
normalized_operation_name = build_operation_name("", operation_name)
128+
if normalized_operation_name.startswith(_FETCH_OPERATION_NAME_PREFIX):
129+
return normalized_operation_name
130+
return build_operation_name(
131+
_FETCH_OPERATION_NAME_PREFIX,
132+
normalized_operation_name,
133+
)
128134

129135

130136
def _ensure_boolean_terminal_result(result: object, *, operation_name: str) -> bool:

tests/test_polling.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,11 @@ def test_build_fetch_operation_name_prefixes_when_within_length_limit():
4747
assert build_fetch_operation_name("crawl job 123") == "Fetching crawl job 123"
4848

4949

50+
def test_build_fetch_operation_name_is_idempotent_for_prefixed_inputs():
51+
operation_name = "Fetching crawl job 123"
52+
assert build_fetch_operation_name(operation_name) == operation_name
53+
54+
5055
def test_build_fetch_operation_name_truncates_to_preserve_fetch_prefix():
5156
operation_name = "x" * 200
5257
fetch_operation_name = build_fetch_operation_name(operation_name)
@@ -71,6 +76,12 @@ def test_build_fetch_operation_name_bounds_very_large_operation_names():
7176
assert len(operation_name) == 200
7277

7378

79+
def test_build_fetch_operation_name_is_idempotent_for_bounded_prefixed_inputs():
80+
bounded_prefixed_name = "Fetching " + ("x" * 188) + "..."
81+
operation_name = build_fetch_operation_name(bounded_prefixed_name)
82+
assert operation_name == bounded_prefixed_name
83+
84+
7485
def test_build_fetch_operation_name_handles_unstringifiable_input():
7586
class _BadOperationName:
7687
def __str__(self) -> str:

0 commit comments

Comments
 (0)