TemporaryFileWrapper: cache the value of os.unlink for use by __del__,
to prevent mysterious errors at shutdown due to "os.unlink" turning into "None.unlink".
This commit is contained in:
parent
99d2fbb823
commit
a255a72f0a
|
@ -128,6 +128,13 @@ class TemporaryFileWrapper:
|
||||||
In particular, it seeks to automatically remove the file when it is
|
In particular, it seeks to automatically remove the file when it is
|
||||||
no longer needed.
|
no longer needed.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# Cache the unlinker so we don't get spurious errors at shutdown
|
||||||
|
# when the module-level "os" in None'd out. Note that this must
|
||||||
|
# be referenced as self.unlink, because the name TemporaryFileWrapper
|
||||||
|
# may also get None'd out before __del__ is called.
|
||||||
|
unlink = os.unlink
|
||||||
|
|
||||||
def __init__(self, file, path):
|
def __init__(self, file, path):
|
||||||
self.file = file
|
self.file = file
|
||||||
self.path = path
|
self.path = path
|
||||||
|
@ -137,7 +144,7 @@ class TemporaryFileWrapper:
|
||||||
if not self.close_called:
|
if not self.close_called:
|
||||||
self.close_called = 1
|
self.close_called = 1
|
||||||
self.file.close()
|
self.file.close()
|
||||||
os.unlink(self.path)
|
self.unlink(self.path)
|
||||||
|
|
||||||
def __del__(self):
|
def __del__(self):
|
||||||
self.close()
|
self.close()
|
||||||
|
|
Loading…
Reference in New Issue