multiple-with-statements (SIM117)
Derived from the flake8-simplify linter.
Fix is sometimes available.
What it does
Checks for the unnecessary nesting of multiple consecutive context managers.
Why is this bad?
In Python 3, a single with
block can include multiple context
managers.
Combining multiple context managers into a single with
statement
will minimize the indentation depth of the code, making it more
readable.
The following context managers are exempt when used as standalone statements:
anyio
.{CancelScope
,fail_after
,move_on_after
}asyncio
.{timeout
,timeout_at
}trio
.{fail_after
,fail_at
,move_on_after
,move_on_at
}
Example
Use instead: