dot-format-in-exception (EM103)
Derived from the flake8-errmsg linter.
Fix is sometimes available.
What it does
Checks for the use of .format
calls on string literals in exception
constructors.
Why is this bad?
Python includes the raise
in the default traceback (and formatters
like Rich and IPython do too).
By using a .format
call, the error message will be duplicated in the
traceback, which can make the traceback less readable.
Example
Given:
Python will produce a traceback like:
Traceback (most recent call last):
File "tmp.py", line 2, in <module>
raise RuntimeError("'{}' is incorrect".format(sub))
RuntimeError: 'Some value' is incorrect
Instead, assign the string to a variable:
Which will produce a traceback like: