Skip to content

Commit 666186f

Browse files
committed
Merge branch 'chore/handle-numcodecs-codecs' of github.com:d-v-b/zarr-python into feat/v2-v3-codecs
2 parents de9e3dd + e3e1216 commit 666186f

File tree

14 files changed

+921
-33
lines changed

14 files changed

+921
-33
lines changed

changes/3367.bugfix.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Added `zarr.errors.ArrayNotFoundError`, which is raised when attempting to open a zarr array that does not exist, and `zarr.errors.NodeNotFoundError`, which is raised when failing to open an array or a group in a context where either an array or a group was expected.

changes/3376.misc.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Define Zarr V3-specific codecs from numcodecs inside this repo. These codecs can be found in
2+
:mod:`zarr.codecs.numcodecs`. This is necessary to resolve a circular dependency between Zarr
3+
and Numcodecs.

docs/user-guide/config.rst

Lines changed: 31 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -42,23 +42,43 @@ requires the value of ``codecs.bytes.name`` to be ``'custompackage.NewBytesCodec
4242
This is the current default configuration::
4343

4444
>>> zarr.config.pprint()
45-
{'array': {'order': 'C',
46-
'write_empty_chunks': False},
47-
'async': {'concurrency': 10, 'timeout': None},
48-
'buffer': 'zarr.buffer.cpu.Buffer',
49-
'codec_pipeline': {'batch_size': 1,
50-
'path': 'zarr.core.codec_pipeline.BatchedCodecPipeline'},
51-
'codecs': {'blosc': 'zarr.codecs.blosc.BloscCodec',
45+
{'array': {'order': 'C', 'write_empty_chunks': False},
46+
'async': {'concurrency': 10, 'timeout': None},
47+
'buffer': 'zarr.buffer.cpu.Buffer',
48+
'codec_pipeline': {'batch_size': 1,
49+
'path': 'zarr.core.codec_pipeline.BatchedCodecPipeline'},
50+
'codecs': {'blosc': 'zarr.codecs.blosc.BloscCodec',
5251
'bytes': 'zarr.codecs.bytes.BytesCodec',
5352
'crc32c': 'zarr.codecs.crc32c_.Crc32cCodec',
5453
'endian': 'zarr.codecs.bytes.BytesCodec',
5554
'gzip': 'zarr.codecs.gzip.GzipCodec',
55+
'numcodecs.adler32': 'zarr.codecs.numcodecs.Adler32',
56+
'numcodecs.astype': 'zarr.codecs.numcodecs.AsType',
57+
'numcodecs.bitround': 'zarr.codecs.numcodecs.BitRound',
58+
'numcodecs.blosc': 'zarr.codecs.numcodecs.Blosc',
59+
'numcodecs.bz2': 'zarr.codecs.numcodecs.BZ2',
60+
'numcodecs.crc32': 'zarr.codecs.numcodecs.CRC32',
61+
'numcodecs.crc32c': 'zarr.codecs.numcodecs.CRC32C',
62+
'numcodecs.delta': 'zarr.codecs.numcodecs.Delta',
63+
'numcodecs.fixedscaleoffset': 'zarr.codecs.numcodecs.FixedScaleOffset',
64+
'numcodecs.fletcher32': 'zarr.codecs.numcodecs.Fletcher32',
65+
'numcodecs.gZip': 'zarr.codecs.numcodecs.GZip',
66+
'numcodecs.jenkins_lookup3': 'zarr.codecs.numcodecs.JenkinsLookup3',
67+
'numcodecs.lz4': 'zarr.codecs.numcodecs.LZ4',
68+
'numcodecs.lzma': 'zarr.codecs.numcodecs.LZMA',
69+
'numcodecs.packbits': 'zarr.codecs.numcodecs.PackBits',
70+
'numcodecs.pcodec': 'zarr.codecs.numcodecs.PCodec',
71+
'numcodecs.quantize': 'zarr.codecs.numcodecs.Quantize',
72+
'numcodecs.shuffle': 'zarr.codecs.numcodecs.Shuffle',
73+
'numcodecs.zfpy': 'zarr.codecs.numcodecs.ZFPY',
74+
'numcodecs.zlib': 'zarr.codecs.numcodecs.Zlib',
75+
'numcodecs.zstd': 'zarr.codecs.numcodecs.Zstd',
5676
'sharding_indexed': 'zarr.codecs.sharding.ShardingCodec',
5777
'transpose': 'zarr.codecs.transpose.TransposeCodec',
5878
'vlen-bytes': 'zarr.codecs.vlen_utf8.VLenBytesCodec',
5979
'vlen-utf8': 'zarr.codecs.vlen_utf8.VLenUTF8Codec',
6080
'zstd': 'zarr.codecs.zstd.ZstdCodec'},
61-
'default_zarr_format': 3,
62-
'json_indent': 2,
63-
'ndbuffer': 'zarr.buffer.cpu.NDBuffer',
64-
'threading': {'max_workers': None}}
81+
'default_zarr_format': 3,
82+
'json_indent': 2,
83+
'ndbuffer': 'zarr.buffer.cpu.NDBuffer',
84+
'threading': {'max_workers': None}}

src/zarr/api/asynchronous.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
)
4040
from zarr.core.metadata import ArrayMetadataDict, ArrayV2Metadata, ArrayV3Metadata
4141
from zarr.errors import (
42+
ArrayNotFoundError,
4243
GroupNotFoundError,
4344
NodeTypeValidationError,
4445
ZarrDeprecationWarning,
@@ -1257,7 +1258,7 @@ async def open_array(
12571258

12581259
try:
12591260
return await AsyncArray.open(store_path, zarr_format=zarr_format)
1260-
except FileNotFoundError:
1261+
except FileNotFoundError as err:
12611262
if not store_path.read_only and mode in _CREATE_MODES:
12621263
overwrite = _infer_overwrite(mode)
12631264
_zarr_format = zarr_format or _default_zarr_format()
@@ -1267,7 +1268,7 @@ async def open_array(
12671268
overwrite=overwrite,
12681269
**kwargs,
12691270
)
1270-
raise
1271+
raise ArrayNotFoundError(store_path.store, store_path.path) from err
12711272

12721273

12731274
async def open_like(
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
from __future__ import annotations
2+
3+
from zarr.codecs.numcodecs._codecs import (
4+
BZ2,
5+
CRC32,
6+
CRC32C,
7+
LZ4,
8+
LZMA,
9+
ZFPY,
10+
Adler32,
11+
AsType,
12+
BitRound,
13+
Blosc,
14+
Delta,
15+
FixedScaleOffset,
16+
Fletcher32,
17+
GZip,
18+
JenkinsLookup3,
19+
PackBits,
20+
PCodec,
21+
Quantize,
22+
Shuffle,
23+
Zlib,
24+
Zstd,
25+
_NumcodecsArrayArrayCodec,
26+
_NumcodecsArrayBytesCodec,
27+
_NumcodecsBytesBytesCodec,
28+
_NumcodecsCodec,
29+
)
30+
from zarr.registry import register_codec
31+
32+
register_codec("numcodecs.bz2", BZ2, qualname="zarr.codecs.numcodecs.BZ2")
33+
register_codec("numcodecs.crc32", CRC32, qualname="zarr.codecs.numcodecs.CRC32")
34+
register_codec("numcodecs.crc32c", CRC32C, qualname="zarr.codecs.numcodecs.CRC32C")
35+
register_codec("numcodecs.lz4", LZ4, qualname="zarr.codecs.numcodecs.LZ4")
36+
register_codec("numcodecs.lzma", LZMA, qualname="zarr.codecs.numcodecs.LZMA")
37+
register_codec("numcodecs.zfpy", ZFPY, qualname="zarr.codecs.numcodecs.ZFPY")
38+
register_codec("numcodecs.adler32", Adler32, qualname="zarr.codecs.numcodecs.Adler32")
39+
register_codec("numcodecs.astype", AsType, qualname="zarr.codecs.numcodecs.AsType")
40+
register_codec("numcodecs.bitround", BitRound, qualname="zarr.codecs.numcodecs.BitRound")
41+
register_codec("numcodecs.blosc", Blosc, qualname="zarr.codecs.numcodecs.Blosc")
42+
register_codec("numcodecs.delta", Delta, qualname="zarr.codecs.numcodecs.Delta")
43+
register_codec(
44+
"numcodecs.fixedscaleoffset",
45+
FixedScaleOffset,
46+
qualname="zarr.codecs.numcodecs.FixedScaleOffset",
47+
)
48+
register_codec("numcodecs.fletcher32", Fletcher32, qualname="zarr.codecs.numcodecs.Fletcher32")
49+
register_codec("numcodecs.gzip", GZip, qualname="zarr.codecs.numcodecs.GZip")
50+
register_codec(
51+
"numcodecs.jenkins_lookup3", JenkinsLookup3, qualname="zarr.codecs.numcodecs.JenkinsLookup3"
52+
)
53+
register_codec("numcodecs.pcodec", PCodec, qualname="zarr.codecs.numcodecs.pcodec")
54+
register_codec("numcodecs.packbits", PackBits, qualname="zarr.codecs.numcodecs.PackBits")
55+
register_codec("numcodecs.quantize", Quantize, qualname="zarr.codecs.numcodecs.Quantize")
56+
register_codec("numcodecs.shuffle", Shuffle, qualname="zarr.codecs.numcodecs.Shuffle")
57+
register_codec("numcodecs.zlib", Zlib, qualname="zarr.codecs.numcodecs.Zlib")
58+
register_codec("numcodecs.zstd", Zstd, qualname="zarr.codecs.numcodecs.Zstd")
59+
60+
__all__ = [
61+
"BZ2",
62+
"CRC32",
63+
"CRC32C",
64+
"LZ4",
65+
"LZMA",
66+
"ZFPY",
67+
"Adler32",
68+
"AsType",
69+
"BitRound",
70+
"Blosc",
71+
"Delta",
72+
"FixedScaleOffset",
73+
"Fletcher32",
74+
"GZip",
75+
"JenkinsLookup3",
76+
"PCodec",
77+
"PackBits",
78+
"Quantize",
79+
"Shuffle",
80+
"Zlib",
81+
"Zstd",
82+
"_NumcodecsArrayArrayCodec",
83+
"_NumcodecsArrayBytesCodec",
84+
"_NumcodecsBytesBytesCodec",
85+
"_NumcodecsCodec",
86+
]

0 commit comments

Comments
 (0)