Skip to content

Commit 40e1b25

Browse files
committed
Handle None as start or end of byte range request
1 parent f989884 commit 40e1b25

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

src/zarr/storage/object_store.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,17 +71,22 @@ async def get(
7171
return prototype.buffer.from_bytes(await resp.bytes_async())
7272

7373
start, end = byte_range
74+
if (start is None or start == 0) and end is None:
75+
resp = await obs.get_async(self.store, key)
76+
return prototype.buffer.from_bytes(await resp.bytes_async())
7477
if start is not None and end is not None:
7578
resp = await obs.get_range_async(self.store, key, start=start, end=end)
7679
return prototype.buffer.from_bytes(memoryview(resp))
7780
elif start is not None:
78-
if start >= 0:
81+
if start > 0:
7982
# Offset request
8083
resp = await obs.get_async(self.store, key, options={"range": {"offset": start}})
8184
else:
8285
resp = await obs.get_async(self.store, key, options={"range": {"suffix": start}})
83-
8486
return prototype.buffer.from_bytes(await resp.bytes_async())
87+
elif end is not None:
88+
resp = await obs.get_range_async(self.store, key, start=0, end=end)
89+
return prototype.buffer.from_bytes(memoryview(resp))
8590
else:
8691
raise ValueError(f"Unexpected input to `get`: {start=}, {end=}")
8792

0 commit comments

Comments
 (0)