From a662bbb487cd6d34541824589f8e8c7a1f7791bb Mon Sep 17 00:00:00 2001 From: YuXuan Tay Date: Mon, 29 Jul 2024 20:10:10 +0800 Subject: [PATCH] Respects `min` argument for `wait_random_exponential` (#425) * Respects `min` argument for wait_random_exponential * Update test_tenacity.py * Update test_tenacity.py * Update test_tenacity.py --- ...wait-random-exponential-min-2a4b7eed9f002436.yaml | 4 ++++ tenacity/wait.py | 2 +- tests/test_tenacity.py | 12 ++++++++++-- 3 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 releasenotes/notes/wait-random-exponential-min-2a4b7eed9f002436.yaml diff --git a/releasenotes/notes/wait-random-exponential-min-2a4b7eed9f002436.yaml b/releasenotes/notes/wait-random-exponential-min-2a4b7eed9f002436.yaml new file mode 100644 index 00000000..34efd1c2 --- /dev/null +++ b/releasenotes/notes/wait-random-exponential-min-2a4b7eed9f002436.yaml @@ -0,0 +1,4 @@ +--- +fixes: + - | + Respects `min` arg for `wait_random_exponential` diff --git a/tenacity/wait.py b/tenacity/wait.py index 3addbb9c..dc3c8505 100644 --- a/tenacity/wait.py +++ b/tenacity/wait.py @@ -197,7 +197,7 @@ class wait_random_exponential(wait_exponential): def __call__(self, retry_state: "RetryCallState") -> float: high = super().__call__(retry_state=retry_state) - return random.uniform(0, high) + return random.uniform(self.min, high) class wait_exponential_jitter(wait_base): diff --git a/tests/test_tenacity.py b/tests/test_tenacity.py index ecc0312c..b76fec2c 100644 --- a/tests/test_tenacity.py +++ b/tests/test_tenacity.py @@ -472,9 +472,17 @@ def test_wait_random_exponential(self): self._assert_inclusive_range(fn(make_retry_state(8, 0)), 0, 60.0) self._assert_inclusive_range(fn(make_retry_state(9, 0)), 0, 60.0) - fn = tenacity.wait_random_exponential(10, 5) + # max wait + max_wait = 5 + fn = tenacity.wait_random_exponential(10, max_wait) for _ in range(1000): - self._assert_inclusive_range(fn(make_retry_state(1, 0)), 0.00, 5.00) + self._assert_inclusive_range(fn(make_retry_state(1, 0)), 0.00, max_wait) + + # min wait + min_wait = 5 + fn = tenacity.wait_random_exponential(min=min_wait) + for _ in range(1000): + self._assert_inclusive_range(fn(make_retry_state(1, 0)), min_wait, 5) # Default arguments exist fn = tenacity.wait_random_exponential()