assignment-in-assert (RUF018)
What it does
Checks for named assignment expressions (e.g., x := 0
) in assert
statements.
Why is this bad?
Named assignment expressions (also known as "walrus operators") are used to assign a value to a variable as part of a larger expression.
Named assignments are syntactically valid in assert
statements. However,
when the Python interpreter is run under the -O
flag, assert
statements
are not executed. In this case, the named assignment will also be ignored,
which may result in unexpected behavior (e.g., undefined variable
accesses).
Examples
Use instead:
The rule avoids flagging named expressions that define variables which are
only referenced from inside assert
statements; the following will not
trigger the rule:
Nor will this: