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

Reply via email to