From 83e9e39a9de422ebe05b53fc74301d1f23fb9a4e Mon Sep 17 00:00:00 2001 From: DimitriKwihangana Date: Mon, 2 Feb 2026 17:29:24 +0200 Subject: [PATCH 1/4] fix:boolean parameter without defaullt value defaults to False --- openhexa/sdk/pipelines/parameter.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/openhexa/sdk/pipelines/parameter.py b/openhexa/sdk/pipelines/parameter.py index 565d3b7f..aae07edd 100644 --- a/openhexa/sdk/pipelines/parameter.py +++ b/openhexa/sdk/pipelines/parameter.py @@ -524,6 +524,8 @@ def _validate_single(self, value: typing.Any): normalized_value = self.type.normalize(value) if normalized_value is None and self.default is not None: normalized_value = self.default + elif normalized_value is None and isinstance(self.type, Boolean): + normalized_value = False # Booleans default to False when no default is set if normalized_value is None: if self.required: From 569d5e4404e8214d95a0cbe26dae9324e2866878 Mon Sep 17 00:00:00 2001 From: DimitriKwihangana Date: Mon, 2 Feb 2026 17:54:48 +0200 Subject: [PATCH 2/4] added self required so that optional boolean parameters can remain None --- openhexa/sdk/pipelines/parameter.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openhexa/sdk/pipelines/parameter.py b/openhexa/sdk/pipelines/parameter.py index aae07edd..cc8bf6eb 100644 --- a/openhexa/sdk/pipelines/parameter.py +++ b/openhexa/sdk/pipelines/parameter.py @@ -524,8 +524,8 @@ def _validate_single(self, value: typing.Any): normalized_value = self.type.normalize(value) if normalized_value is None and self.default is not None: normalized_value = self.default - elif normalized_value is None and isinstance(self.type, Boolean): - normalized_value = False # Booleans default to False when no default is set + elif normalized_value is None and isinstance(self.type, Boolean) and self.required: + normalized_value = False # Required booleans default to False when no default is set if normalized_value is None: if self.required: From 4c34c8d23025ba10d26373cb61c64fdb375b45e1 Mon Sep 17 00:00:00 2001 From: DimitriKwihangana Date: Wed, 4 Feb 2026 11:48:18 +0200 Subject: [PATCH 3/4] fix: merge normalized_value if blocks and unit tests --- openhexa/sdk/pipelines/parameter.py | 10 +++++----- tests/test_parameter.py | 8 ++++++-- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/openhexa/sdk/pipelines/parameter.py b/openhexa/sdk/pipelines/parameter.py index cc8bf6eb..caabd3d3 100644 --- a/openhexa/sdk/pipelines/parameter.py +++ b/openhexa/sdk/pipelines/parameter.py @@ -524,14 +524,14 @@ def _validate_single(self, value: typing.Any): normalized_value = self.type.normalize(value) if normalized_value is None and self.default is not None: normalized_value = self.default - elif normalized_value is None and isinstance(self.type, Boolean) and self.required: - normalized_value = False # Required booleans default to False when no default is set if normalized_value is None: - if self.required: + if isinstance(self.type, Boolean): + normalized_value = False + elif self.required: raise ParameterValueError(f"{self.code} is required") - - return None + else: + return None pre_validated = self.type.validate(normalized_value) if self.choices is not None and pre_validated not in self.choices: diff --git a/tests/test_parameter.py b/tests/test_parameter.py index 35eea572..2dfe93e0 100644 --- a/tests/test_parameter.py +++ b/tests/test_parameter.py @@ -287,9 +287,13 @@ def test_parameter_validate_single(): parameter_2 = Parameter("arg2", type=int, default=3) assert parameter_2.validate(None) == 3 - # not required, no default + # not required, no default - booleans default to False parameter_3 = Parameter("arg3", type=bool, required=False) - assert parameter_3.validate(None) is None + assert parameter_3.validate(None) is False + + # required, no default - booleans default to False + parameter_5 = Parameter("arg5", type=bool, required=True) + assert parameter_5.validate(None) is False # choices parameter_4 = Parameter("arg4", type=str, choices=["ab", "cd"]) From fd8cd93d9e3789511c147a076da948a6438a88b5 Mon Sep 17 00:00:00 2001 From: DimitriKwihangana Date: Wed, 4 Feb 2026 11:56:46 +0200 Subject: [PATCH 4/4] resolving CI failure --- openhexa/sdk/pipelines/parameter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openhexa/sdk/pipelines/parameter.py b/openhexa/sdk/pipelines/parameter.py index caabd3d3..d4faf7e5 100644 --- a/openhexa/sdk/pipelines/parameter.py +++ b/openhexa/sdk/pipelines/parameter.py @@ -527,7 +527,7 @@ def _validate_single(self, value: typing.Any): if normalized_value is None: if isinstance(self.type, Boolean): - normalized_value = False + normalized_value = False elif self.required: raise ParameterValueError(f"{self.code} is required") else: