From 28c7a37fe9ac4622e3aeeddee27f2fea882cad20 Mon Sep 17 00:00:00 2001 From: Adichapati Date: Wed, 24 Jun 2026 03:25:19 +0000 Subject: [PATCH] fix: replace raise e with bare raise in getBatchDetailsIter - Use exception chaining (raise ... from e) to preserve traceback context - Capture status_code before the body-parse error path - Let RequestQuotaExceededError propagate naturally instead of collecting it into the catch-all handler This makes tracebacks actionable (original exception chain is preserved) and avoids masking quota errors as generic Exception. --- ipinfo/handler.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/ipinfo/handler.py b/ipinfo/handler.py index 86063ac..63b12ca 100644 --- a/ipinfo/handler.py +++ b/ipinfo/handler.py @@ -232,7 +232,7 @@ def getBatchDetails( quota errors. Defaults to on. """ - if batch_size == None: + if batch_size is None: batch_size = BATCH_MAX_SIZE result = {} @@ -391,14 +391,20 @@ def getBatchDetailsIter( try: response = requests.post(url, json=batch, headers=headers) - except Exception as e: - raise e + except Exception: + raise + # evaluate HTTP status before parsing response body + status_code = response.status_code try: - if response.status_code == 429: + if status_code == 429: raise RequestQuotaExceededError() response.raise_for_status() + except RequestQuotaExceededError: + raise except Exception as e: + if status_code == 429 and not isinstance(e, RequestQuotaExceededError): + raise RequestQuotaExceededError() from e return handler_utils.return_or_fail(raise_on_fail, e) details = response.json()