Skip to content

Commit 9e65afb

Browse files
committed
call resolve_path at the top of store routines for memorystore
1 parent d04934d commit 9e65afb

File tree

1 file changed

+17
-14
lines changed

1 file changed

+17
-14
lines changed

src/zarr/storage/memory.py

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,8 @@ async def _get(key: str, byte_range: ByteRangeRequest) -> Buffer | None:
114114

115115
async def exists(self, key: str) -> bool:
116116
# docstring inherited
117-
return self.resolve_key(key) in self._store_dict
117+
key_absolute = self.resolve_key(key)
118+
return key_absolute in self._store_dict
118119

119120
async def set(self, key: str, value: Buffer, byte_range: tuple[int, int] | None = None) -> None:
120121
# docstring inherited
@@ -123,25 +124,27 @@ async def set(self, key: str, value: Buffer, byte_range: tuple[int, int] | None
123124
assert isinstance(key, str)
124125
if not isinstance(value, Buffer):
125126
raise TypeError(f"Expected Buffer. Got {type(value)}.")
126-
key_abs = self.resolve_key(key)
127+
key_absolute = self.resolve_key(key)
127128
if byte_range is not None:
128-
buf = self._store_dict[key_abs]
129+
buf = self._store_dict[key_absolute]
129130
buf[byte_range[0] : byte_range[1]] = value
130-
self._store_dict[key_abs] = buf
131+
self._store_dict[key_absolute] = buf
131132
else:
132-
self._store_dict[key_abs] = value
133+
self._store_dict[key_absolute] = value
133134

134135
async def set_if_not_exists(self, key: str, value: Buffer) -> None:
135136
# docstring inherited
136137
self._check_writable()
137138
await self._ensure_open()
138-
self._store_dict.setdefault(self.resolve_key(key), value)
139+
key_absolute = self.resolve_key(key)
140+
self._store_dict.setdefault(key_absolute, value)
139141

140142
async def delete(self, key: str) -> None:
141143
# docstring inherited
142144
self._check_writable()
145+
key_absolute = self.resolve_key(key)
143146
try:
144-
del self._store_dict[self.resolve_key(key)]
147+
del self._store_dict[key_absolute]
145148
except KeyError:
146149
pass
147150

@@ -155,25 +158,25 @@ async def list(self) -> AsyncGenerator[str, None]:
155158

156159
async def list_prefix(self, prefix: str) -> AsyncGenerator[str, None]:
157160
# docstring inherited
158-
prefix_abs = self.resolve_key(prefix)
161+
prefix_absolute = self.resolve_key(prefix)
159162
for key in self._store_dict:
160-
if key.startswith(prefix_abs):
161-
yield key.removeprefix(prefix_abs).lstrip("/")
163+
if key.startswith(prefix_absolute):
164+
yield key.removeprefix(prefix_absolute).lstrip("/")
162165

163166
async def list_dir(self, prefix: str) -> AsyncGenerator[str, None]:
164167
# docstring inherited
165-
prefix = self.resolve_key(prefix)
168+
prefix_absolute = self.resolve_key(prefix)
166169

167-
if prefix == "":
170+
if prefix_absolute == "":
168171
keys_unique = {k.split("/")[0] for k in self._store_dict}
169172
else:
170173
# Our dictionary doesn't contain directory markers, but we want to include
171174
# a pseudo directory when there's a nested item and we're listing an
172175
# intermediate level.
173176
keys_unique = {
174-
key.removeprefix(prefix + "/").split("/")[0]
177+
key.removeprefix(prefix_absolute + "/").split("/")[0]
175178
for key in self._store_dict
176-
if key.startswith(prefix + "/") and key != prefix
179+
if key.startswith(prefix_absolute + "/") and key != prefix_absolute
177180
}
178181

179182
for key in keys_unique:

0 commit comments

Comments
 (0)