Skip to content

Commit b1b4283

Browse files
committed
move block metadata out of template into python preprocessing
1 parent 75075f7 commit b1b4283

File tree

147 files changed

+26
-160
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

147 files changed

+26
-160
lines changed

flopy4/mf6/codec/reader/grammar/__init__.py

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,40 @@ def _get_template_env():
2424
return env
2525

2626

27+
def _compute_block_metadata(blocks):
28+
"""Pre-compute block metadata for template rendering."""
29+
block_metadata = {}
30+
for block_name, block_fields in blocks.items():
31+
period_groups = filters.group_period_fields(block_fields)
32+
recarray_name = filters.get_recarray_name(block_name) if period_groups else None
33+
has_index = block_name == "period"
34+
35+
block_metadata[block_name] = {
36+
"fields": block_fields,
37+
"period_groups": period_groups,
38+
"recarray_name": recarray_name,
39+
"has_index": has_index,
40+
}
41+
return block_metadata
42+
43+
2744
def make_grammar(dfn: Dfn, outdir: PathLike):
2845
"""Generate a Lark grammar file for a single component."""
2946
outdir = Path(outdir).expanduser().resolve().absolute()
3047
env = _get_template_env()
3148
template = env.get_template("component.lark.jinja")
3249
target_path = outdir / f"{dfn.name}.lark"
50+
51+
# Pre-compute block metadata
52+
block_metadata = _compute_block_metadata(dfn.blocks)
53+
3354
with open(target_path, "w") as f:
3455
name = dfn.name
35-
f.write(template.render(name=name, blocks=dfn.blocks, fields=dfn.fields))
56+
f.write(
57+
template.render(
58+
name=name, blocks=dfn.blocks, fields=dfn.fields, block_metadata=block_metadata
59+
)
60+
)
3661

3762

3863
def make_all_grammars(dfns: dict[str, Dfn], outdir: PathLike):

flopy4/mf6/codec/reader/grammar/generated/chf-cdb.lark

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
%ignore WS
77
%ignore SH_COMMENT
88

9-
109
// Top-level structure
1110
start: block*
1211
block: options_block | dimensions_block | period_block

flopy4/mf6/codec/reader/grammar/generated/chf-chd.lark

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
%ignore WS
77
%ignore SH_COMMENT
88

9-
109
// Top-level structure
1110
start: block*
1211
block: options_block | dimensions_block | period_block

flopy4/mf6/codec/reader/grammar/generated/chf-cxs.lark

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
%ignore WS
77
%ignore SH_COMMENT
88

9-
109
// Top-level structure
1110
start: block*
1211
block: options_block | dimensions_block | packagedata_block | crosssectiondata_block

flopy4/mf6/codec/reader/grammar/generated/chf-dfw.lark

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
%ignore WS
77
%ignore SH_COMMENT
88

9-
109
// Top-level structure
1110
start: block*
1211
block: options_block | griddata_block

flopy4/mf6/codec/reader/grammar/generated/chf-disv1d.lark

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
%ignore WS
77
%ignore SH_COMMENT
88

9-
109
// Top-level structure
1110
start: block*
1211
block: options_block | dimensions_block | griddata_block | vertices_block | cell1d_block

flopy4/mf6/codec/reader/grammar/generated/chf-evp.lark

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
%ignore WS
77
%ignore SH_COMMENT
88

9-
109
// Top-level structure
1110
start: block*
1211
block: options_block | dimensions_block | period_block

flopy4/mf6/codec/reader/grammar/generated/chf-flw.lark

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
%ignore WS
77
%ignore SH_COMMENT
88

9-
109
// Top-level structure
1110
start: block*
1211
block: options_block | dimensions_block | period_block

flopy4/mf6/codec/reader/grammar/generated/chf-ic.lark

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
%ignore WS
77
%ignore SH_COMMENT
88

9-
109
// Top-level structure
1110
start: block*
1211
block: options_block | griddata_block

flopy4/mf6/codec/reader/grammar/generated/chf-nam.lark

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
%ignore WS
77
%ignore SH_COMMENT
88

9-
109
// Top-level structure
1110
start: block*
1211
block: options_block | packages_block

0 commit comments

Comments
 (0)