11import asyncio
2+ import math
23from numbers import Real
34import time
45from typing import Awaitable , Callable , Optional , TypeVar
1213T = TypeVar ("T" )
1314
1415
16+ def _validate_non_negative_real (value : float , * , field_name : str ) -> None :
17+ if isinstance (value , bool ) or not isinstance (value , Real ):
18+ raise HyperbrowserError (f"{ field_name } must be a number" )
19+ if not math .isfinite (float (value )):
20+ raise HyperbrowserError (f"{ field_name } must be finite" )
21+ if value < 0 :
22+ raise HyperbrowserError (f"{ field_name } must be non-negative" )
23+
24+
1525def _validate_operation_name (operation_name : str ) -> None :
1626 if not isinstance (operation_name , str ):
1727 raise HyperbrowserError ("operation_name must be a string" )
@@ -29,12 +39,7 @@ def _validate_retry_config(
2939 raise HyperbrowserError ("max_attempts must be an integer" )
3040 if max_attempts < 1 :
3141 raise HyperbrowserError ("max_attempts must be at least 1" )
32- if isinstance (retry_delay_seconds , bool ) or not isinstance (
33- retry_delay_seconds , Real
34- ):
35- raise HyperbrowserError ("retry_delay_seconds must be a number" )
36- if retry_delay_seconds < 0 :
37- raise HyperbrowserError ("retry_delay_seconds must be non-negative" )
42+ _validate_non_negative_real (retry_delay_seconds , field_name = "retry_delay_seconds" )
3843 if max_status_failures is not None :
3944 if isinstance (max_status_failures , bool ) or not isinstance (
4045 max_status_failures , int
@@ -45,21 +50,15 @@ def _validate_retry_config(
4550
4651
4752def _validate_poll_interval (poll_interval_seconds : float ) -> None :
48- if isinstance (poll_interval_seconds , bool ) or not isinstance (
49- poll_interval_seconds , Real
50- ):
51- raise HyperbrowserError ("poll_interval_seconds must be a number" )
52- if poll_interval_seconds < 0 :
53- raise HyperbrowserError ("poll_interval_seconds must be non-negative" )
53+ _validate_non_negative_real (
54+ poll_interval_seconds , field_name = "poll_interval_seconds"
55+ )
5456
5557
5658def _validate_max_wait_seconds (max_wait_seconds : Optional [float ]) -> None :
57- if max_wait_seconds is not None and (
58- isinstance (max_wait_seconds , bool ) or not isinstance (max_wait_seconds , Real )
59- ):
60- raise HyperbrowserError ("max_wait_seconds must be a number" )
61- if max_wait_seconds is not None and max_wait_seconds < 0 :
62- raise HyperbrowserError ("max_wait_seconds must be non-negative" )
59+ if max_wait_seconds is None :
60+ return
61+ _validate_non_negative_real (max_wait_seconds , field_name = "max_wait_seconds" )
6362
6463
6564def _validate_page_batch_values (
0 commit comments