aboutsummaryrefslogtreecommitdiffstats
path: root/setuptools/py31compat.py
diff options
context:
space:
mode:
authorArfrever Frehtes Taifersar Arahesis <Arfrever.FTA@GMail.Com>2014-02-15 22:35:49 +0100
committerArfrever Frehtes Taifersar Arahesis <Arfrever.FTA@GMail.Com>2014-02-15 22:35:49 +0100
commit962664bbb8564ccd3cff8072f20d56a9bdcf3043 (patch)
treef4c0de7d2b0920359057722f4dde879a031dbd0f /setuptools/py31compat.py
parent0daefd2b07a5435b0795f3dd0c3d102352611343 (diff)
downloadexternal_python_setuptools-962664bbb8564ccd3cff8072f20d56a9bdcf3043.tar.gz
external_python_setuptools-962664bbb8564ccd3cff8072f20d56a9bdcf3043.tar.bz2
external_python_setuptools-962664bbb8564ccd3cff8072f20d56a9bdcf3043.zip
Use tempfile.TemporaryDirectory() with Python >=3.2.
Diffstat (limited to 'setuptools/py31compat.py')
-rw-r--r--setuptools/py31compat.py26
1 files changed, 26 insertions, 0 deletions
diff --git a/setuptools/py31compat.py b/setuptools/py31compat.py
index dbb324b0..e6b2910a 100644
--- a/setuptools/py31compat.py
+++ b/setuptools/py31compat.py
@@ -9,3 +9,29 @@ except ImportError:
if name not in ('platlib', 'purelib'):
raise ValueError("Name must be purelib or platlib")
return get_python_lib(name=='platlib')
+
+try:
+ # Python >=3.2
+ from tempfile import TemporaryDirectory
+except ImportError:
+ import shutil
+ import tempfile
+ class TemporaryDirectory(object):
+ """"
+ Very simple temporary directory context manager.
+ Will try to delete afterward, but will also ignore OS and similar
+ errors on deletion.
+ """
+ def __init__(self):
+ self.name = None # Handle mkdtemp raising an exception
+ self.name = tempfile.mkdtemp()
+
+ def __enter__(self):
+ return self.name
+
+ def __exit__(self, exctype, excvalue, exctrace):
+ try:
+ shutil.rmtree(self.name, True)
+ except OSError: #removal errors are not the only possible
+ pass
+ self.name = None