Skip to content

Commit 18ead2b

Browse files
committed
warn if compressor and compression; resolves #60
1 parent b1aa5fe commit 18ead2b

File tree

2 files changed

+29
-2
lines changed

2 files changed

+29
-2
lines changed

zarr/creation.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,14 @@ def _handle_kwargs(compressor, fill_value, kwargs):
104104
# to be compatible with h5py, as well as backwards-compatible with Zarr
105105
# 1.x, accept 'compression' and 'compression_opts' keyword arguments
106106

107-
if 'compression' in kwargs:
107+
if compressor != 'default':
108+
# 'compressor' overrides 'compression'
109+
if 'compression' in kwargs:
110+
warn("'compression' keyword argument overridden by 'compressor'")
111+
if 'compression_opts' in kwargs:
112+
warn("ignoring keyword argument 'compression_opts'")
113+
114+
elif 'compression' in kwargs:
108115
compression = kwargs.pop('compression')
109116
compression_opts = kwargs.pop('compression_opts', None)
110117

@@ -143,7 +150,7 @@ def _handle_kwargs(compressor, fill_value, kwargs):
143150

144151
# ignore other keyword arguments
145152
for k in kwargs:
146-
warn('ignoring keyword argument: %r' % k)
153+
warn('ignoring keyword argument %r' % k)
147154

148155
return compressor, fill_value
149156

zarr/tests/test_creation.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -330,3 +330,23 @@ def test_create():
330330
# errors
331331
with assert_raises(ValueError):
332332
create(100, compression=1)
333+
334+
335+
def test_compression_args():
336+
337+
z = create(100, compression='zlib', compression_opts=9)
338+
assert_is_instance(z, Array)
339+
eq('zlib', z.compressor.codec_id)
340+
eq(9, z.compressor.level)
341+
342+
# 'compressor' overrides 'compression'
343+
z = create(100, compressor=Zlib(9), compression='bz2', compression_opts=1)
344+
assert_is_instance(z, Array)
345+
eq('zlib', z.compressor.codec_id)
346+
eq(9, z.compressor.level)
347+
348+
# 'compressor' ignores 'compression_opts'
349+
z = create(100, compressor=Zlib(9), compression_opts=1)
350+
assert_is_instance(z, Array)
351+
eq('zlib', z.compressor.codec_id)
352+
eq(9, z.compressor.level)

0 commit comments

Comments
 (0)