Skip to content

Commit fdc8353

Browse files
committed
Allow items to be list[str]
1 parent 30ad075 commit fdc8353

File tree

1 file changed

+30
-3
lines changed

1 file changed

+30
-3
lines changed

mikeio/dataset/_dataset.py

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,14 +111,35 @@ def __init__(
111111
def from_numpy(
112112
data: Sequence[NDArray[np.floating]],
113113
time: pd.DatetimeIndex | None = None,
114-
items: Sequence[ItemInfo] | None = None,
114+
items: Sequence[ItemInfo] | Sequence[str] | None = None,
115115
*,
116116
geometry: Any | None = None,
117117
zn: NDArray[np.floating] | None = None,
118118
dims: tuple[str, ...] | None = None,
119119
validate: bool = True,
120120
dt: float = 1.0,
121121
) -> Dataset:
122+
"""Create a Dataset from numpy arrays.
123+
124+
Parameters
125+
----------
126+
data: Sequence[NDArray[np.floating]]
127+
Data to be converted to DataArrays
128+
time: pd.DatetimeIndex, optional
129+
Time axis, by default None
130+
items: Sequence[ItemInfo], optional
131+
ItemInfo for each DataArray, by default None
132+
geometry: Any, optional
133+
Geometry of the DataArrays, by default None
134+
zn: NDArray[np.floating], optional
135+
Z-coordinates of the DataArrays, by default None
136+
dims: tuple[str, ...], optional
137+
Named dimensions of the DataArrays, by default None
138+
validate: bool, optional
139+
Validate the DataArrays, by default True
140+
dt: float, optional
141+
Dummy time step in seconds, by default 1.0
142+
"""
122143
item_infos = Dataset._parse_items(items, len(data))
123144

124145
data_vars = {
@@ -157,7 +178,7 @@ def _modify_list(lst: Iterable[str]) -> list[str]:
157178

158179
@staticmethod
159180
def _parse_items(
160-
items: None | Sequence[ItemInfo], n_items_data: int
181+
items: None | Sequence[ItemInfo | str], n_items_data: int
161182
) -> list[ItemInfo]:
162183
if items is None:
163184
item_infos = [ItemInfo(f"Item_{j + 1}") for j in range(n_items_data)]
@@ -167,7 +188,13 @@ def _parse_items(
167188
f"Number of items ({len(items)}) must match len of data ({n_items_data})"
168189
)
169190

170-
item_infos = list(items)
191+
item_infos = []
192+
for item in items:
193+
if isinstance(item, str):
194+
item = ItemInfo(item)
195+
elif not isinstance(item, ItemInfo):
196+
raise TypeError(f"items of type: {type(item)} is not supported")
197+
item_infos.append(item)
171198

172199
item_names = [it.name for it in item_infos]
173200
item_names = Dataset._modify_list(item_names)

0 commit comments

Comments
 (0)