diff options
author | Aleksey Lim <alsroot@sugarlabs.org> | 2014-01-04 14:08:25 (GMT) |
---|---|---|
committer | Aleksey Lim <alsroot@sugarlabs.org> | 2014-01-04 14:08:25 (GMT) |
commit | 5955e4a46d48dd6099e56e17b7fa545be46de540 (patch) | |
tree | 44ae6e2bf357d7d63886b16d0571ba60155f31be /sugar_network/toolkit/bundle.py | |
parent | d58594abe1b9b1f3faf041c418c6d1a57b68ccc7 (diff) |
Populate Implementation.notes by CHANGELOG content from newly uploaded bundles
Diffstat (limited to 'sugar_network/toolkit/bundle.py')
-rw-r--r-- | sugar_network/toolkit/bundle.py | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/sugar_network/toolkit/bundle.py b/sugar_network/toolkit/bundle.py index 7d484ad..70ecd57 100644 --- a/sugar_network/toolkit/bundle.py +++ b/sugar_network/toolkit/bundle.py @@ -66,7 +66,7 @@ class Bundle(object): return self._do_extract(name, dst_path) def extractfile(self, name): - return self._do_extractfile(name) + return _File(self._do_extractfile(name)) def extractall(self, dst_root, members=None, prefix=None): if not prefix: @@ -85,7 +85,8 @@ class Bundle(object): if not exists(dirname(dst_path)): os.makedirs(dirname(dst_path)) with file(dst_path, 'wb') as dst: - shutil.copyfileobj(self.extractfile(arcname), dst) + with self.extractfile(arcname) as src: + shutil.copyfileobj(src, dst) except Exception: if exists(dst_root): shutil.rmtree(dst_root) @@ -164,3 +165,18 @@ class _ZipInfo(object): @property def size(self): return self._info.file_size + + +class _File(object): + + def __init__(self, fileobj): + self._fileobj = fileobj + + def __getattr__(self, name): + return getattr(self._fileobj, name) + + def __enter__(self): + return self + + def __exit__(self, *args): + self._fileobj.close() |