jenkins-bot has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/core/+/991974 )
Change subject: [format] Convert format-strings to f-strings using flynt ......................................................................
[format] Convert format-strings to f-strings using flynt
Change-Id: I5dca76b45a9f8eea21609db551b4d4a0ebe49baf --- M tests/__init__.py M tests/api_tests.py M tests/aspects.py M tests/eventstreams_tests.py M tests/family_tests.py M tests/generate_family_file_tests.py M tests/i18n_tests.py M tests/l10n_tests.py M tests/namespace_tests.py M tests/page_tests.py M tests/pagegenerators_tests.py M tests/plural_tests.py M tests/proofreadpage_tests.py M tests/script_tests.py M tests/site_generators_tests.py M tests/sparql_tests.py M tests/textlib_tests.py M tests/timestripper_tests.py M tests/ui_options_tests.py M tests/ui_tests.py M tests/user_tests.py M tests/utils.py M tests/wikistats_tests.py 23 files changed, 122 insertions(+), 154 deletions(-)
Approvals: Xqt: Looks good to me, approved jenkins-bot: Verified
diff --git a/tests/__init__.py b/tests/__init__.py index 97e2a07..7aaa681 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -1,6 +1,6 @@ """Package tests.""" # -# (C) Pywikibot team, 2007-2023 +# (C) Pywikibot team, 2007-2024 # # Distributed under the terms of the MIT license. # @@ -57,8 +57,7 @@ join_root_path.path = 'root' join_tests_path = create_path_func(join_root_path, 'tests') join_cache_path = create_path_func(join_tests_path, - 'apicache-py{}' - .format(PYTHON_VERSION[0])) + f'apicache-py{PYTHON_VERSION[0]}') join_data_path = create_path_func(join_tests_path, 'data') join_pages_path = create_path_func(join_tests_path, 'pages')
@@ -273,8 +272,8 @@ # fail more frequently in code paths resulting from mishandled server problems. if config.max_retries > 3: if 'PYWIKIBOT_TEST_QUIET' not in os.environ: - unittest_print('tests: max_retries reduced from {} to 1' - .format(config.max_retries)) + unittest_print( + f'tests: max_retries reduced from {config.max_retries} to 1') config.max_retries = 1
# Raise CaptchaError if a test requires solving a captcha diff --git a/tests/api_tests.py b/tests/api_tests.py index 8f4eb41..bfbcd09 100755 --- a/tests/api_tests.py +++ b/tests/api_tests.py @@ -926,8 +926,7 @@ if ('dbrepllag' not in mysite.siteinfo or mysite.siteinfo['dbrepllag'][0]['lag'] == -1): self.skipTest( - '{} is not running on a replicated database cluster.' - .format(mysite) + f'{mysite} is not running on a replicated database cluster.' ) mythrottle = DummyThrottle(mysite) mysite._throttle = mythrottle diff --git a/tests/aspects.py b/tests/aspects.py index f6dc453..3a44491 100644 --- a/tests/aspects.py +++ b/tests/aspects.py @@ -5,7 +5,7 @@ such as API result caching and excessive test durations. """ # -# (C) Pywikibot team, 2014-2023 +# (C) Pywikibot team, 2014-2024 # # Distributed under the terms of the MIT license. # @@ -91,8 +91,7 @@ self.assertIsInstance( seq, Sized, 'seq argument is not a Sized class containing __len__') if seq: - msg = self._formatMessage(msg, '{} is not empty' - .format(safe_repr(seq))) + msg = self._formatMessage(msg, f'{safe_repr(seq)} is not empty') self.fail(msg)
def assertIsNotEmpty(self, seq, msg=None): @@ -100,8 +99,7 @@ self.assertIsInstance( seq, Sized, 'seq argument is not a Sized class containing __len__') if not seq: - msg = self._formatMessage(msg, '{} is empty' - .format(safe_repr(seq))) + msg = self._formatMessage(msg, f'{safe_repr(seq)} is empty') self.fail(msg)
def assertLength(self, seq, other, msg=None): @@ -217,8 +215,8 @@
if skip and page_namespaces < namespaces: raise unittest.SkipTest( - 'No pages in namespaces {} found.' - .format(list(namespaces - page_namespaces))) + f'No pages in namespaces {list(namespaces - page_namespaces)}' + ' found.')
self.assertEqual(page_namespaces, namespaces)
@@ -296,8 +294,7 @@ missing += [required_module] if not missing: return obj - skip_decorator = unittest.skip('{} not installed'.format( - ', '.join(missing))) + skip_decorator = unittest.skip(f"{', '.join(missing)} not installed") return skip_decorator(obj)
return test_requirement @@ -408,8 +405,7 @@ def __init__(self, code, fam=None, user=None): """Initializer.""" raise SiteDefinitionError( - 'Loading site {}:{} during dry test not permitted' - .format(fam, code)) + f'Loading site {fam}:{code} during dry test not permitted')
class DisconnectedSiteMixin(TestCaseBase): @@ -468,8 +464,8 @@
for key, data in cls.sites.items(): if 'hostname' not in data: - raise Exception('{}: hostname not defined for {}' - .format(cls.__name__, key)) + raise Exception( + f'{cls.__name__}: hostname not defined for {key}') hostname = data['hostname']
if hostname in cls._checked_hostnames: @@ -504,8 +500,7 @@
cls._checked_hostnames[hostname] = e raise unittest.SkipTest( - '{}: hostname {} failed: {}' - .format(cls.__name__, hostname, e)) + f'{cls.__name__}: hostname {hostname} failed: {e}')
cls._checked_hostnames[hostname] = True
@@ -551,9 +546,8 @@
if os.environ.get(env_var, '0') != '1': raise unittest.SkipTest( - '{!r} write tests disabled. ' - 'Set {}=1 to enable.' - .format(cls.__name__, env_var)) + f'{cls.__name__!r} write tests disabled. ' + f'Set {env_var}=1 to enable.')
if (not hasattr(site.family, 'test_codes') or site.code not in site.family.test_codes): @@ -574,8 +568,8 @@ def require_site_user(cls, family, code): """Check the user config has a valid login to the site.""" if not cls.has_site_user(family, code): - raise unittest.SkipTest('{}: No username for {}:{}' - .format(cls.__name__, family, code)) + raise unittest.SkipTest( + f'{cls.__name__}: No username for {family}:{code}')
@classmethod def setUpClass(cls): @@ -604,8 +598,7 @@
if not site.user(): raise unittest.SkipTest( - '{}: Not able to login to {}' - .format(cls.__name__, site)) + f'{cls.__name__}: Not able to login to {site}')
def setUp(self): """ @@ -643,8 +636,8 @@ site.login()
if skip_if_login_fails and not site.user(): # during setUp() only - self.skipTest('{}: Not able to re-login to {}' - .format(type(self).__name__, site)) + self.skipTest( + f'{type(self).__name__}: Not able to re-login to {site}')
def get_userpage(self, site=None): """Create a User object for the user's userpage.""" @@ -798,9 +791,8 @@
# If there isn't a site, require declaration of net activity. if 'net' not in dct: - raise Exception( - '{}: Test classes without a site configured must set "net"' - .format(name)) + raise Exception(f'{name}: Test classes without a site' + ' configured must set "net"')
# If the 'net' attribute is a false value, # remove it so it matches 'not net' in pytest. @@ -927,9 +919,8 @@ for data in cls.sites.values(): if (data.get('code') in ('test', 'mediawiki') and prod_only and not dry): - raise unittest.SkipTest( - 'Site code {!r} and PYWIKIBOT_TEST_PROD_ONLY is set.' - .format(data['code'])) + raise unittest.SkipTest(f"Site code {data['code']!r} and" + ' PYWIKIBOT_TEST_PROD_ONLY is set.')
if 'site' not in data and 'code' in data and 'family' in data: with suppress_warnings(WARN_SITE_CODE, category=UserWarning): @@ -966,13 +957,11 @@ if len(cls.sites) == 1: name = next(iter(cls.sites.keys())) else: - raise Exception( - '"{}.get_site(name=None)" called with multiple sites' - .format(cls.__name__)) + raise Exception(f'"{cls.__name__}.get_site(name=None)"' + ' called with multiple sites')
if name and name not in cls.sites: - raise Exception('"{}" not declared in {}' - .format(name, cls.__name__)) + raise Exception(f'"{name}" not declared in {cls.__name__}')
if isinstance(cls.site, BaseSite): assert cls.sites[name]['site'] == cls.site @@ -1214,9 +1203,8 @@
site = data['site'] if not site.has_data_repository: - raise unittest.SkipTest( - '{}: {!r} does not have data repository' - .format(cls.__name__, site)) + raise unittest.SkipTest(f'{cls.__name__}: {site!r} does' + ' not have data repository')
if (hasattr(cls, 'repo') and cls.repo != site.data_repository()): @@ -1258,9 +1246,8 @@
for site in cls.sites.values(): if not site['site'].has_data_repository: - raise unittest.SkipTest( - '{}: {!r} does not have data repository' - .format(cls.__name__, site['site'])) + raise unittest.SkipTest(f"{cls.__name__}: {site['site']!r}" + ' does not have data repository')
class DefaultWikibaseClientTestCase(WikibaseClientTestCase, @@ -1293,9 +1280,8 @@ super().setUpClass()
if str(cls.get_repo()) != 'wikidata:wikidata': - raise unittest.SkipTest( - '{}: {} is not connected to Wikidata.' - .format(cls.__name__, cls.get_site())) + raise unittest.SkipTest(f'{cls.__name__}: {cls.get_site()} is not' + 'connected to Wikidata.')
class PwbTestCase(TestCase): @@ -1517,9 +1503,8 @@ continue
if item.filename != filename: - self.fail( - 'expected warning filename {}; warning item: {}' - .format(filename, item)) + self.fail(f'expected warning filename {filename}; warning ' + f'item: {item}')
@classmethod def setUpClass(cls): diff --git a/tests/eventstreams_tests.py b/tests/eventstreams_tests.py index ef17dcc..e53472b 100755 --- a/tests/eventstreams_tests.py +++ b/tests/eventstreams_tests.py @@ -46,8 +46,7 @@ self.assertIsNone(e._total) self.assertIsNone(e._streams) self.assertEqual(repr(e), - "EventStreams(url='{}')" - .format(self.sites[key]['hostname'])) + f"EventStreams(url='{self.sites[key]['hostname']}')")
def test_url_from_site(self, key): """Test EventStreams with url from site.""" @@ -62,8 +61,7 @@ self.assertEqual(e._streams, streams) site_repr = f'site={repr(site)}, ' if site != Site() else '' self.assertEqual(repr(e), - "EventStreams({}streams='{}')" - .format(site_repr, streams)) + f"EventStreams({site_repr}streams='{streams}')")
@mock.patch('pywikibot.comms.eventstreams.EventSource', new=mock.MagicMock()) @@ -78,8 +76,7 @@ fam = site.family if not isinstance(fam, WikimediaFamily): self.skipTest( - "Family '{}' of site '{}' is not a WikimediaFamily." - .format(fam, site)) + f"Family '{fam}' of site '{site}' is not a WikimediaFamily.")
def test_url_with_streams(self): """Test EventStreams with url from default site.""" diff --git a/tests/family_tests.py b/tests/family_tests.py index 02b3860..1c8f227 100755 --- a/tests/family_tests.py +++ b/tests/family_tests.py @@ -219,8 +219,7 @@ for family in pywikibot.config.family_files: if family == 'wowwiki': self.skipTest( - 'Family.from_url() does not work for {} (T215077)' - .format(family)) + f'Family.from_url() does not work for {family} (T215077)') self.current_family = family family = Family.load(family) for code in family.codes: diff --git a/tests/generate_family_file_tests.py b/tests/generate_family_file_tests.py index 0f8f25c..dccc037 100755 --- a/tests/generate_family_file_tests.py +++ b/tests/generate_family_file_tests.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 """Test generate_family_file script.""" # -# (C) Pywikibot team, 2018-2022 +# (C) Pywikibot team, 2018-2024 # # Distributed under the terms of the MIT license. # @@ -52,8 +52,7 @@ super().setUpClass() # test fails on wowwiki (T297042) if cls.site.family.name == 'wowwiki': - raise unittest.SkipTest('skipping {} due to T297042' - .format(cls.site)) + raise unittest.SkipTest(f'skipping {cls.site} due to T297042')
def setUp(self): """Set up tests.""" @@ -99,9 +98,8 @@ with self.subTest(url=url): if lang_parse.netloc != wiki_parse.netloc: # skip redirected url (T241413) - self.skipTest( - '{} is redirected to {}' - .format(lang_parse.netloc, wiki_parse.netloc)) + self.skipTest(f'{lang_parse.netloc} is redirected to ' + f'{wiki_parse.netloc}')
site = Site(url=url)
diff --git a/tests/i18n_tests.py b/tests/i18n_tests.py index f14639c..8f5522b 100755 --- a/tests/i18n_tests.py +++ b/tests/i18n_tests.py @@ -307,8 +307,7 @@
if cls.code in i18n.twget_keys(cls.message): raise unittest.SkipTest( - '{} has a translation for {}' - .format(cls.code, cls.message)) + f'{cls.code} has a translation for {cls.message}')
def test_pagegen_i18n_input(self): """Test i18n.input fallback via pwb.""" diff --git a/tests/l10n_tests.py b/tests/l10n_tests.py index 18a0b32..0fb0327 100755 --- a/tests/l10n_tests.py +++ b/tests/l10n_tests.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 """Test valid templates.""" # -# (C) Pywikibot team, 2015-2022 +# (C) Pywikibot team, 2015-2024 # # Distributed under the terms of the MIT license. # @@ -76,12 +76,10 @@ keys = i18n.twget_keys(package) for code in codes: current_site = pywikibot.Site(code, dct['family']) - test_name = ('test_{}_{}' - .format(package, code)).replace('-', '_') + test_name = f'test_{package}_{code}'.replace('-', '_') cls.add_method( dct, test_name, test_method(current_site, package), - doc_suffix='{} and language {}'.format( - package, code)) + doc_suffix=f'{package} and language {code}')
return super().__new__(cls, name, bases, dct)
@@ -131,9 +129,10 @@ for key in bundle.keys(): if key == '@metadata': continue - self.assertTrue(key.startswith(dirname), - '{!r} does not start with {!r}' - .format(key, dirname)) + self.assertTrue( + key.startswith(dirname), + f'{key!r} does not start with {dirname!r}' + )
if __name__ == '__main__': # pragma: no cover diff --git a/tests/namespace_tests.py b/tests/namespace_tests.py index 6b5044c..447575c 100755 --- a/tests/namespace_tests.py +++ b/tests/namespace_tests.py @@ -293,13 +293,11 @@
with self.subTest(name=name, ns_id=ns_id): if name.isupper(): - result = eval('self.namespaces.{name}.id' - .format(name=name)) + result = eval(f'self.namespaces.{name}.id') self.assertEqual(result, ns_id) else: with self.assertRaises(AttributeError): - exec('self.namespaces.{name}.id' - .format(name=name)) + exec(f'self.namespaces.{name}.id')
def test_lookup_normalized_name(self): """Test lookup_normalized_name.""" diff --git a/tests/page_tests.py b/tests/page_tests.py index 075c79e..f04a467 100755 --- a/tests/page_tests.py +++ b/tests/page_tests.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 """Tests for the page module.""" # -# (C) Pywikibot team, 2008-2023 +# (C) Pywikibot team, 2008-2024 # # Distributed under the terms of the MIT license. # @@ -481,8 +481,7 @@ mainpage = self.get_mainpage() maintalk = mainpage.toggleTalkPage() if not maintalk.exists(): - self.skipTest("No talk page for {}'s main page" - .format(self.get_site())) + self.skipTest(f"No talk page for {self.get_site()}'s main page") self.assertIsInstance(maintalk.get(get_redirect=True), str) self.assertEqual(mainpage.toggleTalkPage(), maintalk) self.assertEqual(maintalk.toggleTalkPage(), mainpage) @@ -685,7 +684,7 @@ def test_unicode_value(self): """Test to capture actual Python result pre unicode_literals.""" self.assertEqual(repr(self.page), "Page('Ō')") - self.assertEqual('%r' % self.page, "Page('Ō')") + self.assertEqual(f'{self.page!r}', "Page('Ō')") self.assertEqual(f'{self.page!r}', "Page('Ō')")
@@ -1027,8 +1026,8 @@ def test_watch(self): """Test Page.watch, with and without unwatch enabled.""" if not self.site.has_right('editmywatchlist'): - self.skipTest('user {} cannot edit its watch list' - .format(self.site.user())) + self.skipTest( + f'user {self.site.user()} cannot edit its watch list')
# Note: this test uses the userpage, so that it is unwatched and # therefore is not listed by script_tests test_watchlist_simulate. @@ -1249,8 +1248,8 @@ if not meta.logged_in(): meta.login() if not meta.user(): - self.skipTest('{}: Not able to login to {}' - .format(type(self).__name__, meta)) + self.skipTest( + f'{type(self).__name__}: Not able to login to {meta}')
site = self.get_site() p1 = pywikibot.Page(site, 'User:Framawiki/pwb_tests/shortlink') diff --git a/tests/pagegenerators_tests.py b/tests/pagegenerators_tests.py index c27ac84..fc5e5e7 100755 --- a/tests/pagegenerators_tests.py +++ b/tests/pagegenerators_tests.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 """Test pagegenerators module.""" # -# (C) Pywikibot team, 2009-2023 +# (C) Pywikibot team, 2009-2024 # # Distributed under the terms of the MIT license. from __future__ import annotations @@ -506,9 +506,8 @@ site = self.get_site() # Some languages are missing (T85681) if site.lang not in date.formats['YearBC']: - self.skipTest( - 'Date formats for {!r} language are missing from date.py' - .format(site.lang)) + self.skipTest(f'Date formats for {site.lang!r} language are' + ' missing from date.py') start = -20 end = 2026
@@ -1118,8 +1117,8 @@ def test_recentchanges_default(self): """Test recentchanges generator with default namespace setting.""" if self.site.family.name in ('wpbeta', 'wsbeta'): - self.skipTest('Skipping {} due to too many autoblocked users' - .format(self.site)) + self.skipTest( + f'Skipping {self.site} due to too many autoblocked users') gf = pagegenerators.GeneratorFactory(site=self.site) gf.handle_arg('-ns:0,1,2') gf.handle_arg('-recentchanges:50') @@ -1291,8 +1290,8 @@ def test_linter_generator_ns_valid_cat(self): """Test generator of pages with lint errors.""" if not self.site.has_extension('Linter'): - self.skipTest('The site {} does not use Linter extension' - .format(self.site)) + self.skipTest( + f'The site {self.site} does not use Linter extension') gf = pagegenerators.GeneratorFactory(site=self.site) gf.handle_arg('-ns:1') gf.handle_arg('-limit:3') @@ -1309,8 +1308,8 @@ def test_linter_generator_invalid_cat(self): """Test generator of pages with lint errors.""" if not self.site.has_extension('Linter'): - self.skipTest('The site {} does not use Linter extension' - .format(self.site)) + self.skipTest( + f'The site {self.site} does not use Linter extension') gf = pagegenerators.GeneratorFactory(site=self.site) with self.assertRaises(AssertionError): gf.handle_arg('-linter:dummy') diff --git a/tests/plural_tests.py b/tests/plural_tests.py index 51a5219..2c71287 100755 --- a/tests/plural_tests.py +++ b/tests/plural_tests.py @@ -47,7 +47,7 @@ return test_static_rule
for lang, rule in plural.plural_rules.items(): - cls.add_method(dct, 'test_{}'.format(lang.replace('-', '_')), + cls.add_method(dct, f"test_{lang.replace('-', '_')}", create_test(rule), doc_suffix=f'for "{lang}"') return super().__new__(cls, name, bases, dct) diff --git a/tests/proofreadpage_tests.py b/tests/proofreadpage_tests.py index 7af71e1..d547242 100755 --- a/tests/proofreadpage_tests.py +++ b/tests/proofreadpage_tests.py @@ -443,8 +443,7 @@ """Check whether bs4 module is installed already.""" if not has_module('bs4'): unittest_print( - 'all tests ({module}.{name})\n{doc}.. ' - .format(module=__name__, doc=cls.__doc__, name=cls.__name__), + f'all tests ({__name__}.{cls.__name__})\n{cls.__doc__}.. ', end='\n') cls.skipTest(cls, 'bs4 not installed') super().setUpClass() diff --git a/tests/script_tests.py b/tests/script_tests.py index d705e53..d59eb01 100755 --- a/tests/script_tests.py +++ b/tests/script_tests.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 """Test that each script can be compiled and executed.""" # -# (C) Pywikibot team, 2014-2023 +# (C) Pywikibot team, 2014-2024 # # Distributed under the terms of the MIT license. # @@ -38,9 +38,8 @@ if script_name in script_deps: for package_name in script_deps[script_name]: if not has_module(package_name): - unittest_print( - "{} depends on {}, which isn't available" - .format(script_name, package_name)) + unittest_print(f'{script_name} depends on {package_name},' + " which isn't available") return False return True
@@ -265,8 +264,8 @@ unittest_print( ' auto-run script stderr within {} seconds: {!r}' .format(timeout, err_result), end=' ') - unittest_print(' exit code: {}' - .format(result['exit_code']), end=' ') + unittest_print(f" exit code: {result['exit_code']}", + end=' ')
self.assertNotIn('Traceback (most recent call last)', err_result) @@ -304,20 +303,19 @@
cls.add_method(dct, test_name, test_execution(script_name, arguments.split()), - 'Test running {} {}.' - .format(script_name, arguments)) + f'Test running {script_name} {arguments}.')
if script_name in dct['_expected_failures']: dct[test_name] = unittest.expectedFailure(dct[test_name]) elif script_name in dct['_allowed_failures']: dct[test_name] = unittest.skip( - '{} is in _allowed_failures set' - .format(script_name))(dct[test_name]) + f'{script_name} is in _allowed_failures set' + )(dct[test_name]) elif script_name in failed_dep_script_set \ and arguments == '-simulate': dct[test_name] = unittest.skip( - '{} has dependencies; skipping' - .format(script_name))(dct[test_name]) + f'{script_name} has dependencies; skipping' + )(dct[test_name])
# Disable test by default in pytest if script_name in unrunnable_script_set: diff --git a/tests/site_generators_tests.py b/tests/site_generators_tests.py index f73189a..be6007b 100755 --- a/tests/site_generators_tests.py +++ b/tests/site_generators_tests.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 """Tests for generators of the site module.""" # -# (C) Pywikibot team, 2008-2023 +# (C) Pywikibot team, 2008-2024 # # Distributed under the terms of the MIT license. # @@ -594,8 +594,7 @@ levels.add(level) if not levels: self.skipTest( - 'The site "{}" has no protected pages in main namespace.' - .format(site)) + f'The site "{site}" has no protected pages in main namespace.') # select one level which won't yield all pages from above level = next(iter(levels)) if len(levels) == 1: @@ -763,8 +762,8 @@ msg=f'No images on the main page of site {mysite!r}'): imagepage = next(page.imagelinks()) # 1st image of page
- unittest_print('site_tests.TestImageUsage found {} on {}' - .format(imagepage, page)) + unittest_print( + f'site_tests.TestImageUsage found {imagepage} on {page}')
self.__class__._image_page = imagepage return imagepage @@ -1545,7 +1544,7 @@ site = cls.get_site() if site.family.name in ('wpbeta', 'wsbeta'): cls.skipTest(cls, - 'Skipping test on {} due to T282602' .format(site)) + f'Skipping test on {site} due to T282602')
def test_unlimited_small_step(self): """Test site.randompages() continuation. diff --git a/tests/sparql_tests.py b/tests/sparql_tests.py index 1e8a904..99e0bb0 100755 --- a/tests/sparql_tests.py +++ b/tests/sparql_tests.py @@ -106,8 +106,7 @@ def testQuerySelect(self, mock_method): """Test SELECT query.""" mock_method.return_value = Container( - SQL_RESPONSE_CONTAINER % '{}, {}'.format( - ITEM_Q498787, ITEM_Q677525)) + SQL_RESPONSE_CONTAINER % f'{ITEM_Q498787}, {ITEM_Q677525}') with skipping(pywikibot.exceptions.TimeoutError): q = sparql.SparqlQuery() res = q.select('SELECT * WHERE { ?x ?y ?z }') @@ -129,8 +128,7 @@ def testQuerySelectFull(self, mock_method): """Test SELECT query with full data.""" mock_method.return_value = Container( - SQL_RESPONSE_CONTAINER % '{}, {}'.format( - ITEM_Q498787, ITEM_Q677525)) + SQL_RESPONSE_CONTAINER % f'{ITEM_Q498787}, {ITEM_Q677525}') with skipping(pywikibot.exceptions.TimeoutError): q = sparql.SparqlQuery() res = q.select('SELECT * WHERE { ?x ?y ?z }', full_data=True) diff --git a/tests/textlib_tests.py b/tests/textlib_tests.py index 76662ba..c6c158f 100755 --- a/tests/textlib_tests.py +++ b/tests/textlib_tests.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 """Test textlib module.""" # -# (C) Pywikibot team, 2011-2023 +# (C) Pywikibot team, 2011-2024 # # Distributed under the terms of the MIT license. # @@ -733,8 +733,7 @@ self._count += 1 if link.section: return pywikibot.Link( - '{}#{}' - .format(self._count, link.section), link.site) + f'{self._count}#{link.section}', link.site) return pywikibot.Link(f'{self._count}', link.site)
return None @@ -1396,8 +1395,8 @@ """Test replacing not inside interwiki links.""" if ('es' not in self.site.family.langs or 'ey' in self.site.family.langs): - raise unittest.SkipTest("family {} doesn't have languages" - .format(self.site)) + raise unittest.SkipTest( + f"family {self.site} doesn't have languages")
self.assertEqual(textlib.replaceExcept('[[es:s]]', 's', 't', ['interwiki'], site=self.site), diff --git a/tests/timestripper_tests.py b/tests/timestripper_tests.py index 8556b5a..00d9cf1 100755 --- a/tests/timestripper_tests.py +++ b/tests/timestripper_tests.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 """Tests for archivebot.py/Timestripper.""" # -# (C) Pywikibot team, 2014-2023 +# (C) Pywikibot team, 2014-2024 # # Distributed under the terms of the MIT license. # @@ -336,8 +336,8 @@ txt_match = '[http://' + self.fake_date + ']' + self.date self.assertEqual(ts(txt_match), self.expected_date)
- txt_match = ('{} [http://www.org | link with date {}]' - .format(self.date, self.fake_date)) + txt_match = (f'{self.date} [http://www.org | link with date ' + f'{self.fake_date}]') self.assertEqual(ts(txt_match), self.expected_date)
txt_match = '[http://' + self.fake_date + ']' + self.date @@ -347,8 +347,10 @@ """Test that skipping hyperlinks will not make gaps shorter.""" ts = self.ts.timestripper
- txt_match = ('{}[http://example.com Here is long enough text]{}' - .format(self.date[:9], self.date[9:])) + txt_match = ( + f'{self.date[:9]}[http://example.com Here is long enough text]' + f'{self.date[9:]}' + ) self.assertIsNone(ts(txt_match))
def test_timestripper_match_wikilink_with_date(self): @@ -371,8 +373,8 @@ """Test that skipping wikilinks will not make gaps shorter.""" ts = self.ts.timestripper
- txt_match = ('{}[[Here is long enough text]]{}' - .format(self.date[:9], self.date[9:])) + txt_match = (f'{self.date[:9]}[[Here is long enough text]]' + f'{self.date[9:]}') self.assertIsNone(ts(txt_match))
txt_match = self.date[:9] + '[[foo]]' + self.date[9:] diff --git a/tests/ui_options_tests.py b/tests/ui_options_tests.py index 701f359..ac1a0ee 100755 --- a/tests/ui_options_tests.py +++ b/tests/ui_options_tests.py @@ -137,14 +137,11 @@ f'? ({prefix}<number> [1-3])') for i, elem in enumerate(options, 1): self.assertTrue(option.test(f'{prefix}{i}')) - self.assertIs(option.handled('{}{}' - .format(prefix, i)), option) + self.assertIs(option.handled(f'{prefix}{i}'), option) self.assertEqual(option.result(f'{prefix}{i}'), (prefix, elem)) - self.assertFalse(option.test('{}{}' - .format(prefix, len(options) + 1))) - self.assertIsNone(option.handled('{}{}'.format( - prefix, len(options) + 1))) + self.assertFalse(option.test(f'{prefix}{len(options) + 1}')) + self.assertIsNone(option.handled(f'{prefix}{len(options) + 1}'))
def test_showing_list(self): """Test ShowingListOption.""" diff --git a/tests/ui_tests.py b/tests/ui_tests.py index 2e86b28..950dffb 100755 --- a/tests/ui_tests.py +++ b/tests/ui_tests.py @@ -187,8 +187,7 @@
end_str = ': Testing Exception' self.assertTrue(stderrlines[-1].endswith(end_str), - '\n{!r} does not end with {!r}' - .format(stderrlines[-1], end_str)) + f'\n{stderrlines[-1]!r} does not end with {end_str!r}')
class TestTerminalInput(UITestCase): @@ -365,8 +364,7 @@ with self.subTest(lang=lang): for char in digits: self.assertIn(char, _trans, - '{!r} not in transliteration table' - .format(char)) + f'{char!r} not in transliteration table')
def test_transliteration_table(self): """Test transliteration table consistency.""" diff --git a/tests/user_tests.py b/tests/user_tests.py index ac6d83e..a46d88d 100755 --- a/tests/user_tests.py +++ b/tests/user_tests.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 """Tests for the User page.""" # -# (C) Pywikibot team, 2016-2023 +# (C) Pywikibot team, 2016-2024 # # Distributed under the terms of the MIT license. # @@ -203,8 +203,8 @@ user = User(mysite, mysite.user()) le = list(user.logevents(total=10)) if not le: - self.skipTest('User {} has no logevents on site {}.' - .format(mysite.user(), mysite)) + self.skipTest( + f'User {mysite.user()} has no logevents on site {mysite}.') self.assertLessEqual(len(le), 10) last = le[0] self.assertEqual(last, user.last_event) diff --git a/tests/utils.py b/tests/utils.py index bfa2760..8057aa6 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -328,8 +328,7 @@
def submit(self): """Prevented method.""" - raise Exception('DryRequest rejecting request: {!r}' - .format(self._params)) + raise Exception(f'DryRequest rejecting request: {self._params!r}')
class DrySite(pywikibot.site.APISite): diff --git a/tests/wikistats_tests.py b/tests/wikistats_tests.py index 238bd15..5a3931b 100755 --- a/tests/wikistats_tests.py +++ b/tests/wikistats_tests.py @@ -73,8 +73,7 @@ curr = int(data[code]['good']) self.assertGreaterEqual( last, curr, - '{} ({}) is greater than {} ({}).' - .format(code, curr, last_code, last)) + f'{code} ({curr}) is greater than {last_code} ({last}).') last = curr last_code = code
pywikibot-commits@lists.wikimedia.org