consider-using-with / R1732#

Message emitted:

Consider using 'with' for resource-allocating operations

Description:

Emitted if a resource-allocating assignment or call may be replaced by a 'with' block. By using 'with' the release of the allocated resources is ensured even in the case of an exception.

Correct code:

with open("foo.txt", "r", encoding="utf8") as file:
    contents = file.read()

Problematic code:

file = open("foo.txt", "r", encoding="utf8")  # [consider-using-with]
contents = file.read()
file.close()

Additional details:

This message applies to callables of Python's stdlib which can be replaced by a with statement. It is suppressed in the following cases:

  • the call is located inside a context manager

  • the call result is returned from the enclosing function

  • the call result is used in a with statement itself

Related links:

Created by the refactoring checker.