Xqt has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/385773 )
Change subject: [bugfix] Use grnfilterredir for random pages
..
[bugfix] Use grnfilterredir for random pages
Bug: T178732
Change-Id: I0763cf99fd113cd25a0048d8a760b16fc4828346
---
M pywikibot/site.py
M tests/site_tests.py
2 files changed, 47 insertions(+), 8 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/pywikibot/core
refs/changes/73/385773/1
diff --git a/pywikibot/site.py b/pywikibot/site.py
index 2e0895e..1a08666 100644
--- a/pywikibot/site.py
+++ b/pywikibot/site.py
@@ -4925,7 +4925,7 @@
return usgen
@deprecated('Site.randompages(total=1)')
-def randompage(self, redirect=False):
+def randompage(self, redirect=None):
"""
DEPRECATED.
@@ -4934,18 +4934,18 @@
"""
return self.randompages(total=1, redirects=redirect)
-@deprecated('Site.randompages(total=1, redirects=True)')
+@deprecated("Site.randompages(total=1, redirects='redirects')")
def randomredirectpage(self):
"""
DEPRECATED: Use Site.randompages() instead.
@return: Return a random redirect page
"""
-return self.randompages(total=1, redirects=True)
+return self.randompages(total=1, redirects='redirects')
@deprecated_args(step=None)
def randompages(self, total=None, namespaces=None,
-redirects=False, content=False):
+redirects=None, content=False):
"""Iterate a number of random pages.
Pages are listed in a fixed sequence, only the starting point is
@@ -4956,17 +4956,38 @@
@type namespaces: iterable of basestring or Namespace key,
or a single instance of those types. May be a '|' separated
list of namespace identifiers.
-@param redirects: if True, include only redirect pages in results
-(default: include only non-redirects)
+@param redirects: if 'redirects, include only redirect pages in
+results, 'nonredirects' does not include redirects and 'all'
+include both types. (default: 'nonredirects')
+@type redirects: str (one of 'nonredirects', 'redirects', 'all')
@param content: if True, load the current content of each iterated page
(default False)
@raises KeyError: a namespace identifier was not resolved
@raises TypeError: a namespace identifier has an inappropriate
type such as NoneType or bool
+@raises AssertError: unsupported redirects parameter
"""
+filteritems = ('nonredirects', 'redirects', 'all')
+if isinstance(redirects, bool):
+issue_deprecation_warning(
+'Parameter redirects={0}'.format(redirects),
+"redirects='{0}'".format(filteritems[redirects]) +
+('' if redirects else ' or redirects=None'), 2)
+redirects = filteritems[redirects]
+params = {}
+if redirects is not None:
+assert(redirects in filteritems)
+if MediaWikiVersion(self.version()) < MediaWikiVersion('1.26'):
+if redirects == 'all':
+warn("parameter redirects='all' is not supported by mw "
+ 'version {0}. Ignoring it.'.format(self.version()),
+ UserWarning)
+params['grnredirect'] = redirects == 'redirects'
+else:
+params['grnfilterredir'] = redirects
rngen = self._generator(api.PageGenerator, type_arg="random",
namespaces=namespaces, total=total,
-g_content=content, grnredirect=redirects)
+g_content=content, **params)
return rngen
# Catalog of editpage error codes, for use in generating messages.
diff --git a/tests/site_tests.py b/tests/site_tests.py
index 1b45692..3f1788d 100644
--- a/tests/site_tests.py
+++ b/tests/site_tests.py
@@ -28,6 +28,7 @@
PY2,
StringTypes as basestring,
UnicodeType as unicode,
+suppress_warnings,
)
from tests import unittest_print
@@ -2002,10 +2003,27 @@
def test_redirects(self):
"""Test site.randompages() with redirects."""
mysite = self.get_site()
-for rndpage in mysite.randompages(total=5, redirects=True):
+for rndpage in mysite.randompages(total=5, redirects='redirects'):
self.assertIsInstance(rndpage, pywikibot.Page)
self.assertTrue(rndpage.isRedirectPage())
+def test_all(self):
+"""Test site.randompages() with 'all'."""
+mysite = self.get_site()
+for rndpage in mysite.randompages(total=5, redirects='all'):
+self.assertIsInstance(rndpage, pywikibot.Page)
+
+def test_deprecated_params(self):
+"""Test site.r