Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions src/zarr/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@
zeros,
zeros_like,
)
from zarr.array import Array, AsyncArray
from zarr.config import config
from zarr.group import AsyncGroup, Group
from zarr.core.array import Array, AsyncArray
from zarr.core.config import config
from zarr.core.group import AsyncGroup, Group

# in case setuptools scm screw up and find version to be 0.0.0
assert not __version__.startswith("0.0.0")
Expand Down
35 changes: 23 additions & 12 deletions src/zarr/abc/codec.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,28 @@

from zarr.abc.metadata import Metadata
from zarr.abc.store import ByteGetter, ByteSetter
from zarr.buffer import Buffer, NDBuffer
from zarr.chunk_grids import ChunkGrid
from zarr.common import ChunkCoords, concurrent_map
from zarr.config import config
from zarr.core.buffer import Buffer, NDBuffer
from zarr.core.chunk_grids import ChunkGrid
from zarr.core.common import ChunkCoords, concurrent_map
from zarr.core.config import config

if TYPE_CHECKING:
from typing_extensions import Self

from zarr.array_spec import ArraySpec
from zarr.common import JSON
from zarr.indexing import SelectorTuple
from zarr.core.array_spec import ArraySpec
from zarr.core.common import JSON
from zarr.core.indexing import SelectorTuple

__all__ = [
"CodecInput",
"CodecOutput",
"ArrayArrayCodec",
"ArrayBytesCodec",
"BytesBytesCodec",
"ArrayBytesCodecPartialDecodeMixin",
"ArrayBytesCodecPartialEncodeMixin",
"CodecPipeline",
]

CodecInput = TypeVar("CodecInput", bound=NDBuffer | Buffer)
CodecOutput = TypeVar("CodecOutput", bound=NDBuffer | Buffer)
Expand Down Expand Up @@ -112,7 +123,7 @@ async def decode(
-------
Iterable[CodecInput | None]
"""
return await batching_helper(self._decode_single, chunks_and_specs)
return await _batching_helper(self._decode_single, chunks_and_specs)

async def _encode_single(
self, chunk_data: CodecInput, chunk_spec: ArraySpec
Expand All @@ -135,7 +146,7 @@ async def encode(
-------
Iterable[CodecOutput | None]
"""
return await batching_helper(self._encode_single, chunks_and_specs)
return await _batching_helper(self._encode_single, chunks_and_specs)


class ArrayArrayCodec(_Codec[NDBuffer, NDBuffer]):
Expand Down Expand Up @@ -401,18 +412,18 @@ def from_dict(cls, data: Iterable[JSON | Codec]) -> Self:
return cls(**data)


async def batching_helper(
async def _batching_helper(
func: Callable[[CodecInput, ArraySpec], Awaitable[CodecOutput | None]],
batch_info: Iterable[tuple[CodecInput | None, ArraySpec]],
) -> list[CodecOutput | None]:
return await concurrent_map(
list(batch_info),
noop_for_none(func),
_noop_for_none(func),
config.get("async.concurrency"),
)


def noop_for_none(
def _noop_for_none(
func: Callable[[CodecInput, ArraySpec], Awaitable[CodecOutput | None]],
) -> Callable[[CodecInput | None, ArraySpec], Awaitable[CodecOutput | None]]:
async def wrap(chunk: CodecInput | None, chunk_spec: ArraySpec) -> CodecOutput | None:
Expand Down
4 changes: 3 additions & 1 deletion src/zarr/abc/metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@

from dataclasses import dataclass, fields

from zarr.common import JSON
from zarr.core.common import JSON

__all__ = ["Metadata"]


@dataclass(frozen=True)
Expand Down
6 changes: 4 additions & 2 deletions src/zarr/abc/store.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@

from typing_extensions import Self

from zarr.buffer import Buffer, BufferPrototype
from zarr.common import AccessModeLiteral, BytesLike
from zarr.core.buffer import Buffer, BufferPrototype
from zarr.core.common import AccessModeLiteral, BytesLike

__all__ = ["Store", "AccessMode", "ByteGetter", "ByteSetter", "set_or_delete"]


class AccessMode(NamedTuple):
Expand Down
40 changes: 34 additions & 6 deletions src/zarr/api/asynchronous.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,45 @@
import numpy.typing as npt

from zarr.abc.codec import Codec
from zarr.array import Array, AsyncArray
from zarr.buffer import NDArrayLike
from zarr.chunk_key_encodings import ChunkKeyEncoding
from zarr.common import JSON, AccessModeLiteral, ChunkCoords, MemoryOrder, ZarrFormat
from zarr.group import AsyncGroup
from zarr.metadata import ArrayV2Metadata, ArrayV3Metadata
from zarr.core.array import Array, AsyncArray
from zarr.core.buffer import NDArrayLike
from zarr.core.chunk_key_encodings import ChunkKeyEncoding
from zarr.core.common import JSON, AccessModeLiteral, ChunkCoords, MemoryOrder, ZarrFormat
from zarr.core.group import AsyncGroup
from zarr.core.metadata import ArrayV2Metadata, ArrayV3Metadata
from zarr.store import (
StoreLike,
make_store_path,
)

__all__ = [
"consolidate_metadata",
"copy",
"copy_all",
"copy_store",
"load",
"open",
"open_consolidated",
"save",
"save_array",
"save_group",
"tree",
"array",
"group",
"open_group",
"create",
"empty",
"empty_like",
"full",
"full_like",
"ones",
"ones_like",
"open_array",
"open_like",
"zeros",
"zeros_like",
]

# TODO: this type could use some more thought, noqa to avoid "Variable "asynchronous.ArrayLike" is not valid as a type"
ArrayLike = Union[AsyncArray | Array | npt.NDArray[Any]] # noqa
PathLike = str
Expand Down
38 changes: 33 additions & 5 deletions src/zarr/api/synchronous.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,40 @@
from typing import Any

import zarr.api.asynchronous as async_api
from zarr.array import Array, AsyncArray
from zarr.buffer import NDArrayLike
from zarr.common import JSON, AccessModeLiteral, ChunkCoords, ZarrFormat
from zarr.group import Group
from zarr.core.array import Array, AsyncArray
from zarr.core.buffer import NDArrayLike
from zarr.core.common import JSON, AccessModeLiteral, ChunkCoords, ZarrFormat
from zarr.core.group import Group
from zarr.core.sync import sync
from zarr.store import StoreLike
from zarr.sync import sync

__all__ = [
"consolidate_metadata",
"copy",
"copy_all",
"copy_store",
"load",
"open",
"open_consolidated",
"save",
"save_array",
"save_group",
"tree",
"array",
"group",
"open_group",
"create",
"empty",
"empty_like",
"full",
"full_like",
"ones",
"ones_like",
"open_array",
"open_like",
"zeros",
"zeros_like",
]


def consolidate_metadata(*args: Any, **kwargs: Any) -> Group:
Expand Down
6 changes: 3 additions & 3 deletions src/zarr/codecs/_v2.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
from numcodecs.compat import ensure_bytes, ensure_ndarray

from zarr.abc.codec import ArrayArrayCodec, ArrayBytesCodec
from zarr.array_spec import ArraySpec
from zarr.buffer import Buffer, NDBuffer, default_buffer_prototype
from zarr.common import JSON, to_thread
from zarr.core.array_spec import ArraySpec
from zarr.core.buffer import Buffer, NDBuffer, default_buffer_prototype
from zarr.core.common import JSON, to_thread
from zarr.registry import get_ndbuffer_class


Expand Down
6 changes: 3 additions & 3 deletions src/zarr/codecs/blosc.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@
from numcodecs.blosc import Blosc

from zarr.abc.codec import BytesBytesCodec
from zarr.array_spec import ArraySpec
from zarr.buffer import Buffer, as_numpy_array_wrapper
from zarr.common import JSON, parse_enum, parse_named_configuration, to_thread
from zarr.core.array_spec import ArraySpec
from zarr.core.buffer import Buffer, as_numpy_array_wrapper
from zarr.core.common import JSON, parse_enum, parse_named_configuration, to_thread
from zarr.registry import register_codec

if TYPE_CHECKING:
Expand Down
6 changes: 3 additions & 3 deletions src/zarr/codecs/bytes.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@
import numpy as np

from zarr.abc.codec import ArrayBytesCodec
from zarr.array_spec import ArraySpec
from zarr.buffer import Buffer, NDArrayLike, NDBuffer
from zarr.common import JSON, parse_enum, parse_named_configuration
from zarr.core.array_spec import ArraySpec
from zarr.core.buffer import Buffer, NDArrayLike, NDBuffer
from zarr.core.common import JSON, parse_enum, parse_named_configuration
from zarr.registry import register_codec

if TYPE_CHECKING:
Expand Down
6 changes: 3 additions & 3 deletions src/zarr/codecs/crc32c_.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@
from crc32c import crc32c

from zarr.abc.codec import BytesBytesCodec
from zarr.array_spec import ArraySpec
from zarr.buffer import Buffer
from zarr.common import JSON, parse_named_configuration
from zarr.core.array_spec import ArraySpec
from zarr.core.buffer import Buffer
from zarr.core.common import JSON, parse_named_configuration
from zarr.registry import register_codec

if TYPE_CHECKING:
Expand Down
6 changes: 3 additions & 3 deletions src/zarr/codecs/gzip.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
from numcodecs.gzip import GZip

from zarr.abc.codec import BytesBytesCodec
from zarr.array_spec import ArraySpec
from zarr.buffer import Buffer, as_numpy_array_wrapper
from zarr.common import JSON, parse_named_configuration, to_thread
from zarr.core.array_spec import ArraySpec
from zarr.core.buffer import Buffer, as_numpy_array_wrapper
from zarr.core.common import JSON, parse_named_configuration, to_thread
from zarr.registry import register_codec

if TYPE_CHECKING:
Expand Down
12 changes: 6 additions & 6 deletions src/zarr/codecs/pipeline.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,17 @@
CodecPipeline,
)
from zarr.abc.store import ByteGetter, ByteSetter
from zarr.buffer import Buffer, BufferPrototype, NDBuffer
from zarr.chunk_grids import ChunkGrid
from zarr.common import JSON, ChunkCoords, concurrent_map, parse_named_configuration
from zarr.config import config
from zarr.indexing import SelectorTuple, is_scalar, is_total_slice
from zarr.core.buffer import Buffer, BufferPrototype, NDBuffer
from zarr.core.chunk_grids import ChunkGrid
from zarr.core.common import JSON, ChunkCoords, concurrent_map, parse_named_configuration
from zarr.core.config import config
from zarr.core.indexing import SelectorTuple, is_scalar, is_total_slice
from zarr.registry import get_codec_class, register_pipeline

if TYPE_CHECKING:
from typing_extensions import Self

from zarr.array_spec import ArraySpec
from zarr.core.array_spec import ArraySpec

T = TypeVar("T")
U = TypeVar("U")
Expand Down
24 changes: 15 additions & 9 deletions src/zarr/codecs/sharding.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,35 +18,41 @@
CodecPipeline,
)
from zarr.abc.store import ByteGetter, ByteSetter
from zarr.array_spec import ArraySpec
from zarr.buffer import (
from zarr.codecs.bytes import BytesCodec
from zarr.codecs.crc32c_ import Crc32cCodec
from zarr.core.array_spec import ArraySpec
from zarr.core.buffer import (
Buffer,
BufferPrototype,
NDBuffer,
default_buffer_prototype,
numpy_buffer_prototype,
)
from zarr.chunk_grids import ChunkGrid, RegularChunkGrid
from zarr.codecs.bytes import BytesCodec
from zarr.codecs.crc32c_ import Crc32cCodec
from zarr.common import (
from zarr.core.chunk_grids import ChunkGrid, RegularChunkGrid
from zarr.core.common import (
ChunkCoords,
ChunkCoordsLike,
parse_enum,
parse_named_configuration,
parse_shapelike,
product,
)
from zarr.indexing import BasicIndexer, SelectorTuple, c_order_iter, get_indexer, morton_order_iter
from zarr.metadata import parse_codecs
from zarr.core.indexing import (
BasicIndexer,
SelectorTuple,
c_order_iter,
get_indexer,
morton_order_iter,
)
from zarr.core.metadata import parse_codecs
from zarr.registry import get_ndbuffer_class, get_pipeline_class, register_codec

if TYPE_CHECKING:
from collections.abc import Awaitable, Callable, Iterator

from typing_extensions import Self

from zarr.common import JSON
from zarr.core.common import JSON

MAX_UINT_64 = 2**64 - 1
ShardMapping = Mapping[ChunkCoords, Buffer]
Expand Down
8 changes: 4 additions & 4 deletions src/zarr/codecs/transpose.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@
import numpy as np

from zarr.abc.codec import ArrayArrayCodec
from zarr.array_spec import ArraySpec
from zarr.buffer import NDBuffer
from zarr.chunk_grids import ChunkGrid
from zarr.common import JSON, ChunkCoordsLike, parse_named_configuration
from zarr.core.array_spec import ArraySpec
from zarr.core.buffer import NDBuffer
from zarr.core.chunk_grids import ChunkGrid
from zarr.core.common import JSON, ChunkCoordsLike, parse_named_configuration
from zarr.registry import register_codec

if TYPE_CHECKING:
Expand Down
6 changes: 3 additions & 3 deletions src/zarr/codecs/zstd.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@
from numcodecs.zstd import Zstd

from zarr.abc.codec import BytesBytesCodec
from zarr.array_spec import ArraySpec
from zarr.buffer import Buffer, as_numpy_array_wrapper
from zarr.common import JSON, parse_named_configuration, to_thread
from zarr.core.array_spec import ArraySpec
from zarr.core.buffer import Buffer, as_numpy_array_wrapper
from zarr.core.common import JSON, parse_named_configuration, to_thread
from zarr.registry import register_codec

if TYPE_CHECKING:
Expand Down
Loading