MCPcopy
hub / github.com/pydata/xarray / test_range_index_empty_slice

Function test_range_index_empty_slice

xarray/tests/test_range_index.py:169–222  ·  view source on GitHub ↗

Test that empty slices of RangeIndex are printable and preserve step. Regression test for https://github.com/pydata/xarray/issues/10547

()

Source from the content-addressed store, hash-verified

167
168
169def test_range_index_empty_slice() -> None:
170 """Test that empty slices of RangeIndex are printable and preserve step.
171
172 Regression test for https://github.com/pydata/xarray/issues/10547
173 """
174 # Test with linspace
175 n = 30
176 step = 1
177 da = xr.DataArray(np.zeros(n), dims=["x"])
178 da = da.assign_coords(
179 xr.Coordinates.from_xindex(RangeIndex.linspace(0, (n - 1) * step, n, dim="x"))
180 )
181
182 # This should not raise ZeroDivisionError
183 sub = da.isel(x=slice(0))
184 assert sub.sizes["x"] == 0
185
186 # Test that it's printable
187 repr_str = repr(sub)
188 assert "RangeIndex" in repr_str
189 assert "step=1" in repr_str
190
191 # Test with different step values
192 index = RangeIndex.arange(0, 10, 2.5, dim="y")
193 da2 = xr.DataArray(np.zeros(4), dims=["y"])
194 da2 = da2.assign_coords(xr.Coordinates.from_xindex(index))
195 empty = da2.isel(y=slice(0))
196
197 # Should preserve step
198 assert empty.sizes["y"] == 0
199 range_index_y = empty._indexes["y"]
200 assert isinstance(range_index_y, RangeIndex)
201 assert range_index_y.step == 2.5
202
203 # Test that it's printable
204 repr_str2 = repr(empty)
205 assert "RangeIndex" in repr_str2
206 assert "step=2.5" in repr_str2
207
208 # Test negative step
209 index3 = RangeIndex.arange(10, 0, -1, dim="z")
210 da3 = xr.DataArray(np.zeros(10), dims=["z"])
211 da3 = da3.assign_coords(xr.Coordinates.from_xindex(index3))
212 empty3 = da3.isel(z=slice(0))
213
214 assert empty3.sizes["z"] == 0
215 range_index_z = empty3._indexes["z"]
216 assert isinstance(range_index_z, RangeIndex)
217 assert range_index_z.step == -1.0
218
219 # Test that it's printable
220 repr_str3 = repr(empty3)
221 assert "RangeIndex" in repr_str3
222 assert "step=-1" in repr_str3
223
224
225def test_range_index_sel() -> None:

Callers

nothing calls this directly

Calls 5

iselMethod · 0.95
from_xindexMethod · 0.80
linspaceMethod · 0.80
arangeMethod · 0.80
assign_coordsMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…