Skip to content

Commit 9f45bc7

Browse files
authored
Merge pull request #840 from DHI/bug/transform_delete_incomplete_file
Delete incomplete file created by transform
2 parents 811657b + 84f25ba commit 9f45bc7

File tree

2 files changed

+26
-20
lines changed

2 files changed

+26
-20
lines changed

mikeio/generic.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,40 @@
11
"""Generic functions for working with all types of dfs files."""
22

33
from __future__ import annotations
4-
from dataclasses import dataclass
4+
55
import math
66
import operator
77
import os
88
import pathlib
9+
import warnings
10+
from collections.abc import Iterable, Sequence
911
from copy import deepcopy
12+
from dataclasses import dataclass
1013
from datetime import datetime, timedelta
1114
from shutil import copyfile
12-
from collections.abc import Iterable, Sequence
1315
from typing import Callable, Mapping, Union
14-
import warnings
15-
1616

1717
import numpy as np
1818
import pandas as pd
1919
from mikecore.DfsBuilder import DfsBuilder
2020
from mikecore.DfsFile import (
2121
DfsDynamicItemInfo,
22-
DfsFile,
23-
DfsEqTimeAxis,
24-
DfsNonEqTimeAxis,
2522
DfsEqCalendarAxis,
23+
DfsEqTimeAxis,
24+
DfsFile,
2625
DfsNonEqCalendarAxis,
26+
DfsNonEqTimeAxis,
2727
TimeAxisType,
2828
)
2929
from mikecore.DfsFileFactory import DfsFileFactory
3030
from mikecore.eum import eumQuantity
3131
from tqdm import tqdm, trange
3232

33+
import mikeio
3334

3435
from . import __dfs_version__
3536
from .dfs._dfs import _get_item_info, _valid_item_numbers
36-
from .eum import ItemInfo, EUMType, EUMUnit
37-
import mikeio
38-
37+
from .eum import EUMType, EUMUnit, ItemInfo
3938

4039
TimeAxis = Union[
4140
DfsEqTimeAxis, DfsNonEqTimeAxis, DfsEqCalendarAxis, DfsNonEqCalendarAxis
@@ -1129,6 +1128,8 @@ def transform(
11291128
except KeyError as e:
11301129
missing_key = e.args[0]
11311130
keys = ", ".join(data.keys())
1131+
dfs.Close()
1132+
pathlib.Path(outfilename).unlink()
11321133
raise KeyError(
11331134
f"Item '{missing_key}' is not available in the file. Available items: {keys}"
11341135
)

tests/test_generic.py

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,24 @@
11
from pathlib import Path
2+
23
import numpy as np
34
import pandas as pd
5+
import pytest
6+
from mikecore.DfsFileFactory import DfsFileFactory
7+
48
import mikeio
59
from mikeio import generic
610
from mikeio.generic import (
7-
scale,
11+
DerivedItem,
12+
add,
13+
avg_time,
14+
change_datatype,
815
diff,
9-
sum,
1016
extract,
11-
avg_time,
1217
fill_corrupt,
13-
add,
14-
change_datatype,
18+
scale,
19+
sum,
1520
transform,
16-
DerivedItem,
1721
)
18-
import pytest
19-
from mikecore.DfsFileFactory import DfsFileFactory
2022

2123

2224
def test_add_constant(tmp_path: Path) -> None:
@@ -733,11 +735,14 @@ def test_transform_can_include_existing_items(tmp_path: Path) -> None:
733735
assert ds["Current Speed"].values == pytest.approx(0.13128172)
734736

735737

736-
def test_transform_func_with_missing_item_reports_existing_items() -> None:
738+
def test_transform_func_with_missing_item_reports_existing_items(
739+
tmp_path: Path,
740+
) -> None:
737741
infilename = "tests/testdata/oresundHD_run1.dfsu"
738-
outfilename = "notgonnahappen.dfsu"
742+
outfilename = tmp_path / "notgonnahappen.dfsu"
739743

740744
items = [DerivedItem(name="Not relevant", func=lambda x: x["not in the file"])]
741745
with pytest.raises(KeyError) as excinfo:
742746
transform(infilename, outfilename, items)
743747
assert "U velocity" in str(excinfo.value)
748+
assert not outfilename.exists()

0 commit comments

Comments
 (0)