Eryk Sun <eryk...@gmail.com> added the comment:

> So we stop passing the O_TEMPORARY flag. If __enter__() is called, 
> close() closes the file but doesn't delete anything, and 
> __exit__() closes the file (if open) and deletes it (even if it 
> wasn't open). If there is no __enter__(), close() also deletes the 
> file.

This behavior change is fine if O_TEMPORARY isn't used. I wasn't disagreeing 
with Ethan. I was providing a summary of a common use case that conflicts with 
using O_TEMPORARY to make it clear that this flag has to be omitted if we're 
not implementing something like a delete_on_close boolean option.

Most of my last comment, however, was dedicated to implementing TemporaryFile() 
if this change is applied, instead of leaving it as an alias for 
NamedTemporaryFile(). I can't imagine not wanting the guaranteed cleanup 
semantics of O_TEMPORARY in the case of an anonymous temporary file that 
doesn't need to be reopened. I also want O_SHORT_LIVED. This opens the file 
with the attribute FILE_ATTRIBUTE_TEMPORARY [1], which tells the cache manager 
to try to keep the file contents in memory instead of flushing data to disk.

---

[1] 
https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-createfilew#caching_behavior

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue14243>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to