ID: py/str-format/missing-named-argument Kind: problem Security severity: Severity: error Precision: high Tags: - quality - reliability - correctness Query suites: - python-code-quality.qls - python-security-and-quality.qls
Click to see the query in the CodeQL repository
A formatting expression, that is an expression of the form the_format.format(args) or format(the_format, args), can use named fields. If it does, then keyword arguments must be supplied for all named fields. If any of the keyword arguments are missing then a KeyError will be raised.
Recommendation¶
Change the format to match the arguments and ensure that the arguments have the correct names.
Example¶
In the following example, if unlikely_condition() is true, then a KeyError will be raised as the keyword parameter eggs is missing. Adding a keyword parameter named eggs would fix this.
def unsafe_named_format(): the_format = "{spam} {eggs}" if unlikely_condition(): return the_format.format(spam="spam", completely_different="eggs") else: return the_format.format(spam="spam", eggs="eggs")
References¶
Python Library Reference: String Formatting.