1515 sv_ttk = None
1616
1717from pipelines import (
18+ PipelineDescriptor ,
1819 ProcessPipeline ,
1920 ProcessResult ,
2021 load_pipeline_catalog ,
@@ -70,7 +71,7 @@ def __init__(self) -> None:
7071 self .title ("HDF5 Process" )
7172 self .geometry ("800x600" )
7273 self .h5_file : h5py .File | None = None
73- self .pipeline_registry : dict [str , ProcessPipeline ] = {}
74+ self .pipeline_registry : dict [str , PipelineDescriptor ] = {}
7475 self .pipeline_check_vars : dict [str , tk .BooleanVar ] = {}
7576 self .last_process_result : ProcessResult | None = None
7677 self .last_process_pipeline : ProcessPipeline | None = None
@@ -329,12 +330,12 @@ def _register_pipelines(self) -> None:
329330 self ._populate_pipeline_checks (available , missing )
330331
331332 def _populate_pipeline_checks (
332- self , available : list [ProcessPipeline ], missing : list [ProcessPipeline ]
333+ self , available : list [PipelineDescriptor ], missing : list [PipelineDescriptor ]
333334 ) -> None :
334335 for child in self .pipeline_checks_inner .winfo_children ():
335336 child .destroy ()
336337 self .pipeline_check_vars = {}
337- rows : list [ProcessPipeline ] = [* available , * missing ]
338+ rows : list [PipelineDescriptor ] = [* available , * missing ]
338339 for idx , pipeline in enumerate (rows ):
339340 is_available = getattr (pipeline , "available" , True )
340341 var = tk .BooleanVar (value = is_available )
@@ -422,8 +423,8 @@ def run_selected_pipeline(self) -> None:
422423 "Missing pipeline" , "Select a pipeline before running."
423424 )
424425 return
425- pipeline = self .pipeline_registry .get (name )
426- if pipeline is None :
426+ pipeline_desc = self .pipeline_registry .get (name )
427+ if pipeline_desc is None :
427428 messagebox .showerror (
428429 "Pipeline missing" , f"Pipeline '{ name } ' is not registered."
429430 )
@@ -432,6 +433,7 @@ def run_selected_pipeline(self) -> None:
432433 messagebox .showwarning ("Missing file" , "Load a .h5 file first." )
433434 return
434435 try :
436+ pipeline = pipeline_desc .instantiate ()
435437 result = pipeline .run (self .h5_file )
436438 except Exception as exc : # noqa: BLE001
437439 messagebox .showerror ("Pipeline error" , f"Pipeline failed: { exc } " )
@@ -522,7 +524,7 @@ def run_batch(self) -> None:
522524 )
523525 return
524526
525- pipelines : list [ProcessPipeline ] = []
527+ pipelines : list [PipelineDescriptor ] = []
526528 missing : list [str ] = []
527529 for name in selected_names :
528530 pipeline = self .pipeline_registry .get (name )
@@ -646,15 +648,16 @@ def _safe_pipeline_suffix(self, name: str) -> str:
646648 def _run_pipelines_on_file (
647649 self ,
648650 h5_path : Path ,
649- pipelines : Sequence [ProcessPipeline ],
651+ pipelines : Sequence [PipelineDescriptor ],
650652 output_root : Path ,
651653 ) -> None :
652654 data_dir = output_root / h5_path .stem
653655 data_dir .mkdir (parents = True , exist_ok = True )
654656 combined_h5_out = data_dir / f"{ h5_path .stem } _pipelines_result.h5"
655657 pipeline_results : list [tuple [str , ProcessResult ]] = []
656658 with h5py .File (h5_path , "r" ) as h5file :
657- for pipeline in pipelines :
659+ for pipeline_desc in pipelines :
660+ pipeline = pipeline_desc .instantiate ()
658661 result = pipeline .run (h5file )
659662 pipeline_results .append ((pipeline .name , result ))
660663 self ._log_batch (f"[OK] { h5_path .name } -> { pipeline .name } " )
0 commit comments