jenkins-bot has submitted this change. ( 
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/801399 )

Change subject: [IMPR] Show an APIError if PetScanPageGenerator.query() fails
......................................................................

[IMPR] Show an APIError if PetScanPageGenerator.query() fails

Bug: T309538
Change-Id: I06c57e0114e581b6dbc34a42e27909bfbb92bdd4
---
M pywikibot/pagegenerators.py
1 file changed, 20 insertions(+), 7 deletions(-)

Approvals:
  Xqt: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/pywikibot/pagegenerators.py b/pywikibot/pagegenerators.py
index fd413bf..390fd2e 100644
--- a/pywikibot/pagegenerators.py
+++ b/pywikibot/pagegenerators.py
@@ -21,7 +21,6 @@
 import datetime
 import io
 import itertools
-import json
 import re
 import sys
 from collections import abc, namedtuple
@@ -53,6 +52,7 @@
 from pywikibot.comms import http
 from pywikibot.data import api
 from pywikibot.exceptions import (
+    APIError,
     NoPageError,
     ServerError,
     UnknownExtensionError,
@@ -3002,7 +3002,11 @@


 class PetScanPageGenerator:
-    """Queries PetScan (https://petscan.wmflabs.org/) to generate pages."""
+    """Queries PetScan to generate pages.
+
+    .. seealso:: https://petscan.wmflabs.org/
+    .. versionadded:: 3.0
+    """

     def __init__(self, categories: Sequence[str],
                  subset_combination: bool = True,
@@ -3012,8 +3016,7 @@
         """
         Initializer.

-        :param categories: List of categories to retrieve pages from
-            (as strings)
+        :param categories: List of category names to retrieve pages from
         :param subset_combination: Combination mode.
             If True, returns the intersection of the results of the categories,
             else returns the union of the results of the categories
@@ -3065,7 +3068,14 @@
         return query_final

     def query(self) -> Iterator[Dict[str, Any]]:
-        """Query PetScan."""
+        """Query PetScan.
+
+        .. versionchanged:: 7.4
+           raises :class:`APIError` if query returns an error message.
+
+        :raises ServerError: Either ReadTimeout or server status error
+        :raises APIError: error response from petscan
+        """
         url = 'https://petscan.wmflabs.org'

         try:
@@ -3078,8 +3088,11 @@
             raise ServerError(
                 'received {} status from {}'.format(req.status_code, req.url))

-        j = json.loads(req.text)
-        raw_pages = j['*'][0]['a']['*']
+        data = req.json()
+        if 'error' in data:
+            raise APIError('Petscan', data['error'], **self.opts)
+
+        raw_pages = data['*'][0]['a']['*']
         yield from raw_pages

     def __iter__(self) -> Iterator['pywikibot.page.Page']:

--
To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/core/+/801399
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: I06c57e0114e581b6dbc34a42e27909bfbb92bdd4
Gerrit-Change-Number: 801399
Gerrit-PatchSet: 3
Gerrit-Owner: Xqt <[email protected]>
Gerrit-Reviewer: Sn1per <[email protected]>
Gerrit-Reviewer: Xqt <[email protected]>
Gerrit-Reviewer: jenkins-bot
Gerrit-MessageType: merged
_______________________________________________
Pywikibot-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to