astral-sh/ruff · error
Expected one simple statement
Error message
Expected one simple statement
What it means
An anyhow bail! in the PT018 composite-condition fixer: after extracting the embedded statement, the block does not contain exactly one simple statement line, so the fixer cannot locate the assert to rewrite and aborts.
Source
Thrown at crates/ruff_linter/src/rules/flake8_pytest_style/rules/assertion.rs:769
let mut tree = match_module(&module_text)?;
// Extract the assert statement.
let statements = if outer_indent.is_empty() {
&mut tree.body
} else {
let [Statement::Compound(CompoundStatement::FunctionDef(embedding))] = &mut *tree.body
else {
bail!("Expected statement to be embedded in a function definition")
};
let indented_block = match_indented_block(&mut embedding.body)?;
indented_block.indent = Some(outer_indent);
&mut indented_block.body
};
let [Statement::Simple(simple_statement_line)] = statements.as_slice() else {
bail!("Expected one simple statement")
};
let [SmallStatement::Assert(assert_statement)] = simple_statement_line.body.as_slice() else {
bail!("Expected simple statement to be an assert")
};
// Extract the individual conditions.
let mut conditions: Vec<Expression> = Vec::with_capacity(2);
match &assert_statement.test {
Expression::UnaryOperation(op) => {
if matches!(op.operator, libcst_native::UnaryOp::Not { .. }) {
if let Expression::BooleanOperation(boolean_operation) = &*op.expression {
if matches!(boolean_operation.operator, BooleanOp::Or { .. }) {
conditions.push(negate(&parenthesize(
&boolean_operation.left,
&op.expression,
)));
conditions.push(negate(&parenthesize(View on GitHub (pinned to 26f38c119c)
Solutions
- Ensure the reconstruction only wraps single-statement bodies
- Skip the autofix when more than one simple statement is present
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at crates/ruff_linter/src/rules/flake8_pytest_style/rules/assertion.rs:769 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of astral-sh/ruff@26f38c119c (2026-09-05).
Data as JSON: /api/errors/81202ac71dd7caee.
Report an issue: GitHub.