Skip to content

Commit 0214571

Browse files
sbryngelsonclaude
andcommitted
Fix KeyError in MP4 rendering and require --step for render
Two fixes in the viz command: 1. Use .get() instead of direct dict access in the MP4 frame loop to gracefully skip timesteps where the variable is missing, preventing a crash mid-render. 2. Require --step argument for rendering instead of silently rendering all timesteps, which could fill disk and take very long. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 9bf1918 commit 0214571

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

toolchain/mfc/viz/renderer.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -218,14 +218,17 @@ def render_mp4(varname, steps, output, fps=10, # pylint: disable=too-many-argum
218218

219219
for i, step in enumerate(step_iter):
220220
assembled = read_func(step)
221+
var_data = assembled.variables.get(varname)
222+
if var_data is None:
223+
continue
221224
frame_path = os.path.join(viz_dir, f'{i:06d}.png')
222225

223226
if assembled.ndim == 1:
224-
render_1d(assembled.x_cc, assembled.variables[varname],
227+
render_1d(assembled.x_cc, var_data,
225228
varname, step, frame_path, **opts)
226229
elif assembled.ndim == 2:
227230
render_2d(assembled.x_cc, assembled.y_cc,
228-
assembled.variables[varname],
231+
var_data,
229232
varname, step, frame_path, **opts)
230233
elif assembled.ndim == 3:
231234
render_3d_slice(assembled, varname, step, frame_path, **opts)

toolchain/mfc/viz/viz.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,11 @@ def viz(): # pylint: disable=too-many-locals,too-many-statements,too-many-branc
134134
"Use --list-vars to see available variables.")
135135
sys.exit(1)
136136

137+
if step_arg is None:
138+
cons.print("[bold red]Error:[/bold red] --step is required for rendering. "
139+
"Use --list-steps to see available timesteps, or pass --step all.")
140+
sys.exit(1)
141+
137142
steps = discover_timesteps(case_dir, fmt)
138143
if not steps:
139144
cons.print("[bold red]Error:[/bold red] No timesteps found.")

0 commit comments

Comments
 (0)