assignment-in-assert (RUF018)
Added in v0.2.0 · Related issues · View source
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).
Example
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: