Skip to content

Commit d7cfbee

Browse files
committed
Update get
1 parent af2a39b commit d7cfbee

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

src/zarr/storage/object_store.py

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,22 @@ async def get(
3939
) -> Buffer:
4040
if byte_range is None:
4141
resp = await obs.get_async(self.store, key)
42-
return await resp.bytes_async()
43-
44-
pass
45-
46-
raise NotImplementedError
42+
return prototype.buffer.from_buffer(memoryview(await resp.bytes_async())) # type: ignore not assignable to buffer
43+
44+
start, end = byte_range
45+
if start is not None and end is not None:
46+
resp = await obs.get_range_async(self.store, key, start=start, end=end)
47+
return prototype.buffer.from_buffer(memoryview(await resp.bytes_async())) # type: ignore not assignable to buffer
48+
elif start is not None:
49+
if start >= 0:
50+
# Offset request
51+
resp = await obs.get_async(self.store, key, options={"range": {"offset": start}})
52+
else:
53+
resp = await obs.get_async(self.store, key, options={"range": {"suffix": start}})
54+
55+
return prototype.buffer.from_buffer(memoryview(await resp.bytes_async())) # type: ignore not assignable to buffer
56+
else:
57+
raise ValueError(f"Unexpected input to `get`: {start=}, {end=}")
4758

4859
async def get_partial_values(
4960
self,

0 commit comments

Comments
 (0)