|
6 | 6 | from abc import abstractmethod |
7 | 7 | from typing import TYPE_CHECKING, Generic, Self, TypeVar |
8 | 8 |
|
9 | | -import numpy as np |
10 | | - |
11 | 9 | from zarr.storage import WrapperStore |
12 | 10 |
|
13 | 11 | if TYPE_CHECKING: |
|
25 | 23 | SuffixByteRequest, |
26 | 24 | SupportsDeleteSync, |
27 | 25 | SupportsGetSync, |
28 | | - SupportsSetRangeSync, |
29 | 26 | SupportsSetSync, |
30 | 27 | ) |
31 | 28 | from zarr.core.buffer import Buffer, default_buffer_prototype |
@@ -58,13 +55,6 @@ def _require_set_sync(store: S) -> SupportsSetSync: |
58 | 55 | pytest.skip("store does not implement SupportsSetSync") |
59 | 56 | return store # type: ignore[unreachable] |
60 | 57 |
|
61 | | - @staticmethod |
62 | | - def _require_set_range_sync(store: S) -> SupportsSetRangeSync: |
63 | | - """Skip unless *store* implements :class:`SupportsSetRangeSync`.""" |
64 | | - if not isinstance(store, SupportsSetRangeSync): |
65 | | - pytest.skip("store does not implement SupportsSetRangeSync") |
66 | | - return store # type: ignore[unreachable] |
67 | | - |
68 | 58 | @staticmethod |
69 | 59 | def _require_delete_sync(store: S) -> SupportsDeleteSync: |
70 | 60 | """Skip unless *store* implements :class:`SupportsDeleteSync`.""" |
@@ -658,61 +648,6 @@ def test_delete_sync_missing(self, store: S) -> None: |
658 | 648 | # should not raise |
659 | 649 | deleter.delete_sync("nonexistent_sync") |
660 | 650 |
|
661 | | - # ------------------------------------------------------------------- |
662 | | - # set_range (sync only — set_range is exclusively a sync-path API) |
663 | | - # ------------------------------------------------------------------- |
664 | | - |
665 | | - def test_set_range_sync(self, store: S) -> None: |
666 | | - setter = self._require_set_sync(store) |
667 | | - ranger = self._require_set_range_sync(store) |
668 | | - getter = self._require_get_sync(store) |
669 | | - data_buf = self.buffer_cls.from_bytes(b"hello world") |
670 | | - key = "range_sync_key" |
671 | | - setter.set_sync(key, data_buf) |
672 | | - patch = default_buffer_prototype().buffer.from_bytes(b"WORLD") |
673 | | - ranger.set_range_sync(key, patch, 6) |
674 | | - result = getter.get_sync(key) |
675 | | - assert result is not None |
676 | | - assert result.to_bytes() == b"hello WORLD" |
677 | | - |
678 | | - def test_set_range_sync_preserves_other_bytes(self, store: S) -> None: |
679 | | - setter = self._require_set_sync(store) |
680 | | - ranger = self._require_set_range_sync(store) |
681 | | - getter = self._require_get_sync(store) |
682 | | - data = np.arange(100, dtype="uint8") |
683 | | - data_buf = default_buffer_prototype().buffer.from_array_like(data) |
684 | | - key = "range_preserve" |
685 | | - setter.set_sync(key, data_buf) |
686 | | - patch = np.full(10, 255, dtype="uint8") |
687 | | - patch_buf = default_buffer_prototype().buffer.from_array_like(patch) |
688 | | - ranger.set_range_sync(key, patch_buf, 50) |
689 | | - result = getter.get_sync(key) |
690 | | - assert result is not None |
691 | | - result_arr = np.frombuffer(result.to_bytes(), dtype="uint8") |
692 | | - expected = data.copy() |
693 | | - expected[50:60] = 255 |
694 | | - np.testing.assert_array_equal(result_arr, expected) |
695 | | - |
696 | | - def test_set_range_sync_beyond_end_raises(self, store: S) -> None: |
697 | | - setter = self._require_set_sync(store) |
698 | | - ranger = self._require_set_range_sync(store) |
699 | | - data_buf = self.buffer_cls.from_bytes(b"hello") |
700 | | - key = "range_oob" |
701 | | - setter.set_sync(key, data_buf) |
702 | | - patch = default_buffer_prototype().buffer.from_bytes(b"world!") |
703 | | - with pytest.raises(ValueError, match="set_range would write beyond"): |
704 | | - ranger.set_range_sync(key, patch, 0) |
705 | | - |
706 | | - def test_set_range_sync_start_beyond_end_raises(self, store: S) -> None: |
707 | | - setter = self._require_set_sync(store) |
708 | | - ranger = self._require_set_range_sync(store) |
709 | | - data_buf = self.buffer_cls.from_bytes(b"hello") |
710 | | - key = "range_oob2" |
711 | | - setter.set_sync(key, data_buf) |
712 | | - patch = default_buffer_prototype().buffer.from_bytes(b"x") |
713 | | - with pytest.raises(ValueError, match="set_range would write beyond"): |
714 | | - ranger.set_range_sync(key, patch, 10) |
715 | | - |
716 | 651 |
|
717 | 652 | class LatencyStore(WrapperStore[Store]): |
718 | 653 | """ |
|
0 commit comments