jenkins-bot has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1164610?usp=email )
Change subject: IMPR: Remove unnecessary assignment before return statement ......................................................................
IMPR: Remove unnecessary assignment before return statement
Change-Id: I378812aeefc10d60def34c30dfe7d0542391a346 --- M pywikibot/_wbtypes.py M pywikibot/comms/http.py M pywikibot/cosmetic_changes.py M pywikibot/diff.py M pywikibot/page/_links.py M pywikibot/pagegenerators/_generators.py M pywikibot/proofreadpage.py M pywikibot/site/_datasite.py M pywikibot/site/_generators.py M pywikibot/textlib.py M pywikibot/time.py M pywikibot/xmlreader.py M scripts/category_graph.py M scripts/create_isbn_edition.py M scripts/noreferences.py M scripts/nowcommons.py M scripts/transwikiimport.py M tests/link_tests.py M tests/logentries_tests.py M tests/memento_tests.py M tests/script_tests.py 21 files changed, 103 insertions(+), 131 deletions(-)
Approvals: Xqt: Looks good to me, approved jenkins-bot: Verified
diff --git a/pywikibot/_wbtypes.py b/pywikibot/_wbtypes.py index e39e1b4..8ca7557 100644 --- a/pywikibot/_wbtypes.py +++ b/pywikibot/_wbtypes.py @@ -1,6 +1,6 @@ """Wikibase data type classes.""" # -# (C) Pywikibot team, 2013-2024 +# (C) Pywikibot team, 2013-2025 # # Distributed under the terms of the MIT license. # @@ -778,14 +778,14 @@
:return: Wikibase JSON """ - json = {'time': self.toTimestr(), - 'precision': self.precision, - 'after': self.after, - 'before': self.before, - 'timezone': self.timezone, - 'calendarmodel': self.calendarmodel - } - return json + return { + 'time': self.toTimestr(), + 'precision': self.precision, + 'after': self.after, + 'before': self.before, + 'timezone': self.timezone, + 'calendarmodel': self.calendarmodel, + }
@classmethod def fromWikibase(cls, data: dict[str, Any], @@ -908,12 +908,12 @@
:return: Wikibase JSON """ - json = {'amount': self._fromdecimal(self.amount), - 'upperBound': self._fromdecimal(self.upperBound), - 'lowerBound': self._fromdecimal(self.lowerBound), - 'unit': self.unit - } - return json + return { + 'amount': self._fromdecimal(self.amount), + 'upperBound': self._fromdecimal(self.upperBound), + 'lowerBound': self._fromdecimal(self.lowerBound), + 'unit': self.unit, + }
@classmethod def fromWikibase(cls, data: dict[str, Any], @@ -956,10 +956,10 @@
:return: Wikibase JSON """ - json = {'text': self.text, - 'language': self.language - } - return json + return { + 'text': self.text, + 'language': self.language, + }
@classmethod def fromWikibase(cls, data: dict[str, Any], @@ -1109,12 +1109,11 @@
:param site: The Wikibase site """ - specifics = { + return { 'ending': '.map', 'label': 'geo-shape', - 'data_site': cls._get_data_site(site) + 'data_site': cls._get_data_site(site), } - return specifics
class WbTabularData(WbDataPage): @@ -1135,12 +1134,11 @@
:param site: The Wikibase site """ - specifics = { + return { 'ending': '.tab', 'label': 'tabular-data', - 'data_site': cls._get_data_site(site) + 'data_site': cls._get_data_site(site), } - return specifics
class WbUnknown(WbRepresentation): diff --git a/pywikibot/comms/http.py b/pywikibot/comms/http.py index ef9802a..f6d4bc0 100644 --- a/pywikibot/comms/http.py +++ b/pywikibot/comms/http.py @@ -237,11 +237,10 @@ values['script_comments'] = '; '.join(script_comments)
format_string = format_string or config.user_agent_format - formatted = _USER_AGENT_FORMATTER.format(format_string, **values) + # clean up after any blank components - formatted = formatted.replace('()', '').replace(' ', ' ').strip() - return formatted + return formatted.replace('()', '').replace(' ', ' ').strip()
def fake_user_agent() -> str: @@ -576,7 +575,5 @@ ' in the response header.' )
- _encoding = _try_decode(response.content, header_encoding) \ + return _try_decode(response.content, header_encoding) \ or _try_decode(response.content, charset) - - return _encoding diff --git a/pywikibot/cosmetic_changes.py b/pywikibot/cosmetic_changes.py index c128860..55ea751 100644 --- a/pywikibot/cosmetic_changes.py +++ b/pywikibot/cosmetic_changes.py @@ -673,10 +673,9 @@ r'(|(?P<label>[^]|]*))?]](?P<linktrail>' + self.site.linktrail() + ')')
- text = textlib.replaceExcept(text, linkR, handleOneLink, + return textlib.replaceExcept(text, linkR, handleOneLink, ['comment', 'math', 'nowiki', 'pre', 'startspace']) - return text
def resolveHtmlEntities(self, text: str) -> str: """Replace HTML entities with string.""" @@ -702,9 +701,8 @@ ignore.append(58) # Colon (:) # TODO: T254350 - what other extension tags should be avoided? # (graph, math, score, timeline, etc.) - text = pywikibot.html2unicode( + return pywikibot.html2unicode( text, ignore=ignore, exceptions=['comment', 'syntaxhighlight']) - return text
def removeEmptySections(self, text: str) -> str: """Cleanup empty sections.""" @@ -759,9 +757,9 @@ 'startspace', 'table'] if self.site.sitename != 'wikipedia:cs': exceptions.append('template') - text = textlib.replaceExcept(text, r'(?m)[\t ]+( |$)', r'\1', + + return textlib.replaceExcept(text, r'(?m)[\t ]+( |$)', r'\1', exceptions, site=self.site) - return text
def removeNonBreakingSpaceBeforePercent(self, text: str) -> str: """Remove a non-breaking space between number and percent sign. @@ -770,9 +768,8 @@ space in front of a percent sign, so it is no longer required to place it manually. """ - text = textlib.replaceExcept( + return textlib.replaceExcept( text, r'(\d)&(?:nbsp|#160|#x[Aa]0);%', r'\1 %', ['timeline']) - return text
def cleanUpSectionHeaders(self, text: str) -> str: """Add a space between the equal signs and the section title. @@ -917,12 +914,13 @@ # this will cause mistakes. extensions = [fr'.{ext}' for ext in ['pdf', 'html?', 'php', 'aspx?', 'jsp']] - text = textlib.replaceExcept( + + return textlib.replaceExcept( text, r'[(?P<url>https?://[^|] ]+?(' + '|'.join(extensions) + r')) *' r'| *(?P<label>[^|]]+?)]', - r'[\g<url> \g<label>]', exceptions) - return text + r'[\g<url> \g<label>]', exceptions + )
def fixHtml(self, text: str) -> str: """Replace html markups with wikitext markups.""" diff --git a/pywikibot/diff.py b/pywikibot/diff.py index e142a4d..052e934 100644 --- a/pywikibot/diff.py +++ b/pywikibot/diff.py @@ -166,8 +166,7 @@
if line_ref is None: if color in self.colors: - colored_line = f'<<{self.colors[color]}>>{line}<<default>>' - return colored_line + return f'<<{self.colors[color]}>>{line}<<default>>' return line
colored_line = '' diff --git a/pywikibot/page/_links.py b/pywikibot/page/_links.py index 67657bb..639cd30 100644 --- a/pywikibot/page/_links.py +++ b/pywikibot/page/_links.py @@ -736,12 +736,11 @@
:return: Wikibase JSON """ - json = { + return { 'site': self._sitekey, 'title': self._rawtitle, 'badges': [badge.title() for badge in self.badges] } - return json
# Utility functions for parsing page titles diff --git a/pywikibot/pagegenerators/_generators.py b/pywikibot/pagegenerators/_generators.py index a6c60b5..4e04b8c 100644 --- a/pywikibot/pagegenerators/_generators.py +++ b/pywikibot/pagegenerators/_generators.py @@ -1478,15 +1478,13 @@ :return: Dictionary of querystring parameters to use in the query """ - query = { + return { 'id': id, 'action': 'get_data', 'format': 'json', 'doit': '' }
- return query - def query(self) -> Generator[str, None, None]: """Query PagePile.
diff --git a/pywikibot/proofreadpage.py b/pywikibot/proofreadpage.py index 2e55202..024dd8b 100644 --- a/pywikibot/proofreadpage.py +++ b/pywikibot/proofreadpage.py @@ -10,7 +10,7 @@ .. seealso:: https://wikisource.org/wiki/Wikisource:Google_OCR """ # -# (C) Pywikibot team, 2015-2024 +# (C) Pywikibot team, 2015-2025 # # Distributed under the terms of the MIT license. # @@ -303,9 +303,8 @@ @classmethod def get_descriptors(cls): """Get TagAttrDesc descriptors.""" - res = {k: v for k, v in cls.__dict__.items() - if isinstance(v, TagAttrDesc)} - return res + return {k: v for k, v in cls.__dict__.items() + if isinstance(v, TagAttrDesc)}
def __contains__(self, attr) -> bool: return getattr(self, attr) is not None diff --git a/pywikibot/site/_datasite.py b/pywikibot/site/_datasite.py index 92f9693..d67f2ba 100644 --- a/pywikibot/site/_datasite.py +++ b/pywikibot/site/_datasite.py @@ -1,6 +1,6 @@ """Objects representing API interface to Wikibase site.""" # -# (C) Pywikibot team, 2012-2024 +# (C) Pywikibot team, 2012-2025 # # Distributed under the terms of the MIT license. # @@ -827,11 +827,10 @@ del kwargs['site']
parameters = dict(search=search, language=language, **kwargs) - gen = self._generator(api.APIGenerator, - type_arg='wbsearchentities', - data_name='search', - total=total, parameters=parameters) - return gen + return self._generator(api.APIGenerator, + type_arg='wbsearchentities', + data_name='search', + total=total, parameters=parameters)
def parsevalue(self, datatype: str, values: list[str], options: dict[str, Any] | None = None, diff --git a/pywikibot/site/_generators.py b/pywikibot/site/_generators.py index 7d8534c..bf76ec7 100644 --- a/pywikibot/site/_generators.py +++ b/pywikibot/site/_generators.py @@ -1608,11 +1608,11 @@ sort = 'none' if sort != 'relevance': parameters['gsrsort'] = sort - srgen = self._generator(api.PageGenerator, type_arg='search', - namespaces=namespaces, - total=total, g_content=content, - parameters=parameters) - return srgen + + return self._generator(api.PageGenerator, type_arg='search', + namespaces=namespaces, + total=total, g_content=content, + parameters=parameters)
def usercontribs( self, @@ -1892,10 +1892,10 @@ """ usprop = ['blockinfo', 'gender', 'groups', 'editcount', 'registration', 'rights', 'emailable'] - usgen = api.ListGenerator( - 'users', site=self, parameters={ - 'ususers': usernames, 'usprop': usprop}) - return usgen + return api.ListGenerator( + 'users', site=self, + parameters={'ususers': usernames, 'usprop': usprop} + )
def randompages( self, diff --git a/pywikibot/textlib.py b/pywikibot/textlib.py index 257e1a7..039bc25 100644 --- a/pywikibot/textlib.py +++ b/pywikibot/textlib.py @@ -211,8 +211,7 @@ r'((({{{[^{}]+?}}}|{{[^{}]+?}}|{[^{}]*?})[^{]*?)*?)?' r'|)\s*}}' ) % {'namespace': ':|'.join(namespaces), 'pattern': pattern} - templateRegex = re.compile(templateRegexP, flags) - return templateRegex + return re.compile(templateRegexP, flags)
def search_any_predicate(self, templates): """Return a predicate that matches any template.""" diff --git a/pywikibot/time.py b/pywikibot/time.py index 62bd7b4..2e6832b 100644 --- a/pywikibot/time.py +++ b/pywikibot/time.py @@ -3,7 +3,7 @@ .. versionadded:: 7.5 """ # -# (C) Pywikibot team, 2007-2024 +# (C) Pywikibot team, 2007-2025 # # Distributed under the terms of the MIT license. # @@ -197,9 +197,8 @@ sec -= 1 usec = 1_000_000 - usec
- ts = cls(1970, 1, 1) + datetime.timedelta(seconds=sec, - microseconds=usec) - return ts + return cls(1970, 1, 1) + datetime.timedelta(seconds=sec, + microseconds=usec)
@classmethod def _from_string(cls, timestr: str) -> Timestamp: diff --git a/pywikibot/xmlreader.py b/pywikibot/xmlreader.py index a1994cf..47f04b8 100644 --- a/pywikibot/xmlreader.py +++ b/pywikibot/xmlreader.py @@ -11,7 +11,7 @@ vulnerable XML attacks. *defusedxml* 0.7.1 or higher is recommended. """ # -# (C) Pywikibot team, 2005-2024 +# (C) Pywikibot team, 2005-2025 # # Distributed under the terms of the MIT license. # @@ -290,7 +290,7 @@ elem.findtext(f'{uri}restrictions') )
- headers = Headers( + return Headers( title=elem.findtext(f'{uri}title'), ns=elem.findtext(f'{uri}ns'), pageid=elem.findtext(f'{uri}id'), @@ -299,8 +299,6 @@ move_restriction=move_restriction, )
- return headers - def _create_revision( self, headers: Headers, revision: Element ) -> XmlEntry: @@ -311,7 +309,7 @@ username = ip_editor or contributor.findtext(f'{uri}username') username = username or '' # username might be deleted
- xml_entry = XmlEntry( + return XmlEntry( title=headers.title, ns=headers.ns, id=headers.pageid, @@ -327,8 +325,6 @@ # could get comment, minor as well )
- return xml_entry -
wrapper = ModuleDeprecationWrapper(__name__) wrapper.add_deprecated_attr( diff --git a/scripts/category_graph.py b/scripts/category_graph.py index 65c6206..0a8f8ab 100755 --- a/scripts/category_graph.py +++ b/scripts/category_graph.py @@ -43,7 +43,7 @@ .. versionadded:: 8.0 """ # -# (C) Pywikibot team, 2022-2024 +# (C) Pywikibot team, 2022-2025 # # Distributed under the terms of the MIT license. # @@ -126,28 +126,26 @@ def node(): subs = ', '.join([c.title(with_ns=False).replace(' ', ' ') for c in subcats]) - n = pydot.Node(title, - label=rf'"{title}\n{len(subcats)} C"', - tooltip=title + '\n\n' + subs, - URL=cat.full_url(), - fontsize=int(10 * size)) - return n + return pydot.Node(title, + label=f'"{title}\n{len(subcats)} C"', + tooltip=f'{title}\n\n{subs}', + URL=cat.full_url(), + fontsize=int(10 * size))
def edge(n, h): minlen = n % columns + 1 if level != self.args.depth else 1 - e = pydot.Edge(title, - subcat.title(with_ns=False), - tooltip=title + ' ⟶ ' - + subcat.title(with_ns=False), - headlabel=title, - # distribute the graph to depth - minlen=minlen, - penwidth=round(size / 2, 2), - arrowsize=round(size / 4, 2), - color=str(round(h, 2)) + ' 1 0.7', - labelfontsize=int(3 * size), - labelfontcolor=str(round(h, 2)) + ' 1 0.5') - return e + return pydot.Edge(title, + subcat.title(with_ns=False), + tooltip=title + ' ⟶ ' + + subcat.title(with_ns=False), + headlabel=title, + # distribute the graph to depth + minlen=minlen, + penwidth=round(size / 2, 2), + arrowsize=round(size / 4, 2), + color=str(round(h, 2)) + ' 1 0.7', + labelfontsize=int(3 * size), + labelfontcolor=str(round(h, 2)) + ' 1 0.5')
if config.verbose_output: pywikibot.info('Adding ' + cat.title(with_ns=False)) diff --git a/scripts/create_isbn_edition.py b/scripts/create_isbn_edition.py index 1386492..c435a54 100755 --- a/scripts/create_isbn_edition.py +++ b/scripts/create_isbn_edition.py @@ -764,8 +764,7 @@ baselabel = baselabel.replace(',', ' ') # Remove remaining ","
# Remove redundant spaces - baselabel = ' '.join(baselabel.split()) - return baselabel + return ' '.join(baselabel.split())
def get_item_list(item_name: str, diff --git a/scripts/noreferences.py b/scripts/noreferences.py index c251d64..bf4945b 100755 --- a/scripts/noreferences.py +++ b/scripts/noreferences.py @@ -670,12 +670,12 @@ templates_or_comments = re.compile( r'^((?:\s*(?:{{[^{}]*?}}|<!--.*?-->))*)', flags=re.DOTALL) - new_text = ( + return ( oldText[:match.end() - 1] + templates_or_comments.sub( fr'\1\n{self.referencesText}\n', - oldText[match.end() - 1:])) - return new_text + oldText[match.end() - 1:]) + ) else: break
diff --git a/scripts/nowcommons.py b/scripts/nowcommons.py index 6abfbeb..cab5ff4 100755 --- a/scripts/nowcommons.py +++ b/scripts/nowcommons.py @@ -265,6 +265,7 @@ else: file_on_commons = val[1].strip() return file_on_commons + return None
def init_page(self, item: pywikibot.Page) -> pywikibot.FilePage: """Ensure that generator retrieves FilePage objects.""" diff --git a/scripts/transwikiimport.py b/scripts/transwikiimport.py index fe07d7d..d3932ef 100755 --- a/scripts/transwikiimport.py +++ b/scripts/transwikiimport.py @@ -156,8 +156,7 @@ def api_query(site, params: dict[str, str]): """Request data from given site.""" query = api.Request(site, parameters=params) - datas = query.submit() - return datas + return query.submit()
def main(*args: str) -> None: diff --git a/tests/link_tests.py b/tests/link_tests.py index bf04390..8b8a001 100755 --- a/tests/link_tests.py +++ b/tests/link_tests.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 """Test Link functionality.""" # -# (C) Pywikibot team, 2014-2024 +# (C) Pywikibot team, 2014-2025 # # Distributed under the terms of the MIT license. # @@ -123,30 +123,25 @@ """Test that invalid titles raise InvalidTitleError.""" # Bad characters forbidden regardless of wgLegalTitleChars def generate_contains_illegal_chars_exc_regex(text): - exc_regex = (rf'^(u|)'{re.escape(text)}' contains illegal char' - rf'(s) (u|)'{re.escape(text[2])}'$') - return exc_regex + return (rf'^(u|)'{re.escape(text)}' contains illegal char' + rf'(s) (u|)'{re.escape(text[2])}'$')
# Directory navigation def generate_contains_dot_combinations_exc_regex(text): - exc_regex = (rf'^(contains . / combinations): (u|)' - rf''{re.escape(text)}'$') - return exc_regex + return (rf'^(contains . / combinations): (u|)' + rf''{re.escape(text)}'$')
# Tilde def generate_contains_tilde_exc_regex(text): - exc_regex = rf'^(contains ~~~): (u|)'{re.escape(text)}'$' - return exc_regex + return rf'^(contains ~~~): (u|)'{re.escape(text)}'$'
# Overlength def generate_overlength_exc_regex(text): - exc_regex = rf'^(over 255 bytes): (u|)'{re.escape(text)}'$' - return exc_regex + return rf'^(over 255 bytes): (u|)'{re.escape(text)}'$'
# Namespace prefix without actual title def generate_has_no_title_exc_regex(text): - exc_regex = rf'^(u|)'{re.escape(text.strip())}' has no title.$' - return exc_regex + return rf'^(u|)'{re.escape(text.strip())}' has no title.$'
title_tests = [ # Empty title diff --git a/tests/logentries_tests.py b/tests/logentries_tests.py index 3fafb13..9b4447e 100755 --- a/tests/logentries_tests.py +++ b/tests/logentries_tests.py @@ -68,8 +68,7 @@
with skipping(StopIteration, msg=f'No entry found for {logtype!r}'): - le = next(self.site.logevents(logtype=logtype, total=1)) - return le + return next(self.site.logevents(logtype=logtype, total=1))
def _test_logevent(self, logtype) -> None: """Test a single logtype entry.""" diff --git a/tests/memento_tests.py b/tests/memento_tests.py index 1e37fde..8647906 100755 --- a/tests/memento_tests.py +++ b/tests/memento_tests.py @@ -34,8 +34,7 @@ if date_string else None) with skipping(ReadTimeout, RequestsConnectionError, MementoClientException): - result = get_closest_memento_url(url, when, self.timegate_uri) - return result + return get_closest_memento_url(url, when, self.timegate_uri)
class TestMementoArchive(MementoTestCase): diff --git a/tests/script_tests.py b/tests/script_tests.py index 4926930..19e4eed 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-2024 +# (C) Pywikibot team, 2014-2025 # # Distributed under the terms of the MIT license. # @@ -53,11 +53,12 @@
def list_scripts(path, exclude=None): """Return list of scripts in given path.""" - scripts = [name[0:-3] for name in os.listdir(path) # strip '.py' - if name.endswith('.py') - and not name.startswith('_') # skip __init__.py and _* - and name != exclude] - return scripts + return [ + name[0:-3] for name in os.listdir(path) # strip '.py' + if name.endswith('.py') + and not name.startswith('_') # skip __init__.py and _* + and name != exclude + ]
script_list = framework_scripts + list_scripts(scripts_path)
pywikibot-commits@lists.wikimedia.org