Skip to content
forked from pydata/xarray

Commit 84f560f

Browse files
committed
Revert "[WIP] ExplicitlyIndexedBackendArray"
This reverts commit 9b727e6.
1 parent b19a24b commit 84f560f

File tree

6 files changed

+13
-32
lines changed

6 files changed

+13
-32
lines changed

xarray/backends/cfgrib_.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
AbstractDataStore,
1414
BackendArray,
1515
BackendEntrypoint,
16-
ExplicitlyIndexedBackendArray,
1716
_normalize_path,
1817
)
1918
from .locks import SerializableLock, ensure_lock
@@ -33,8 +32,8 @@ def __init__(self, datastore, array):
3332
self.array = array
3433

3534
def __getitem__(self, key):
36-
return ExplicitlyIndexedBackendArray(
37-
self, key, self.shape, indexing.IndexingSupport.BASIC, self._getitem
35+
return indexing.explicit_indexing_adapter(
36+
key, self.shape, indexing.IndexingSupport.BASIC, self._getitem
3837
)
3938

4039
def _getitem(self, key):

xarray/backends/common.py

-19
Original file line numberDiff line numberDiff line change
@@ -88,25 +88,6 @@ def get_duck_array(self, dtype=None):
8888
return self[key]
8989

9090

91-
class ExplicitlyIndexedBackendArray(BackendArray):
92-
def __init__(
93-
self, backend_array, key, shape, indexing_support, raw_indexing_method
94-
):
95-
self.backend_array = backend_array
96-
self.key = key
97-
self.shape = shape
98-
self.indexing_support = indexing_support
99-
self.raw_indexing_method = raw_indexing_method
100-
101-
def get_duck_array(self):
102-
return indexing.explicit_indexing_adapter(
103-
self.key, self.shape, self.indexing_support, self.raw_indexing_method
104-
)
105-
106-
def repr(self):
107-
return f"ExplicitlyIndexedBackendArray({type(self.backend_array)})"
108-
109-
11091
class AbstractDataStore:
11192
__slots__ = ()
11293

xarray/backends/h5netcdf_.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
from .common import (
2020
BACKEND_ENTRYPOINTS,
2121
BackendEntrypoint,
22-
ExplicitlyIndexedBackendArray,
2322
WritableCFDataStore,
2423
_normalize_path,
2524
find_root_and_group,
@@ -42,8 +41,8 @@ def get_array(self, needs_lock=True):
4241
return ds.variables[self.variable_name]
4342

4443
def __getitem__(self, key):
45-
return ExplicitlyIndexedBackendArray(
46-
self, key, self.shape, indexing.IndexingSupport.OUTER_1VECTOR, self._getitem
44+
return indexing.explicit_indexing_adapter(
45+
key, self.shape, indexing.IndexingSupport.OUTER_1VECTOR, self._getitem
4746
)
4847

4948
def _getitem(self, key):

xarray/backends/netCDF4_.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
BACKEND_ENTRYPOINTS,
2323
BackendArray,
2424
BackendEntrypoint,
25-
ExplicitlyIndexedBackendArray,
2625
WritableCFDataStore,
2726
_normalize_path,
2827
find_root_and_group,
@@ -83,8 +82,8 @@ def get_array(self, needs_lock=True):
8382
return variable
8483

8584
def __getitem__(self, key):
86-
return ExplicitlyIndexedBackendArray(
87-
self, key, self.shape, indexing.IndexingSupport.OUTER, self._getitem
85+
return indexing.explicit_indexing_adapter(
86+
key, self.shape, indexing.IndexingSupport.OUTER, self._getitem
8887
)
8988

9089
def _getitem(self, key):

xarray/coding/strings.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,4 @@ def __getitem__(self, key):
236236
key = type(key)(indexing.expanded_indexer(key.tuple, self.array.ndim))
237237
if key.tuple[-1] != slice(None):
238238
raise IndexError("too many indices")
239-
240-
dtype = "S" + str(self.array.shape[-1])
241-
return lazy_elemwise_func(self.array[key], _numpy_char_to_bytes, dtype)
239+
return _numpy_char_to_bytes(self.array[key])

xarray/core/indexing.py

+6-1
Original file line numberDiff line numberDiff line change
@@ -528,7 +528,12 @@ def shape(self) -> tuple[int, ...]:
528528
def get_duck_array(self):
529529
array = as_indexable(self.array)
530530
array = array[self.key]
531-
array = array.get_duck_array()
531+
# array[self.key] is now a numpy array when
532+
# self.array is a BackendArray subclass
533+
# and self.key is BasicIndexer((slice(None, None, None),))
534+
# so we need the explicit check for ExplicitlyIndexed
535+
if isinstance(array, ExplicitlyIndexed):
536+
array = array.get_duck_array()
532537
return array
533538

534539
def transpose(self, order):

0 commit comments

Comments
 (0)