diff --git a/.gitignore b/.gitignore index 2e07c0b..e993a20 100644 --- a/.gitignore +++ b/.gitignore @@ -149,3 +149,5 @@ pyproject-sha.toml #version ignore grid_apps/_version.py /_version.json + +devtools/conda_env_pylint.bat diff --git a/grid_apps/octree_creation/options.py b/grid_apps/octree_creation/options.py index a3f27db..b568323 100644 --- a/grid_apps/octree_creation/options.py +++ b/grid_apps/octree_creation/options.py @@ -196,9 +196,12 @@ def collect_refinements_from_dict(data: dict) -> list[dict | None]: for param in ["object", "levels", "horizon", "distance"]: name = f"refinement_{param}" if param == "object" else param refinement_name = f"Refinement {identifier} {param}" - refinement_params[name] = data.get(refinement_name, None) + value = data.get(refinement_name, None) - if refinement_params["refinement_object"] is None: + if value is not None: + refinement_params[name] = value + + if refinement_params.get("refinement_object", None) is None: refinements.append(None) else: refinements.append(refinement_params) diff --git a/tests/run_tests/octree_creation/params_test.py b/tests/run_tests/octree_creation/params_test.py index 3c473d6..37c0689 100644 --- a/tests/run_tests/octree_creation/params_test.py +++ b/tests/run_tests/octree_creation/params_test.py @@ -12,7 +12,7 @@ from geoh5py import Workspace from geoh5py.groups import UIJsonGroup from geoh5py.objects import Points -from geoh5py.ui_json import InputFile +from geoh5py.ui_json import BaseUIJson, InputFile from grid_apps import assets_path from grid_apps.octree_creation.driver import OctreeDriver @@ -139,3 +139,20 @@ def test_treemesh_from_params(tmp_path): assert mesh.u_cell_size == 25.0 assert mesh.v_cell_size == 25.0 assert mesh.w_cell_size == 25.0 + + +def test_params_from_uijson(tmp_path): + + uijson = BaseUIJson.read(OctreeOptions.default_ui_json) + + with Workspace.create(tmp_path / f"{__name__}.geoh5") as ws: + points = Points.create(ws, name="test", vertices=np.random.rand(100, 3)) + + kwargs = { + "geoh5": ws, + "objects": points, + "Refinement A object": points, + } + uijson.set_values(**kwargs) + params = OctreeOptions.build(**uijson.to_params(workspace=ws)) + assert params.refinements is not None