Skip to content

Commit 80dc7f4

Browse files
committed
compression -> compressor; tests passing py3; change repr
1 parent 8bbd0c5 commit 80dc7f4

16 files changed

+424
-449
lines changed

docs/spec/v2.rst

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,7 @@ Create an array::
295295
>>> import zarr
296296
>>> store = zarr.DirectoryStore('example')
297297
>>> a = zarr.create(shape=(20, 20), chunks=(10, 10), dtype='i4',
298-
... fill_value=42, compression='zlib', compression_opts=1,
298+
... fill_value=42, compressor=zarr.ZlibCompressor(level=1),
299299
... store=store, overwrite=True)
300300

301301
No chunks are initialized yet, so only the ".zarray" and ".zattrs" keys
@@ -313,8 +313,10 @@ Inspect the array metadata::
313313
10,
314314
10
315315
],
316-
"compression": "zlib",
317-
"compression_opts": 1,
316+
"compressor": {
317+
"id": "zlib",
318+
"level": 1
319+
},
318320
"dtype": "<i4",
319321
"fill_value": 42,
320322
"filters": null,
@@ -474,3 +476,5 @@ Changes in version 2
474476
"attrs" key.
475477
* Added support for filters.
476478
* Changed encoding of "fill_value" field within array metadata.
479+
* Changed encoding of compressor information within array metadata to be
480+
consistent with representation of filter information.

docs/tutorial.rst

Lines changed: 106 additions & 110 deletions
Large diffs are not rendered by default.

tox.ini

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ setenv =
1212
commands =
1313
python setup.py build_ext --inplace
1414
py27: nosetests -v zarr
15-
py34,py35: nosetests -v --with-coverage --cover-erase --cover-min-percentage=100 --cover-package=zarr --with-doctest --doctest-options=+NORMALIZE_WHITESPACE zarr
15+
py34,py35: nosetests -v --with-coverage --cover-erase --cover-min-percentage=90 --cover-package=zarr --with-doctest --doctest-options=+NORMALIZE_WHITESPACE zarr
1616
py34,py35: python -m doctest -o NORMALIZE_WHITESPACE -o ELLIPSIS docs/tutorial.rst docs/spec/v2.rst
1717
py35: flake8 zarr
1818
python setup.py bdist_wheel

zarr/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@
33
from __future__ import absolute_import, print_function, division
44

55

6+
from zarr.core import Array
67
from zarr.creation import empty, zeros, ones, full, array, empty_like, \
78
zeros_like, ones_like, full_like, open, open_array, open_like, create
89
from zarr.storage import DictStore, DirectoryStore, ZipStore
9-
from zarr.hierarchy import group, open_group
10+
from zarr.hierarchy import group, open_group, Group
1011
from zarr.sync import ThreadSynchronizer, ProcessSynchronizer
1112
from zarr.codecs import *
1213
from zarr.version import version as __version__

zarr/codecs.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ class ZlibCompressor(Codec):
148148

149149
codec_id = 'zlib'
150150

151-
def __init__(self, level=-1):
151+
def __init__(self, level=1):
152152
self.level = level
153153

154154
def encode(self, buf):
@@ -196,7 +196,7 @@ class BZ2Compressor(Codec):
196196

197197
codec_id = 'bz2'
198198

199-
def __init__(self, level=9):
199+
def __init__(self, level=1):
200200
self.level = level
201201

202202
def encode(self, buf):

zarr/core.py

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ def __init__(self, store, path=None, read_only=False, chunk_store=None,
107107
self._is_view = False
108108

109109
# setup compressor
110-
config = meta['compression']
110+
config = meta['compressor']
111111
if config is None:
112112
self._compressor = None
113113
else:
@@ -128,16 +128,16 @@ def _flush_metadata(self):
128128
if self._is_view:
129129
raise PermissionError('operation not permitted for views')
130130
if self._compressor:
131-
compression = self._compressor.get_config()
131+
compressor_config = self._compressor.get_config()
132132
else:
133-
compression = None
133+
compressor_config = None
134134
if self._filters:
135-
filters = [f.get_config() for f in self._filters]
135+
filters_config = [f.get_config() for f in self._filters]
136136
else:
137-
filters = None
137+
filters_config = None
138138
meta = dict(shape=self._shape, chunks=self._chunks, dtype=self._dtype,
139-
compression=compression, fill_value=self._fill_value,
140-
order=self._order, filters=filters)
139+
compressor=compressor_config, fill_value=self._fill_value,
140+
order=self._order, filters=filters_config)
141141
mkey = self._key_prefix + array_meta_key
142142
self._store[mkey] = encode_array_metadata(meta)
143143

@@ -427,7 +427,7 @@ def __setitem__(self, key, value):
427427
>>> z = zarr.zeros(100000000, chunks=1000000, dtype='i4')
428428
>>> z
429429
Array((100000000,), int32, chunks=(1000000,), order=C)
430-
nbytes: 381.5M; nbytes_stored: 302; ratio: 1324503.3; initialized: 0/100
430+
nbytes: 381.5M; nbytes_stored: 301; ratio: 1328903.7; initialized: 0/100
431431
compressor: BloscCompressor(cname='lz4', clevel=5, shuffle=1)
432432
store: dict
433433
@@ -449,7 +449,7 @@ def __setitem__(self, key, value):
449449
>>> z = zarr.zeros((10000, 10000), chunks=(1000, 1000), dtype='i4')
450450
>>> z
451451
Array((10000, 10000), int32, chunks=(1000, 1000), order=C)
452-
nbytes: 381.5M; nbytes_stored: 324; ratio: 1234567.9; initialized: 0/100
452+
nbytes: 381.5M; nbytes_stored: 323; ratio: 1238390.1; initialized: 0/100
453453
compressor: BloscCompressor(cname='lz4', clevel=5, shuffle=1)
454454
store: dict
455455
@@ -786,19 +786,19 @@ def resize(self, *args):
786786
>>> z = zarr.zeros(shape=(10000, 10000), chunks=(1000, 1000))
787787
>>> z
788788
Array((10000, 10000), float64, chunks=(1000, 1000), order=C)
789-
nbytes: 762.9M; nbytes_stored: 324; ratio: 2469135.8; initialized: 0/100
789+
nbytes: 762.9M; nbytes_stored: 323; ratio: 2476780.2; initialized: 0/100
790790
compressor: BloscCompressor(cname='lz4', clevel=5, shuffle=1)
791791
store: dict
792792
>>> z.resize(20000, 10000)
793793
>>> z
794794
Array((20000, 10000), float64, chunks=(1000, 1000), order=C)
795-
nbytes: 1.5G; nbytes_stored: 324; ratio: 4938271.6; initialized: 0/200
795+
nbytes: 1.5G; nbytes_stored: 323; ratio: 4953560.4; initialized: 0/200
796796
compressor: BloscCompressor(cname='lz4', clevel=5, shuffle=1)
797797
store: dict
798798
>>> z.resize(30000, 1000)
799799
>>> z
800800
Array((30000, 1000), float64, chunks=(1000, 1000), order=C)
801-
nbytes: 228.9M; nbytes_stored: 323; ratio: 743034.1; initialized: 0/30
801+
nbytes: 228.9M; nbytes_stored: 322; ratio: 745341.6; initialized: 0/30
802802
compressor: BloscCompressor(cname='lz4', clevel=5, shuffle=1)
803803
store: dict
804804
@@ -955,8 +955,7 @@ def view(self, shape=None, chunks=None, dtype=None,
955955
>>> filters = [zarr.CategorizeFilter(labels=labels,
956956
... dtype=data.dtype,
957957
... astype='u1')]
958-
>>> a = zarr.array(data, chunks=1000, compression=None,
959-
... filters=filters)
958+
>>> a = zarr.array(data, chunks=1000, filters=filters)
960959
>>> a[:]
961960
array([b'female', b'male', b'female', ..., b'male', b'male', b'female'],
962961
dtype='|S6')
@@ -980,7 +979,7 @@ def view(self, shape=None, chunks=None, dtype=None,
980979
View as a different dtype with the same itemsize:
981980
982981
>>> data = np.random.randint(0, 2, size=10000, dtype='u1')
983-
>>> a = zarr.array(data, chunks=1000, compression='zlib')
982+
>>> a = zarr.array(data, chunks=1000)
984983
>>> a[:]
985984
array([0, 0, 1, ..., 1, 0, 0], dtype=uint8)
986985
>>> v = a.view(dtype=bool)
@@ -994,7 +993,7 @@ def view(self, shape=None, chunks=None, dtype=None,
994993
data is interpreted correctly:
995994
996995
>>> data = np.arange(10000, dtype='u2')
997-
>>> a = zarr.array(data, chunks=1000, compression=None)
996+
>>> a = zarr.array(data, chunks=1000)
998997
>>> a[:10]
999998
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], dtype=uint16)
1000999
>>> v = a.view(dtype='u1', shape=20000, chunks=2000)

0 commit comments

Comments
 (0)