New submission from Brian McCutchon <bmccutc...@google.com>:
Consider the following code: # Copyright 2021 Google LLC. # SPDX-License-Identifier: Apache-2.0 import contextlib import os @contextlib.contextmanager def my_tmp_file(): with tempfile.NamedTemporaryFile('w') as f: yield f os.stat(my_tmp_file().__enter__().name) # File not found os.stat(contextlib.ExitStack().enter_context(my_tmp_file()).name) # Same I would expect the file to still exist, as __exit__ has not been called and I can't see why the file would have been closed. Also, it performs as expected when using NamedTemporaryFile directly, but not when it is nested in another context manager. It also performs as expected when my_tmp_file() or contextlib.ExitStack() is used in a "with" statement. ---------- components: Library (Lib) messages: 406494 nosy: Brian McCutchon priority: normal severity: normal status: open title: NamedTemporaryFile deleted before enclosing context manager exit type: behavior versions: Python 3.9 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue45833> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com