Skip to content

Commit b161611

Browse files
committed
more tests passing
1 parent 01837b6 commit b161611

3 files changed

Lines changed: 21 additions & 8 deletions

File tree

autotest/test_dfn.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ def test_load_v1(dfn_name):
4343
(DFN_DIR / "common.dfn").open() as common_file,
4444
(DFN_DIR / f"{dfn_name}.dfn").open() as dfn_file,
4545
):
46-
common, _ = _load_common(common_file)
46+
common = _load_common(common_file)
4747
dfn = load(dfn_file, name=dfn_name, format="dfn", common=common)
4848
assert any(dfn.fields)
4949

modflow_devtools/dfn/__init__.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -340,9 +340,10 @@ def map(
340340
raise ValueError(f"Unsupported schema version: {schema_version}. Expected 1 or 2.")
341341

342342

343-
def load(f, name: str, format: str = "dfn", **kwargs) -> Dfn:
343+
def load(f, format: str = "dfn", **kwargs) -> Dfn:
344344
"""Load a MODFLOW 6 definition file."""
345345
if format == "dfn":
346+
name = kwargs.pop("name")
346347
fields, meta = parse_dfn(f, **kwargs)
347348
blocks = {
348349
block_name: {field["name"]: FieldV1.from_dict(field) for field in block}
@@ -359,7 +360,11 @@ def load(f, name: str, format: str = "dfn", **kwargs) -> Dfn:
359360
blocks=blocks,
360361
)
361362
elif format == "toml":
362-
return Dfn(name=name, **tomli.load(f))
363+
if (name := kwargs.pop("name", None)) is not None:
364+
if name != (data := tomli.load(f)).pop("name", name):
365+
raise ValueError(f"DFN name mismatch: {name} != {data.get('name')}")
366+
return Dfn(name=name, **data)
367+
return Dfn(**data)
363368
raise ValueError(f"Unsupported format: {format}. Expected 'dfn' or 'toml'.")
364369

365370

@@ -383,7 +388,7 @@ def load_all(path: str | PathLike) -> Dfns:
383388
dfns[dfn_name] = load(f, name=dfn_name, common=common, format="dfn")
384389
if toml_paths:
385390
for toml_name, toml_path in toml_paths.items():
386-
with toml_path.open() as f:
391+
with toml_path.open("rb") as f:
387392
dfns[toml_name] = load(f, name=toml_name, format="toml")
388393
return dfns
389394

modflow_devtools/dfn2toml.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import tomli_w as tomli
99
from boltons.iterutils import remap
1010

11-
from modflow_devtools.dfn import flatten, load_tree, map
11+
from modflow_devtools.dfn import flatten, map
1212
from modflow_devtools.misc import drop_none_or_empty
1313

1414
# mypy: ignore-errors
@@ -18,10 +18,18 @@ def convert(indir: PathLike, outdir: PathLike, schema_version: str = "2") -> Non
1818
indir = Path(indir).expanduser().absolute()
1919
outdir = Path(outdir).expanduser().absolute()
2020
outdir.mkdir(exist_ok=True, parents=True)
21-
dfns_in = flatten(load_tree(indir))
22-
dfns = {
23-
name: map(dfn, schema_version=schema_version) for name, dfn in dfns_in.items()
21+
22+
# Load all DFNs individually first, then map to target schema
23+
from modflow_devtools.dfn import infer_tree, load_all
24+
25+
dfns_raw = load_all(indir)
26+
dfns_mapped = {
27+
name: map(dfn, schema_version=schema_version) for name, dfn in dfns_raw.items()
2428
}
29+
30+
# Now infer tree structure with mapped DFNs and flatten
31+
tree = infer_tree(dfns_mapped)
32+
dfns = flatten(tree)
2533
for dfn_name, dfn in dfns.items():
2634
with Path.open(outdir / f"{dfn_name}.toml", "wb") as f:
2735
dfn_dict = asdict(dfn)

0 commit comments

Comments
 (0)