Skip to content

Commit f1520c8

Browse files
committed
clean up unnecessary stuff
1 parent 77a6a7d commit f1520c8

6 files changed

Lines changed: 29 additions & 125 deletions

File tree

autotest/test_dfnmap.py

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,6 @@ def dfn_dir(module_tmpdir):
3636
return path
3737

3838

39-
@pytest.fixture(scope="module", params=FORMATS)
40-
def converted_v1_1(request, dfn_dir, module_tmpdir):
41-
fmt = request.param
42-
out = module_tmpdir / f"v1.1-{fmt}"
43-
migrate(dfn_dir, out, schema_version="1.1", fmt=fmt)
44-
return out, fmt
45-
46-
4739
@pytest.fixture(scope="module", params=FORMATS)
4840
def converted_v2(request, dfn_dir, module_tmpdir):
4941
fmt = request.param
@@ -52,17 +44,6 @@ def converted_v2(request, dfn_dir, module_tmpdir):
5244
return out, fmt
5345

5446

55-
@requires_pkg("boltons")
56-
def test_convert_v1_1(converted_v1_1):
57-
out, fmt = converted_v1_1
58-
files = list(out.glob(f"*.{fmt}"))
59-
assert files
60-
for p in files:
61-
data = _load(p, fmt)
62-
assert data["name"] == p.stem
63-
assert data["schema_version"] == "1.1"
64-
65-
6647
@requires_pkg("boltons")
6748
def test_convert_v2(converted_v2):
6849
out, fmt = converted_v2

modflow_devtools/dfn/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from pathlib import Path
55

66
from modflow_devtools.dfn.schema import (
7+
_SCALAR_TYPES,
78
Dfn,
89
Dfns,
910
Field,
@@ -13,14 +14,15 @@
1314
Reader,
1415
Ref,
1516
Sln,
16-
_SCALAR_TYPES,
1717
get_fields,
1818
)
1919
from modflow_devtools.download import download_and_unzip
2020

2121
SCALAR_TYPES = _SCALAR_TYPES
2222

2323
__all__ = [
24+
"SCALAR_TYPES",
25+
"_SCALAR_TYPES",
2426
"Dfn",
2527
"Dfns",
2628
"Field",
@@ -29,8 +31,6 @@
2931
"FormatVersion",
3032
"Reader",
3133
"Ref",
32-
"SCALAR_TYPES",
33-
"_SCALAR_TYPES",
3434
"Sln",
3535
"fetch_dfns",
3636
"get_fields",

modflow_devtools/dfn/mapper.py

Lines changed: 0 additions & 44 deletions
This file was deleted.

modflow_devtools/dfn/schema.py

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -827,39 +827,3 @@ def resolve_parent(dfn: Dfn) -> Dfn:
827827
def resolve_parents(dfns: Dfns) -> Dfns:
828828
"""Infer and set component parents using naming conventions."""
829829
return {name: resolve_parent(dfn) for name, dfn in dfns.items()}
830-
831-
832-
def to_tree(dfns: Dfns) -> Dfn:
833-
"""Condense flat definitions to a hierarchical definition."""
834-
835-
first_dfn = next(iter(dfns.values()), None)
836-
if first_dfn is None:
837-
raise ValueError("No definitions found")
838-
if first_dfn["schema_version"] != "1":
839-
raise ValueError(f"Expected schema version 1, got {first_dfn['schema_version']!r}")
840-
841-
dfns = resolve_parents(dfns)
842-
roots = {name: dfn for name, dfn in dfns.items() if dfn["parent"] is None}
843-
if (nroots := len(roots)) != 1:
844-
raise ValueError(f"Expected one root component, found {nroots}")
845-
846-
def _to_tree(dfn: Dfn) -> Dfn:
847-
children = {name: _dfn for name, _dfn in dfns.items() if _dfn["parent"] == dfn["name"]}
848-
dfn["children"] = {name: _to_tree(_dfn) for name, _dfn in children.items()} or None
849-
return dfn
850-
851-
return _to_tree(next(iter(roots.values())))
852-
853-
854-
def to_flat(dfn: Dfn) -> Dfns:
855-
"""Flatten a hierarchical definition into its constituent definitions."""
856-
857-
def _to_flat(_dfn: Dfn) -> Dfns:
858-
children = dict(_dfn.get("children") or {})
859-
result: Dfns = {_dfn["name"]: _dfn}
860-
result[_dfn["name"]]["children"] = None
861-
for child in children.values():
862-
result.update(_to_flat(child))
863-
return result
864-
865-
return _to_flat(dfn)

modflow_devtools/dfn2toml.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
"""Convert DFNs to TOML (v1.1 schema). Compatibility shim for consumers of the old API."""
2+
3+
from os import PathLike
4+
from pathlib import Path
5+
6+
import tomli_w
7+
from boltons.iterutils import remap
8+
9+
from modflow_devtools.dfn import Dfn
10+
11+
12+
def _drop_none_or_empty(path, key, value):
13+
return not (value is None or value == "" or value == [] or value == {})
14+
15+
16+
def convert(indir: str | PathLike, outdir: str | PathLike) -> None:
17+
outdir = Path(outdir)
18+
outdir.mkdir(parents=True, exist_ok=True)
19+
for dfn in Dfn.load_all(Path(indir)).values(): # type: ignore
20+
with (outdir / f"{dfn['name']}.toml").open("wb") as f:
21+
tomli_w.dump(remap(dfn, visit=_drop_none_or_empty), f)

modflow_devtools/dfnmap.py

Lines changed: 5 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
from pydantic import BaseModel
1212

1313
from modflow_devtools.dfn import schema as v1
14-
from modflow_devtools.dfn.mapper import map as map_v1_1
1514
from modflow_devtools.dfns.mapper import map as map_v2
1615

1716
Format = Literal["yaml", "toml", "json"]
@@ -37,7 +36,7 @@ def _serialize_safe(obj: Any) -> Any:
3736
)
3837
if isinstance(obj, dict):
3938
result = {k: _serialize_safe(v) for k, v in obj.items() if v is not None}
40-
# Strip redundant name from v1/v1.1 field dicts — name is the dict key in the parent block.
39+
# Strip redundant name from field dicts — name is the dict key in the parent block.
4140
if "name" in result and "type" in result:
4241
del result["name"]
4342
return result
@@ -81,7 +80,7 @@ def migrate(
8180
schema_version: str = "2",
8281
fmt: Format = "yaml",
8382
) -> None:
84-
"""Migrate DFN files' schema version and serialize to the given format.
83+
"""Migrate DFN files to the v2 schema and serialize to the given format.
8584
8685
Parameters
8786
----------
@@ -90,7 +89,7 @@ def migrate(
9089
outdir : str or PathLike
9190
Output directory.
9291
schema_version : str, optional
93-
Target schema version: "1.1" or "2". Default "2".
92+
Target schema version. Default "2".
9493
fmt : str, optional
9594
Output format: "yaml", "toml", or "json". Default "yaml".
9695
"""
@@ -111,27 +110,11 @@ def migrate(
111110
with inpath.open() as f:
112111
dfn = v1.Dfn.load(f, name=inpath.stem, common=common)
113112

114-
if schema_version == "1.1":
115-
dfn = map_v1_1(dfn)
116-
elif schema_version == "2":
117-
dfn = map_v2(dfn)
118-
else:
119-
raise ValueError(f"Got schema version {schema_version}, supported versions are: 1.1, 2")
120-
121-
_write(_serialize_safe(dfn), outdir / f"{inpath.stem}{ext}", fmt)
113+
_write(_serialize_safe(map_v2(dfn)), outdir / f"{inpath.stem}{ext}", fmt)
122114
else:
123115
dfns = v1.load_all(inpath)
124-
125-
if schema_version == "1.1":
126-
dfns = v1.to_flat(v1.to_tree(dfns))
127-
dfns = {name: map_v1_1(dfn) for name, dfn in dfns.items()}
128-
elif schema_version == "2":
129-
dfns = {name: map_v2(dfn) for name, dfn in dfns.items()}
130-
else:
131-
raise ValueError(f"Got schema version {schema_version}, supported versions are: 1.1, 2")
132-
133116
for dfn_name, dfn in dfns.items():
134-
_write(_serialize_safe(dfn), outdir / f"{dfn_name}{ext}", fmt)
117+
_write(_serialize_safe(map_v2(dfn)), outdir / f"{dfn_name}{ext}", fmt)
135118

136119

137120
if __name__ == "__main__":
@@ -154,7 +137,6 @@ def migrate(
154137
"--schema-version",
155138
"-s",
156139
default="2",
157-
choices=["1.1", "2"],
158140
help="Target schema version (default: 2).",
159141
)
160142
parser.add_argument(

0 commit comments

Comments
 (0)