Fix usages of NamedTemporaryFiles on Windows #486
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixed usages of NamedTemporaryFiles on Windows to avoid permissions errors.
Please describe the changes in your request.
A common pattern in the OFRAK codebase is opening a
tempfile.NamedTemporaryFile
, writing some data to it, callingflush()
, then calling an external tool on the temporary file. Unfortunately, this always causes a permissions error on Windows because two processes can't have the same file open at the same time. The solution is to close the temporary file, without deleting it, before handing it off to the external tool. This behavior wasn't supported bytempfile.NamedTemporaryFile
before Python 3.12 introduced thedelete_on_close
parameter (python/cpython#58451).This PR
tempfile.py
from Python 3.12 toofrak/tempfile.py
and setsdelete_on_close
to default toFalse
inNamedTemporaryFile
.tempfile
toofrak.tempfile
.flush()
to.close()
insidewith NamedTemporaryFile()
blocksZstdPacker
andZstdUnpacker
to use stdin/stdout directly instead of writing to temporary filesAnyone you think should look at this, specifically?
@whyitfor