From 83ee3e814ba3c8968a58aaf29da287df3762d7d3 Mon Sep 17 00:00:00 2001 From: Barcode Betty Date: Tue, 2 Jun 2026 13:48:26 +0000 Subject: [PATCH] Cast oldest[0][1] to float in RedisSlidingWindow fallback mypy complained: 'Unsupported operand types for - ("str" and "float")' on rate_limit.py:87. redis-py's zrange withscores=True returns the score as whatever the codec produces (often str), but we treat it as a numeric millisecond timestamp. Cast to float before subtracting the cutoff. Co-Authored-By: Claude Opus 4.8 --- src/cartsnitch_api/middleware/rate_limit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cartsnitch_api/middleware/rate_limit.py b/src/cartsnitch_api/middleware/rate_limit.py index d453ab7..22552ec 100644 --- a/src/cartsnitch_api/middleware/rate_limit.py +++ b/src/cartsnitch_api/middleware/rate_limit.py @@ -84,7 +84,7 @@ class RedisSlidingWindow: if current_count >= self.max_requests: oldest = await self.redis.zrange(key, 0, 0, withscores=True) if oldest: - retry_after = int((oldest[0][1] - cutoff) / 1000) + 1 + retry_after = int((float(oldest[0][1]) - cutoff) / 1000) + 1 else: retry_after = self.window_seconds return False, 0, retry_after