Skip to content

Commit 655a149

Browse files
Make methods of abstract base class async
The goal is that the async methods of child classes match the signatures of the methods of the abstract base class. The `None` was added in 0e035fb, let's try to remove it.
1 parent d1075de commit 655a149

File tree

7 files changed

+24
-24
lines changed

7 files changed

+24
-24
lines changed

docs/roadmap.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -234,13 +234,13 @@ expose the required methods as async methods.
234234
async def set_partial_values(self, key_start_values: List[Tuple[str, int, Union[bytes, bytearray, memoryview]]]) -> None:
235235
... # required for writable stores
236236
237-
async def list(self) -> List[str]:
237+
async def list(self) -> AsyncGenerator[str]:
238238
... # required for listable stores
239239
240-
async def list_prefix(self, prefix: str) -> List[str]:
240+
async def list_prefix(self, prefix: str) -> AsyncGenerator[str]:
241241
... # required for listable stores
242242
243-
async def list_dir(self, prefix: str) -> List[str]:
243+
async def list_dir(self, prefix: str) -> AsyncGenerator[str]:
244244
... # required for listable stores
245245
246246
# additional (optional methods)

src/zarr/abc/store.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -329,17 +329,17 @@ def supports_listing(self) -> bool:
329329
...
330330

331331
@abstractmethod
332-
def list(self) -> AsyncGenerator[str, None]:
332+
async def list(self) -> AsyncGenerator[str]:
333333
"""Retrieve all keys in the store.
334334
335335
Returns
336336
-------
337337
AsyncGenerator[str, None]
338338
"""
339-
...
339+
yield ""
340340

341341
@abstractmethod
342-
def list_prefix(self, prefix: str) -> AsyncGenerator[str, None]:
342+
async def list_prefix(self, prefix: str) -> AsyncGenerator[str]:
343343
"""
344344
Retrieve all keys in the store that begin with a given prefix. Keys are returned relative
345345
to the root of the store.
@@ -352,10 +352,10 @@ def list_prefix(self, prefix: str) -> AsyncGenerator[str, None]:
352352
-------
353353
AsyncGenerator[str, None]
354354
"""
355-
...
355+
yield ""
356356

357357
@abstractmethod
358-
def list_dir(self, prefix: str) -> AsyncGenerator[str, None]:
358+
async def list_dir(self, prefix: str) -> AsyncGenerator[str]:
359359
"""
360360
Retrieve all keys and prefixes with a given prefix and which do not contain the character
361361
“/” after the given prefix.
@@ -368,7 +368,7 @@ def list_dir(self, prefix: str) -> AsyncGenerator[str, None]:
368368
-------
369369
AsyncGenerator[str, None]
370370
"""
371-
...
371+
yield ""
372372

373373
async def delete_dir(self, prefix: str) -> None:
374374
"""

src/zarr/storage/local.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -217,22 +217,22 @@ async def exists(self, key: str) -> bool:
217217
path = self.root / key
218218
return await asyncio.to_thread(path.is_file)
219219

220-
async def list(self) -> AsyncGenerator[str, None]:
220+
async def list(self) -> AsyncGenerator[str]:
221221
# docstring inherited
222222
to_strip = self.root.as_posix() + "/"
223223
for p in list(self.root.rglob("*")):
224224
if p.is_file():
225225
yield p.as_posix().replace(to_strip, "")
226226

227-
async def list_prefix(self, prefix: str) -> AsyncGenerator[str, None]:
227+
async def list_prefix(self, prefix: str) -> AsyncGenerator[str]:
228228
# docstring inherited
229229
to_strip = self.root.as_posix() + "/"
230230
prefix = prefix.rstrip("/")
231231
for p in (self.root / prefix).rglob("*"):
232232
if p.is_file():
233233
yield p.as_posix().replace(to_strip, "")
234234

235-
async def list_dir(self, prefix: str) -> AsyncGenerator[str, None]:
235+
async def list_dir(self, prefix: str) -> AsyncGenerator[str]:
236236
# docstring inherited
237237
base = self.root / prefix
238238
to_strip = str(base) + "/"

src/zarr/storage/logging.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -204,19 +204,19 @@ async def set_partial_values(
204204
with self.log(keys):
205205
return await self._store.set_partial_values(key_start_values=key_start_values)
206206

207-
async def list(self) -> AsyncGenerator[str, None]:
207+
async def list(self) -> AsyncGenerator[str]:
208208
# docstring inherited
209209
with self.log():
210210
async for key in self._store.list():
211211
yield key
212212

213-
async def list_prefix(self, prefix: str) -> AsyncGenerator[str, None]:
213+
async def list_prefix(self, prefix: str) -> AsyncGenerator[str]:
214214
# docstring inherited
215215
with self.log(prefix):
216216
async for key in self._store.list_prefix(prefix=prefix):
217217
yield key
218218

219-
async def list_dir(self, prefix: str) -> AsyncGenerator[str, None]:
219+
async def list_dir(self, prefix: str) -> AsyncGenerator[str]:
220220
# docstring inherited
221221
with self.log(prefix):
222222
async for key in self._store.list_dir(prefix=prefix):

src/zarr/storage/memory.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -147,19 +147,19 @@ async def set_partial_values(self, key_start_values: Iterable[tuple[str, int, by
147147
# docstring inherited
148148
raise NotImplementedError
149149

150-
async def list(self) -> AsyncGenerator[str, None]:
150+
async def list(self) -> AsyncGenerator[str]:
151151
# docstring inherited
152152
for key in self._store_dict:
153153
yield key
154154

155-
async def list_prefix(self, prefix: str) -> AsyncGenerator[str, None]:
155+
async def list_prefix(self, prefix: str) -> AsyncGenerator[str]:
156156
# docstring inherited
157157
# note: we materialize all dict keys into a list here so we can mutate the dict in-place (e.g. in delete_prefix)
158158
for key in list(self._store_dict):
159159
if key.startswith(prefix):
160160
yield key
161161

162-
async def list_dir(self, prefix: str) -> AsyncGenerator[str, None]:
162+
async def list_dir(self, prefix: str) -> AsyncGenerator[str]:
163163
# docstring inherited
164164
prefix = prefix.rstrip("/")
165165

src/zarr/storage/remote.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -322,13 +322,13 @@ async def set_partial_values(
322322
# docstring inherited
323323
raise NotImplementedError
324324

325-
async def list(self) -> AsyncGenerator[str, None]:
325+
async def list(self) -> AsyncGenerator[str]:
326326
# docstring inherited
327327
allfiles = await self.fs._find(self.path, detail=False, withdirs=False)
328328
for onefile in (a.replace(self.path + "/", "") for a in allfiles):
329329
yield onefile
330330

331-
async def list_dir(self, prefix: str) -> AsyncGenerator[str, None]:
331+
async def list_dir(self, prefix: str) -> AsyncGenerator[str]:
332332
# docstring inherited
333333
prefix = f"{self.path}/{prefix.rstrip('/')}"
334334
try:
@@ -338,7 +338,7 @@ async def list_dir(self, prefix: str) -> AsyncGenerator[str, None]:
338338
for onefile in (a.replace(prefix + "/", "") for a in allfiles):
339339
yield onefile.removeprefix(self.path).removeprefix("/")
340340

341-
async def list_prefix(self, prefix: str) -> AsyncGenerator[str, None]:
341+
async def list_prefix(self, prefix: str) -> AsyncGenerator[str]:
342342
# docstring inherited
343343
for onefile in await self.fs._find(
344344
f"{self.path}/{prefix}", detail=False, maxdepth=None, withdirs=False

src/zarr/storage/zip.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -234,19 +234,19 @@ async def exists(self, key: str) -> bool:
234234
else:
235235
return True
236236

237-
async def list(self) -> AsyncGenerator[str, None]:
237+
async def list(self) -> AsyncGenerator[str]:
238238
# docstring inherited
239239
with self._lock:
240240
for key in self._zf.namelist():
241241
yield key
242242

243-
async def list_prefix(self, prefix: str) -> AsyncGenerator[str, None]:
243+
async def list_prefix(self, prefix: str) -> AsyncGenerator[str]:
244244
# docstring inherited
245245
async for key in self.list():
246246
if key.startswith(prefix):
247247
yield key
248248

249-
async def list_dir(self, prefix: str) -> AsyncGenerator[str, None]:
249+
async def list_dir(self, prefix: str) -> AsyncGenerator[str]:
250250
# docstring inherited
251251
prefix = prefix.rstrip("/")
252252

0 commit comments

Comments
 (0)