Skip to content

Commit d2d563d

Browse files
fix:boolean parameter without defaullt value defaults to False (#352)
* fix:boolean parameter without defaullt value defaults to False * added self required so that optional boolean parameters can remain None * fix: merge normalized_value if blocks and unit tests * resolving CI failure
1 parent 525a8e9 commit d2d563d

2 files changed

Lines changed: 11 additions & 5 deletions

File tree

openhexa/sdk/pipelines/parameter.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -526,10 +526,12 @@ def _validate_single(self, value: typing.Any):
526526
normalized_value = self.default
527527

528528
if normalized_value is None:
529-
if self.required:
529+
if isinstance(self.type, Boolean):
530+
normalized_value = False
531+
elif self.required:
530532
raise ParameterValueError(f"{self.code} is required")
531-
532-
return None
533+
else:
534+
return None
533535

534536
pre_validated = self.type.validate(normalized_value)
535537
if self.choices is not None and pre_validated not in self.choices:

tests/test_parameter.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -287,9 +287,13 @@ def test_parameter_validate_single():
287287
parameter_2 = Parameter("arg2", type=int, default=3)
288288
assert parameter_2.validate(None) == 3
289289

290-
# not required, no default
290+
# not required, no default - booleans default to False
291291
parameter_3 = Parameter("arg3", type=bool, required=False)
292-
assert parameter_3.validate(None) is None
292+
assert parameter_3.validate(None) is False
293+
294+
# required, no default - booleans default to False
295+
parameter_5 = Parameter("arg5", type=bool, required=True)
296+
assert parameter_5.validate(None) is False
293297

294298
# choices
295299
parameter_4 = Parameter("arg4", type=str, choices=["ab", "cd"])

0 commit comments

Comments
 (0)