MCPcopy Index your code
hub / github.com/pydata/xarray / CopyOnWriteArray

Class CopyOnWriteArray

xarray/core/indexing.py:911–960  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

909
910
911class CopyOnWriteArray(ExplicitlyIndexedNDArrayMixin):
912 __slots__ = ("_copied", "array")
913
914 def __init__(self, array: duckarray[Any, Any]):
915 self.array = as_indexable(array)
916 self._copied = False
917
918 def _ensure_copied(self):
919 if not self._copied:
920 self.array = as_indexable(np.array(self.array))
921 self._copied = True
922
923 def get_duck_array(self):
924 return self.array.get_duck_array()
925
926 async def async_get_duck_array(self):
927 return await self.array.async_get_duck_array()
928
929 def _oindex_get(self, indexer: OuterIndexer):
930 return type(self)(_wrap_numpy_scalars(self.array.oindex[indexer]))
931
932 def _vindex_get(self, indexer: VectorizedIndexer):
933 return type(self)(_wrap_numpy_scalars(self.array.vindex[indexer]))
934
935 def __getitem__(self, indexer: ExplicitIndexer):
936 self._check_and_raise_if_non_basic_indexer(indexer)
937 return type(self)(_wrap_numpy_scalars(self.array[indexer]))
938
939 def transpose(self, order):
940 return self.array.transpose(order)
941
942 def _vindex_set(self, indexer: VectorizedIndexer, value: Any) -> None:
943 self._ensure_copied()
944 self.array.vindex[indexer] = value
945
946 def _oindex_set(self, indexer: OuterIndexer, value: Any) -> None:
947 self._ensure_copied()
948 self.array.oindex[indexer] = value
949
950 def __setitem__(self, indexer: ExplicitIndexer, value: Any) -> None:
951 self._check_and_raise_if_non_basic_indexer(indexer)
952 self._ensure_copied()
953
954 self.array[indexer] = value
955
956 def __deepcopy__(self, memo):
957 # CopyOnWriteArray is used to wrap backend array objects, which might
958 # point to files on disk, so we can't rely on the default deepcopy
959 # implementation.
960 return type(self)(self.array)
961
962
963class MemoryCachedArray(ExplicitlyIndexedNDArrayMixin):

Callers 3

test_CopyOnWriteArrayMethod · 0.90

Calls

no outgoing calls

Tested by 3

test_CopyOnWriteArrayMethod · 0.72

Used in the wild real call sites across dependent graphs

searching dependent graphs…