diff --git a/pywikibot/family.py b/pywikibot/family.py index 6196f28ab..5de4fd3b7 100644 --- a/pywikibot/family.py +++ b/pywikibot/family.py @@ -730,6 +730,13 @@ class Family: """ return '/w' + def mediawiki_version(self): + """"The version of the mediawiki to connect to. + Returns a version string, or None + If None is returned, the version will be retrieved from mediawiki. + If a version is returned, pywikibot will assume that mediawiki has the returned version.""" + return None + def ssl_pathprefix(self, code): """The path prefix for secure HTTP access.""" # Override this ONLY if the wiki family requires a path prefix diff --git a/pywikibot/site/_apisite.py b/pywikibot/site/_apisite.py index dbe665439..3089d4993 100644 --- a/pywikibot/site/_apisite.py +++ b/pywikibot/site/_apisite.py @@ -924,21 +924,26 @@ class APISite( Use :py:obj:`pywikibot.site.mw_version` to compare MediaWiki versions. """ - try: - version = self.siteinfo.get('generator', expiry=1).split(' ')[1] - except APIError: - msg = 'You have no API read permissions.' - if not self.logged_in(): - msg += ' Seems you are not logged in.' - pywikibot.error(msg) - raise - if MediaWikiVersion(version) < '1.23': - raise RuntimeError( - 'Pywikibot "{}" does not support MediaWiki "{}".\n' - 'Use Pywikibot prior to "6.0" branch instead.' - .format(pywikibot.__version__, version)) - return version + version_from_family = self.family.mediawiki_version() + if version_from_family: + return version_from_family + else: + try: + version = self.siteinfo.get('generator', expiry=1).split(' ')[1] + except APIError: + msg = 'You have no API read permissions.' + if not self.logged_in(): + msg += ' Seems you are not logged in.' + pywikibot.error(msg) + raise + + if MediaWikiVersion(version) < '1.23': + raise RuntimeError( + 'Pywikibot "{}" does not support MediaWiki "{}".\n' + 'Use Pywikibot prior to "6.0" branch instead.' + .format(pywikibot.__version__, version)) + return version @property def mw_version(self):