Prefer f-strings and non-printf-style format #2122
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
From #2100 (comment)
Prefer "f-strings" (
f"{str}"
) >str.format("")
> "printf
-style" ("%s" % str
)Due to the sheer number of changes (994), I'm keeping this PR to automated changes only. Ran using
ruff . --select=UP030,UP031,UP032 --exclude=Pythonwin/Scintilla --exclude=adodbapi --fix
thenblack .
(Ruff re-implements pyupgrade and is configurable)Ruff explicitly won't make a change if it can't ensure the type of the format value (ie, is it a tuple or a string?) or if the argument count doesn't match. This leaves 580 instances of printf-style format in non-adodbapi and non Scintilla-vendored code.
https://docs.astral.sh/ruff/rules/format-literals/#why-is-this-bad
https://docs.astral.sh/ruff/rules/printf-string-formatting/#why-is-this-bad
https://docs.astral.sh/ruff/rules/f-string/#why-is-this-bad
https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting