Skip to content

Commit 3f8221d

Browse files
Preserve timeout conversion errors in client validation
Co-authored-by: Shri Sukhani <shrisukhani@users.noreply.github.com>
1 parent c3957be commit 3f8221d

2 files changed

Lines changed: 10 additions & 3 deletions

File tree

hyperbrowser/client/timeout_utils.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,10 @@ def validate_timeout_seconds(timeout: Optional[float]) -> Optional[float]:
1717
try:
1818
normalized_timeout = float(timeout)
1919
except (TypeError, ValueError, OverflowError) as exc:
20-
raise HyperbrowserError("timeout must be finite") from exc
20+
raise HyperbrowserError(
21+
"timeout must be finite",
22+
original_error=exc,
23+
) from exc
2124
try:
2225
is_finite = math.isfinite(normalized_timeout)
2326
except (TypeError, ValueError, OverflowError):

tests/test_client_timeout.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,10 +119,14 @@ def test_async_client_rejects_non_finite_timeout(invalid_timeout: float):
119119

120120

121121
def test_sync_client_rejects_overflowing_real_timeout():
122-
with pytest.raises(HyperbrowserError, match="timeout must be finite"):
122+
with pytest.raises(HyperbrowserError, match="timeout must be finite") as exc_info:
123123
Hyperbrowser(api_key="test-key", timeout=Fraction(10**1000, 1))
124124

125+
assert exc_info.value.original_error is not None
126+
125127

126128
def test_async_client_rejects_overflowing_real_timeout():
127-
with pytest.raises(HyperbrowserError, match="timeout must be finite"):
129+
with pytest.raises(HyperbrowserError, match="timeout must be finite") as exc_info:
128130
AsyncHyperbrowser(api_key="test-key", timeout=Fraction(10**1000, 1))
131+
132+
assert exc_info.value.original_error is not None

0 commit comments

Comments
 (0)