diff --git a/docs/release.rst b/docs/release.rst
index f4f99c2e..e87696b9 100644
--- a/docs/release.rst
+++ b/docs/release.rst
@@ -4,8 +4,12 @@ Release notes
 Upcoming Release
 ----------------
 
+* Add key normalization option for ``DirectoryStore``, ``NestedDirectoryStore``,
+  ``TempStore``, and ``N5Store``.
+  By :user:`James Bourbeau <jrbourbeau>`; :issue:`459`.
+
 * Add ``recurse`` keyword to ``Group.array_keys`` and ``Group.arrays`` methods.
-  By :user:`James Bourbeau <jrbourbeau>`; :issue:`458`
+  By :user:`James Bourbeau <jrbourbeau>`; :issue:`458`.
 
 * Use uniform chunking for all dimensions when specifying ``chunks`` as an integer.
   Also adds support for specifying ``-1`` to chunk across an entire dimension.
diff --git a/zarr/n5.py b/zarr/n5.py
index 573e4ee5..3aeb52ef 100644
--- a/zarr/n5.py
+++ b/zarr/n5.py
@@ -35,6 +35,11 @@ class N5Store(NestedDirectoryStore):
     ----------
     path : string
         Location of directory to use as the root of the storage hierarchy.
+    normalize_keys : bool, optional
+        If True, all store keys will be normalized to use lower case characters
+        (e.g. 'foo' and 'FOO' will be treated as equivalent). This can be
+        useful to avoid potential discrepancies between case-senstive and
+        case-insensitive file system. Default value is False.
 
     Examples
     --------
diff --git a/zarr/storage.py b/zarr/storage.py
index 4f4e9c7a..2ad3bd33 100644
--- a/zarr/storage.py
+++ b/zarr/storage.py
@@ -681,6 +681,11 @@ class DirectoryStore(MutableMapping):
     ----------
     path : string
         Location of directory to use as the root of the storage hierarchy.
+    normalize_keys : bool, optional
+        If True, all store keys will be normalized to use lower case characters
+        (e.g. 'foo' and 'FOO' will be treated as equivalent). This can be
+        useful to avoid potential discrepancies between case-senstive and
+        case-insensitive file system. Default value is False.
 
     Examples
     --------
@@ -727,7 +732,7 @@ class DirectoryStore(MutableMapping):
 
     """
 
-    def __init__(self, path):
+    def __init__(self, path, normalize_keys=False):
 
         # guard conditions
         path = os.path.abspath(path)
@@ -735,8 +740,13 @@ class DirectoryStore(MutableMapping):
             err_fspath_exists_notdir(path)
 
         self.path = path
+        self.normalize_keys = normalize_keys
+
+    def _normalize_key(self, key):
+        return key.lower() if self.normalize_keys else key
 
     def __getitem__(self, key):
+        key = self._normalize_key(key)
         filepath = os.path.join(self.path, key)
         if os.path.isfile(filepath):
             with open(filepath, 'rb') as f:
@@ -745,6 +755,7 @@ class DirectoryStore(MutableMapping):
             raise KeyError(key)
 
     def __setitem__(self, key, value):
+        key = self._normalize_key(key)
 
         # coerce to flat, contiguous array (ideally without copying)
         value = ensure_contiguous_ndarray(value)
@@ -785,6 +796,7 @@ class DirectoryStore(MutableMapping):
                 os.remove(temp_path)
 
     def __delitem__(self, key):
+        key = self._normalize_key(key)
         path = os.path.join(self.path, key)
         if os.path.isfile(path):
             os.remove(path)
@@ -796,6 +808,7 @@ class DirectoryStore(MutableMapping):
             raise KeyError(key)
 
     def __contains__(self, key):
+        key = self._normalize_key(key)
         file_path = os.path.join(self.path, key)
         return os.path.isfile(file_path)
 
@@ -910,14 +923,19 @@ class TempStore(DirectoryStore):
         Prefix for the temporary directory name.
     dir : string, optional
         Path to parent directory in which to create temporary directory.
+    normalize_keys : bool, optional
+        If True, all store keys will be normalized to use lower case characters
+        (e.g. 'foo' and 'FOO' will be treated as equivalent). This can be
+        useful to avoid potential discrepancies between case-senstive and
+        case-insensitive file system. Default value is False.
 
     """
 
     # noinspection PyShadowingBuiltins
-    def __init__(self, suffix='', prefix='zarr', dir=None):
+    def __init__(self, suffix='', prefix='zarr', dir=None, normalize_keys=False):
         path = tempfile.mkdtemp(suffix=suffix, prefix=prefix, dir=dir)
         atexit.register(atexit_rmtree, path)
-        super(TempStore, self).__init__(path)
+        super(TempStore, self).__init__(path, normalize_keys=normalize_keys)
 
 
 _prog_ckey = re.compile(r'^(\d+)(\.\d+)+$')
@@ -944,6 +962,11 @@ class NestedDirectoryStore(DirectoryStore):
     ----------
     path : string
         Location of directory to use as the root of the storage hierarchy.
+    normalize_keys : bool, optional
+        If True, all store keys will be normalized to use lower case characters
+        (e.g. 'foo' and 'FOO' will be treated as equivalent). This can be
+        useful to avoid potential discrepancies between case-senstive and
+        case-insensitive file system. Default value is False.
 
     Examples
     --------
@@ -1000,8 +1023,8 @@ class NestedDirectoryStore(DirectoryStore):
 
     """
 
-    def __init__(self, path):
-        super(NestedDirectoryStore, self).__init__(path)
+    def __init__(self, path, normalize_keys=False):
+        super(NestedDirectoryStore, self).__init__(path, normalize_keys=normalize_keys)
 
     def __getitem__(self, key):
         key = _nested_map_ckey(key)

Case insensitivity and DirectoryStore
The matching of keys in a DirectoryStore will depend on the underlying file system. If a DirectoryStore is running on a case-sensitive file system, as is usually default on most linux systems, then keys like 'foo' and 'FOO' will appear as distinct. However, if on a case-insensitive file system, as is usually default on mac and windows, then keys like 'foo' and 'FOO' will be considered as identical. I.e., if a key ``'foo'`` has been set, then ``'FOO' in store`` will return ``True``.

This is not a bug but a potential gotcha, as behaviour of code may vary between operating systems if multiple keys that are case insensitive equal are present in the data, and users are expecting case-sensitive behaviour. E.g., https://github.com/cggh/scikit-allel/issues/215 and https://github.com/ornl-oxford/genomics-benchmarks/issues/34.

At least this is something that needs to be documented. Not sure what more could be done.
diff --git a/zarr/tests/test_storage.py b/zarr/tests/test_storage.py
index 0b517c43..a4df9a90 100644
--- a/zarr/tests/test_storage.py
+++ b/zarr/tests/test_storage.py
@@ -735,10 +735,10 @@ class TestDictStore(StoreTests, unittest.TestCase):
 
 class TestDirectoryStore(StoreTests, unittest.TestCase):
 
-    def create_store(self):
+    def create_store(self, normalize_keys=False):
         path = tempfile.mkdtemp()
         atexit.register(atexit_rmtree, path)
-        store = DirectoryStore(path)
+        store = DirectoryStore(path, normalize_keys=normalize_keys)
         return store
 
     def test_filesystem_path(self):
@@ -774,13 +774,19 @@ class TestDirectoryStore(StoreTests, unittest.TestCase):
         store = self.create_store()
         setdel_hierarchy_checks(store)
 
+    def test_normalize_keys(self):
+        store = self.create_store(normalize_keys=True)
+        store['FOO'] = b'bar'
+        assert 'FOO' in store
+        assert 'foo' in store
+
 
 class TestNestedDirectoryStore(TestDirectoryStore, unittest.TestCase):
 
-    def create_store(self):
+    def create_store(self, normalize_keys=False):
         path = tempfile.mkdtemp()
         atexit.register(atexit_rmtree, path)
-        store = NestedDirectoryStore(path)
+        store = NestedDirectoryStore(path, normalize_keys=normalize_keys)
         return store
 
     def test_chunk_nesting(self):
@@ -798,10 +804,10 @@ class TestNestedDirectoryStore(TestDirectoryStore, unittest.TestCase):
 
 class TestN5Store(TestNestedDirectoryStore, unittest.TestCase):
 
-    def create_store(self):
+    def create_store(self, normalize_keys=False):
         path = tempfile.mkdtemp(suffix='.n5')
         atexit.register(atexit_rmtree, path)
-        store = N5Store(path)
+        store = N5Store(path, normalize_keys=normalize_keys)
         return store
 
     def test_equal(self):

pip install -e .[dev]
parse_log_pytest
pytest
pytest pytest-cov pytest-xdist pytest-mock pytest-asyncio
apt-get update apt-get install -y gcc
3.7
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
asciitree==0.3.3
attrs @ file:///croot/attrs_1668696182826/work
certifi @ file:///croot/certifi_1671487769961/work/certifi
coverage==7.2.7
entrypoints==0.4
execnet==2.0.2
fasteners==0.19
flit_core @ file:///opt/conda/conda-bld/flit-core_1644941570762/work/source/flit_core
importlib-metadata @ file:///tmp/build/80754af9/importlib-metadata_1648562407465/work
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
numcodecs==0.10.2
numpy==1.21.6
packaging @ file:///croot/packaging_1671697413597/work
pluggy @ file:///tmp/build/80754af9/pluggy_1648042572264/work
py @ file:///opt/conda/conda-bld/py_1644396412707/work
pytest==7.1.2
pytest-asyncio==0.21.2
pytest-cov==4.1.0
pytest-mock==3.11.1
pytest-xdist==3.5.0
tomli @ file:///opt/conda/conda-bld/tomli_1657175507142/work
typing_extensions @ file:///croot/typing_extensions_1669924550328/work
-e git+https://github.com/zarr-developers/zarr-python.git@65362506066699d66c807bcc5020e95f2f013c33#egg=zarr
zipp @ file:///croot/zipp_1672387121353/work

name: zarr-python
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - attrs=22.1.0=py37h06a4308_0
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2022.12.7=py37h06a4308_0
  - flit-core=3.6.0=pyhd3eb1b0_0
  - importlib-metadata=4.11.3=py37h06a4308_0
  - importlib_metadata=4.11.3=hd3eb1b0_0
  - iniconfig=1.1.1=pyhd3eb1b0_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - packaging=22.0=py37h06a4308_0
  - pip=22.3.1=py37h06a4308_0
  - pluggy=1.0.0=py37h06a4308_1
  - py=1.11.0=pyhd3eb1b0_0
  - pytest=7.1.2=py37h06a4308_0
  - python=3.7.16=h7a1cb2a_0
  - readline=8.2=h5eee18b_0
  - setuptools=65.6.3=py37h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tomli=2.0.1=py37h06a4308_0
  - typing_extensions=4.4.0=py37h06a4308_0
  - wheel=0.38.4=py37h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zipp=3.11.0=py37h06a4308_0
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - asciitree==0.3.3
      - coverage==7.2.7
      - entrypoints==0.4
      - execnet==2.0.2
      - fasteners==0.19
      - numcodecs==0.10.2
      - numpy==1.21.6
      - pytest-asyncio==0.21.2
      - pytest-cov==4.1.0
      - pytest-mock==3.11.1
      - pytest-xdist==3.5.0
prefix: /opt/conda/envs/zarr-python

zarr/tests/test_storage.py::TestDirectoryStore::test_clear zarr/tests/test_storage.py::TestDirectoryStore::test_get_set_del_contains zarr/tests/test_storage.py::TestDirectoryStore::test_getsize zarr/tests/test_storage.py::TestDirectoryStore::test_hierarchy zarr/tests/test_storage.py::TestDirectoryStore::test_init_array zarr/tests/test_storage.py::TestDirectoryStore::test_init_array_compat zarr/tests/test_storage.py::TestDirectoryStore::test_init_array_overwrite zarr/tests/test_storage.py::TestDirectoryStore::test_init_array_overwrite_chunk_store zarr/tests/test_storage.py::TestDirectoryStore::test_init_array_overwrite_group zarr/tests/test_storage.py::TestDirectoryStore::test_init_array_overwrite_path zarr/tests/test_storage.py::TestDirectoryStore::test_init_array_path zarr/tests/test_storage.py::TestDirectoryStore::test_init_group zarr/tests/test_storage.py::TestDirectoryStore::test_init_group_overwrite zarr/tests/test_storage.py::TestDirectoryStore::test_init_group_overwrite_chunk_store zarr/tests/test_storage.py::TestDirectoryStore::test_init_group_overwrite_path zarr/tests/test_storage.py::TestDirectoryStore::test_iterators zarr/tests/test_storage.py::TestDirectoryStore::test_normalize_keys zarr/tests/test_storage.py::TestDirectoryStore::test_pickle zarr/tests/test_storage.py::TestDirectoryStore::test_pickle_ext zarr/tests/test_storage.py::TestDirectoryStore::test_pop zarr/tests/test_storage.py::TestDirectoryStore::test_popitem zarr/tests/test_storage.py::TestDirectoryStore::test_set_invalid_content zarr/tests/test_storage.py::TestDirectoryStore::test_setdel zarr/tests/test_storage.py::TestDirectoryStore::test_update zarr/tests/test_storage.py::TestDirectoryStore::test_writeable_values zarr/tests/test_storage.py::TestNestedDirectoryStore::test_chunk_nesting zarr/tests/test_storage.py::TestNestedDirectoryStore::test_clear zarr/tests/test_storage.py::TestNestedDirectoryStore::test_get_set_del_contains zarr/tests/test_storage.py::TestNestedDirectoryStore::test_getsize zarr/tests/test_storage.py::TestNestedDirectoryStore::test_hierarchy zarr/tests/test_storage.py::TestNestedDirectoryStore::test_init_array zarr/tests/test_storage.py::TestNestedDirectoryStore::test_init_array_compat zarr/tests/test_storage.py::TestNestedDirectoryStore::test_init_array_overwrite zarr/tests/test_storage.py::TestNestedDirectoryStore::test_init_array_overwrite_chunk_store zarr/tests/test_storage.py::TestNestedDirectoryStore::test_init_array_overwrite_group zarr/tests/test_storage.py::TestNestedDirectoryStore::test_init_array_overwrite_path zarr/tests/test_storage.py::TestNestedDirectoryStore::test_init_array_path zarr/tests/test_storage.py::TestNestedDirectoryStore::test_init_group zarr/tests/test_storage.py::TestNestedDirectoryStore::test_init_group_overwrite zarr/tests/test_storage.py::TestNestedDirectoryStore::test_init_group_overwrite_chunk_store zarr/tests/test_storage.py::TestNestedDirectoryStore::test_init_group_overwrite_path zarr/tests/test_storage.py::TestNestedDirectoryStore::test_iterators zarr/tests/test_storage.py::TestNestedDirectoryStore::test_normalize_keys zarr/tests/test_storage.py::TestNestedDirectoryStore::test_pickle zarr/tests/test_storage.py::TestNestedDirectoryStore::test_pickle_ext zarr/tests/test_storage.py::TestNestedDirectoryStore::test_pop zarr/tests/test_storage.py::TestNestedDirectoryStore::test_popitem zarr/tests/test_storage.py::TestNestedDirectoryStore::test_set_invalid_content zarr/tests/test_storage.py::TestNestedDirectoryStore::test_setdel zarr/tests/test_storage.py::TestNestedDirectoryStore::test_update zarr/tests/test_storage.py::TestNestedDirectoryStore::test_writeable_values zarr/tests/test_storage.py::TestN5Store::test_chunk_nesting zarr/tests/test_storage.py::TestN5Store::test_clear zarr/tests/test_storage.py::TestN5Store::test_equal zarr/tests/test_storage.py::TestN5Store::test_filters zarr/tests/test_storage.py::TestN5Store::test_get_set_del_contains zarr/tests/test_storage.py::TestN5Store::test_getsize zarr/tests/test_storage.py::TestN5Store::test_hierarchy zarr/tests/test_storage.py::TestN5Store::test_init_array zarr/tests/test_storage.py::TestN5Store::test_init_array_compat zarr/tests/test_storage.py::TestN5Store::test_init_array_overwrite zarr/tests/test_storage.py::TestN5Store::test_init_array_overwrite_chunk_store zarr/tests/test_storage.py::TestN5Store::test_init_array_overwrite_group zarr/tests/test_storage.py::TestN5Store::test_init_array_overwrite_path zarr/tests/test_storage.py::TestN5Store::test_init_array_path zarr/tests/test_storage.py::TestN5Store::test_init_group zarr/tests/test_storage.py::TestN5Store::test_init_group_overwrite zarr/tests/test_storage.py::TestN5Store::test_init_group_overwrite_chunk_store zarr/tests/test_storage.py::TestN5Store::test_init_group_overwrite_path zarr/tests/test_storage.py::TestN5Store::test_iterators zarr/tests/test_storage.py::TestN5Store::test_normalize_keys zarr/tests/test_storage.py::TestN5Store::test_pickle zarr/tests/test_storage.py::TestN5Store::test_pickle_ext zarr/tests/test_storage.py::TestN5Store::test_pop zarr/tests/test_storage.py::TestN5Store::test_popitem zarr/tests/test_storage.py::TestN5Store::test_set_invalid_content zarr/tests/test_storage.py::TestN5Store::test_setdel zarr/tests/test_storage.py::TestN5Store::test_update zarr/tests/test_storage.py::TestN5Store::test_writeable_values
zarr/tests/test_storage.py::TestMappingStore::test_clear zarr/tests/test_storage.py::TestMappingStore::test_get_set_del_contains zarr/tests/test_storage.py::TestMappingStore::test_getsize zarr/tests/test_storage.py::TestMappingStore::test_hierarchy zarr/tests/test_storage.py::TestMappingStore::test_init_array zarr/tests/test_storage.py::TestMappingStore::test_init_array_compat zarr/tests/test_storage.py::TestMappingStore::test_init_array_overwrite zarr/tests/test_storage.py::TestMappingStore::test_init_array_overwrite_chunk_store zarr/tests/test_storage.py::TestMappingStore::test_init_array_overwrite_group zarr/tests/test_storage.py::TestMappingStore::test_init_array_overwrite_path zarr/tests/test_storage.py::TestMappingStore::test_init_array_path zarr/tests/test_storage.py::TestMappingStore::test_init_group zarr/tests/test_storage.py::TestMappingStore::test_init_group_overwrite zarr/tests/test_storage.py::TestMappingStore::test_init_group_overwrite_chunk_store zarr/tests/test_storage.py::TestMappingStore::test_init_group_overwrite_path zarr/tests/test_storage.py::TestMappingStore::test_iterators zarr/tests/test_storage.py::TestMappingStore::test_pickle zarr/tests/test_storage.py::TestMappingStore::test_pop zarr/tests/test_storage.py::TestMappingStore::test_popitem zarr/tests/test_storage.py::TestMappingStore::test_set_invalid_content zarr/tests/test_storage.py::TestMappingStore::test_update zarr/tests/test_storage.py::TestMappingStore::test_writeable_values zarr/tests/test_storage.py::TestMemoryStore::test_clear zarr/tests/test_storage.py::TestMemoryStore::test_get_set_del_contains zarr/tests/test_storage.py::TestMemoryStore::test_getsize zarr/tests/test_storage.py::TestMemoryStore::test_hierarchy zarr/tests/test_storage.py::TestMemoryStore::test_init_array zarr/tests/test_storage.py::TestMemoryStore::test_init_array_compat zarr/tests/test_storage.py::TestMemoryStore::test_init_array_overwrite zarr/tests/test_storage.py::TestMemoryStore::test_init_array_overwrite_chunk_store zarr/tests/test_storage.py::TestMemoryStore::test_init_array_overwrite_group zarr/tests/test_storage.py::TestMemoryStore::test_init_array_overwrite_path zarr/tests/test_storage.py::TestMemoryStore::test_init_array_path zarr/tests/test_storage.py::TestMemoryStore::test_init_group zarr/tests/test_storage.py::TestMemoryStore::test_init_group_overwrite zarr/tests/test_storage.py::TestMemoryStore::test_init_group_overwrite_chunk_store zarr/tests/test_storage.py::TestMemoryStore::test_init_group_overwrite_path zarr/tests/test_storage.py::TestMemoryStore::test_iterators zarr/tests/test_storage.py::TestMemoryStore::test_pickle zarr/tests/test_storage.py::TestMemoryStore::test_pop zarr/tests/test_storage.py::TestMemoryStore::test_popitem zarr/tests/test_storage.py::TestMemoryStore::test_set_invalid_content zarr/tests/test_storage.py::TestMemoryStore::test_setdel zarr/tests/test_storage.py::TestMemoryStore::test_store_contains_bytes zarr/tests/test_storage.py::TestMemoryStore::test_update zarr/tests/test_storage.py::TestMemoryStore::test_writeable_values zarr/tests/test_storage.py::TestDictStore::test_clear zarr/tests/test_storage.py::TestDictStore::test_deprecated zarr/tests/test_storage.py::TestDictStore::test_get_set_del_contains zarr/tests/test_storage.py::TestDictStore::test_getsize zarr/tests/test_storage.py::TestDictStore::test_hierarchy zarr/tests/test_storage.py::TestDictStore::test_init_array zarr/tests/test_storage.py::TestDictStore::test_init_array_compat zarr/tests/test_storage.py::TestDictStore::test_init_array_overwrite zarr/tests/test_storage.py::TestDictStore::test_init_array_overwrite_chunk_store zarr/tests/test_storage.py::TestDictStore::test_init_array_overwrite_group zarr/tests/test_storage.py::TestDictStore::test_init_array_overwrite_path zarr/tests/test_storage.py::TestDictStore::test_init_array_path zarr/tests/test_storage.py::TestDictStore::test_init_group zarr/tests/test_storage.py::TestDictStore::test_init_group_overwrite zarr/tests/test_storage.py::TestDictStore::test_init_group_overwrite_chunk_store zarr/tests/test_storage.py::TestDictStore::test_init_group_overwrite_path zarr/tests/test_storage.py::TestDictStore::test_iterators zarr/tests/test_storage.py::TestDictStore::test_pickle zarr/tests/test_storage.py::TestDictStore::test_pop zarr/tests/test_storage.py::TestDictStore::test_popitem zarr/tests/test_storage.py::TestDictStore::test_set_invalid_content zarr/tests/test_storage.py::TestDictStore::test_update zarr/tests/test_storage.py::TestDictStore::test_writeable_values zarr/tests/test_storage.py::TestDirectoryStore::test_filesystem_path zarr/tests/test_storage.py::TestNestedDirectoryStore::test_filesystem_path zarr/tests/test_storage.py::TestN5Store::test_filesystem_path zarr/tests/test_storage.py::TestTempStore::test_clear zarr/tests/test_storage.py::TestTempStore::test_get_set_del_contains zarr/tests/test_storage.py::TestTempStore::test_getsize zarr/tests/test_storage.py::TestTempStore::test_hierarchy zarr/tests/test_storage.py::TestTempStore::test_init_array zarr/tests/test_storage.py::TestTempStore::test_init_array_compat zarr/tests/test_storage.py::TestTempStore::test_init_array_overwrite zarr/tests/test_storage.py::TestTempStore::test_init_array_overwrite_chunk_store zarr/tests/test_storage.py::TestTempStore::test_init_array_overwrite_group zarr/tests/test_storage.py::TestTempStore::test_init_array_overwrite_path zarr/tests/test_storage.py::TestTempStore::test_init_array_path zarr/tests/test_storage.py::TestTempStore::test_init_group zarr/tests/test_storage.py::TestTempStore::test_init_group_overwrite zarr/tests/test_storage.py::TestTempStore::test_init_group_overwrite_chunk_store zarr/tests/test_storage.py::TestTempStore::test_init_group_overwrite_path zarr/tests/test_storage.py::TestTempStore::test_iterators zarr/tests/test_storage.py::TestTempStore::test_pickle zarr/tests/test_storage.py::TestTempStore::test_pop zarr/tests/test_storage.py::TestTempStore::test_popitem zarr/tests/test_storage.py::TestTempStore::test_set_invalid_content zarr/tests/test_storage.py::TestTempStore::test_setdel zarr/tests/test_storage.py::TestTempStore::test_update zarr/tests/test_storage.py::TestTempStore::test_writeable_values zarr/tests/test_storage.py::TestZipStore::test_clear zarr/tests/test_storage.py::TestZipStore::test_context_manager zarr/tests/test_storage.py::TestZipStore::test_flush zarr/tests/test_storage.py::TestZipStore::test_get_set_del_contains zarr/tests/test_storage.py::TestZipStore::test_getsize zarr/tests/test_storage.py::TestZipStore::test_hierarchy zarr/tests/test_storage.py::TestZipStore::test_init_array zarr/tests/test_storage.py::TestZipStore::test_init_array_compat zarr/tests/test_storage.py::TestZipStore::test_init_array_overwrite zarr/tests/test_storage.py::TestZipStore::test_init_array_overwrite_chunk_store zarr/tests/test_storage.py::TestZipStore::test_init_array_overwrite_group zarr/tests/test_storage.py::TestZipStore::test_init_array_overwrite_path zarr/tests/test_storage.py::TestZipStore::test_init_array_path zarr/tests/test_storage.py::TestZipStore::test_init_group zarr/tests/test_storage.py::TestZipStore::test_init_group_overwrite zarr/tests/test_storage.py::TestZipStore::test_init_group_overwrite_chunk_store zarr/tests/test_storage.py::TestZipStore::test_init_group_overwrite_path zarr/tests/test_storage.py::TestZipStore::test_iterators zarr/tests/test_storage.py::TestZipStore::test_mode zarr/tests/test_storage.py::TestZipStore::test_pickle zarr/tests/test_storage.py::TestZipStore::test_pop zarr/tests/test_storage.py::TestZipStore::test_popitem zarr/tests/test_storage.py::TestZipStore::test_set_invalid_content zarr/tests/test_storage.py::TestZipStore::test_update zarr/tests/test_storage.py::TestZipStore::test_writeable_values zarr/tests/test_storage.py::TestDBMStore::test_clear zarr/tests/test_storage.py::TestDBMStore::test_context_manager zarr/tests/test_storage.py::TestDBMStore::test_get_set_del_contains zarr/tests/test_storage.py::TestDBMStore::test_getsize zarr/tests/test_storage.py::TestDBMStore::test_hierarchy zarr/tests/test_storage.py::TestDBMStore::test_init_array zarr/tests/test_storage.py::TestDBMStore::test_init_array_compat zarr/tests/test_storage.py::TestDBMStore::test_init_array_overwrite zarr/tests/test_storage.py::TestDBMStore::test_init_array_overwrite_chunk_store zarr/tests/test_storage.py::TestDBMStore::test_init_array_overwrite_group zarr/tests/test_storage.py::TestDBMStore::test_init_array_overwrite_path zarr/tests/test_storage.py::TestDBMStore::test_init_array_path zarr/tests/test_storage.py::TestDBMStore::test_init_group zarr/tests/test_storage.py::TestDBMStore::test_init_group_overwrite zarr/tests/test_storage.py::TestDBMStore::test_init_group_overwrite_chunk_store zarr/tests/test_storage.py::TestDBMStore::test_init_group_overwrite_path zarr/tests/test_storage.py::TestDBMStore::test_iterators zarr/tests/test_storage.py::TestDBMStore::test_pickle zarr/tests/test_storage.py::TestDBMStore::test_pop zarr/tests/test_storage.py::TestDBMStore::test_popitem zarr/tests/test_storage.py::TestDBMStore::test_set_invalid_content zarr/tests/test_storage.py::TestDBMStore::test_update zarr/tests/test_storage.py::TestDBMStore::test_writeable_values zarr/tests/test_storage.py::TestDBMStoreDumb::test_clear zarr/tests/test_storage.py::TestDBMStoreDumb::test_context_manager zarr/tests/test_storage.py::TestDBMStoreDumb::test_get_set_del_contains zarr/tests/test_storage.py::TestDBMStoreDumb::test_getsize zarr/tests/test_storage.py::TestDBMStoreDumb::test_hierarchy zarr/tests/test_storage.py::TestDBMStoreDumb::test_init_array zarr/tests/test_storage.py::TestDBMStoreDumb::test_init_array_compat zarr/tests/test_storage.py::TestDBMStoreDumb::test_init_array_overwrite zarr/tests/test_storage.py::TestDBMStoreDumb::test_init_array_overwrite_chunk_store zarr/tests/test_storage.py::TestDBMStoreDumb::test_init_array_overwrite_group zarr/tests/test_storage.py::TestDBMStoreDumb::test_init_array_overwrite_path zarr/tests/test_storage.py::TestDBMStoreDumb::test_init_array_path zarr/tests/test_storage.py::TestDBMStoreDumb::test_init_group zarr/tests/test_storage.py::TestDBMStoreDumb::test_init_group_overwrite zarr/tests/test_storage.py::TestDBMStoreDumb::test_init_group_overwrite_chunk_store zarr/tests/test_storage.py::TestDBMStoreDumb::test_init_group_overwrite_path zarr/tests/test_storage.py::TestDBMStoreDumb::test_iterators zarr/tests/test_storage.py::TestDBMStoreDumb::test_pickle zarr/tests/test_storage.py::TestDBMStoreDumb::test_pop zarr/tests/test_storage.py::TestDBMStoreDumb::test_popitem zarr/tests/test_storage.py::TestDBMStoreDumb::test_set_invalid_content zarr/tests/test_storage.py::TestDBMStoreDumb::test_update zarr/tests/test_storage.py::TestDBMStoreDumb::test_writeable_values zarr/tests/test_storage.py::TestSQLiteStore::test_clear zarr/tests/test_storage.py::TestSQLiteStore::test_get_set_del_contains zarr/tests/test_storage.py::TestSQLiteStore::test_getsize zarr/tests/test_storage.py::TestSQLiteStore::test_hierarchy zarr/tests/test_storage.py::TestSQLiteStore::test_init_array zarr/tests/test_storage.py::TestSQLiteStore::test_init_array_compat zarr/tests/test_storage.py::TestSQLiteStore::test_init_array_overwrite zarr/tests/test_storage.py::TestSQLiteStore::test_init_array_overwrite_chunk_store zarr/tests/test_storage.py::TestSQLiteStore::test_init_array_overwrite_group zarr/tests/test_storage.py::TestSQLiteStore::test_init_array_overwrite_path zarr/tests/test_storage.py::TestSQLiteStore::test_init_array_path zarr/tests/test_storage.py::TestSQLiteStore::test_init_group zarr/tests/test_storage.py::TestSQLiteStore::test_init_group_overwrite zarr/tests/test_storage.py::TestSQLiteStore::test_init_group_overwrite_chunk_store zarr/tests/test_storage.py::TestSQLiteStore::test_init_group_overwrite_path zarr/tests/test_storage.py::TestSQLiteStore::test_iterators zarr/tests/test_storage.py::TestSQLiteStore::test_pickle zarr/tests/test_storage.py::TestSQLiteStore::test_pop zarr/tests/test_storage.py::TestSQLiteStore::test_popitem zarr/tests/test_storage.py::TestSQLiteStore::test_set_invalid_content zarr/tests/test_storage.py::TestSQLiteStore::test_update zarr/tests/test_storage.py::TestSQLiteStore::test_writeable_values zarr/tests/test_storage.py::TestSQLiteStoreInMemory::test_clear zarr/tests/test_storage.py::TestSQLiteStoreInMemory::test_get_set_del_contains zarr/tests/test_storage.py::TestSQLiteStoreInMemory::test_getsize zarr/tests/test_storage.py::TestSQLiteStoreInMemory::test_hierarchy zarr/tests/test_storage.py::TestSQLiteStoreInMemory::test_init_array zarr/tests/test_storage.py::TestSQLiteStoreInMemory::test_init_array_compat zarr/tests/test_storage.py::TestSQLiteStoreInMemory::test_init_array_overwrite zarr/tests/test_storage.py::TestSQLiteStoreInMemory::test_init_array_overwrite_chunk_store zarr/tests/test_storage.py::TestSQLiteStoreInMemory::test_init_array_overwrite_group zarr/tests/test_storage.py::TestSQLiteStoreInMemory::test_init_array_overwrite_path zarr/tests/test_storage.py::TestSQLiteStoreInMemory::test_init_array_path zarr/tests/test_storage.py::TestSQLiteStoreInMemory::test_init_group zarr/tests/test_storage.py::TestSQLiteStoreInMemory::test_init_group_overwrite zarr/tests/test_storage.py::TestSQLiteStoreInMemory::test_init_group_overwrite_chunk_store zarr/tests/test_storage.py::TestSQLiteStoreInMemory::test_init_group_overwrite_path zarr/tests/test_storage.py::TestSQLiteStoreInMemory::test_iterators zarr/tests/test_storage.py::TestSQLiteStoreInMemory::test_pickle zarr/tests/test_storage.py::TestSQLiteStoreInMemory::test_pop zarr/tests/test_storage.py::TestSQLiteStoreInMemory::test_popitem zarr/tests/test_storage.py::TestSQLiteStoreInMemory::test_set_invalid_content zarr/tests/test_storage.py::TestSQLiteStoreInMemory::test_update zarr/tests/test_storage.py::TestSQLiteStoreInMemory::test_writeable_values zarr/tests/test_storage.py::TestLRUStoreCache::test_cache_keys zarr/tests/test_storage.py::TestLRUStoreCache::test_cache_values_no_max_size zarr/tests/test_storage.py::TestLRUStoreCache::test_cache_values_with_max_size zarr/tests/test_storage.py::TestLRUStoreCache::test_clear zarr/tests/test_storage.py::TestLRUStoreCache::test_get_set_del_contains zarr/tests/test_storage.py::TestLRUStoreCache::test_getsize zarr/tests/test_storage.py::TestLRUStoreCache::test_hierarchy zarr/tests/test_storage.py::TestLRUStoreCache::test_init_array zarr/tests/test_storage.py::TestLRUStoreCache::test_init_array_compat zarr/tests/test_storage.py::TestLRUStoreCache::test_init_array_overwrite zarr/tests/test_storage.py::TestLRUStoreCache::test_init_array_overwrite_chunk_store zarr/tests/test_storage.py::TestLRUStoreCache::test_init_array_overwrite_group zarr/tests/test_storage.py::TestLRUStoreCache::test_init_array_overwrite_path zarr/tests/test_storage.py::TestLRUStoreCache::test_init_array_path zarr/tests/test_storage.py::TestLRUStoreCache::test_init_group zarr/tests/test_storage.py::TestLRUStoreCache::test_init_group_overwrite zarr/tests/test_storage.py::TestLRUStoreCache::test_init_group_overwrite_chunk_store zarr/tests/test_storage.py::TestLRUStoreCache::test_init_group_overwrite_path zarr/tests/test_storage.py::TestLRUStoreCache::test_iterators zarr/tests/test_storage.py::TestLRUStoreCache::test_pickle zarr/tests/test_storage.py::TestLRUStoreCache::test_pop zarr/tests/test_storage.py::TestLRUStoreCache::test_popitem zarr/tests/test_storage.py::TestLRUStoreCache::test_set_invalid_content zarr/tests/test_storage.py::TestLRUStoreCache::test_update zarr/tests/test_storage.py::TestLRUStoreCache::test_writeable_values zarr/tests/test_storage.py::test_getsize zarr/tests/test_storage.py::test_migrate_1to2 zarr/tests/test_storage.py::test_format_compatibility zarr/tests/test_storage.py::TestConsolidatedMetadataStore::test_bad_format zarr/tests/test_storage.py::TestConsolidatedMetadataStore::test_read_write
docs/release.rst zarr/n5.py zarr/storage.py
docs/release.rst zarr/n5.py zarr/storage.py