M4tx has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/186176

Change subject: Fix TypeError in APIGenerator.set_maximum_items on Python3
......................................................................

Fix TypeError in APIGenerator.set_maximum_items on Python3

Also, add comments to the function, and update the query
increment in set_maximum_items to higher value if needed.

Bug: T68949
Change-Id: I17122aac2b0ee86bb131c1a905a0ca87cff0c402
---
M pywikibot/data/api.py
1 file changed, 13 insertions(+), 4 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/pywikibot/core 
refs/changes/76/186176/1

diff --git a/pywikibot/data/api.py b/pywikibot/data/api.py
index d5100ad..52e6383 100644
--- a/pywikibot/data/api.py
+++ b/pywikibot/data/api.py
@@ -1502,10 +1502,11 @@
         self.limit_name = limit_name
         self.data_name = data_name
 
+        self.query_increment = 50
         self.limit = None
         self.starting_offset = kwargs.pop(self.continue_name, 0)
         self.request = Request(**kwargs)
-        self.request[self.limit_name] = 50
+        self.request[self.limit_name] = self.query_increment
 
     def set_query_increment(self, value):
         """
@@ -1517,9 +1518,11 @@
             per API request to set.
         @type value: int
         """
-        self.request[self.limit_name] = int(value)
+        self.query_increment = int(value)
+        self.request[self.limit_name] = self.query_increment
         pywikibot.debug(u"%s: Set query_limit to %i."
-                        % (self.__class__.__name__, int(value)), _logger)
+                        % (self.__class__.__name__, self.query_increment),
+                        _logger)
 
     def set_maximum_items(self, value):
         """
@@ -1533,8 +1536,14 @@
         @type value: int
         """
         self.limit = int(value)
-        if self.limit < self.request[self.limit_name]:
+        if self.limit < self.query_increment:
+            # If the new limit of maximum number of items to be retrieved is
+            # low, there's no point in retrieving more in API query
             self.request[self.limit_name] = self.limit
+        else:
+            # The limit might have been updated earlier to the lower value,
+            # so restore the original one
+            self.request[self.limit_name] = self.query_increment
 
     def __iter__(self):
         """Submit request and iterate the response.

-- 
To view, visit https://gerrit.wikimedia.org/r/186176
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I17122aac2b0ee86bb131c1a905a0ca87cff0c402
Gerrit-PatchSet: 1
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: M4tx <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to