jenkins-bot has submitted this change and it was merged.
Change subject: Fix backwards compatibility of APISite.hasExtension()
......................................................................
Fix backwards compatibility of APISite.hasExtension()
Previously that method used "name" and "unknown", but
"unknown" was
removed in d42d519adf59b92998ba7b87008c58b7193a7014 so tests broke
which used it as a positional parameter.
This adds a method has_extension which only accepts one parameter
while the old hasExtension supports both (but ignores the second
completely).
This also fixes the site tests which may relied on it so various
tests aren't applicable anymore. There is only one test which makes
sense but is deactived, because it won't work unless it is possible
to make "need_version" believe that the current version doesn't
support it.
Change-Id: I22a17b0f9eca208daaa3b3eeeab1b86b5c34b399
---
M pywikibot/data/api.py
M pywikibot/page.py
M pywikibot/site.py
M tests/site_tests.py
4 files changed, 27 insertions(+), 18 deletions(-)
Approvals:
John Vandenberg: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/data/api.py b/pywikibot/data/api.py
index b02c263..643369c 100644
--- a/pywikibot/data/api.py
+++ b/pywikibot/data/api.py
@@ -158,7 +158,7 @@
# This situation is only tripped when one of the first actions
# on the site is a write action and the extension isn't installed.
if 'extensions' in self.site.siteinfo:
- use_assert_edit_extension = self.site.hasExtension('AssertEdit',
False)
+ use_assert_edit_extension = self.site.has_extension('AssertEdit')
else:
use_assert_edit_extension = True
diff --git a/pywikibot/page.py b/pywikibot/page.py
index fb5bffe..22adbcf 100644
--- a/pywikibot/page.py
+++ b/pywikibot/page.py
@@ -678,7 +678,7 @@
@return: bool
"""
- if self.site.hasExtension('Disambiguator', False):
+ if self.site.has_extension('Disambiguator'):
# If the Disambiguator extension is loaded, use it
return 'disambiguation' in self.properties()
@@ -1747,7 +1747,7 @@
@return: bool
"""
- if not self.site.hasExtension('Flow', False):
+ if not self.site.has_extension('Flow'):
return False
if not hasattr(self, '_flowinfo'):
self.site.loadflowinfo(self)
diff --git a/pywikibot/site.py b/pywikibot/site.py
index 59a5ac4..5132dfc 100644
--- a/pywikibot/site.py
+++ b/pywikibot/site.py
@@ -1691,8 +1691,25 @@
self._namespaces[ns].aliases.append(item['*'])
@need_version("1.14")
- @deprecate_arg("unknown", None)
- def hasExtension(self, name):
+ @deprecated("has_extension")
+ def hasExtension(self, name, unknown=None):
+ """ Determine whether extension `name` is loaded.
+
+ Use L{has_extension} instead!
+
+ @param name: The extension to check for, case insenstive
+ @type name: str
+ @param unknown: Old parameter which shouldn't be used anymore.
+ @return: If the extension is loaded
+ @rtype: bool
+ """
+ if unknown is not None:
+ pywikibot.debug(u'unknown argument of hasExtension is deprecated.',
+ _logger)
+ return self.has_extension(name)
+
+ @need_version("1.14")
+ def has_extension(self, name):
""" Determine whether extension `name` is loaded.
@param name: The extension to check for, case insenstive
diff --git a/tests/site_tests.py b/tests/site_tests.py
index 241bcbe..de281f0 100644
--- a/tests/site_tests.py
+++ b/tests/site_tests.py
@@ -980,24 +980,16 @@
# test automatically getting extensions cache
if 'extensions' in mysite.siteinfo:
del mysite.siteinfo._cache['extensions']
- self.assertTrue(mysite.hasExtension('Disambiguator'))
+ self.assertTrue(mysite.has_extension('Disambiguator'))
# test case-sensitivity
- self.assertTrue(mysite.hasExtension('disambiguator'))
+ self.assertTrue(mysite.has_extension('disambiguator'))
- self.assertFalse(mysite.hasExtension('ThisExtensionDoesNotExist'))
+ self.assertFalse(mysite.has_extension('ThisExtensionDoesNotExist'))
# test behavior for sites that do not report extensions
- mysite.siteinfo._cache['extensions'] = (None, True)
- self.assertRaises(NotImplementedError, mysite.hasExtension,
('anything'))
-
- class MyException(Exception):
- pass
- self.assertRaises(MyException, mysite.hasExtension, 'anything',
MyException)
-
- self.assertTrue(mysite.hasExtension('anything', True))
- self.assertFalse(mysite.hasExtension('anything', False))
- del mysite.siteinfo._cache['extensions']
+ # TODO: Simulate a version to old to support this
+ # self.assertRaises(NotImplementedError, mysite.has_extension,
('anything'))
def test_API_limits_with_site_methods(self):
# test step/total parameters for different sitemethods
--
To view, visit
https://gerrit.wikimedia.org/r/155026
To unsubscribe, visit
https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I22a17b0f9eca208daaa3b3eeeab1b86b5c34b399
Gerrit-PatchSet: 1
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: XZise <CommodoreFabianus(a)gmx.de>
Gerrit-Reviewer: John Vandenberg <jayvdb(a)gmail.com>
Gerrit-Reviewer: Ladsgroup <ladsgroup(a)gmail.com>
Gerrit-Reviewer: Merlijn van Deen <valhallasw(a)arctus.nl>
Gerrit-Reviewer: jenkins-bot <>