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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all \u003cpre\u003e\u003ccode\u003e blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks"); } } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); } })(); (function(){ try { var __m = "github.com"; var __re = new RegExp('^' + "github\\.com" + '
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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length \u003e 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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