From 055aeb7a1f7db53c91e80decd4628fa2872d9399 Mon Sep 17 00:00:00 2001 From: Yiwen Yuan Date: Thu, 12 Jun 2025 14:36:07 -0700 Subject: [PATCH] fix --- polygon/rest/base.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/polygon/rest/base.py b/polygon/rest/base.py index d9d4768a..613473ed 100644 --- a/polygon/rest/base.py +++ b/polygon/rest/base.py @@ -10,7 +10,7 @@ from .models.request import RequestOptionBuilder from ..logging import get_logger import logging -from urllib.parse import urlencode +from urllib.parse import urlencode, urlparse from ..exceptions import AuthError, BadResponse logger = get_logger("RESTClient") @@ -207,6 +207,10 @@ def _paginate_iter( result_key: str = "results", options: Optional[RequestOptionBuilder] = None, ): + max_items_to_return = None + if "limit" in params: + max_items_to_return = params["limit"] + returned_items = 0 while True: resp = self._get( path=path, @@ -226,9 +230,17 @@ def _paginate_iter( if result_key not in decoded: return [] for t in decoded[result_key]: + if max_items_to_return and returned_items == max_items_to_return: + return + returned_items += 1 yield deserializer(t) + if "next_url" in decoded: - path = decoded["next_url"].replace(self.BASE, "") + next_url = decoded["next_url"] + parsed = urlparse(next_url) + path = parsed.path + if parsed.query: + path += "?" + parsed.query params = {} else: return