@@ -186,16 +186,17 @@ def read_step(step):
186186 return assemble_silo (case_dir , step , var = varname )
187187 return assemble (case_dir , step , fmt , var = varname )
188188
189- # Validate variable name by reading the first timestep (without var filter)
190- def read_step_all_vars (step ):
189+ # Validate variable name by reading the first timestep (without var filter),
190+ # then reuse it for the first rendered frame to avoid double I/O.
191+ first_assembled = read_step (requested_steps [0 ])
192+ if varname not in first_assembled .variables :
193+ # Re-read without filter to show all available variable names
191194 if fmt == 'silo' :
192195 from .silo_reader import assemble_silo # pylint: disable=import-outside-toplevel
193- return assemble_silo (case_dir , step )
194- return assemble (case_dir , step , fmt )
195-
196- test_assembled = read_step_all_vars (requested_steps [0 ])
197- if varname not in test_assembled .variables :
198- avail = sorted (test_assembled .variables .keys ())
196+ all_vars_assembled = assemble_silo (case_dir , requested_steps [0 ])
197+ else :
198+ all_vars_assembled = assemble (case_dir , requested_steps [0 ], fmt )
199+ avail = sorted (all_vars_assembled .variables .keys ())
199200 cons .print (f"[bold red]Error:[/bold red] Variable '{ varname } ' not found." )
200201 cons .print (f"[bold]Available variables:[/bold] { ', ' .join (avail )} " )
201202 sys .exit (1 )
@@ -231,7 +232,7 @@ def read_step_all_vars(step):
231232 failures = []
232233 for step in step_iter :
233234 try :
234- assembled = read_step (step )
235+ assembled = first_assembled if step == requested_steps [ 0 ] else read_step (step )
235236 except (FileNotFoundError , EOFError , ValueError ) as exc :
236237 cons .print (f"[yellow]Warning:[/yellow] Skipping step { step } : { exc } " )
237238 failures .append (step )
0 commit comments