#!/usr/bin/env python3 import os import sys try: from tempfile import TemporaryDirectory except ImportError: import shutil import tempfile class TemporaryDirectory(object): def __init__(self, suffix='', prefix='tmp', dir=None): self.name = tempfile.mkdtemp(suffix, prefix, dir) def __del__(self): self.cleanup() def __enter__(self): return self.name def __exit__(self, exc, value, tb): self.cleanup() def cleanup(self): if self.name: shutil.rmtree(self.name) self.name = None if sys.version_info >= (3, 0): from os import makedirs else: def makedirs(path, exist_ok): if exist_ok and os.path.exists(path): return return os.makedirs(path) if sys.version_info >= (3, 0): from io import StringIO else: from StringIO import StringIO try: from unittest.mock import patch except ImportError: import contextlib @contextlib.contextmanager def patch(target, mock): obj, attr = target.rsplit('.') obj = __import__(obj) original_value = getattr(obj, attr) setattr(obj, attr, mock) try: yield finally: setattr(obj, attr, original_value)