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 <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits