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:
Context managers in Python by John Lekberg
Created by the refactoring checker.