numcodecs 0.13.1__cp312-cp312-win_amd64.whl → 0.14.1__cp312-cp312-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of numcodecs might be problematic. Click here for more details.
- numcodecs/__init__.py +12 -6
- numcodecs/_shuffle.cp312-win_amd64.pyd +0 -0
- numcodecs/abc.py +2 -1
- numcodecs/bitround.py +2 -1
- numcodecs/blosc.cp312-win_amd64.pyd +0 -0
- numcodecs/checksum32.py +86 -10
- numcodecs/compat.py +2 -4
- numcodecs/compat_ext.cp312-win_amd64.pyd +0 -0
- numcodecs/delta.py +5 -1
- numcodecs/fletcher32.cp312-win_amd64.pyd +0 -0
- numcodecs/jenkins.cp312-win_amd64.pyd +0 -0
- numcodecs/lz4.cp312-win_amd64.pyd +0 -0
- numcodecs/lzma.py +5 -2
- numcodecs/ndarray_like.py +1 -1
- numcodecs/packbits.py +0 -3
- numcodecs/pcodec.py +2 -3
- numcodecs/registry.py +9 -8
- numcodecs/tests/test_bitround.py +3 -3
- numcodecs/tests/test_blosc.py +2 -2
- numcodecs/tests/test_checksum32.py +113 -17
- numcodecs/tests/test_compat.py +3 -0
- numcodecs/tests/test_delta.py +1 -0
- numcodecs/tests/test_entrypoints.py +1 -1
- numcodecs/tests/test_entrypoints_backport.py +3 -2
- numcodecs/tests/test_fixedscaleoffset.py +13 -5
- numcodecs/tests/test_json.py +1 -1
- numcodecs/tests/test_lzma.py +4 -0
- numcodecs/tests/test_msgpacks.py +4 -1
- numcodecs/tests/test_pcodec.py +1 -1
- numcodecs/tests/test_registry.py +12 -10
- numcodecs/tests/test_shuffle.py +3 -3
- numcodecs/tests/test_zarr3.py +246 -0
- numcodecs/tests/test_zarr3_import.py +13 -0
- numcodecs/tests/test_zfpy.py +6 -0
- numcodecs/version.py +2 -2
- numcodecs/vlen.cp312-win_amd64.pyd +0 -0
- numcodecs/zarr3.py +379 -0
- numcodecs/zfpy.py +4 -2
- numcodecs/zstd.cp312-win_amd64.pyd +0 -0
- {numcodecs-0.13.1.dist-info → numcodecs-0.14.1.dist-info}/METADATA +20 -19
- numcodecs-0.14.1.dist-info/RECORD +78 -0
- {numcodecs-0.13.1.dist-info → numcodecs-0.14.1.dist-info}/WHEEL +1 -1
- numcodecs-0.14.1.dist-info/entry_points.txt +22 -0
- numcodecs-0.13.1.dist-info/RECORD +0 -74
- {numcodecs-0.13.1.dist-info → numcodecs-0.14.1.dist-info}/LICENSE.txt +0 -0
- {numcodecs-0.13.1.dist-info → numcodecs-0.14.1.dist-info}/top_level.txt +0 -0
numcodecs/zarr3.py
ADDED
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
"""
|
|
2
|
+
This module provides the compatibility for :py:mod:`numcodecs` in Zarr version 3.
|
|
3
|
+
|
|
4
|
+
A compatibility module is required because the codec handling in Zarr version 3 is different from Zarr version 2.
|
|
5
|
+
|
|
6
|
+
You can use codecs from :py:mod:`numcodecs` by constructing codecs from :py:mod:`numcodecs.zarr3` using the same parameters as the original codecs.
|
|
7
|
+
|
|
8
|
+
>>> import zarr
|
|
9
|
+
>>> import numcodecs.zarr3
|
|
10
|
+
>>>
|
|
11
|
+
>>> codecs = [zarr.codecs.BytesCodec(), numcodecs.zarr3.BZ2(level=5)]
|
|
12
|
+
>>> array = zarr.open(
|
|
13
|
+
... "data.zarr", mode="w",
|
|
14
|
+
... shape=(1024, 1024), chunks=(64, 64),
|
|
15
|
+
... dtype="uint32",
|
|
16
|
+
... codecs=codecs)
|
|
17
|
+
>>> array[:] = np.arange(*array.shape).astype(array.dtype)
|
|
18
|
+
|
|
19
|
+
.. note::
|
|
20
|
+
|
|
21
|
+
Please note that the codecs in :py:mod:`numcodecs.zarr3` are not part of the Zarr version 3 specification.
|
|
22
|
+
Using these codecs might cause interoperability issues with other Zarr implementations.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
from __future__ import annotations
|
|
26
|
+
|
|
27
|
+
import asyncio
|
|
28
|
+
import math
|
|
29
|
+
from dataclasses import dataclass, replace
|
|
30
|
+
from functools import cached_property, partial
|
|
31
|
+
from typing import Any, Self, TypeVar
|
|
32
|
+
from warnings import warn
|
|
33
|
+
|
|
34
|
+
import numpy as np
|
|
35
|
+
|
|
36
|
+
import numcodecs
|
|
37
|
+
|
|
38
|
+
try:
|
|
39
|
+
import zarr
|
|
40
|
+
|
|
41
|
+
if zarr.__version__ < "3.0.0": # pragma: no cover
|
|
42
|
+
raise ImportError("zarr 3.0.0 or later is required to use the numcodecs zarr integration.")
|
|
43
|
+
except ImportError: # pragma: no cover
|
|
44
|
+
raise ImportError("zarr 3.0.0 or later is required to use the numcodecs zarr integration.")
|
|
45
|
+
|
|
46
|
+
from zarr.abc.codec import ArrayArrayCodec, ArrayBytesCodec, BytesBytesCodec
|
|
47
|
+
from zarr.abc.metadata import Metadata
|
|
48
|
+
from zarr.core.array_spec import ArraySpec
|
|
49
|
+
from zarr.core.buffer import Buffer, BufferPrototype, NDBuffer
|
|
50
|
+
from zarr.core.buffer.cpu import as_numpy_array_wrapper
|
|
51
|
+
from zarr.core.common import JSON, parse_named_configuration, product
|
|
52
|
+
|
|
53
|
+
CODEC_PREFIX = "numcodecs."
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def _expect_name_prefix(codec_name: str) -> str:
|
|
57
|
+
if not codec_name.startswith(CODEC_PREFIX):
|
|
58
|
+
raise ValueError(
|
|
59
|
+
f"Expected name to start with '{CODEC_PREFIX}'. Got {codec_name} instead."
|
|
60
|
+
) # pragma: no cover
|
|
61
|
+
return codec_name.removeprefix(CODEC_PREFIX)
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def _parse_codec_configuration(data: dict[str, JSON]) -> dict[str, JSON]:
|
|
65
|
+
parsed_name, parsed_configuration = parse_named_configuration(data)
|
|
66
|
+
if not parsed_name.startswith(CODEC_PREFIX):
|
|
67
|
+
raise ValueError(
|
|
68
|
+
f"Expected name to start with '{CODEC_PREFIX}'. Got {parsed_name} instead."
|
|
69
|
+
) # pragma: no cover
|
|
70
|
+
id = _expect_name_prefix(parsed_name)
|
|
71
|
+
return {"id": id, **parsed_configuration}
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
@dataclass(frozen=True)
|
|
75
|
+
class _NumcodecsCodec(Metadata):
|
|
76
|
+
codec_name: str
|
|
77
|
+
codec_config: dict[str, JSON]
|
|
78
|
+
|
|
79
|
+
def __init__(self, **codec_config: JSON) -> None:
|
|
80
|
+
if not self.codec_name:
|
|
81
|
+
raise ValueError(
|
|
82
|
+
"The codec name needs to be supplied through the `codec_name` attribute."
|
|
83
|
+
) # pragma: no cover
|
|
84
|
+
unprefixed_codec_name = _expect_name_prefix(self.codec_name)
|
|
85
|
+
|
|
86
|
+
if "id" not in codec_config:
|
|
87
|
+
codec_config = {"id": unprefixed_codec_name, **codec_config}
|
|
88
|
+
elif codec_config["id"] != unprefixed_codec_name:
|
|
89
|
+
raise ValueError(
|
|
90
|
+
f"Codec id does not match {unprefixed_codec_name}. Got: {codec_config['id']}."
|
|
91
|
+
) # pragma: no cover
|
|
92
|
+
|
|
93
|
+
object.__setattr__(self, "codec_config", codec_config)
|
|
94
|
+
warn(
|
|
95
|
+
"Numcodecs codecs are not in the Zarr version 3 specification and "
|
|
96
|
+
"may not be supported by other zarr implementations.",
|
|
97
|
+
category=UserWarning,
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
@cached_property
|
|
101
|
+
def _codec(self) -> numcodecs.abc.Codec:
|
|
102
|
+
return numcodecs.get_codec(self.codec_config)
|
|
103
|
+
|
|
104
|
+
@classmethod
|
|
105
|
+
def from_dict(cls, data: dict[str, JSON]) -> Self:
|
|
106
|
+
codec_config = _parse_codec_configuration(data)
|
|
107
|
+
return cls(**codec_config)
|
|
108
|
+
|
|
109
|
+
def to_dict(self) -> dict[str, JSON]:
|
|
110
|
+
codec_config = self.codec_config.copy()
|
|
111
|
+
return {
|
|
112
|
+
"name": self.codec_name,
|
|
113
|
+
"configuration": codec_config,
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
def compute_encoded_size(self, input_byte_length: int, chunk_spec: ArraySpec) -> int:
|
|
117
|
+
raise NotImplementedError # pragma: no cover
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
class _NumcodecsBytesBytesCodec(_NumcodecsCodec, BytesBytesCodec):
|
|
121
|
+
def __init__(self, **codec_config: JSON) -> None:
|
|
122
|
+
super().__init__(**codec_config)
|
|
123
|
+
|
|
124
|
+
async def _decode_single(self, chunk_bytes: Buffer, chunk_spec: ArraySpec) -> Buffer:
|
|
125
|
+
return await asyncio.to_thread(
|
|
126
|
+
as_numpy_array_wrapper,
|
|
127
|
+
self._codec.decode,
|
|
128
|
+
chunk_bytes,
|
|
129
|
+
chunk_spec.prototype,
|
|
130
|
+
)
|
|
131
|
+
|
|
132
|
+
def _encode(self, chunk_bytes: Buffer, prototype: BufferPrototype) -> Buffer:
|
|
133
|
+
encoded = self._codec.encode(chunk_bytes.as_array_like())
|
|
134
|
+
if isinstance(encoded, np.ndarray): # Required for checksum codecs
|
|
135
|
+
return prototype.buffer.from_bytes(encoded.tobytes())
|
|
136
|
+
return prototype.buffer.from_bytes(encoded)
|
|
137
|
+
|
|
138
|
+
async def _encode_single(self, chunk_bytes: Buffer, chunk_spec: ArraySpec) -> Buffer:
|
|
139
|
+
return await asyncio.to_thread(self._encode, chunk_bytes, chunk_spec.prototype)
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
class _NumcodecsArrayArrayCodec(_NumcodecsCodec, ArrayArrayCodec):
|
|
143
|
+
def __init__(self, **codec_config: JSON) -> None:
|
|
144
|
+
super().__init__(**codec_config)
|
|
145
|
+
|
|
146
|
+
async def _decode_single(self, chunk_array: NDBuffer, chunk_spec: ArraySpec) -> NDBuffer:
|
|
147
|
+
chunk_ndarray = chunk_array.as_ndarray_like()
|
|
148
|
+
out = await asyncio.to_thread(self._codec.decode, chunk_ndarray)
|
|
149
|
+
return chunk_spec.prototype.nd_buffer.from_ndarray_like(out.reshape(chunk_spec.shape))
|
|
150
|
+
|
|
151
|
+
async def _encode_single(self, chunk_array: NDBuffer, chunk_spec: ArraySpec) -> NDBuffer:
|
|
152
|
+
chunk_ndarray = chunk_array.as_ndarray_like()
|
|
153
|
+
out = await asyncio.to_thread(self._codec.encode, chunk_ndarray)
|
|
154
|
+
return chunk_spec.prototype.nd_buffer.from_ndarray_like(out)
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
class _NumcodecsArrayBytesCodec(_NumcodecsCodec, ArrayBytesCodec):
|
|
158
|
+
def __init__(self, **codec_config: JSON) -> None:
|
|
159
|
+
super().__init__(**codec_config)
|
|
160
|
+
|
|
161
|
+
async def _decode_single(self, chunk_buffer: Buffer, chunk_spec: ArraySpec) -> NDBuffer:
|
|
162
|
+
chunk_bytes = chunk_buffer.to_bytes()
|
|
163
|
+
out = await asyncio.to_thread(self._codec.decode, chunk_bytes)
|
|
164
|
+
return chunk_spec.prototype.nd_buffer.from_ndarray_like(out.reshape(chunk_spec.shape))
|
|
165
|
+
|
|
166
|
+
async def _encode_single(self, chunk_ndbuffer: NDBuffer, chunk_spec: ArraySpec) -> Buffer:
|
|
167
|
+
chunk_ndarray = chunk_ndbuffer.as_ndarray_like()
|
|
168
|
+
out = await asyncio.to_thread(self._codec.encode, chunk_ndarray)
|
|
169
|
+
return chunk_spec.prototype.buffer.from_bytes(out)
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
T = TypeVar("T", bound=_NumcodecsCodec)
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
def _add_docstring(cls: type[T], ref_class_name: str) -> type[T]:
|
|
176
|
+
cls.__doc__ = f"""
|
|
177
|
+
See :class:`{ref_class_name}` for more details and parameters.
|
|
178
|
+
"""
|
|
179
|
+
return cls
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
def _add_docstring_wrapper(ref_class_name: str) -> partial:
|
|
183
|
+
return partial(_add_docstring, ref_class_name=ref_class_name)
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
def _make_bytes_bytes_codec(codec_name: str, cls_name: str) -> type[_NumcodecsBytesBytesCodec]:
|
|
187
|
+
# rename for class scope
|
|
188
|
+
_codec_name = CODEC_PREFIX + codec_name
|
|
189
|
+
|
|
190
|
+
class _Codec(_NumcodecsBytesBytesCodec):
|
|
191
|
+
codec_name = _codec_name
|
|
192
|
+
|
|
193
|
+
def __init__(self, **codec_config: JSON) -> None:
|
|
194
|
+
super().__init__(**codec_config)
|
|
195
|
+
|
|
196
|
+
_Codec.__name__ = cls_name
|
|
197
|
+
return _Codec
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
def _make_array_array_codec(codec_name: str, cls_name: str) -> type[_NumcodecsArrayArrayCodec]:
|
|
201
|
+
# rename for class scope
|
|
202
|
+
_codec_name = CODEC_PREFIX + codec_name
|
|
203
|
+
|
|
204
|
+
class _Codec(_NumcodecsArrayArrayCodec):
|
|
205
|
+
codec_name = _codec_name
|
|
206
|
+
|
|
207
|
+
def __init__(self, **codec_config: JSON) -> None:
|
|
208
|
+
super().__init__(**codec_config)
|
|
209
|
+
|
|
210
|
+
_Codec.__name__ = cls_name
|
|
211
|
+
return _Codec
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
def _make_array_bytes_codec(codec_name: str, cls_name: str) -> type[_NumcodecsArrayBytesCodec]:
|
|
215
|
+
# rename for class scope
|
|
216
|
+
_codec_name = CODEC_PREFIX + codec_name
|
|
217
|
+
|
|
218
|
+
class _Codec(_NumcodecsArrayBytesCodec):
|
|
219
|
+
codec_name = _codec_name
|
|
220
|
+
|
|
221
|
+
def __init__(self, **codec_config: JSON) -> None:
|
|
222
|
+
super().__init__(**codec_config)
|
|
223
|
+
|
|
224
|
+
_Codec.__name__ = cls_name
|
|
225
|
+
return _Codec
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
def _make_checksum_codec(codec_name: str, cls_name: str) -> type[_NumcodecsBytesBytesCodec]:
|
|
229
|
+
# rename for class scope
|
|
230
|
+
_codec_name = CODEC_PREFIX + codec_name
|
|
231
|
+
|
|
232
|
+
class _ChecksumCodec(_NumcodecsBytesBytesCodec):
|
|
233
|
+
codec_name = _codec_name
|
|
234
|
+
|
|
235
|
+
def __init__(self, **codec_config: JSON) -> None:
|
|
236
|
+
super().__init__(**codec_config)
|
|
237
|
+
|
|
238
|
+
def compute_encoded_size(self, input_byte_length: int, chunk_spec: ArraySpec) -> int:
|
|
239
|
+
return input_byte_length + 4 # pragma: no cover
|
|
240
|
+
|
|
241
|
+
_ChecksumCodec.__name__ = cls_name
|
|
242
|
+
return _ChecksumCodec
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
# bytes-to-bytes codecs
|
|
246
|
+
Blosc = _add_docstring(_make_bytes_bytes_codec("blosc", "Blosc"), "numcodecs.blosc.Blosc")
|
|
247
|
+
LZ4 = _add_docstring(_make_bytes_bytes_codec("lz4", "LZ4"), "numcodecs.lz4.LZ4")
|
|
248
|
+
Zstd = _add_docstring(_make_bytes_bytes_codec("zstd", "Zstd"), "numcodecs.zstd.Zstd")
|
|
249
|
+
Zlib = _add_docstring(_make_bytes_bytes_codec("zlib", "Zlib"), "numcodecs.zlib.Zlib")
|
|
250
|
+
GZip = _add_docstring(_make_bytes_bytes_codec("gzip", "GZip"), "numcodecs.gzip.GZip")
|
|
251
|
+
BZ2 = _add_docstring(_make_bytes_bytes_codec("bz2", "BZ2"), "numcodecs.bz2.BZ2")
|
|
252
|
+
LZMA = _add_docstring(_make_bytes_bytes_codec("lzma", "LZMA"), "numcodecs.lzma.LZMA")
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
@_add_docstring_wrapper("numcodecs.shuffle.Shuffle")
|
|
256
|
+
class Shuffle(_NumcodecsBytesBytesCodec):
|
|
257
|
+
codec_name = f"{CODEC_PREFIX}shuffle"
|
|
258
|
+
|
|
259
|
+
def __init__(self, **codec_config: JSON) -> None:
|
|
260
|
+
super().__init__(**codec_config)
|
|
261
|
+
|
|
262
|
+
def evolve_from_array_spec(self, array_spec: ArraySpec) -> Shuffle:
|
|
263
|
+
if array_spec.dtype.itemsize != self.codec_config.get("elementsize"):
|
|
264
|
+
return Shuffle(**{**self.codec_config, "elementsize": array_spec.dtype.itemsize})
|
|
265
|
+
return self # pragma: no cover
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
# array-to-array codecs ("filters")
|
|
269
|
+
Delta = _add_docstring(_make_array_array_codec("delta", "Delta"), "numcodecs.delta.Delta")
|
|
270
|
+
BitRound = _add_docstring(
|
|
271
|
+
_make_array_array_codec("bitround", "BitRound"), "numcodecs.bitround.BitRound"
|
|
272
|
+
)
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
@_add_docstring_wrapper("numcodecs.fixedscaleoffset.FixedScaleOffset")
|
|
276
|
+
class FixedScaleOffset(_NumcodecsArrayArrayCodec):
|
|
277
|
+
codec_name = f"{CODEC_PREFIX}fixedscaleoffset"
|
|
278
|
+
|
|
279
|
+
def __init__(self, **codec_config: JSON) -> None:
|
|
280
|
+
super().__init__(**codec_config)
|
|
281
|
+
|
|
282
|
+
def resolve_metadata(self, chunk_spec: ArraySpec) -> ArraySpec:
|
|
283
|
+
if astype := self.codec_config.get("astype"):
|
|
284
|
+
return replace(chunk_spec, dtype=np.dtype(astype)) # type: ignore[arg-type]
|
|
285
|
+
return chunk_spec
|
|
286
|
+
|
|
287
|
+
def evolve_from_array_spec(self, array_spec: ArraySpec) -> FixedScaleOffset:
|
|
288
|
+
if str(array_spec.dtype) != self.codec_config.get("dtype"):
|
|
289
|
+
return FixedScaleOffset(**{**self.codec_config, "dtype": str(array_spec.dtype)})
|
|
290
|
+
return self
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
@_add_docstring_wrapper("numcodecs.quantize.Quantize")
|
|
294
|
+
class Quantize(_NumcodecsArrayArrayCodec):
|
|
295
|
+
codec_name = f"{CODEC_PREFIX}quantize"
|
|
296
|
+
|
|
297
|
+
def __init__(self, **codec_config: JSON) -> None:
|
|
298
|
+
super().__init__(**codec_config)
|
|
299
|
+
|
|
300
|
+
def evolve_from_array_spec(self, array_spec: ArraySpec) -> Quantize:
|
|
301
|
+
if str(array_spec.dtype) != self.codec_config.get("dtype"):
|
|
302
|
+
return Quantize(**{**self.codec_config, "dtype": str(array_spec.dtype)})
|
|
303
|
+
return self
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
@_add_docstring_wrapper("numcodecs.packbits.PackBits")
|
|
307
|
+
class PackBits(_NumcodecsArrayArrayCodec):
|
|
308
|
+
codec_name = f"{CODEC_PREFIX}packbits"
|
|
309
|
+
|
|
310
|
+
def __init__(self, **codec_config: JSON) -> None:
|
|
311
|
+
super().__init__(**codec_config)
|
|
312
|
+
|
|
313
|
+
def resolve_metadata(self, chunk_spec: ArraySpec) -> ArraySpec:
|
|
314
|
+
return replace(
|
|
315
|
+
chunk_spec,
|
|
316
|
+
shape=(1 + math.ceil(product(chunk_spec.shape) / 8),),
|
|
317
|
+
dtype=np.dtype("uint8"),
|
|
318
|
+
)
|
|
319
|
+
|
|
320
|
+
def validate(self, *, dtype: np.dtype[Any], **_kwargs) -> None:
|
|
321
|
+
if dtype != np.dtype("bool"):
|
|
322
|
+
raise ValueError(f"Packbits filter requires bool dtype. Got {dtype}.")
|
|
323
|
+
|
|
324
|
+
|
|
325
|
+
@_add_docstring_wrapper("numcodecs.astype.AsType")
|
|
326
|
+
class AsType(_NumcodecsArrayArrayCodec):
|
|
327
|
+
codec_name = f"{CODEC_PREFIX}astype"
|
|
328
|
+
|
|
329
|
+
def __init__(self, **codec_config: JSON) -> None:
|
|
330
|
+
super().__init__(**codec_config)
|
|
331
|
+
|
|
332
|
+
def resolve_metadata(self, chunk_spec: ArraySpec) -> ArraySpec:
|
|
333
|
+
return replace(chunk_spec, dtype=np.dtype(self.codec_config["encode_dtype"])) # type: ignore[arg-type]
|
|
334
|
+
|
|
335
|
+
def evolve_from_array_spec(self, array_spec: ArraySpec) -> AsType:
|
|
336
|
+
decode_dtype = self.codec_config.get("decode_dtype")
|
|
337
|
+
if str(array_spec.dtype) != decode_dtype:
|
|
338
|
+
return AsType(**{**self.codec_config, "decode_dtype": str(array_spec.dtype)})
|
|
339
|
+
return self
|
|
340
|
+
|
|
341
|
+
|
|
342
|
+
# bytes-to-bytes checksum codecs
|
|
343
|
+
CRC32 = _add_docstring(_make_checksum_codec("crc32", "CRC32"), "numcodecs.checksum32.CRC32")
|
|
344
|
+
CRC32C = _add_docstring(_make_checksum_codec("crc32c", "CRC32C"), "numcodecs.checksum32.CRC32C")
|
|
345
|
+
Adler32 = _add_docstring(_make_checksum_codec("adler32", "Adler32"), "numcodecs.checksum32.Adler32")
|
|
346
|
+
Fletcher32 = _add_docstring(
|
|
347
|
+
_make_checksum_codec("fletcher32", "Fletcher32"), "numcodecs.fletcher32.Fletcher32"
|
|
348
|
+
)
|
|
349
|
+
JenkinsLookup3 = _add_docstring(
|
|
350
|
+
_make_checksum_codec("jenkins_lookup3", "JenkinsLookup3"), "numcodecs.checksum32.JenkinsLookup3"
|
|
351
|
+
)
|
|
352
|
+
|
|
353
|
+
# array-to-bytes codecs
|
|
354
|
+
PCodec = _add_docstring(_make_array_bytes_codec("pcodec", "PCodec"), "numcodecs.pcodec.PCodec")
|
|
355
|
+
ZFPY = _add_docstring(_make_array_bytes_codec("zfpy", "ZFPY"), "numcodecs.zfpy.ZFPY")
|
|
356
|
+
|
|
357
|
+
__all__ = [
|
|
358
|
+
"Blosc",
|
|
359
|
+
"LZ4",
|
|
360
|
+
"Zstd",
|
|
361
|
+
"Zlib",
|
|
362
|
+
"GZip",
|
|
363
|
+
"BZ2",
|
|
364
|
+
"LZMA",
|
|
365
|
+
"Shuffle",
|
|
366
|
+
"Delta",
|
|
367
|
+
"BitRound",
|
|
368
|
+
"FixedScaleOffset",
|
|
369
|
+
"Quantize",
|
|
370
|
+
"PackBits",
|
|
371
|
+
"AsType",
|
|
372
|
+
"CRC32",
|
|
373
|
+
"CRC32C",
|
|
374
|
+
"Adler32",
|
|
375
|
+
"Fletcher32",
|
|
376
|
+
"JenkinsLookup3",
|
|
377
|
+
"PCodec",
|
|
378
|
+
"ZFPY",
|
|
379
|
+
]
|
numcodecs/zfpy.py
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import warnings
|
|
2
2
|
from contextlib import suppress
|
|
3
3
|
from importlib.metadata import PackageNotFoundError, version
|
|
4
|
+
from types import ModuleType
|
|
5
|
+
from typing import Optional
|
|
4
6
|
|
|
5
|
-
_zfpy = None
|
|
7
|
+
_zfpy: Optional[ModuleType] = None
|
|
6
8
|
|
|
7
9
|
_zfpy_version: tuple = ()
|
|
8
10
|
with suppress(PackageNotFoundError):
|
|
@@ -21,7 +23,7 @@ if _zfpy_version:
|
|
|
21
23
|
)
|
|
22
24
|
else:
|
|
23
25
|
with suppress(ImportError):
|
|
24
|
-
import zfpy as _zfpy
|
|
26
|
+
import zfpy as _zfpy # type: ignore[no-redef]
|
|
25
27
|
|
|
26
28
|
if _zfpy:
|
|
27
29
|
import numpy as np
|
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: numcodecs
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.14.1
|
|
4
4
|
Summary: A Python package providing buffer compression and transformation codecs for use in data storage and communication applications.
|
|
5
5
|
Maintainer-email: Alistair Miles <alimanfoo@googlemail.com>
|
|
6
6
|
License: MIT
|
|
@@ -18,29 +18,30 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
|
18
18
|
Classifier: Operating System :: Unix
|
|
19
19
|
Classifier: Programming Language :: Python :: 3
|
|
20
20
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
21
|
-
Requires-Python: >=3.
|
|
21
|
+
Requires-Python: >=3.11
|
|
22
22
|
Description-Content-Type: text/x-rst
|
|
23
23
|
License-File: LICENSE.txt
|
|
24
|
-
Requires-Dist: numpy
|
|
24
|
+
Requires-Dist: numpy>=1.24
|
|
25
25
|
Provides-Extra: docs
|
|
26
|
-
Requires-Dist: sphinx
|
|
27
|
-
Requires-Dist: sphinx-issues
|
|
28
|
-
Requires-Dist: pydata-sphinx-theme
|
|
29
|
-
Requires-Dist: numpydoc
|
|
30
|
-
Requires-Dist: mock ; extra == 'docs'
|
|
31
|
-
Provides-Extra: msgpack
|
|
32
|
-
Requires-Dist: msgpack ; extra == 'msgpack'
|
|
33
|
-
Provides-Extra: pcodec
|
|
34
|
-
Requires-Dist: pcodec >=0.2.0 ; extra == 'pcodec'
|
|
26
|
+
Requires-Dist: sphinx; extra == "docs"
|
|
27
|
+
Requires-Dist: sphinx-issues; extra == "docs"
|
|
28
|
+
Requires-Dist: pydata-sphinx-theme; extra == "docs"
|
|
29
|
+
Requires-Dist: numpydoc; extra == "docs"
|
|
35
30
|
Provides-Extra: test
|
|
36
|
-
Requires-Dist: coverage
|
|
37
|
-
Requires-Dist: pytest
|
|
38
|
-
Requires-Dist: pytest-cov
|
|
39
|
-
Provides-Extra:
|
|
40
|
-
Requires-Dist:
|
|
31
|
+
Requires-Dist: coverage; extra == "test"
|
|
32
|
+
Requires-Dist: pytest; extra == "test"
|
|
33
|
+
Requires-Dist: pytest-cov; extra == "test"
|
|
34
|
+
Provides-Extra: test-extras
|
|
35
|
+
Requires-Dist: importlib_metadata; extra == "test-extras"
|
|
36
|
+
Provides-Extra: msgpack
|
|
37
|
+
Requires-Dist: msgpack; extra == "msgpack"
|
|
41
38
|
Provides-Extra: zfpy
|
|
42
|
-
Requires-Dist: zfpy
|
|
43
|
-
Requires-Dist: numpy
|
|
39
|
+
Requires-Dist: zfpy>=1.0.0; extra == "zfpy"
|
|
40
|
+
Requires-Dist: numpy<2.0.0; extra == "zfpy"
|
|
41
|
+
Provides-Extra: pcodec
|
|
42
|
+
Requires-Dist: pcodec<0.3,>=0.2; extra == "pcodec"
|
|
43
|
+
Provides-Extra: crc32c
|
|
44
|
+
Requires-Dist: crc32c>=2.7; extra == "crc32c"
|
|
44
45
|
|
|
45
46
|
Numcodecs
|
|
46
47
|
=========
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
numcodecs/__init__.py,sha256=9uLJwNm76SSqG2wkqlSocbuGZmsaR-e2ZB1Z6Bl1JiE,3426
|
|
2
|
+
numcodecs/_shuffle.cp312-win_amd64.pyd,sha256=t_-GG-MsLCGUoCGZM6LAezVKn6NRD4WVijrspT8SQvI,136704
|
|
3
|
+
numcodecs/abc.py,sha256=t_l-aLoyocVHk0pYEPjfcRlctzLeDY2wNyCIr-yCEHk,4632
|
|
4
|
+
numcodecs/astype.py,sha256=py0m2RrDdDjvEORxWNXaarBE2xKdCkjNWeMf6GCoLg4,2213
|
|
5
|
+
numcodecs/base64.py,sha256=E9166xLd0qzo9IZGb3PdP2jENITahjeD6krbochvBX8,811
|
|
6
|
+
numcodecs/bitround.py,sha256=m9gysWTzZH_MA0H7oI3dfBIZh66yxHM4gik8aq6xA_0,2925
|
|
7
|
+
numcodecs/blosc.cp312-win_amd64.pyd,sha256=3SzyL93EMg1MpN7IJ4Sm4qDdMrgx1j6E6omERzbX9EY,608256
|
|
8
|
+
numcodecs/bz2.py,sha256=bS0L4XqzJDw6pU4MUuEF8UgFOHw6mErnqCXZVg8TEiI,1219
|
|
9
|
+
numcodecs/categorize.py,sha256=EZFF7KyjniCT3LzsitUS3DgJmcNWk1rguTLJemScgJY,3084
|
|
10
|
+
numcodecs/checksum32.py,sha256=GgYbg84gGAH9Jq-ZwATsL6G-bDXI20LQ1gHXg75oh-E,5605
|
|
11
|
+
numcodecs/compat.py,sha256=ghz0-UpxV0q_mAaiZLZv6BBhJNNLeLTDGirO4Oda_ZM,6711
|
|
12
|
+
numcodecs/compat_ext.cp312-win_amd64.pyd,sha256=Y3B5rhUg57bPUl-UCHYrETsEDL3yQ7Ztooo7dGOcmGk,35328
|
|
13
|
+
numcodecs/delta.py,sha256=nb4KlQULJXXXfbw30W2y3h4g_FPJsh7gVikRTNrr7pQ,3085
|
|
14
|
+
numcodecs/fixedscaleoffset.py,sha256=tM3faGimeCC2hzjuyPZU7dfPrSXlIf8kU1rLADUFov0,4328
|
|
15
|
+
numcodecs/fletcher32.cp312-win_amd64.pyd,sha256=EBug2qZunwrMMSsEsCF85s_zq7eTtF7bjTMPmZSt968,158720
|
|
16
|
+
numcodecs/gzip.py,sha256=vPmEDJDkgW14icC-sGeQz1wDUqifhmRBC_B6V-vdEqY,1521
|
|
17
|
+
numcodecs/jenkins.cp312-win_amd64.pyd,sha256=cf8aspsidQ8Jvln8zjyI3l664rqhelWkVgTGZu8c4po,147968
|
|
18
|
+
numcodecs/json.py,sha256=VtI1U1zEGotH56zVWnAA7UwKWso1Kukwyzy_mopVIgY,3462
|
|
19
|
+
numcodecs/lz4.cp312-win_amd64.pyd,sha256=tyDbFnXqgnA-TSC9Y1cVXgNIUljhQGWQ_DOuERAug2M,73216
|
|
20
|
+
numcodecs/lzma.py,sha256=7rF9ukBOyYWoZ8pf-qdRF7BVjuT5rggrfErW8ogfgTA,2313
|
|
21
|
+
numcodecs/msgpacks.py,sha256=58AVf8VovnBaFaVakLU3dRHodLMsJUlMe6uVaYSwmfY,2697
|
|
22
|
+
numcodecs/ndarray_like.py,sha256=CRUhXM5bImhOdY1Gsehy6vzj7-XwobO15WkbOdC4lMo,1961
|
|
23
|
+
numcodecs/packbits.py,sha256=hEaOSpjUxOTlNAXFvDp5Djo7wwqwuFGaRfEDrB07bDY,2075
|
|
24
|
+
numcodecs/pcodec.py,sha256=XhEoeniapMgZTtikihWJZ7JQ8UqMVprsdCqJzt800UY,3147
|
|
25
|
+
numcodecs/pickles.py,sha256=MEyNRXM6dQC62LBc4X46q83ZSa6L3Ord5rFst3E7wvQ,1343
|
|
26
|
+
numcodecs/quantize.py,sha256=6cRZolHGF_TToxuB5WhYz7XrirFS9exsr7nKwIzIv6Y,3137
|
|
27
|
+
numcodecs/registry.py,sha256=B4o8EavOT6inaT2ttOWucErt204F8NvgfDt0qM46fHU,1906
|
|
28
|
+
numcodecs/shuffle.py,sha256=ty-NJ1bIgsErwmTyJtspSgrrJ4PspQjp6Hb-U2M17hY,1636
|
|
29
|
+
numcodecs/version.py,sha256=PmPMi-W0oYwFnGNPqq2XLCoXtDYpahw_1xhTDJEKPu8,429
|
|
30
|
+
numcodecs/vlen.cp312-win_amd64.pyd,sha256=YrxHhZ6t9hct6bSq9hm4LuEJmpnAvcwuqrUbhERbaWU,202240
|
|
31
|
+
numcodecs/zarr3.py,sha256=ZNGFTV9Kqx7ZdK0PWw5QYPPGGrob4GLO_PcK87m6ZEk,14327
|
|
32
|
+
numcodecs/zfpy.py,sha256=BBzbxbAfu7QnFgowD-zTcWYFQzso34MA6BsOn2QA5lg,4014
|
|
33
|
+
numcodecs/zlib.py,sha256=C5TO2qRPyG6SY25lmB9qeFh6yr4IRAqHz0v4RaPvygE,1091
|
|
34
|
+
numcodecs/zstd.cp312-win_amd64.pyd,sha256=L50B4H84p0qKjLlVkqIPjrd5oFZCfgKzclwv3fU-Fl4,449536
|
|
35
|
+
numcodecs/tests/__init__.py,sha256=W7MDbDAXcjl7fVmolo3U_30rFkOCb6mWQ8vcByUpu8g,75
|
|
36
|
+
numcodecs/tests/common.py,sha256=94e6AU1RBb-ipYNyInSuQxA67SIVNSdf3dxJVavrVfQ,12522
|
|
37
|
+
numcodecs/tests/test_astype.py,sha256=m-l8k4q8jSZrIqviASKxYsaPzzuBG_Y4tUNlIigYbco,2441
|
|
38
|
+
numcodecs/tests/test_base64.py,sha256=znf-cMk2JBW3vjcZu7CpC2b9wIiIzBPwfmHX_WlkZ1o,2396
|
|
39
|
+
numcodecs/tests/test_bitround.py,sha256=idosc7MlWLWoA93jFFPgfKk1WzazmaLqH3gzCsVV0F0,2430
|
|
40
|
+
numcodecs/tests/test_blosc.py,sha256=xdmN2nKRbiqJ3xEDB9USCsZau1xagoRgeCwg2mKrOxM,9143
|
|
41
|
+
numcodecs/tests/test_bz2.py,sha256=iH9BPZ8wtXCEfq52RXOqQ9bmQsTMiy3uujIKNpi2Mqs,1955
|
|
42
|
+
numcodecs/tests/test_categorize.py,sha256=wug4Im375r3nM1oTIrDVW5woZiZDCsp5uE1Fz6qwIkI,2843
|
|
43
|
+
numcodecs/tests/test_checksum32.py,sha256=1ZbJrUXPFAPZdmKYso0u0lHBUBtdyA-mfiQdmXRqdqs,4755
|
|
44
|
+
numcodecs/tests/test_compat.py,sha256=QrUZ0emqDH6jEe2gpVlb1i-muN6aQ5H66yDVY_14MkM,3839
|
|
45
|
+
numcodecs/tests/test_delta.py,sha256=UnHvcBDjHip_rj6OJjmOFC9_JzyKc-fUqawhmBwtTwM,1697
|
|
46
|
+
numcodecs/tests/test_entrypoints.py,sha256=VwwND3ksTWurNP-BF5mNvWqKxeKjQcc7LpQd_nrFRgA,528
|
|
47
|
+
numcodecs/tests/test_entrypoints_backport.py,sha256=f6XhPlKamigHRYZtpytKGekDMk2dzVtGzrb1UYRh2xs,1144
|
|
48
|
+
numcodecs/tests/test_fixedscaleoffset.py,sha256=poPtElIN0bWza_m-AWrGxCKSOuqxJIIDzMm4P7JMMJ8,2613
|
|
49
|
+
numcodecs/tests/test_fletcher32.py,sha256=J5ND8xcy4QQKYUYBaH_VyBzKm5biFoV9H5Fp9NsVe3s,1512
|
|
50
|
+
numcodecs/tests/test_gzip.py,sha256=khoVo8QEV4edhsWBHzNk3Tk2xYOwQChddE_5vforF5M,3035
|
|
51
|
+
numcodecs/tests/test_jenkins.py,sha256=h2VG0hFkf6umeUqoXna8cpn_XmdcDNv1sWOQJmk43jI,4596
|
|
52
|
+
numcodecs/tests/test_json.py,sha256=OVU-k1OXRnb8FlwOm2wkDaiBhs_XC_sr4YSS4qNVnT0,2377
|
|
53
|
+
numcodecs/tests/test_lz4.py,sha256=pYCzUhI8o0LY1Jfj82EMIbPreZikBY1dB67GJqdZZn0,2436
|
|
54
|
+
numcodecs/tests/test_lzma.py,sha256=6-qar7FrAu9dgvWxiiVVHPSszT_xHWZ2N7g0pnNpl4U,2815
|
|
55
|
+
numcodecs/tests/test_msgpacks.py,sha256=97mj-y_xOxfW-aZwXoj85_cswuCN1DqRpYoTSFBn2PA,4076
|
|
56
|
+
numcodecs/tests/test_ndarray_like.py,sha256=GXx-XTSKK8wGLlEeuvrgdFDQ3uGtV55-fKKjzN6G0gc,1321
|
|
57
|
+
numcodecs/tests/test_packbits.py,sha256=UWXpYyaHLybqOHgZgVTP_5VeibGO09CyJyKSO_mTCeI,1028
|
|
58
|
+
numcodecs/tests/test_pcodec.py,sha256=01L2OyQKUx42mNHR7l0PzJX5MJwWodKyucmpokFlvwE,2104
|
|
59
|
+
numcodecs/tests/test_pickles.py,sha256=zhmZPPiCgW3uFArYvixgiMPWXdmKjnCj0JThUDt8nn4,1740
|
|
60
|
+
numcodecs/tests/test_quantize.py,sha256=muD4zwQSa4XM4jPO3qXu8rMdoU4eHCpVfQ8z0G7Zh-U,2227
|
|
61
|
+
numcodecs/tests/test_registry.py,sha256=EGM5EwW9MboaLAwO-9nmDc1sTZEEYWsnZac1A3DzCH4,1094
|
|
62
|
+
numcodecs/tests/test_shuffle.py,sha256=Fd1vx8yeOr2JMu4kvTJrVsUtrAJmFBMgbsZUhfB0Rpk,4857
|
|
63
|
+
numcodecs/tests/test_vlen_array.py,sha256=sUwLaza31Yo0IMnmKCGykRPaB3ha7i0ImiCY9yvHS9o,2574
|
|
64
|
+
numcodecs/tests/test_vlen_bytes.py,sha256=ujYHFkBn7EultxVkEepbmFriQfO_pJxfh7dEfTxCCco,2566
|
|
65
|
+
numcodecs/tests/test_vlen_utf8.py,sha256=X0nBvLv1hVDHGz3pIRMP4rVs75lAkXGUb0cRcfZM1Ss,2565
|
|
66
|
+
numcodecs/tests/test_zarr3.py,sha256=dK2O5b0IHNYAWaLGOydn6YvbtAEozTupXDDoxoih76Y,7784
|
|
67
|
+
numcodecs/tests/test_zarr3_import.py,sha256=enI8IqSnTynihEQ2mh95UdTZ5Gb8m9Wock6gbg3iLYs,345
|
|
68
|
+
numcodecs/tests/test_zfpy.py,sha256=lSkKcpGg437poMRQ88EDYdbQVIqKmF0Il-ASdlYkkIY,2866
|
|
69
|
+
numcodecs/tests/test_zlib.py,sha256=SxgYIyH2bH_eIX7k-9kgPUOXCHEllGPoLSUSn0Qk5rg,2633
|
|
70
|
+
numcodecs/tests/test_zstd.py,sha256=P-wHnm0wOuclHOoX7danVEvufxKNM3GwYBgHBchzILE,2702
|
|
71
|
+
numcodecs/tests/package_with_entrypoint/__init__.py,sha256=j0h1AHePXH8ONfd-TMGwKsMW4gBqbgiGOuGP25S9hLE,223
|
|
72
|
+
numcodecs-0.14.1.dist-info/LICENSE.txt,sha256=IxxTq7WTy9_G9AbShWjbBcg6x2G3pDlJEIBJN2o95ks,1145
|
|
73
|
+
numcodecs-0.14.1.dist-info/METADATA,sha256=JV9Kq9F_CRLvxfDM0ptaF5EIAYPNTByg0kiQnCFPXjk,3017
|
|
74
|
+
numcodecs-0.14.1.dist-info/WHEEL,sha256=pWXrJbnZSH-J-PhYmKs2XNn4DHCPNBYq965vsBJBFvA,101
|
|
75
|
+
numcodecs-0.14.1.dist-info/entry_points.txt,sha256=3W3FHKrwE52X3fLq8KdioOtf93lh5KaoGV5t2D10DBI,919
|
|
76
|
+
numcodecs-0.14.1.dist-info/top_level.txt,sha256=JkHllzt6IuVudg4Tk--wF-yfPPsdVOiMTag1tjGIihw,10
|
|
77
|
+
numcodecs/tests/package_with_entrypoint-0.1.dist-info/entry_points.txt,sha256=COk3sfJsTt3T00bA2bcUMCuWEhwkQvf4lPHcBDk34qA,62
|
|
78
|
+
numcodecs-0.14.1.dist-info/RECORD,,
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
[zarr.codecs]
|
|
2
|
+
numcodecs.adler32 = numcodecs.zarr3:Adler32
|
|
3
|
+
numcodecs.astype = numcodecs.zarr3:AsType
|
|
4
|
+
numcodecs.bitround = numcodecs.zarr3:BitRound
|
|
5
|
+
numcodecs.blosc = numcodecs.zarr3:Blosc
|
|
6
|
+
numcodecs.bz2 = numcodecs.zarr3:BZ2
|
|
7
|
+
numcodecs.crc32 = numcodecs.zarr3:CRC32
|
|
8
|
+
numcodecs.crc32c = numcodecs.zarr3:CRC32C
|
|
9
|
+
numcodecs.delta = numcodecs.zarr3:Delta
|
|
10
|
+
numcodecs.fixedscaleoffset = numcodecs.zarr3:FixedScaleOffset
|
|
11
|
+
numcodecs.fletcher32 = numcodecs.zarr3:Fletcher32
|
|
12
|
+
numcodecs.gzip = numcodecs.zarr3:GZip
|
|
13
|
+
numcodecs.jenkins_lookup3 = numcodecs.zarr3:JenkinsLookup3
|
|
14
|
+
numcodecs.lz4 = numcodecs.zarr3:LZ4
|
|
15
|
+
numcodecs.lzma = numcodecs.zarr3:LZMA
|
|
16
|
+
numcodecs.packbits = numcodecs.zarr3:PackBits
|
|
17
|
+
numcodecs.pcodec = numcodecs.zarr3:PCodec
|
|
18
|
+
numcodecs.quantize = numcodecs.zarr3:Quantize
|
|
19
|
+
numcodecs.shuffle = numcodecs.zarr3:Shuffle
|
|
20
|
+
numcodecs.zfpy = numcodecs.zarr3:ZFPY
|
|
21
|
+
numcodecs.zlib = numcodecs.zarr3:Zlib
|
|
22
|
+
numcodecs.zstd = numcodecs.zarr3:Zstd
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
numcodecs/__init__.py,sha256=7HLiouBg6GIdrvANRbZFmvg6WaML3udAs9AvQa6owYM,3244
|
|
2
|
-
numcodecs/_shuffle.cp312-win_amd64.pyd,sha256=3yWwee81FFyaWL0qF80aEvMh9qTa2qwkKvAUmV8GMTU,137216
|
|
3
|
-
numcodecs/abc.py,sha256=9zrXoDcAFapcMRGrSThzyi7hNPKlKFZ0FBSZx2vbUEE,4588
|
|
4
|
-
numcodecs/astype.py,sha256=py0m2RrDdDjvEORxWNXaarBE2xKdCkjNWeMf6GCoLg4,2213
|
|
5
|
-
numcodecs/base64.py,sha256=E9166xLd0qzo9IZGb3PdP2jENITahjeD6krbochvBX8,811
|
|
6
|
-
numcodecs/bitround.py,sha256=RBVQ6-zIIkNs93hnulHXsNkLMhfrYxzlKGZ5zATNUig,2903
|
|
7
|
-
numcodecs/blosc.cp312-win_amd64.pyd,sha256=0GvDtSBlLmhHjjYIMtb5_0I-b8IPNpWDeSuU1Qy0eb4,606208
|
|
8
|
-
numcodecs/bz2.py,sha256=bS0L4XqzJDw6pU4MUuEF8UgFOHw6mErnqCXZVg8TEiI,1219
|
|
9
|
-
numcodecs/categorize.py,sha256=EZFF7KyjniCT3LzsitUS3DgJmcNWk1rguTLJemScgJY,3084
|
|
10
|
-
numcodecs/checksum32.py,sha256=W_AV8HeZ2dxgWXMOThORmiFh7E1lmsKdkKCCXWvR-WQ,3252
|
|
11
|
-
numcodecs/compat.py,sha256=Z_Ewy__2nayaih9IG-50E-a4_c5rLmYYmPZO26eiYJs,6721
|
|
12
|
-
numcodecs/compat_ext.cp312-win_amd64.pyd,sha256=vvgWLmQEI30ZBwKmxYCI_pFxz_VJEUoGPlGnzUKlnx8,35328
|
|
13
|
-
numcodecs/delta.py,sha256=O24yAsM2kyugkew3VNH0BWptofzxc8PR-dM_wgiM1mI,2903
|
|
14
|
-
numcodecs/fixedscaleoffset.py,sha256=tM3faGimeCC2hzjuyPZU7dfPrSXlIf8kU1rLADUFov0,4328
|
|
15
|
-
numcodecs/fletcher32.cp312-win_amd64.pyd,sha256=zqdf3cgcq6CZ7TFeBWqkalZfIDkYCHekRlPQvtaJMI8,159232
|
|
16
|
-
numcodecs/gzip.py,sha256=vPmEDJDkgW14icC-sGeQz1wDUqifhmRBC_B6V-vdEqY,1521
|
|
17
|
-
numcodecs/jenkins.cp312-win_amd64.pyd,sha256=qqnN6q6TW6SPBg8VUSA8tbrxU7RopxKd7P-l4M57Jtk,147968
|
|
18
|
-
numcodecs/json.py,sha256=VtI1U1zEGotH56zVWnAA7UwKWso1Kukwyzy_mopVIgY,3462
|
|
19
|
-
numcodecs/lz4.cp312-win_amd64.pyd,sha256=RU1PNvM885gmDIQLSgNeRVWea9K2xLYq_Ugz7OgC4tk,73216
|
|
20
|
-
numcodecs/lzma.py,sha256=hm-dqMUQnZUQlr3liiLZzbsL88EF4mAZ2U_AaZNNoRE,2204
|
|
21
|
-
numcodecs/msgpacks.py,sha256=58AVf8VovnBaFaVakLU3dRHodLMsJUlMe6uVaYSwmfY,2697
|
|
22
|
-
numcodecs/ndarray_like.py,sha256=J1ROL3NobRzLxU2M7R8yH4wINWdjaJoffzjjlJDETZo,1931
|
|
23
|
-
numcodecs/packbits.py,sha256=CVF7ZB-jYF7Lni2kbKfkmpfTJRg2Cnu3eASatuuymyA,2116
|
|
24
|
-
numcodecs/pcodec.py,sha256=RUwx3Q22e0JWOJ5RllLpM3CshxU1UKNRggQi0qIjVGs,3168
|
|
25
|
-
numcodecs/pickles.py,sha256=MEyNRXM6dQC62LBc4X46q83ZSa6L3Ord5rFst3E7wvQ,1343
|
|
26
|
-
numcodecs/quantize.py,sha256=6cRZolHGF_TToxuB5WhYz7XrirFS9exsr7nKwIzIv6Y,3137
|
|
27
|
-
numcodecs/registry.py,sha256=ENrQpT28HUZ33iGf3KFAwfQOQYLtXjrV4BCkvpwcppg,1835
|
|
28
|
-
numcodecs/shuffle.py,sha256=ty-NJ1bIgsErwmTyJtspSgrrJ4PspQjp6Hb-U2M17hY,1636
|
|
29
|
-
numcodecs/version.py,sha256=ciZvwdy0HBZeRbI0COvEiydD_yAxHeUwQOeMGUovgCo,429
|
|
30
|
-
numcodecs/vlen.cp312-win_amd64.pyd,sha256=BUvxDqZB6PWX8VNzbxgYnS3msmPWzXHRcGCwJAZgO98,202752
|
|
31
|
-
numcodecs/zfpy.py,sha256=2g_CMrfA8xO53AYjzrE3gOHzIgUF8eKX7rsS2KoKR0Y,3907
|
|
32
|
-
numcodecs/zlib.py,sha256=C5TO2qRPyG6SY25lmB9qeFh6yr4IRAqHz0v4RaPvygE,1091
|
|
33
|
-
numcodecs/zstd.cp312-win_amd64.pyd,sha256=g29euhRIXCVuVTyCGRXbxwf5Q3byc8Aoagelcn8HmMQ,450048
|
|
34
|
-
numcodecs/tests/__init__.py,sha256=W7MDbDAXcjl7fVmolo3U_30rFkOCb6mWQ8vcByUpu8g,75
|
|
35
|
-
numcodecs/tests/common.py,sha256=94e6AU1RBb-ipYNyInSuQxA67SIVNSdf3dxJVavrVfQ,12522
|
|
36
|
-
numcodecs/tests/test_astype.py,sha256=m-l8k4q8jSZrIqviASKxYsaPzzuBG_Y4tUNlIigYbco,2441
|
|
37
|
-
numcodecs/tests/test_base64.py,sha256=znf-cMk2JBW3vjcZu7CpC2b9wIiIzBPwfmHX_WlkZ1o,2396
|
|
38
|
-
numcodecs/tests/test_bitround.py,sha256=mto8z-up4GBPOlEa9vC6pXTNrT0y1OG8Rn9NhUYwp8o,2439
|
|
39
|
-
numcodecs/tests/test_blosc.py,sha256=EHokmQVkpXLhIEEhwhyIU2_7nVbSrBBcyZis3GuwZ5A,9143
|
|
40
|
-
numcodecs/tests/test_bz2.py,sha256=iH9BPZ8wtXCEfq52RXOqQ9bmQsTMiy3uujIKNpi2Mqs,1955
|
|
41
|
-
numcodecs/tests/test_categorize.py,sha256=wug4Im375r3nM1oTIrDVW5woZiZDCsp5uE1Fz6qwIkI,2843
|
|
42
|
-
numcodecs/tests/test_checksum32.py,sha256=5PA8WBrG1TTsvZpFxIKh0XCu3ye6ZLsr1ksTyetZh9A,1529
|
|
43
|
-
numcodecs/tests/test_compat.py,sha256=Gc0FlCjC42mqNilmVJwV4K487xw3TZQZL0-oZmgQ3_U,3725
|
|
44
|
-
numcodecs/tests/test_delta.py,sha256=Bc1n9aIpqsU8BkX4GphbHjzQHcLRPs20igCFh1aYnrI,1630
|
|
45
|
-
numcodecs/tests/test_entrypoints.py,sha256=poAHVnz9kThz2X1X2DTEw7J9xcCfPCjAqo4ZfQ8wcnw,530
|
|
46
|
-
numcodecs/tests/test_entrypoints_backport.py,sha256=MNv1UlKWrwSxebSzID7YmiJhyM8NAW7e4sQz8YGyzJY,1076
|
|
47
|
-
numcodecs/tests/test_fixedscaleoffset.py,sha256=3V1h0-8lu1vGzHyL3oijib3HVUgLG6fFAmmcWxE2prI,2316
|
|
48
|
-
numcodecs/tests/test_fletcher32.py,sha256=J5ND8xcy4QQKYUYBaH_VyBzKm5biFoV9H5Fp9NsVe3s,1512
|
|
49
|
-
numcodecs/tests/test_gzip.py,sha256=khoVo8QEV4edhsWBHzNk3Tk2xYOwQChddE_5vforF5M,3035
|
|
50
|
-
numcodecs/tests/test_jenkins.py,sha256=h2VG0hFkf6umeUqoXna8cpn_XmdcDNv1sWOQJmk43jI,4596
|
|
51
|
-
numcodecs/tests/test_json.py,sha256=IbWeFjPtSaCrYyvnwQmYG1nTP7siwYRNMdyV1cU1gF0,2373
|
|
52
|
-
numcodecs/tests/test_lz4.py,sha256=pYCzUhI8o0LY1Jfj82EMIbPreZikBY1dB67GJqdZZn0,2436
|
|
53
|
-
numcodecs/tests/test_lzma.py,sha256=4a7rgNAKj2wr_PsXS_W5WZcSZPUwteYUFJhAPyjH058,2725
|
|
54
|
-
numcodecs/tests/test_msgpacks.py,sha256=3z3DDGLcznS6AxlysyylSo187wND6ISGPo8ZOd4Kdho,3957
|
|
55
|
-
numcodecs/tests/test_ndarray_like.py,sha256=GXx-XTSKK8wGLlEeuvrgdFDQ3uGtV55-fKKjzN6G0gc,1321
|
|
56
|
-
numcodecs/tests/test_packbits.py,sha256=UWXpYyaHLybqOHgZgVTP_5VeibGO09CyJyKSO_mTCeI,1028
|
|
57
|
-
numcodecs/tests/test_pcodec.py,sha256=RGd-jmzi0LtfmJP4Q68Fk8Rxu1glwHCndpObWjwbfxQ,2108
|
|
58
|
-
numcodecs/tests/test_pickles.py,sha256=zhmZPPiCgW3uFArYvixgiMPWXdmKjnCj0JThUDt8nn4,1740
|
|
59
|
-
numcodecs/tests/test_quantize.py,sha256=muD4zwQSa4XM4jPO3qXu8rMdoU4eHCpVfQ8z0G7Zh-U,2227
|
|
60
|
-
numcodecs/tests/test_registry.py,sha256=VJI2qPYVzUe3svD-fNFutNz246B2PT3QdvOjiFRowH0,1103
|
|
61
|
-
numcodecs/tests/test_shuffle.py,sha256=WG0soC343hSszp0Gck4cOS9AIUqgTHea7GDfQPaBZJE,4865
|
|
62
|
-
numcodecs/tests/test_vlen_array.py,sha256=sUwLaza31Yo0IMnmKCGykRPaB3ha7i0ImiCY9yvHS9o,2574
|
|
63
|
-
numcodecs/tests/test_vlen_bytes.py,sha256=ujYHFkBn7EultxVkEepbmFriQfO_pJxfh7dEfTxCCco,2566
|
|
64
|
-
numcodecs/tests/test_vlen_utf8.py,sha256=X0nBvLv1hVDHGz3pIRMP4rVs75lAkXGUb0cRcfZM1Ss,2565
|
|
65
|
-
numcodecs/tests/test_zfpy.py,sha256=Eed6TeK1OrLKEs0AB-B5W5gfHiuytuv1VY8TDfgdPT4,2772
|
|
66
|
-
numcodecs/tests/test_zlib.py,sha256=SxgYIyH2bH_eIX7k-9kgPUOXCHEllGPoLSUSn0Qk5rg,2633
|
|
67
|
-
numcodecs/tests/test_zstd.py,sha256=P-wHnm0wOuclHOoX7danVEvufxKNM3GwYBgHBchzILE,2702
|
|
68
|
-
numcodecs/tests/package_with_entrypoint/__init__.py,sha256=j0h1AHePXH8ONfd-TMGwKsMW4gBqbgiGOuGP25S9hLE,223
|
|
69
|
-
numcodecs-0.13.1.dist-info/LICENSE.txt,sha256=IxxTq7WTy9_G9AbShWjbBcg6x2G3pDlJEIBJN2o95ks,1145
|
|
70
|
-
numcodecs-0.13.1.dist-info/METADATA,sha256=ikUjWEtV6XcEM61bdnTIGwS6MwoW-gi19fUqojmrVPE,2997
|
|
71
|
-
numcodecs-0.13.1.dist-info/WHEEL,sha256=3vidnDuZ-QSnHIxLhNbI1gIM-KgyEcMHuZuv1mWPd_Q,101
|
|
72
|
-
numcodecs-0.13.1.dist-info/top_level.txt,sha256=JkHllzt6IuVudg4Tk--wF-yfPPsdVOiMTag1tjGIihw,10
|
|
73
|
-
numcodecs/tests/package_with_entrypoint-0.1.dist-info/entry_points.txt,sha256=COk3sfJsTt3T00bA2bcUMCuWEhwkQvf4lPHcBDk34qA,62
|
|
74
|
-
numcodecs-0.13.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|