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