jenkins-bot has submitted this change. ( 
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/630237 )

Change subject: Revert "Always return raw generators from APISite methods, not 
objects"
......................................................................

Revert "Always return raw generators from APISite methods, not objects"

This reverts commit 8ec067010722940f121ce4b97890f39f3d15df18.

Reason for revert: The main reason is that pagegenerators does not work with
this change. getCombinedGenerator enables namespaces filtering.
NamespaceFilterPageGenerator loads all items even they are not needed which may
need a lot of time. Site.allpages will always fail if no namespaces is given to
the generator. You cannot specify a page generator in the current way for that
patch

Bug: T263916
Change-Id: I459102e9a0f1e0672d1a54eeb33b861c04201d51
---
M pywikibot/site/__init__.py
M tests/pagegenerators_tests.py
2 files changed, 48 insertions(+), 46 deletions(-)

Approvals:
  JJMC89: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/pywikibot/site/__init__.py b/pywikibot/site/__init__.py
index eadc2a4..8a4200e 100644
--- a/pywikibot/site/__init__.py
+++ b/pywikibot/site/__init__.py
@@ -3440,9 +3440,8 @@
                         namespaces=namespaces,
                         content=content
                     )
-            yield from itertools.chain(*genlist.values())
-        else:
-            yield from blgen
+            return itertools.chain(*genlist.values())
+        return blgen

     @deprecated_args(step=None, filterRedirects='filter_redirects')
     def page_embeddedin(self, page, *, filter_redirects=None, namespaces=None,
@@ -3472,9 +3471,9 @@
         if filter_redirects is not None:
             eiargs['geifilterredir'] = ('redirects' if filter_redirects
                                         else 'nonredirects')
-        yield from self._generator(api.PageGenerator, type_arg='embeddedin',
-                                   namespaces=namespaces, total=total,
-                                   g_content=content, **eiargs)
+        return self._generator(api.PageGenerator, type_arg='embeddedin',
+                               namespaces=namespaces, total=total,
+                               g_content=content, **eiargs)

     @deprecated_args(
         step=None, followRedirects='follow_redirects',
@@ -3545,10 +3544,10 @@
         else:
             pltitle = page.title(with_section=False).encode(self.encoding())
             plargs['titles'] = pltitle
-        yield from self._generator(
-            api.PageGenerator, type_arg='links', namespaces=namespaces,
-            total=total, g_content=content, redirects=follow_redirects,
-            **plargs)
+        return self._generator(api.PageGenerator, type_arg='links',
+                               namespaces=namespaces, total=total,
+                               g_content=content, redirects=follow_redirects,
+                               **plargs)

     # Sortkey doesn't work with generator
     @deprecated_args(withSortKey=None, step=None)
@@ -3567,8 +3566,9 @@
         else:
             clargs['titles'] = page.title(
                 with_section=False).encode(self.encoding())
-        yield from self._generator(api.PageGenerator, type_arg='categories',
-                                   total=total, g_content=content, **clargs)
+        return self._generator(api.PageGenerator,
+                               type_arg='categories', total=total,
+                               g_content=content, **clargs)

     @deprecated_args(step=None)
     def pageimages(self, page, *, total=None, content=False):
@@ -3582,9 +3582,9 @@

         """
         imtitle = page.title(with_section=False).encode(self.encoding())
-        yield from self._generator(api.PageGenerator, type_arg='images',
-                                   titles=imtitle, total=total,
-                                   g_content=content)
+        return self._generator(api.PageGenerator, type_arg='images',
+                               titles=imtitle, total=total,
+                               g_content=content)

     @deprecated_args(step=None)
     def pagetemplates(self, page, *, namespaces=None, total=None,
@@ -3605,9 +3605,9 @@
             type such as NoneType or bool
         """
         tltitle = page.title(with_section=False).encode(self.encoding())
-        yield from self._generator(api.PageGenerator, type_arg='templates',
-                                   titles=tltitle, namespaces=namespaces,
-                                   total=total, g_content=content)
+        return self._generator(api.PageGenerator, type_arg='templates',
+                               titles=tltitle, namespaces=namespaces,
+                               total=total, g_content=content)

     @deprecated_args(step=None)
     def categorymembers(self, category, *, namespaces=None, sortby=None,
@@ -3776,8 +3776,8 @@
             raise ValueError('categorymembers: '
                              "invalid combination of 'sortby' and 'endsort'")

-        yield from self._generator(api.PageGenerator, namespaces=namespaces,
-                                   total=total, g_content=content, **cmargs)
+        return self._generator(api.PageGenerator, namespaces=namespaces,
+                               total=total, g_content=content, **cmargs)

     @deprecated_args(getText='content', sysop=None)
     @remove_last_args(['rollback'])
@@ -4060,7 +4060,7 @@
                 apgen.request['gapprlevel'] = protect_level
         if reverse:
             apgen.request['gapdir'] = 'descending'
-        yield from apgen
+        return apgen

     @deprecated_args(step=None)
     def alllinks(self, start='!', prefix='', namespace=0, unique=False,
@@ -4127,7 +4127,7 @@
             acgen.request['gacprefix'] = prefix
         if reverse:
             acgen.request['gacdir'] = 'descending'
-        yield from acgen
+        return acgen

     def isBot(self, username):
         """Return True is username is a bot user."""
@@ -4175,7 +4175,7 @@
             augen.request['auprefix'] = prefix
         if group:
             augen.request['augroup'] = group
-        yield from augen
+        return augen

     @deprecated_args(step=None)
     def allimages(self, start='!', prefix='', minsize=None, maxsize=None,
@@ -4214,7 +4214,7 @@
             aigen.request['gaisha1'] = sha1
         if sha1base36:
             aigen.request['gaisha1base36'] = sha1base36
-        yield from aigen
+        return aigen

     @need_version('1.17')
     @deprecated_args(limit='total')  # ignore falimit setting
@@ -4247,7 +4247,7 @@
             fagen.request['fa' + k] = v
         if reverse:
             fagen.request['fadir'] = 'descending'
-        yield from fagen
+        return fagen

     @deprecated_args(step=None)
     def blocks(self, starttime=None, endtime=None, reverse=False,
@@ -4308,7 +4308,7 @@
             bkgen.request['bkusers'] = users
         elif iprange:
             bkgen.request['bkip'] = iprange
-        yield from bkgen
+        return bkgen

     @deprecated_args(step=None)
     def exturlusage(self, url=None, protocol=None, namespaces=None,
@@ -4344,10 +4344,10 @@
         # with any URL.
         if url == '*':
             url = None
-        yield from self._generator(api.PageGenerator, type_arg='exturlusage',
-                                   geuquery=url, geuprotocol=protocol,
-                                   namespaces=namespaces, total=total,
-                                   g_content=content)
+        return self._generator(api.PageGenerator, type_arg='exturlusage',
+                               geuquery=url, geuprotocol=protocol,
+                               namespaces=namespaces,
+                               total=total, g_content=content)

     @deprecated_args(step=None)
     def imageusage(self, image, namespaces=None, filterredir=None,
@@ -4375,9 +4375,9 @@
         if filterredir is not None:
             iuargs['giufilterredir'] = ('redirects' if filterredir else
                                         'nonredirects')
-        yield from self._generator(api.PageGenerator, type_arg='imageusage',
-                                   namespaces=namespaces, total=total,
-                                   g_content=content, **iuargs)
+        return self._generator(api.PageGenerator, type_arg='imageusage',
+                               namespaces=namespaces,
+                               total=total, g_content=content, **iuargs)

     @property
     def logtypes(self):
@@ -4446,7 +4446,7 @@
             # Supported in version 1.16+; earlier sites will cause APIError
             legen.request['letag'] = tag

-        yield from legen
+        return legen

     @deprecated_args(returndict=None, nobots=None, rcshow=None, rcprop=None,
                      rctype='changetype', revision=None, repeat=None,
@@ -4550,7 +4550,7 @@
         if excludeuser:
             rcgen.request['rcexcludeuser'] = excludeuser
         rcgen.request['rctag'] = tag
-        yield from rcgen
+        return rcgen

     @deprecated_args(number='total', step=None, key='searchstring',
                      getredirects='get_redirects')
@@ -4609,7 +4609,7 @@
                                 total=total, g_content=content)
         if self.mw_version < '1.23':
             srgen.request['gsrredirects'] = get_redirects
-        yield from srgen
+        return srgen

     @deprecated_args(step=None, showMinor='minor')
     def usercontribs(self, user=None, userprefix=None, start=None, end=None,
@@ -4667,7 +4667,7 @@
         option_set = api.OptionSet(self, 'usercontribs', 'show')
         option_set['minor'] = minor
         ucgen.request['ucshow'] = option_set
-        yield from ucgen
+        return ucgen

     @deprecated_args(step=None, showMinor='minor', showAnon='anon',
                      showBot='bot')
@@ -4715,7 +4715,7 @@
         filters = {'minor': minor, 'bot': bot, 'anon': anon}
         wlgen.request['wlshow'] = api.OptionSet(self, 'watchlist', 'show',
                                                 filters)
-        yield from wlgen
+        return wlgen

     @deprecated_args(step=None, get_text='content', page='titles',
                      limit='total')
@@ -4852,7 +4852,7 @@
         usgen = api.ListGenerator(
             'users', site=self, parameters={
                 'ususers': usernames, 'usprop': usprop})
-        yield from usgen
+        return usgen

     @deprecated_args(step=None)
     def randompages(self, total=None, namespaces=None,
@@ -4894,9 +4894,9 @@
                 params['grnredirect'] = redirects == 'redirects'
             else:
                 params['grnfilterredir'] = redirects
-        yield from self._generator(api.PageGenerator, type_arg='random',
-                                   namespaces=namespaces, total=total,
-                                   g_content=content, **params)
+        return self._generator(api.PageGenerator, type_arg='random',
+                               namespaces=namespaces, total=total,
+                               g_content=content, **params)

     # Catalog of editpage error codes, for use in generating messages.
     # The block at the bottom are page related errors.
@@ -6435,8 +6435,9 @@
         assert special_page in param['type'], (
             '{0} not in {1}'.format(special_page, param['type']))

-        yield from self._generator(api.PageGenerator, type_arg='querypage',
-                                   gqppage=special_page, total=total)
+        return self._generator(api.PageGenerator,
+                               type_arg='querypage', gqppage=special_page,
+                               total=total)

     @deprecated_args(number='total', step=None, repeat=None)
     def longpages(self, total=None):
@@ -7200,7 +7201,7 @@
         gen = api.PageGenerator(site=self, generator='watchlistraw',
                                 expiry=expiry)
         gen.set_maximum_items(total)
-        yield from gen
+        return gen

     @need_extension('UrlShortener')
     def create_short_link(self, url):
@@ -8098,4 +8099,4 @@
         gen = api.APIGenerator('wbsearchentities', data_name='search',
                                site=self, parameters=parameters)
         gen.set_maximum_items(total)
-        yield from gen
+        return gen
diff --git a/tests/pagegenerators_tests.py b/tests/pagegenerators_tests.py
index e97ea01..ffbe993 100755
--- a/tests/pagegenerators_tests.py
+++ b/tests/pagegenerators_tests.py
@@ -1663,6 +1663,7 @@
                                                      protocol='https',
                                                      site=self.site,
                                                      total=1)
+        self.assertIsInstance(gen, pywikibot.data.api.PageGenerator)
         self.assertEqual(len(list(gen)), 1)



--
To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/core/+/630237
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.wikimedia.org/r/settings

Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Change-Id: I459102e9a0f1e0672d1a54eeb33b861c04201d51
Gerrit-Change-Number: 630237
Gerrit-PatchSet: 2
Gerrit-Owner: Xqt <[email protected]>
Gerrit-Reviewer: JJMC89 <[email protected]>
Gerrit-Reviewer: Matěj Suchánek <[email protected]>
Gerrit-Reviewer: jenkins-bot
Gerrit-MessageType: merged
_______________________________________________
Pywikibot-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/pywikibot-commits

Reply via email to