jenkins-bot has submitted this change. (
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/845032 )
Change subject: [IMPR] Avoid to many return statements in QueryGenerator.generator
property
......................................................................
[IMPR] Avoid to many return statements in QueryGenerator.generator property
Change-Id: I2a974eb70127fe2dda930451df0e20a09dd86215
---
M pywikibot/data/api/_generators.py
1 file changed, 14 insertions(+), 6 deletions(-)
Approvals:
Matěj Suchánek: Looks good to me, approved
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/data/api/_generators.py b/pywikibot/data/api/_generators.py
index 5e6daa2..8164754 100644
--- a/pywikibot/data/api/_generators.py
+++ b/pywikibot/data/api/_generators.py
@@ -605,13 +605,15 @@
while True:
prev_limit, new_limit = self._handle_query_limit(
prev_limit, new_limit, previous_result_had_data)
+
if not hasattr(self, 'data'):
self.data = self.request.submit()
+
if not self.data or not isinstance(self.data, dict):
pywikibot.debug(
'{}: stopped iteration because no dict retrieved from api.'
.format(type(self).__name__))
- return
+ break
if 'query' in self.data and self.resultkey in
self.data['query']:
resultdata = self._get_resultdata()
@@ -621,10 +623,12 @@
for item in self.data['query']['normalized']}
else:
self.normalized = {}
+
try:
yield from self._extract_results(resultdata)
except RuntimeError:
- return
+ break
+
# self.resultkey in data in last request.submit()
previous_result_had_data = True
else:
@@ -632,23 +636,27 @@
pywikibot.log("%s: 'query' not found in api
response." %
self.__class__.__name__)
pywikibot.log(str(self.data))
+
# if (query-)continue is present, self.resultkey might not have
# been fetched yet
if self.continue_name not in self.data:
- # No results.
- return
+ break # No results.
+
# self.resultkey not in data in last request.submit()
# only "(query-)continue" was retrieved.
previous_result_had_data = False
+
if self.modules[0] == 'random':
# "random" module does not return "(query-)continue"
# now we loop for a new random query
del self.data # a new request is needed
continue
+
if self.continue_name not in self.data:
- return
+ break
+
if self.continue_update():
- return
+ break
del self.data # a new request with (query-)continue is needed
--
To view, visit
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/845032
To unsubscribe, or for help writing mail filters, visit
https://gerrit.wikimedia.org/r/settings
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Change-Id: I2a974eb70127fe2dda930451df0e20a09dd86215
Gerrit-Change-Number: 845032
Gerrit-PatchSet: 1
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: Matěj Suchánek <matejsuchanek97(a)gmail.com>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot
Gerrit-MessageType: merged