assert-with-print-message (RUF030)
Fix is always available.
This rule is unstable and in preview. The --preview
flag is required for use.
What it does
Checks for uses of assert expression, print(message)
.
Why is this bad?
The return value of the second expression is used as the contents of the
AssertionError
raised by the assert
statement. Using a print
expression
in this context will output the message to stdout
, before raising an
empty AssertionError(None)
.
Instead, remove the print
and pass the message directly as the second
expression, allowing stderr
to capture the message in a well-formatted context.
Example
Use instead:
Fix safety
This rule's fix is marked as unsafe, as changing the second expression
will result in a different AssertionError
message being raised, as well as
a change in stdout
output.