John Vandenberg has uploaded a new change for review. https://gerrit.wikimedia.org/r/289339
Change subject: WikibaseSearchItemPageGenerator non-verbose mode ...................................................................... WikibaseSearchItemPageGenerator non-verbose mode 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. Change-Id: Ia8b0e97930a94945d3ed2cdf593887ebff8a3e5c --- M pywikibot/pagegenerators.py M tests/pagegenerators_tests.py 2 files changed, 20 insertions(+), 7 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/pywikibot/core refs/changes/39/289339/1 diff --git a/pywikibot/pagegenerators.py b/pywikibot/pagegenerators.py index 6c7a2b2..e42ba58 100644 --- a/pywikibot/pagegenerators.py +++ b/pywikibot/pagegenerators.py @@ -838,7 +838,8 @@ value = params[-1] lang = params[0] if len(params) == 2 else None gen = WikibaseSearchItemPageGenerator(value, language=lang, - site=self.site) + site=self.site, + verbose=config.verbose_output) elif arg == '-search': if not value: value = pywikibot.input('What do you want to search for?') @@ -2688,7 +2689,8 @@ return WikidataPageFromItemGenerator(items_pages, site) -def WikibaseSearchItemPageGenerator(text, language=None, total=None, site=None): +def WikibaseSearchItemPageGenerator(text, language=None, total=None, site=None, + verbose=None): """ Generate pages that contain the provided text. @@ -2702,6 +2704,8 @@ @type total: int or None @param site: Site for generator results. @type site: L{pywikibot.site.BaseSite} + @param verbose: Display an item count if True or None + @type verbose: bool or None """ if site is None: site = pywikibot.Site() @@ -2710,7 +2714,9 @@ repo = site.data_repository() data = repo.search_entities(text, language, limit=total) - pywikibot.output(u'retrieved %d items' % len(list(data))) + if verbose is None or verbose: + data = list(data) + pywikibot.output('retrieved %d items' % len(data)) for item in data: yield pywikibot.ItemPage(repo, item['id']) diff --git a/tests/pagegenerators_tests.py b/tests/pagegenerators_tests.py index b1a0057..12caea2 100755 --- a/tests/pagegenerators_tests.py +++ b/tests/pagegenerators_tests.py @@ -970,7 +970,7 @@ 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.""" @@ -978,13 +978,20 @@ gf.handleArg('-searchitem:pl:abc') 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') 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, -- To view, visit https://gerrit.wikimedia.org/r/289339 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia8b0e97930a94945d3ed2cdf593887ebff8a3e5c Gerrit-PatchSet: 1 Gerrit-Project: pywikibot/core Gerrit-Branch: master Gerrit-Owner: John Vandenberg <jay...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits