Skip to content

Commit 8fb4c1c

Browse files
committed
Fix and deprecate slicing using comma
1 parent 9a3cfe7 commit 8fb4c1c

File tree

3 files changed

+16
-5
lines changed

3 files changed

+16
-5
lines changed

mikeio/dataset/_dataset.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -679,7 +679,6 @@ def _del_name_attr(self, name: str) -> None:
679679
@overload
680680
def __getitem__(self, key: Hashable | int) -> DataArray: ...
681681

682-
# Mapping is Iterable
683682
@overload
684683
def __getitem__(self, key: Iterable[Hashable]) -> "Dataset": ...
685684

mikeio/dfs/_dfs0.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from pathlib import Path
44
from datetime import datetime, timedelta
55
from typing import Any, Sequence
6+
import warnings
67

78
import numpy as np
89
import pandas as pd
@@ -188,13 +189,21 @@ def read(
188189
sel_time_step_str = None
189190
time_steps = None
190191
if time is not None:
191-
_, time_steps = _valid_timesteps(dfs.FileInfo, time)
192+
if isinstance(time, slice) and isinstance(time.start, str):
193+
return ds.sel(time=time)
194+
else:
195+
_, time_steps = _valid_timesteps(dfs.FileInfo, time)
192196

193197
if time_steps:
194198
ds = ds.isel(time=time_steps)
195199

196200
if sel_time_step_str:
197201
parts = sel_time_step_str.split(",")
202+
if len(parts) > 0:
203+
warnings.warn(
204+
f'Comma separated time slicing is deprecated use read(time=slice("{parts[0]}", "{parts[1]}")) instead.',
205+
FutureWarning,
206+
)
198207
if len(parts) == 1:
199208
parts.append(parts[0]) # end=start
200209

@@ -204,7 +213,8 @@ def read(
204213
sel = slice(parts[0], None) # start only
205214
else:
206215
sel = slice(parts[0], parts[1])
207-
ds = ds[sel] # type: ignore
216+
217+
return ds.sel(time=sel)
208218

209219
return ds
210220

tests/test_dfs0.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -517,8 +517,10 @@ def test_read_non_eq_dfs0_temporal_subset():
517517
dfs0file = r"tests/testdata/da_diagnostic.dfs0"
518518

519519
dfs = Dfs0(dfs0file)
520-
# TODO should this syntax be supported?
521-
ds = dfs.read(time="2017-10-27 01:00,2017-10-27 02:00")
520+
521+
# deprecated
522+
with pytest.warns(FutureWarning, match="time=slice"):
523+
ds = dfs.read(time="2017-10-27 01:00,2017-10-27 02:00")
522524

523525
assert len(ds.time) == 7
524526

0 commit comments

Comments
 (0)