Skip to content

Commit e5e6349

Browse files
committed
Open store for mode = r+
1 parent ee21ccf commit e5e6349

2 files changed

Lines changed: 8 additions & 1 deletion

File tree

src/zarr/storage/_local.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,13 +132,19 @@ async def open(
132132
Store
133133
The opened store instance.
134134
"""
135+
# If mode = 'r+', want to open in read only mode (fail if exists),
136+
# but return a writeable store
135137
if mode is not None:
136138
read_only_creation = mode in ["r", "r+"]
137139
else:
138140
read_only_creation = read_only
139141
store = cls(root, read_only=read_only_creation)
140142
await store._open()
141-
return store.with_read_only(read_only)
143+
144+
# Set read_only state
145+
store = store.with_read_only(read_only)
146+
await store._open()
147+
return store
142148

143149
async def _open(self, *, mode: AccessModeLiteral | None = None) -> None:
144150
if not self.read_only:

src/zarr/testing/store.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ def test_store_read_only(self, store: S) -> None:
120120
async def test_store_open_read_only(self, open_kwargs: dict[str, Any], read_only: bool) -> None:
121121
open_kwargs["read_only"] = read_only
122122
store = await self.store_cls.open(**open_kwargs)
123+
print(store._is_open)
123124
assert store._is_open
124125
assert store.read_only == read_only
125126

0 commit comments

Comments
 (0)