Skip to content

Commit be23c4e

Browse files
committed
Improved logging for pagination
1 parent 009fecb commit be23c4e

1 file changed

Lines changed: 25 additions & 0 deletions

File tree

python-lib/pagination.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@ def configure_paging(self, config=None, skip_key=None, limit_key=None, total_key
3939
self.next_page_url_base = next_page_url_base
4040
elif self.pagination_type in ["offset", "page"]:
4141
self.skip_key = config.get("skip_key", skip_key)
42+
logger.info("configure_paging: self.limit_key='{}', self.pagination_type='{}', self.next_page_key='{}', self.next_page_url_base='{}', self.skip_key='{}'".format(
43+
self.limit_key, self.pagination_type, self.next_page_key, self.next_page_url_base, self.skip_key
44+
))
4245

4346
def reset_paging(self, counting_key=None, url=None):
4447
self.remaining_records = 0
@@ -53,9 +56,11 @@ def reset_paging(self, counting_key=None, url=None):
5356
self.is_last_batch_empty = False
5457
self.is_first_batch = True
5558
self.is_paging_started = True
59+
logger.info("reset_paging:next_page_url={}, counting_key={}, next_page_number={}".format(self.next_page_url, self.counting_key, self.next_page_number))
5660

5761
def set_counting_key(self, counting_key):
5862
self.counting_key = counting_key
63+
logger.info("set_counting_key: counting_key set to {}".format(self.counting_key))
5964

6065
def update_next_page(self, data, response_links=None):
6166
response_links = response_links or {}
@@ -67,13 +72,19 @@ def update_next_page(self, data, response_links=None):
6772
if next_page_url:
6873
self.next_page_url = next_page_url
6974
self.params_must_be_blanked = True
75+
logger.info("update_next_page:next_link={}, next_page_url={}, params_must_be_blanked={}, next_page_number={}, counter={}".format(
76+
next_link, self.next_page_url, self.params_must_be_blanked, self.next_page_number, self.counter
77+
))
7078
self.data_is_list = False
7179
if isinstance(data, list):
7280
self.data_is_list = True
7381
batch_size = len(data)
7482
self.records_to_skip = self.records_to_skip + batch_size
7583
if batch_size == 0:
7684
self.is_last_batch_empty = True
85+
logger.info("update_next_page:update_next_page:data is list:batch_size={}, records_to_skip={}, is_last_batch_empty={}".format(
86+
batch_size, self.records_to_skip, self.is_last_batch_empty
87+
))
7788
return
7889
elif self.counting_key:
7990
extracted_data = get_value_from_path(data, self.counting_key.split("."), can_raise=False)
@@ -90,15 +101,25 @@ def update_next_page(self, data, response_links=None):
90101
self.next_page_url = "/".join([self.next_page_url_base, next_page_path])
91102
else:
92103
self.next_page_url = next_page_path
104+
logger.info("update_next_page:next_page_url_base={}, next_page_path={}, next_page_url={}".format(
105+
self.next_page_url_base, next_page_path, self.next_page_url
106+
))
93107
if self.skip_key:
94108
self.skip = data.get(self.skip_key)
109+
logger.info("update_next_page:skip=data[{}]={}".format(self.skip_key, self.skip))
95110
if self.limit_key:
96111
self.limit = data.get(self.limit_key)
112+
logger.info("update_next_page:limit=data[{}]={}".format(self.limit_key, self.limit))
97113
if self.total_key:
98114
self.total = data.get(self.total_key)
115+
logger.info("update_next_page:total=data[{}]={}".format(self.total_key, self.total))
99116
self.records_to_skip = self.records_to_skip + batch_size
117+
logger.info("update_next_page:records_to_skip={}, batch_size={}".format(self.records_to_skip, batch_size))
100118
if self.total:
101119
self.remaining_records = self.total - self.records_to_skip
120+
logger.info("update_next_page:remaining_records={}, total={}, records_to_skip={}".format(
121+
self.remaining_records, self.total, self.records_to_skip
122+
))
102123

103124
def has_next_page(self):
104125
if self.is_last_batch_empty:
@@ -118,14 +139,18 @@ def has_next_page(self):
118139
if self.pagination_type in ["page", "offset"]:
119140
if self.counting_key:
120141
# There is a counting key and we already know the last batch was not empty
142+
logger.info("has_next_page:pagination_type={}, counting_key={} -> True".format(self.pagination_type, self.counting_key))
121143
return True
122144
else:
123145
if self.data_is_list:
124146
# for lists is_last_batch_empty is set correctly and handled by the code above
147+
logger.info("has_next_page:pagination_type={}, data_is_list={} -> True".format(self.pagination_type, self.data_is_list))
125148
return True
126149
# Without a counting_key we have no mean to know if the last batch was empty.
127150
# To avoid infinite loop we stop pagination here
151+
logger.info("has_next_page:pagination_type={} -> False".format(self.pagination_type))
128152
return False
153+
logger.info("has_next_page:pagination_type={} -> False".format(self.pagination_type))
129154
return False
130155

131156
def get_params(self):

0 commit comments

Comments
 (0)