From a9e7bec0da6a4af8ffa7a47f8f1a8edc1da8d872 Mon Sep 17 00:00:00 2001 From: Matthieu Cedou Date: Fri, 3 Apr 2026 14:44:47 -0400 Subject: [PATCH] do all the operations under the same context --- geoapps_utils/base.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/geoapps_utils/base.py b/geoapps_utils/base.py index 19ff0ff..ec59171 100644 --- a/geoapps_utils/base.py +++ b/geoapps_utils/base.py @@ -125,9 +125,9 @@ def start( if ifile.geoh5 is None: raise GeoAppsError("The application needs a valid 'geoh5' file.") - params = cls._params_class.build(ifile, **kwargs) - with params.geoh5.open(mode=mode): + with Workspace(ifile.geoh5).open(mode=mode) as workspace: try: + params = cls._params_class.build(ifile, workspace=workspace, **kwargs) logger.info("Initializing application . . .") driver = cls(params) logger.info("Running application . . .") @@ -262,12 +262,16 @@ def collect_input_from_dict( @classmethod def build( - cls, input_data: InputFile | dict | None | UIJson = None, **kwargs + cls, + input_data: InputFile | dict | None | UIJson = None, + workspace: Workspace | None = None, + **kwargs, ) -> Self: """ Build a dataclass from a dictionary or UIJson. :param input_data: Dictionary of parameters and values. + :param workspace: Workspace to use for building parameters. :return: Dataclass of application parameters. """ @@ -277,7 +281,7 @@ def build( data = input_file_deprecation_warning(input_data) if isinstance(data, UIJson): - data = data.to_params() + data = data.to_params(workspace) if not isinstance(data, dict): raise TypeError("Input data must be a dictionary or UIJson.")