diff options
author | Arfrever Frehtes Taifersar Arahesis <Arfrever.FTA@GMail.Com> | 2014-02-15 22:35:49 +0100 |
---|---|---|
committer | Arfrever Frehtes Taifersar Arahesis <Arfrever.FTA@GMail.Com> | 2014-02-15 22:35:49 +0100 |
commit | 962664bbb8564ccd3cff8072f20d56a9bdcf3043 (patch) | |
tree | f4c0de7d2b0920359057722f4dde879a031dbd0f /setuptools/py31compat.py | |
parent | 0daefd2b07a5435b0795f3dd0c3d102352611343 (diff) | |
download | external_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.py | 26 |
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 |