| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 | 
							- import os
 
- import io
 
- import contextlib
 
- import tempfile
 
- import shutil
 
- import errno
 
- import zipfile
 
- @contextlib.contextmanager
 
- def tempdir():
 
-     """Create a temporary directory in a context manager."""
 
-     td = tempfile.mkdtemp()
 
-     try:
 
-         yield td
 
-     finally:
 
-         shutil.rmtree(td)
 
- def mkdir_p(*args, **kwargs):
 
-     """Like `mkdir`, but does not raise an exception if the
 
-     directory already exists.
 
-     """
 
-     try:
 
-         return os.mkdir(*args, **kwargs)
 
-     except OSError as exc:
 
-         if exc.errno != errno.EEXIST:
 
-             raise
 
- def dir_to_zipfile(root):
 
-     """Construct an in-memory zip file for a directory."""
 
-     buffer = io.BytesIO()
 
-     zip_file = zipfile.ZipFile(buffer, 'w')
 
-     for root, dirs, files in os.walk(root):
 
-         for path in dirs:
 
-             fs_path = os.path.join(root, path)
 
-             rel_path = os.path.relpath(fs_path, root)
 
-             zip_file.writestr(rel_path + '/', '')
 
-         for path in files:
 
-             fs_path = os.path.join(root, path)
 
-             rel_path = os.path.relpath(fs_path, root)
 
-             zip_file.write(fs_path, rel_path)
 
-     return zip_file
 
 
  |