Skip to content

Commit ca737be

Browse files
committed
-
1 parent 98a0bf1 commit ca737be

File tree

4 files changed

+70
-4
lines changed

4 files changed

+70
-4
lines changed

python_toolbox/zip_tools.py

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@
66
from __future__ import with_statement
77

88
import contextlib
9-
import zipfile
9+
import zipfile as zip_module
1010
import os.path
11+
import cStringIO as string_io_module
1112
import re
1213
import fnmatch
1314

@@ -35,7 +36,7 @@ def zip_folder(folder, zip_path, ignored_patterns=()):
3536
source_folder_name = os.path.split(source_folder)[1]
3637

3738
with contextlib.closing(
38-
zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED)
39+
zip_module.ZipFile(zip_path, 'w', zip_module.ZIP_DEFLATED)
3940
) as zip_file:
4041

4142
for root, subfolders, files in os.walk(source_folder):
@@ -53,4 +54,43 @@ def zip_folder(folder, zip_path, ignored_patterns=()):
5354
absolute_file_path[(len(source_folder) + len(os.sep)):]
5455
)
5556

56-
zip_file.write(absolute_file_path, destination_file_path)
57+
zip_file.write(absolute_file_path, destination_file_path)
58+
59+
60+
def zip_in_memory(files):
61+
zip_stream = string_io_module.StringIO()
62+
with zip_module.ZipFile(zip_stream, mode='w',
63+
compression=zip_module.ZIP_DEFLATED) as zip_file:
64+
assert isinstance(zip_file, zip_module.ZipFile)
65+
for file_name, file_data in files:
66+
zip_file.writestr(file_name, file_data)
67+
68+
return zip_stream.getvalue()
69+
70+
def unzip_in_memory(zip_archive):
71+
zip_stream = string_io_module.StringIO(zip_archive)
72+
with zip_module.ZipFile(zip_stream, mode='r',
73+
compression=zip_module.ZIP_DEFLATED) as zip_file:
74+
assert isinstance(zip_file, zip_module.ZipFile)
75+
return tuple((file_name, zip_file.read(file_name)) for file_name in
76+
zip_file.namelist)
77+
78+
79+
80+
81+
82+
83+
84+
85+
86+
87+
88+
89+
90+
91+
92+
93+
94+
95+
96+

test_python_toolbox/test_import_tools/test_exists/test_zip.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,5 @@ def test_zip():
5050
assert zip_imported_module_bla_bla.__doc__ == \
5151
('Module for testing `import_tools.exists` on zip-archived '
5252
'modules.')
53-
53+
54+

test_python_toolbox/test_zip_tools/__init__.py

Whitespace-only changes.
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
from __future__ import with_statement
2+
3+
from python_toolbox import tracing_tools
4+
5+
6+
def my_function():
7+
''' '''
8+
9+
def test():
10+
''' '''
11+
12+
with tracing_tools.TempFunctionCallCounter(my_function) as \
13+
temp_function_call_counter:
14+
assert temp_function_call_counter.call_count == 0
15+
my_function()
16+
assert temp_function_call_counter.call_count == 1
17+
my_function()
18+
my_function()
19+
my_function()
20+
assert temp_function_call_counter.call_count == 4
21+
22+
assert temp_function_call_counter.call_count == 4
23+
my_function()
24+
assert temp_function_call_counter.call_count == 4
25+

0 commit comments

Comments
 (0)