jenkins-bot merged this change.

View Change

Approvals: Dalba: Looks good to me, approved jenkins-bot: Verified
Make sure entites are preloaded on a DataSite

This resulted in AttributeError.

Change-Id: Iab08428441c35d8b762a55e89e8b182f3a47245e
---
M pywikibot/pagegenerators.py
M tests/pagegenerators_tests.py
M tests/wikibase_tests.py
3 files changed, 30 insertions(+), 11 deletions(-)

diff --git a/pywikibot/pagegenerators.py b/pywikibot/pagegenerators.py
index 55a5c1b..aeddfe5 100644
--- a/pywikibot/pagegenerators.py
+++ b/pywikibot/pagegenerators.py
@@ -2081,6 +2081,7 @@
Function basically is copied from above, but for Wikibase entities.

@param generator: pages to iterate over
+ @type generator: Iterable
@param groupsize: how many pages to preload at once
@type groupsize: int
"""
@@ -2091,11 +2092,13 @@
if len(sites[site]) >= groupsize:
# if this site is at the groupsize, process it
group = sites.pop(site)
- for i in site.preload_entities(group, groupsize):
+ repo = site.data_repository()
+ for i in repo.preload_entities(group, groupsize):
yield i
for site, pages in sites.items():
# process any leftover sites that never reached the groupsize
- for i in site.preload_entities(pages, groupsize):
+ repo = site.data_repository()
+ for i in repo.preload_entities(pages, groupsize):
yield i


diff --git a/tests/pagegenerators_tests.py b/tests/pagegenerators_tests.py
index 43ca6ce..d8d5a0c 100755
--- a/tests/pagegenerators_tests.py
+++ b/tests/pagegenerators_tests.py
@@ -600,16 +600,16 @@
self.assertTrue(pages_out[1].isTalkPage())


-class TestPreloadingItemGenerator(WikidataTestCase):
+class TestPreloadingEntityGenerator(WikidataTestCase):

"""Test preloading item generator."""

def test_non_item_gen(self):
- """Test TestPreloadingItemGenerator with ReferringPageGenerator."""
+ """Test TestPreloadingEntityGenerator 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)
+ gen = pagegenerators.PreloadingEntityGenerator(ref_gen)
self.assertTrue(all(isinstance(item, pywikibot.ItemPage) for item in gen))


diff --git a/tests/wikibase_tests.py b/tests/wikibase_tests.py
index f6bb342..2fc7fee 100644
--- a/tests/wikibase_tests.py
+++ b/tests/wikibase_tests.py
@@ -1647,19 +1647,35 @@
self.assertEqual(response, self.data_out)


-class TestPreloadingItemGenerator(TestCase):
+class TestPreloadingEntityGenerator(TestCase):

"""Test preloading item generator."""

- family = 'wikidata'
- code = 'wikidata'
+ sites = {
+ 'wikidata': {
+ 'family': 'wikidata',
+ 'code': 'wikidata',
+ },
+ 'enwiki': {
+ 'family': 'wikipedia',
+ 'code': 'en',
+ }
+ }

def test_non_item_gen(self):
- """Test TestPreloadingItemGenerator with ReferringPageGenerator."""
- site = self.get_site()
+ """Test PreloadingEntityGenerator with ReferringPageGenerator."""
+ site = self.get_site('wikidata')
instance_of_page = pywikibot.Page(site, 'Property:P31')
ref_gen = pagegenerators.ReferringPageGenerator(instance_of_page, total=5)
- gen = pagegenerators.PreloadingItemGenerator(ref_gen)
+ gen = pagegenerators.PreloadingEntityGenerator(ref_gen)
+ self.assertTrue(all(isinstance(item, ItemPage) for item in gen))
+
+ def test_foreign_page_item_gen(self):
+ """Test PreloadingEntityGenerator with connected pages."""
+ site = self.get_site('enwiki')
+ page_gen = [pywikibot.Page(site, 'Main Page'),
+ pywikibot.Page(site, 'New York City')]
+ gen = pagegenerators.PreloadingEntityGenerator(page_gen)
self.assertTrue(all(isinstance(item, ItemPage) for item in gen))


To view, visit change 421539. To unsubscribe, visit settings.

Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: Iab08428441c35d8b762a55e89e8b182f3a47245e
Gerrit-Change-Number: 421539
Gerrit-PatchSet: 4
Gerrit-Owner: Matěj Suchánek <matejsuchanek97@gmail.com>
Gerrit-Reviewer: Dalba <dalba.wiki@gmail.com>
Gerrit-Reviewer: Framawiki <framawiki@tools.wmflabs.org>
Gerrit-Reviewer: John Vandenberg <jayvdb@gmail.com>
Gerrit-Reviewer: Matěj Suchánek <matejsuchanek97@gmail.com>
Gerrit-Reviewer: Xqt <info@gno.de>
Gerrit-Reviewer: Zoranzoki21 <zorandori4444@gmail.com>
Gerrit-Reviewer: jenkins-bot <>