jenkins-bot has submitted this change and it was merged.
Change subject: Remove item count output in page generators ......................................................................
Remove item count output in page generators
Currently WikibaseSearchItemPageGenerator always fetches all items twice in order to display an item count, and then yield each item.
Also do not fetch all entities for test_searchitem*.
The test only needs to confirm one item is fetched, and currently it can halt Travis builds due to fetching ~5000 items twice taking 10 mins without any output.
Also add a note to WikidataQueryPageGenerator about its item count.
Change-Id: Ia8b0e97930a94945d3ed2cdf593887ebff8a3e5c (manually cherry-picked from c9f51be) --- M pywikibot/pagegenerators.py M tests/pagegenerators_tests.py 2 files changed, 15 insertions(+), 6 deletions(-)
Approvals: Xqt: Looks good to me, approved jenkins-bot: Verified
diff --git a/pywikibot/pagegenerators.py b/pywikibot/pagegenerators.py index e6420a4..d83d85d 100644 --- a/pywikibot/pagegenerators.py +++ b/pywikibot/pagegenerators.py @@ -2295,7 +2295,8 @@
wd_query = wdquery.WikidataQuery(cacheMaxAge=0) data = wd_query.query(wd_queryset) - + # This item count should not be copied by other generators, + # and should be removed when wdq becomes a real generator (T135592) pywikibot.output(u'retrieved %d items' % data[u'status'][u'items']) for item in data[u'items']: page = pywikibot.ItemPage(repo, u'Q{0}'.format(item)) @@ -2332,7 +2333,6 @@ repo = site.data_repository()
data = repo.search_entities(text, language, limit=total, site=site) - pywikibot.output(u'retrieved %d items' % len(list(data))) for item in data: yield pywikibot.ItemPage(repo, item['id'])
diff --git a/tests/pagegenerators_tests.py b/tests/pagegenerators_tests.py index 967b95e..b19d0b5 100755 --- a/tests/pagegenerators_tests.py +++ b/tests/pagegenerators_tests.py @@ -708,21 +708,30 @@ gf.handleArg('-searchitem:abc') gen = gf.getCombinedGenerator() self.assertIsNotNone(gen) - self.assertGreater(len(set(gen)), 0) + self.assertIsNotNone(next(gen))
def test_searchitem_language(self): """Test -searchitem with custom language specified.""" gf = pagegenerators.GeneratorFactory(site=self.site) gf.handleArg('-searchitem:pl:abc') + gf.handleArg('-limit:1') gen = gf.getCombinedGenerator() self.assertIsNotNone(gen) - pages = set(gen) + # ABC disambiguation + page1 = next(gen) + self.assertEqual(page1.title(), 'Q286874') + gf = pagegenerators.GeneratorFactory(site=self.site) gf.handleArg('-searchitem:en:abc') + gf.handleArg('-limit:2') gen = gf.getCombinedGenerator() self.assertIsNotNone(gen) - pages2 = set(gen) - self.assertNotEqual(pages, pages2) + # American Broadcasting Company + page1 = next(gen) + self.assertEqual(page1.title(), 'Q169889') + # ABC disambiguation + page2 = next(gen) + self.assertEqual(page2.title(), 'Q286874')
class TestLogeventsFactoryGenerator(DefaultSiteTestCase,
pywikibot-commits@lists.wikimedia.org