jenkins-bot has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/core/+/672374 )
Change subject: [6.0] Drop support for mw 1.19-1.22 ......................................................................
[6.0] Drop support for mw 1.19-1.22
- update site_detect.py - update tests - update documentation
Bug: T268979 Change-Id: I59af705e4503826784f200bd1f7a40058d286c9a --- M pywikibot/data/api.py M pywikibot/site_detect.py M pywikibot/tools/__init__.py M tests/api_tests.py M tests/dry_api_tests.py M tests/mediawikiversion_tests.py M tests/page_tests.py M tests/pagegenerators_tests.py M tests/paraminfo_tests.py M tests/site_decorators_tests.py M tests/site_detect_tests.py M tests/site_tests.py M tests/token_tests.py 13 files changed, 56 insertions(+), 84 deletions(-)
Approvals: Xqt: Looks good to me, approved DannyS712: Looks good to me, but someone else must approve jenkins-bot: Verified
diff --git a/pywikibot/data/api.py b/pywikibot/data/api.py index d5a0e27..32bd3be 100644 --- a/pywikibot/data/api.py +++ b/pywikibot/data/api.py @@ -1106,8 +1106,7 @@ 'API write action by unexpected username {} commenced.\n' 'userinfo: {!r}'.format(username, self.site.userinfo))
- # MediaWiki 1.23 allows assertion for any action, - # make sure user is logged in + # Make sure user is logged in if self.write: pywikibot.debug('Adding user assertion', _logger) self['assert'] = 'user' diff --git a/pywikibot/site_detect.py b/pywikibot/site_detect.py index 681af7a..a210bf6 100644 --- a/pywikibot/site_detect.py +++ b/pywikibot/site_detect.py @@ -21,7 +21,7 @@ SERVER_DB_ERROR_MSG = \ '<h1>Sorry! This site is experiencing technical difficulties.</h1>'
-MIN_VERSION = MediaWikiVersion('1.19') +MIN_VERSION = MediaWikiVersion('1.23')
class MWSite: @@ -35,7 +35,7 @@ @raises pywikibot.exceptions.ServerError: a server error occurred while loading the site @raises Timeout: a timeout occurred while loading the site - @raises RuntimeError: Version not found or version less than 1.19 + @raises RuntimeError: Version not found or version less than 1.23 """ if fromurl.endswith('$1'): fromurl = fromurl[:-2] diff --git a/pywikibot/tools/__init__.py b/pywikibot/tools/__init__.py index 2f4cc1d..827cf91 100644 --- a/pywikibot/tools/__init__.py +++ b/pywikibot/tools/__init__.py @@ -440,8 +440,8 @@ version is greater if the normal version or dev version is greater. For example:
- 1.24 < 1.24.1 < 1.25wmf1 < 1.25alpha < 1.25beta1 < 1.25beta2 - < 1.25-rc-1 < 1.25-rc.2 < 1.25 + 1.34 < 1.34.1 < 1.35wmf1 < 1.35alpha < 1.35beta1 < 1.35beta2 + < 1.35-rc-1 < 1.35-rc.2 < 1.35
Any other suffixes are considered invalid. """ diff --git a/tests/api_tests.py b/tests/api_tests.py index 86f36a0..c2cf635 100644 --- a/tests/api_tests.py +++ b/tests/api_tests.py @@ -139,10 +139,8 @@
self.assertLength(pi, pi.preloaded_modules)
- if site.mw_version >= '1.21': - # 'generator' was added to 'pageset' in 1.21 - generators_param = pi.parameter('pageset', 'generator') - self.assertGreater(len(generators_param['type']), 1) + generators_param = pi.parameter('pageset', 'generator') + self.assertGreater(len(generators_param['type']), 1)
def test_generators(self): """Test requesting the generator parameter.""" @@ -156,12 +154,10 @@ self.assertIn('pageset', pi._paraminfo) self.assertIn('query', pi._paraminfo)
- if site.mw_version >= '1.21': - # 'generator' was added to 'pageset' in 1.21 - pageset_generators_param = pi.parameter('pageset', 'generator') - query_generators_param = pi.parameter('query', 'generator') + pageset_generators_param = pi.parameter('pageset', 'generator') + query_generators_param = pi.parameter('query', 'generator')
- self.assertEqual(pageset_generators_param, query_generators_param) + self.assertEqual(pageset_generators_param, query_generators_param)
def test_with_module_info(self): """Test requesting the module info.""" diff --git a/tests/dry_api_tests.py b/tests/dry_api_tests.py index b67829e..f548ab5 100644 --- a/tests/dry_api_tests.py +++ b/tests/dry_api_tests.py @@ -155,7 +155,7 @@ self._siteinfo = DummySiteinfo({'case': 'first-letter'})
def version(self): - return '1.19' # lowest supported release + return '1.23' # lowest supported release
def protocol(self): return 'http' diff --git a/tests/mediawikiversion_tests.py b/tests/mediawikiversion_tests.py index 1bc0866..1913f82 100644 --- a/tests/mediawikiversion_tests.py +++ b/tests/mediawikiversion_tests.py @@ -29,29 +29,29 @@
def test_normal_versions(self): """Test comparison between release versions.""" - self.assertGreater(self._make('1.23'), self._make('1.22.0')) - self.assertEqual(self._make('1.23'), self._make('1.23')) + self.assertGreater(self._make('1.33'), self._make('1.32.0')) + self.assertEqual(self._make('1.33'), self._make('1.33'))
def test_wmf_versions(self): """Test comparison between wmf versions.""" - self.assertGreater(self._make('1.23wmf10'), self._make('1.23wmf9')) - self.assertEqual(self._make('1.23wmf10'), self._make('1.23wmf10')) + self.assertGreater(self._make('1.33wmf10'), self._make('1.33wmf9')) + self.assertEqual(self._make('1.33wmf10'), self._make('1.33wmf10'))
def test_combined_versions(self): """Test comparison between wmf versions and release versions.""" - self.assertGreater(self._make('1.23wmf10'), self._make('1.22.3')) - self.assertGreater(self._make('1.23'), self._make('1.23wmf10')) + self.assertGreater(self._make('1.33wmf10'), self._make('1.32.3')) + self.assertGreater(self._make('1.33'), self._make('1.33wmf10'))
def test_non_wmf_scheme(self): """Test version numbers not following the wmf-scheme.""" - self.assertGreater(self._make('1.23alpha'), self._make('1.22.3')) - self.assertGreater(self._make('1.23alpha'), self._make('1.23wmf1')) - self.assertGreater(self._make('1.23beta1'), self._make('1.23alpha')) - self.assertGreater(self._make('1.23beta2'), self._make('1.23beta1')) - self.assertGreater(self._make('1.23-rc.1'), self._make('1.23beta2')) - self.assertGreater(self._make('1.23-rc.2'), self._make('1.23-rc.1')) - self.assertGreater(self._make('1.23'), self._make('1.23-rc.2')) - self.assertEqual(self._make('1.23rc1'), self._make('1.23-rc.1')) + self.assertGreater(self._make('1.33alpha'), self._make('1.32.3')) + self.assertGreater(self._make('1.33alpha'), self._make('1.33wmf1')) + self.assertGreater(self._make('1.33beta1'), self._make('1.33alpha')) + self.assertGreater(self._make('1.33beta2'), self._make('1.33beta1')) + self.assertGreater(self._make('1.33-rc.1'), self._make('1.33beta2')) + self.assertGreater(self._make('1.33-rc.2'), self._make('1.33-rc.1')) + self.assertGreater(self._make('1.33'), self._make('1.33-rc.2')) + self.assertEqual(self._make('1.33rc1'), self._make('1.33-rc.1'))
def _version_check(self, version, digits, dev_version, suffix): v = self._make(version) @@ -61,15 +61,15 @@
def test_interpretation(self): """Test if the data is correctly interpreted.""" - self._version_check('1.23', (1, 23), (4, ), '') - self._version_check('1.23wmf1', (1, 23), (0, 1), 'wmf1') - self._version_check('1.23alpha', (1, 23), (1, ), 'alpha') + self._version_check('1.33', (1, 33), (4, ), '') + self._version_check('1.33wmf1', (1, 33), (0, 1), 'wmf1') + self._version_check('1.33alpha', (1, 33), (1, ), 'alpha') self._version_check('1.27.0-alpha', (1, 27, 0), (1, ), '-alpha') - self._version_check('1.23beta1', (1, 23), (2, 1), 'beta1') - self._version_check('1.23rc1', (1, 23), (3, 1), 'rc1') - self._version_check('1.23-rc1', (1, 23), (3, 1), '-rc1') - self._version_check('1.23-rc.1', (1, 23), (3, 1), '-rc.1') - self._version_check('1.23text', (1, 23), (4, ), 'text') + self._version_check('1.33beta1', (1, 33), (2, 1), 'beta1') + self._version_check('1.33rc1', (1, 33), (3, 1), 'rc1') + self._version_check('1.33-rc1', (1, 33), (3, 1), '-rc1') + self._version_check('1.33-rc.1', (1, 33), (3, 1), '-rc.1') + self._version_check('1.33text', (1, 33), (4, ), 'text')
def test_invalid_versions(self): """Verify that insufficient version fail creating.""" @@ -88,7 +88,7 @@ with self.assertRaisesRegex( AssertionError, 'Found "wmf" in "wmf-1"'): - MediaWikiVersion('1.23wmf-1') + MediaWikiVersion('1.33wmf-1')
def test_generator(self): """Test from_generator classmethod.""" diff --git a/tests/page_tests.py b/tests/page_tests.py index b7ae037..ccdbab3 100644 --- a/tests/page_tests.py +++ b/tests/page_tests.py @@ -593,10 +593,7 @@ mainpage = self.get_mainpage() image = pywikibot.FilePage(site, 'File:Jean-Léon Gérôme 003.jpg')
- if site.mw_version < '1.20': - with self.assertRaises(NotImplementedError): - mainpage.page_image() - elif site.has_extension('PageImages'): + if site.has_extension('PageImages'): mainpage_image = mainpage.page_image() if mainpage_image is not None: self.assertIsInstance(mainpage_image, pywikibot.FilePage) diff --git a/tests/pagegenerators_tests.py b/tests/pagegenerators_tests.py index b50aa56..a35cce4 100755 --- a/tests/pagegenerators_tests.py +++ b/tests/pagegenerators_tests.py @@ -1175,8 +1175,6 @@ def test_pages_with_property_generator(self): """Test the pages_with_property_generator method.""" mysite = self.get_site() - if mysite.mw_version < '1.21': - self.skipTest('requires v1.21+') for item in ('defaultsort', 'disambiguation', 'displaytitle', 'hiddencat', 'invalid_property'): if item in mysite.get_property_names(): diff --git a/tests/paraminfo_tests.py b/tests/paraminfo_tests.py index 52288e9..12004aa 100644 --- a/tests/paraminfo_tests.py +++ b/tests/paraminfo_tests.py @@ -1,6 +1,6 @@ """Test confirming paraminfo contains expected values.""" # -# (C) Pywikibot team, 2015-2020 +# (C) Pywikibot team, 2015-2021 # # Distributed under the terms of the MIT license. # @@ -91,12 +91,10 @@
def test_watchlist_type(self): """Test watchlist type.""" - known = ['edit', 'new', 'log'] + known = ['edit', 'external', 'new', 'log']
mw_ver = self.site.mw_version
- if mw_ver >= '1.20': - known.append('external') if mw_ver.version >= (1, 27): if mw_ver >= '1.27.0-wmf.4' or mw_ver.suffix == 'alpha': known.append('categorize') diff --git a/tests/site_decorators_tests.py b/tests/site_decorators_tests.py index 55f3d72..cf70f43 100644 --- a/tests/site_decorators_tests.py +++ b/tests/site_decorators_tests.py @@ -31,7 +31,7 @@ self._userinfo = [] self.obsolete = False super().setUp() - self.version = lambda: '1.19' # lowest supported release + self.version = lambda: '1.23' # lowest supported release
def login(self, group): """Fake the log in as required user group.""" @@ -143,7 +143,7 @@ self._userinfo = [] self.obsolete = False super().setUp() - self.version = lambda: '1.14' # lowest supported release + self.version = lambda: '1.23' # lowest supported release
def login(self, group, right): """Fake the log in as required user group.""" diff --git a/tests/site_detect_tests.py b/tests/site_detect_tests.py index 2682b60..813e890 100644 --- a/tests/site_detect_tests.py +++ b/tests/site_detect_tests.py @@ -97,7 +97,7 @@
def test_tfwiki(self): """Test detection of MediaWiki sites for tfwiki.net.""" - self.assertSite('http://tfwiki.net/wiki/$1') + self.assertNoSite('http://tfwiki.net/wiki/$1') # 1.19.5-1+deb7u1
class Pre119SiteTestCase(SiteDetectionTestCase): diff --git a/tests/site_tests.py b/tests/site_tests.py index 1960645..3f3a863 100644 --- a/tests/site_tests.py +++ b/tests/site_tests.py @@ -425,16 +425,16 @@ """Test Site.pagetemplates.""" tl_gen = self.site.pagetemplates(self.mainpage) expected_params = { - 'titles': [self.mainpage.title()], - 'prop': ['info', 'imageinfo', 'categoryinfo'], + 'continue': [True], 'inprop': ['protection'], 'iilimit': ['max'], - 'iiprop': ['timestamp', 'user', 'comment', 'url', 'size', - 'sha1', 'metadata'], + 'iiprop': ['timestamp', 'user', 'comment', 'url', 'size', 'sha1', + 'metadata'], + 'indexpageids': [True], 'generator': ['templates'], 'action': ['query'], - 'indexpageids': [True]} - if self.site.mw_version >= '1.21': - expected_params['continue'] = [True] + 'prop': ['info', 'imageinfo', 'categoryinfo'], + 'titles': [self.mainpage.title()], + }
self.assertEqual(tl_gen.request._params, expected_params)
@@ -460,19 +460,19 @@ links_gen = self.site.pagelinks(self.mainpage) gen_params = links_gen.request._params.copy() expected_params = { - 'redirects': [False], - 'prop': ['info', 'imageinfo', 'categoryinfo'], + 'action': ['query'], 'indexpageids': [True], + 'continue': [True], 'inprop': ['protection'], 'iilimit': ['max'], 'iiprop': ['timestamp', 'user', 'comment', 'url', 'size', 'sha1', 'metadata'], 'generator': ['links'], - 'action': ['query'], 'indexpageids': [True]} + 'prop': ['info', 'imageinfo', 'categoryinfo'], + 'redirects': [False], + } if 'pageids' in gen_params: expected_params['pageids'] = [str(self.mainpage.pageid)] else: expected_params['titles'] = [self.mainpage.title()] - if self.site.mw_version >= '1.21': - expected_params['continue'] = [True]
self.assertEqual(gen_params, expected_params)
@@ -875,8 +875,6 @@
def test_pages_with_property(self): """Test pages_with_property method.""" - if self.site.mw_version < '1.21': - self.skipTest('requires v1.21+') mysite = self.get_site() pnames = mysite.get_property_names() for item in ('defaultsort', 'disambiguation', 'displaytitle', diff --git a/tests/token_tests.py b/tests/token_tests.py index 05b2471..8e2de1f 100644 --- a/tests/token_tests.py +++ b/tests/token_tests.py @@ -55,7 +55,7 @@
self.mysite.version = lambda: test_version
- for ttype in ('edit', 'move', additional_token): + for ttype in ('edit', 'move', 'delete', 'patrol', additional_token): tokentype = self.mysite.validate_tokens([ttype]) try: token = self.mysite.tokens[ttype] @@ -77,21 +77,9 @@ # test __contains__ self.assertIn(tokentype[0], self.mysite.tokens)
- def test_tokens_in_mw_119(self): + def test_tokens_in_mw_123_124wmf18(self): """Test ability to get page tokens.""" - self._test_tokens(None, '1.19', 'delete') - - def test_patrol_tokens_in_mw_119(self): - """Test ability to get patrol token on MW 1.19 wiki.""" - self._test_tokens('1.19', '1.19', 'patrol') - - def test_tokens_in_mw_120_124wmf18(self): - """Test ability to get page tokens.""" - self._test_tokens('1.20', '1.21', 'deleteglobalaccount') - - def test_patrol_tokens_in_mw_120(self): - """Test ability to get patrol token.""" - self._test_tokens('1.19', '1.20', 'patrol') + self._test_tokens('1.23', '1.24wmf18', 'deleteglobalaccount')
def test_tokens_in_mw_124wmf19(self): """Test ability to get page tokens.""" @@ -168,9 +156,7 @@ result = result[0] self.assertIsInstance(result, dict)
- params = {'rcid': 0} - if mysite.mw_version >= '1.22': - params['revid'] = [0, 1] + params = {'rcid': 0, 'revid': [0, 1]}
raised = False try:
pywikibot-commits@lists.wikimedia.org