Skip to content

Commit 512eef0

Browse files
committed
Pass name, type and unit instead of item.
1 parent 4718eaf commit 512eef0

File tree

2 files changed

+29
-7
lines changed

2 files changed

+29
-7
lines changed

mikeio/generic.py

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,10 @@
3030
from mikecore.eum import eumQuantity
3131
from tqdm import tqdm, trange
3232

33+
3334
from . import __dfs_version__
3435
from .dfs._dfs import _get_item_info, _valid_item_numbers
35-
from .eum import ItemInfo
36+
from .eum import ItemInfo, EUMType, EUMUnit
3637
import mikeio
3738

3839

@@ -1013,7 +1014,6 @@ def change_datatype(
10131014
dfs_in.Close()
10141015

10151016

1016-
@dataclass
10171017
class DerivedItem:
10181018
"""Item derived from other items.
10191019
@@ -1040,8 +1040,30 @@ class DerivedItem:
10401040
10411041
"""
10421042

1043-
item: ItemInfo
1044-
func: Callable[[Mapping[str, np.ndarray]], np.ndarray] | None = None
1043+
def __init__(
1044+
self,
1045+
name: str,
1046+
type: EUMType,
1047+
unit: EUMUnit | None = None,
1048+
func: Callable[[Mapping[str, np.ndarray]], np.ndarray] | None = None,
1049+
) -> None:
1050+
"""Create a DerivedItem.
1051+
1052+
Parameters
1053+
----------
1054+
name: str
1055+
Name of the derived item.
1056+
type: EUMType
1057+
EUMType of the derived item.
1058+
unit: EUMUnit | None, optional
1059+
EUMUnit of the derived item, pass None to use the default unit for the type.
1060+
Default is None.
1061+
func: Callable[[Mapping[str, np.ndarray]], np.ndarray] | None, optional
1062+
Function to compute the derived item from a mapping of item names to data arrays.
1063+
1064+
"""
1065+
self.item = ItemInfo(name, type, unit)
1066+
self.func = func
10451067

10461068

10471069
def transform(

tests/test_generic.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -676,14 +676,14 @@ def test_change_datatype_dfs0(tmp_path: Path) -> None:
676676

677677
def test_derived_variables(tmp_path: Path) -> None:
678678
from mikeio.generic import DerivedItem, transform
679-
from mikeio import ItemInfo
680679

681680
infilename = "tests/testdata/oresundHD_run1.dfsu"
682681
outfilename = tmp_path / "need_for_speed.dfsu"
683682

684683
items = [
685684
DerivedItem(
686-
item=ItemInfo("Current Speed", mikeio.EUMType.Current_Speed),
685+
name="Current Speed",
686+
type=mikeio.EUMType.Current_Speed,
687687
func=lambda x: np.sqrt(x["U velocity"] ** 2 + x["V velocity"] ** 2),
688688
)
689689
]
@@ -695,7 +695,7 @@ def test_derived_variables(tmp_path: Path) -> None:
695695

696696
dfs1 = mikeio.Dfsu2DH(infilename)
697697
sel_items = [
698-
DerivedItem(item=item)
698+
DerivedItem(name=item.name, type=item.type, unit=item.unit)
699699
for item in dfs1.items
700700
if item.name != "Surface elevation"
701701
]

0 commit comments

Comments
 (0)