Zachary Ware <zachary.w...@gmail.com> added the comment:

It's a bit convoluted, but the file is actually deleted before the `os.stat` 
call.  Because there are no references to anything but the `name` (which is 
just a string), the `_GeneratorContextManager` (result of `my_tmp_file`) and 
the `_TemporaryFileWrapper` (result of `my_tmp_file().__enter__()`) are both 
destroyed.  Because `NamedTemporaryFile` is called with `delete=True` 
(default), the `_TemporaryFileWrapper` has a `_closer` attribute which is a 
`_TemporaryFileCloser`, which calls `self.close()` in `__del__`, which deletes 
the file.

If a reference to the result of `my_tmp_file()` is saved anywhere along the 
way, none of the objects are destroyed and the file still exists.  This also 
wouldn't happen in an implementation without reference counting.

----------
nosy: +zach.ware
resolution:  -> not a bug
status: open -> pending

_______________________________________
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

Reply via email to