[MediaWiki-commits] [Gerrit] pywikibot/core[master]: [bugfix] Use grnfilterredir for random pages

2017-10-29 Thread jenkins-bot (Code Review)
jenkins-bot has submitted this change and it was merged. ( 
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, 28 insertions(+), 5 deletions(-)

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



diff --git a/pywikibot/site.py b/pywikibot/site.py
index ac20cd0..7b09c7f 100644
--- a/pywikibot/site.py
+++ b/pywikibot/site.py
@@ -4924,7 +4924,7 @@
 'users', ususers=usernames, site=self, usprop=usprop)
 return usgen
 
-@deprecated("Site.randompages()")
+@deprecated('Site.randompages(total=1)')
 def randompage(self, redirect=False):
 """
 DEPRECATED.
@@ -4934,7 +4934,7 @@
 """
 return self.randompages(total=1, redirects=redirect)
 
-@deprecated("Site.randompages()")
+@deprecated("Site.randompages(total=1, redirects=True)")
 def randomredirectpage(self):
 """
 DEPRECATED: Use Site.randompages() instead.
@@ -4956,17 +4956,34 @@
 @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 True, include only redirect pages in results,
+False does not include redirects and None (MW 1.26+) include both
+types. (default: False)
+@type redirects: bool or None
 @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
 """
+mapping = {False: None, True: 'redirects', None: 'all'}
+assert redirects in mapping
+redirects = mapping[redirects]
+params = {}
+if redirects is not None:
+if MediaWikiVersion(self.version()) < MediaWikiVersion('1.26'):
+if redirects == 'all':
+warn("parameter redirects=None to retrieve 'all' random"
+ 'page types is not supported by mw version {0}. '
+ 'Using default.'.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..3ef9079 100644
--- a/tests/site_tests.py
+++ b/tests/site_tests.py
@@ -2006,6 +2006,12 @@
 self.assertIsInstance(rndpage, pywikibot.Page)
 self.assertTrue(rndpage.isRedirectPage())
 
+def test_all(self):
+"""Test site.randompages() with both types."""
+mysite = self.get_site()
+for rndpage in mysite.randompages(total=5, redirects=None):
+self.assertIsInstance(rndpage, pywikibot.Page)
+
 def test_namespaces(self):
 """Test site.randompages() with namespaces."""
 mysite = self.get_site()

-- 
To view, visit https://gerrit.wikimedia.org/r/385773
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I0763cf99fd113cd25a0048d8a760b16fc4828346
Gerrit-PatchSet: 6
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: Xqt 
Gerrit-Reviewer: Dalba 
Gerrit-Reviewer: John Vandenberg 
Gerrit-Reviewer: Magul 
Gerrit-Reviewer: Mpaa 
Gerrit-Reviewer: Xqt 
Gerrit-Reviewer: Zoranzoki21 
Gerrit-Reviewer: jenkins-bot <>

___
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits


[MediaWiki-commits] [Gerrit] pywikibot/core[master]: [bugfix] Use grnfilterredir for random pages

2017-10-21 Thread Xqt (Code Review)
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