John Vandenberg has uploaded a new change for review.

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

Change subject: PreloadingItemGenerator: process normal pages
......................................................................

PreloadingItemGenerator: process normal pages

The item preloading generator only prefetches if the input
generator yields WikibasePage, with a Site class that
has method preloaditempages.

This allows a Page which is in the 'wikibase-item' namespace to be
be preloaded.

Change-Id: I62140a91bb68a67a93dcf7bb70bfe284de672d02
---
M pywikibot/pagegenerators.py
M tests/wikibase_tests.py
2 files changed, 26 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/pywikibot/core 
refs/changes/38/160438/1

diff --git a/pywikibot/pagegenerators.py b/pywikibot/pagegenerators.py
index 0ba02b4..2455532 100644
--- a/pywikibot/pagegenerators.py
+++ b/pywikibot/pagegenerators.py
@@ -1082,6 +1082,16 @@
     """
     sites = {}
     for page in generator:
+        if not isinstance(page, pywikibot.page.WikibasePage):
+            datasite = page.site.data_repository()
+            if page.namespace() != datasite.item_namespace:
+                pywikibot.output(
+                    u'PreloadingItemGenerator skipping %s as it is not in %s'
+                    % (page, datasite.item_namespace))
+                continue
+
+            page = pywikibot.ItemPage(datasite, page.title())
+
         site = page.site
         sites.setdefault(site, []).append(page)
         if len(sites[site]) >= step:
diff --git a/tests/wikibase_tests.py b/tests/wikibase_tests.py
index b288484..f6198f6 100644
--- a/tests/wikibase_tests.py
+++ b/tests/wikibase_tests.py
@@ -630,6 +630,22 @@
         self.assertEqual(response, self.data_out)
 
 
+class TestPreloadingItemGenerator(TestCase):
+
+    """Test preloading item generator."""
+
+    family = 'wikidata'
+    code = 'wikidata'
+
+    def test_non_item_gen(self):
+        """Test TestPreloadingItemGenerator with ReferringPageGenerator."""
+        site = self.get_site()
+        instance_of_page = pywikibot.Page(site, 'Property:P31')
+        ref_gen = pagegenerators.ReferringPageGenerator(instance_of_page, 
total=5)
+        gen = pagegenerators.PreloadingItemGenerator(ref_gen)
+        self.assertTrue(all(isinstance(item, pywikibot.ItemPage) for item in 
gen))
+
+
 class TestNamespaces(WikidataTestCase):
 
     """Test cases to test namespaces of Wikibase entities."""

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

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

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

Reply via email to