From 20aa61492fd62731dea3f7978b816fcb4d2b5cdc Mon Sep 17 00:00:00 2001 From: David Stansby Date: Wed, 31 Jul 2024 20:39:38 +0100 Subject: [PATCH] Make zarr.config private (> zarr._config) --- src/zarr/__init__.py | 3 ++- src/zarr/{config.py => _config.py} | 4 ++-- src/zarr/abc/codec.py | 2 +- src/zarr/array.py | 2 +- src/zarr/codecs/pipeline.py | 2 +- src/zarr/group.py | 2 +- src/zarr/metadata.py | 4 ++-- src/zarr/registry.py | 4 ++-- src/zarr/sync.py | 2 +- tests/v3/test_codecs/test_codecs.py | 2 +- tests/v3/test_codecs/test_transpose.py | 2 +- tests/v3/test_common.py | 2 +- tests/v3/test_config.py | 3 +-- 13 files changed, 17 insertions(+), 17 deletions(-) rename src/zarr/{config.py => _config.py} (96%) diff --git a/src/zarr/__init__.py b/src/zarr/__init__.py index 227b0cf63e..a36b443dd0 100644 --- a/src/zarr/__init__.py +++ b/src/zarr/__init__.py @@ -1,3 +1,4 @@ +from zarr._config import BadConfigError, config from zarr._version import version as __version__ from zarr.api.synchronous import ( array, @@ -27,7 +28,6 @@ zeros_like, ) from zarr.array import Array, AsyncArray -from zarr.config import config from zarr.group import AsyncGroup, Group # in case setuptools scm screw up and find version to be 0.0.0 @@ -36,6 +36,7 @@ __all__ = [ "__version__", "config", + "BadConfigError", "Array", "AsyncArray", "Group", diff --git a/src/zarr/config.py b/src/zarr/_config.py similarity index 96% rename from src/zarr/config.py rename to src/zarr/_config.py index ec78747a6b..38df565e81 100644 --- a/src/zarr/config.py +++ b/src/zarr/_config.py @@ -30,9 +30,9 @@ def reset(self) -> None: """ The config module is responsible for managing the configuration of zarr and is based on the Donfig python library. -For selecting custom implementations of codecs, pipelines, buffers and ndbuffers, first register the implementations +For selecting custom implementations of codecs, pipelines, buffers and ndbuffers, first register the implementations in the registry and then select them in the config. -e.g. an implementation of the bytes codec in a class "NewBytesCodec", requires the value of codecs.bytes.name to be +e.g. an implementation of the bytes codec in a class "NewBytesCodec", requires the value of codecs.bytes.name to be "NewBytesCodec". Donfig can be configured programmatically, by environment variables, or from YAML files in standard locations e.g. export ZARR_CODECS__BYTES__NAME="NewBytesCodec" diff --git a/src/zarr/abc/codec.py b/src/zarr/abc/codec.py index 9223019fab..d95de9dc35 100644 --- a/src/zarr/abc/codec.py +++ b/src/zarr/abc/codec.py @@ -6,12 +6,12 @@ import numpy as np +from zarr._config import config 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 if TYPE_CHECKING: from typing_extensions import Self diff --git a/src/zarr/array.py b/src/zarr/array.py index e41118805e..ae393e5f37 100644 --- a/src/zarr/array.py +++ b/src/zarr/array.py @@ -17,6 +17,7 @@ import numpy as np import numpy.typing as npt +from zarr._config import config, parse_indexing_order from zarr.abc.codec import Codec, CodecPipeline from zarr.abc.store import set_or_delete from zarr.attributes import Attributes @@ -35,7 +36,6 @@ concurrent_map, product, ) -from zarr.config import config, parse_indexing_order from zarr.indexing import ( BasicIndexer, BasicSelection, diff --git a/src/zarr/codecs/pipeline.py b/src/zarr/codecs/pipeline.py index 8cda04c9ff..6e7fa1f7c3 100644 --- a/src/zarr/codecs/pipeline.py +++ b/src/zarr/codecs/pipeline.py @@ -8,6 +8,7 @@ import numpy as np +from zarr._config import config from zarr.abc.codec import ( ArrayArrayCodec, ArrayBytesCodec, @@ -21,7 +22,6 @@ 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.registry import get_codec_class, register_pipeline diff --git a/src/zarr/group.py b/src/zarr/group.py index 432ebc4604..4b8acb227f 100644 --- a/src/zarr/group.py +++ b/src/zarr/group.py @@ -10,6 +10,7 @@ import numpy.typing as npt from typing_extensions import deprecated +from zarr._config import config from zarr.abc.codec import Codec from zarr.abc.metadata import Metadata from zarr.abc.store import set_or_delete @@ -26,7 +27,6 @@ ChunkCoords, ZarrFormat, ) -from zarr.config import config from zarr.store import StoreLike, StorePath, make_store_path from zarr.store.core import ensure_no_existing_node from zarr.sync import SyncMixin, sync diff --git a/src/zarr/metadata.py b/src/zarr/metadata.py index e801a6f966..e56456d063 100644 --- a/src/zarr/metadata.py +++ b/src/zarr/metadata.py @@ -10,12 +10,12 @@ import numpy as np import numpy.typing as npt +from zarr._config import config from zarr.abc.codec import ArrayArrayCodec, ArrayBytesCodec, BytesBytesCodec, Codec, CodecPipeline from zarr.abc.metadata import Metadata from zarr.buffer import Buffer, BufferPrototype, default_buffer_prototype from zarr.chunk_grids import ChunkGrid, RegularChunkGrid from zarr.chunk_key_encodings import ChunkKeyEncoding, parse_separator -from zarr.config import config from zarr.registry import get_codec_class, get_pipeline_class if TYPE_CHECKING: @@ -23,6 +23,7 @@ import numcodecs.abc +from zarr._config import parse_indexing_order from zarr.array_spec import ArraySpec from zarr.common import ( JSON, @@ -35,7 +36,6 @@ parse_named_configuration, parse_shapelike, ) -from zarr.config import parse_indexing_order # For type checking _bool = bool diff --git a/src/zarr/registry.py b/src/zarr/registry.py index ac373f401d..2a2d7e3ceb 100644 --- a/src/zarr/registry.py +++ b/src/zarr/registry.py @@ -11,7 +11,7 @@ from importlib.metadata import EntryPoint from importlib.metadata import entry_points as get_entry_points -from zarr.config import BadConfigError, config +from zarr._config import BadConfigError, config T = TypeVar("T") @@ -36,7 +36,7 @@ def register(self, cls: type[T]) -> None: __ndbuffer_registry: Registry[NDBuffer] = Registry() """ -The registry module is responsible for managing implementations of codecs, pipelines, buffers and ndbuffers and +The registry module is responsible for managing implementations of codecs, pipelines, buffers and ndbuffers and collecting them from entrypoints. The implementation used is determined by the config """ diff --git a/src/zarr/sync.py b/src/zarr/sync.py index 8af14f602e..e963ff7e85 100644 --- a/src/zarr/sync.py +++ b/src/zarr/sync.py @@ -12,7 +12,7 @@ from typing_extensions import ParamSpec -from zarr.config import config +from zarr._config import config P = ParamSpec("P") T = TypeVar("T") diff --git a/tests/v3/test_codecs/test_codecs.py b/tests/v3/test_codecs/test_codecs.py index a2b459f60d..d5fc3d2374 100644 --- a/tests/v3/test_codecs/test_codecs.py +++ b/tests/v3/test_codecs/test_codecs.py @@ -7,6 +7,7 @@ import pytest import zarr.v2 +from zarr import config from zarr.abc.codec import Codec from zarr.abc.store import Store from zarr.array import Array, AsyncArray @@ -18,7 +19,6 @@ TransposeCodec, ) from zarr.common import MemoryOrder -from zarr.config import config from zarr.indexing import Selection, morton_order_iter from zarr.store import StorePath from zarr.testing.utils import assert_bytes_equal diff --git a/tests/v3/test_codecs/test_transpose.py b/tests/v3/test_codecs/test_transpose.py index bea7435122..fe2ae2ddb2 100644 --- a/tests/v3/test_codecs/test_transpose.py +++ b/tests/v3/test_codecs/test_transpose.py @@ -2,13 +2,13 @@ import pytest import zarr.v2 +from zarr import config from zarr.abc.codec import Codec from zarr.abc.store import Store from zarr.array import Array, AsyncArray from zarr.buffer import default_buffer_prototype from zarr.codecs import BytesCodec, ShardingCodec, TransposeCodec from zarr.common import MemoryOrder -from zarr.config import config from zarr.store.core import StorePath from .test_codecs import _AsyncArrayProxy diff --git a/tests/v3/test_common.py b/tests/v3/test_common.py index bb59789843..d466cc9c1f 100644 --- a/tests/v3/test_common.py +++ b/tests/v3/test_common.py @@ -9,8 +9,8 @@ import numpy as np import pytest +from zarr._config import parse_indexing_order from zarr.common import parse_name, parse_shapelike, product -from zarr.config import parse_indexing_order @pytest.mark.parametrize("data", [(0, 0, 0, 0), (1, 3, 4, 5, 6), (2, 4)]) diff --git a/tests/v3/test_config.py b/tests/v3/test_config.py index 8e7b868520..0ec775ce03 100644 --- a/tests/v3/test_config.py +++ b/tests/v3/test_config.py @@ -8,13 +8,12 @@ import pytest import zarr -from zarr import Array, zeros +from zarr import Array, BadConfigError, config, zeros from zarr.abc.codec import CodecInput, CodecOutput, CodecPipeline from zarr.abc.store import ByteSetter from zarr.array_spec import ArraySpec from zarr.buffer import NDBuffer from zarr.codecs import BatchedCodecPipeline, BloscCodec, BytesCodec, Crc32cCodec, ShardingCodec -from zarr.config import BadConfigError, config from zarr.indexing import SelectorTuple from zarr.registry import ( fully_qualified_name,