From 477401c4e4b457969593f1fde61a654d9a60b267 Mon Sep 17 00:00:00 2001 From: Adam Turner <9087854+aa-turner@users.noreply.github.com> Date: Mon, 13 Jan 2025 23:21:30 +0000 Subject: [PATCH] Enable the G003 lint in Ruff --- .ruff.toml | 2 -- sphinx/builders/__init__.py | 4 ++-- sphinx/builders/html/__init__.py | 6 +++--- sphinx/builders/latex/__init__.py | 2 +- sphinx/builders/linkcheck.py | 6 +++--- sphinx/builders/manpage.py | 2 +- sphinx/builders/singlehtml.py | 2 +- sphinx/ext/coverage.py | 8 ++++---- sphinx/ext/intersphinx/_load.py | 6 +++--- sphinx/util/display.py | 8 ++++---- sphinx/util/nodes.py | 2 +- 11 files changed, 23 insertions(+), 25 deletions(-) diff --git a/.ruff.toml b/.ruff.toml index c0142789f..0cde1e81e 100644 --- a/.ruff.toml +++ b/.ruff.toml @@ -29,8 +29,6 @@ ignore = [ "E741", # Ambiguous variable name: `{name}` # pyflakes "F841", # Local variable `{name}` is assigned to but never used - # flake8-logging-format - "G003", # Logging statement uses `+` # refurb "FURB101", # `open` and `read` should be replaced by `Path(...).read_text(...)` "FURB103", # `open` and `write` should be replaced by `Path(...).write_text(...)` diff --git a/sphinx/builders/__init__.py b/sphinx/builders/__init__.py index ddde2d7e3..66beb3f98 100644 --- a/sphinx/builders/__init__.py +++ b/sphinx/builders/__init__.py @@ -250,7 +250,7 @@ class Builder: def cat2relpath(cat: CatalogInfo, srcdir: Path = self.srcdir) -> str: return relpath(cat.mo_path, srcdir).replace(os.path.sep, SEP) - logger.info(bold(__('building [mo]: ')) + message) + logger.info(bold(__('building [mo]: ')) + message) # NoQA: G003 for catalog in status_iterator( catalogs, __('writing output... '), @@ -390,7 +390,7 @@ class Builder: :meth:`!write`. """ if summary: - logger.info(bold(__('building [%s]: ')) + summary, self.name) + logger.info(bold(__('building [%s]: ')) + summary, self.name) # NoQA: G003 # while reading, collect all warnings from docutils with ( diff --git a/sphinx/builders/html/__init__.py b/sphinx/builders/html/__init__.py index 6f28ef3a5..2e311ab89 100644 --- a/sphinx/builders/html/__init__.py +++ b/sphinx/builders/html/__init__.py @@ -364,7 +364,7 @@ class StandaloneHTMLBuilder(Builder): msg = __( 'build_info mismatch, copying .buildinfo to .buildinfo.bak' ) - logger.info(bold(__('building [html]: ')) + msg) + logger.info(bold(__('building [html]: ')) + msg) # NoQA: G003 yield from self.env.found_docs return @@ -379,7 +379,7 @@ class StandaloneHTMLBuilder(Builder): # Let users know they have a newer template if template_mtime > old_mtime: logger.info( - bold('building [html]: ') + bold('building [html]: ') # NoQA: G003 + __( 'template %s has been changed since the previous build, ' 'all docs will be rebuilt' @@ -713,7 +713,7 @@ class StandaloneHTMLBuilder(Builder): def gen_additional_pages(self) -> None: # additional pages from conf.py for pagename, template in self.config.html_additional_pages.items(): - logger.info(pagename + ' ', nonl=True) + logger.info('%s ', pagename, nonl=True) self.handle_page(pagename, {}, template) # the search page diff --git a/sphinx/builders/latex/__init__.py b/sphinx/builders/latex/__init__.py index d98a7de88..90668c13d 100644 --- a/sphinx/builders/latex/__init__.py +++ b/sphinx/builders/latex/__init__.py @@ -468,7 +468,7 @@ class LaTeXBuilder(Builder): @progress_message(__('copying additional files')) def copy_latex_additional_files(self) -> None: for filename in self.config.latex_additional_files: - logger.info(' ' + filename, nonl=True) + logger.info(' %s', filename, nonl=True) source = self.confdir / filename copyfile( source, diff --git a/sphinx/builders/linkcheck.py b/sphinx/builders/linkcheck.py index 189d3d04c..b3b5339ea 100644 --- a/sphinx/builders/linkcheck.py +++ b/sphinx/builders/linkcheck.py @@ -123,9 +123,9 @@ class CheckExternalLinksBuilder(DummyBuilder): msg = f'{res_uri}: {result.message}' else: msg = res_uri - logger.info(darkgray('-ignored- ') + msg) + logger.info(darkgray('-ignored- ') + msg) # NoQA: G003 case _Status.WORKING: - logger.info(darkgreen('ok ') + f'{res_uri}{result.message}') + logger.info(darkgreen('ok ') + f'{res_uri}{result.message}') # NoQA: G003 case _Status.TIMEOUT: if self.app.quiet: msg = 'timeout ' + f'{res_uri}{result.message}' @@ -433,7 +433,7 @@ class HyperlinkAvailabilityCheckWorker(Thread): status, info, code = self._check(docname, uri, hyperlink) if status == _Status.RATE_LIMITED: logger.info( - darkgray('-rate limited- ') + uri + darkgray(' | sleeping...') + darkgray('-rate limited- ') + uri + darkgray(' | sleeping...') # NoQA: G003 ) else: self.rqueue.put(CheckResult(uri, docname, lineno, status, info, code)) diff --git a/sphinx/builders/manpage.py b/sphinx/builders/manpage.py index 899a09433..0ee1a678c 100644 --- a/sphinx/builders/manpage.py +++ b/sphinx/builders/manpage.py @@ -93,7 +93,7 @@ class ManualPageBuilder(Builder): else: targetname = f'{name}.{section}' - logger.info(darkgreen(targetname) + ' { ') + logger.info('%s { ', darkgreen(targetname)) destination = FileOutput( destination_path=os.path.join(self.outdir, targetname), encoding='utf-8', diff --git a/sphinx/builders/singlehtml.py b/sphinx/builders/singlehtml.py index 78b2b0637..efa410f41 100644 --- a/sphinx/builders/singlehtml.py +++ b/sphinx/builders/singlehtml.py @@ -195,7 +195,7 @@ class SingleFileHTMLBuilder(StandaloneHTMLBuilder): # additional pages from conf.py for pagename, template in self.config.html_additional_pages.items(): - logger.info(' ' + pagename, nonl=True) + logger.info(' %s', pagename, nonl=True) self.handle_page(pagename, {}, template) if self.config.html_use_opensearch: diff --git a/sphinx/ext/coverage.py b/sphinx/ext/coverage.py index e23ef561f..c73f75dd9 100644 --- a/sphinx/ext/coverage.py +++ b/sphinx/ext/coverage.py @@ -266,7 +266,7 @@ class CoverageBuilder(Builder): ) else: logger.info( - red('undocumented ') + red('undocumented ') # NoQA: G003 + f'c api {f"{name} [{typ:>9}]":<30}' + red(' - in file ') + filename @@ -459,7 +459,7 @@ class CoverageBuilder(Builder): else: for func in undoc['funcs']: logger.info( - red('undocumented ') + red('undocumented ') # NoQA: G003 + f'py function {func:<30}' + red(' - in module ') + name @@ -479,7 +479,7 @@ class CoverageBuilder(Builder): ) else: logger.info( - red('undocumented ') + red('undocumented ') # NoQA: G003 + f'py class {class_name:<30}' + red(' - in module ') + name @@ -502,7 +502,7 @@ class CoverageBuilder(Builder): else: for meth in methods: logger.info( - red('undocumented ') + red('undocumented ') # NoQA: G003 + f'py method {f"{class_name}.{meth}":<30}' + red(' - in module ') + name diff --git a/sphinx/ext/intersphinx/_load.py b/sphinx/ext/intersphinx/_load.py index a81c6bbb2..f9de28f34 100644 --- a/sphinx/ext/intersphinx/_load.py +++ b/sphinx/ext/intersphinx/_load.py @@ -292,9 +292,9 @@ def _fetch_inventory_group( else: issues = '\n'.join(f[0] % f[1:] for f in failures) LOGGER.warning( - __('failed to reach any of the inventories with the following issues:') - + '\n' - + issues + '%s\n%s', + __('failed to reach any of the inventories with the following issues:'), + issues, ) return updated diff --git a/sphinx/util/display.py b/sphinx/util/display.py index 95cb42bbf..a08b3fac3 100644 --- a/sphinx/util/display.py +++ b/sphinx/util/display.py @@ -40,7 +40,7 @@ def status_iterator( if length == 0: logger.info(bold_summary, nonl=True) for item in iterable: - logger.info(stringify_func(item) + ' ', nonl=True, color=color) + logger.info('%s ', stringify_func(item), nonl=True, color=color) yield item else: for i, item in enumerate(iterable, start=1): @@ -78,14 +78,14 @@ class progress_message: ) -> bool: prefix = '' if self.nonl else bold(self.message + ': ') if isinstance(val, SkipProgressMessage): - logger.info(prefix + __('skipped')) + logger.info(prefix + __('skipped')) # NoQA: G003 if val.args: logger.info(*val.args) return True elif val: - logger.info(prefix + __('failed')) + logger.info(prefix + __('failed')) # NoQA: G003 else: - logger.info(prefix + __('done')) + logger.info(prefix + __('done')) # NoQA: G003 return False diff --git a/sphinx/util/nodes.py b/sphinx/util/nodes.py index 9cc62bc1e..ec7bf4fc5 100644 --- a/sphinx/util/nodes.py +++ b/sphinx/util/nodes.py @@ -471,7 +471,7 @@ def inline_all_toctrees( if includefile not in traversed: try: traversed.append(includefile) - logger.info(indent + colorfunc(includefile)) + logger.info(indent + colorfunc(includefile)) # NoQA: G003 subtree = inline_all_toctrees( builder, docnameset,