From 77bf5dd27110848c6e8119ae142d1b2baf030d0b Mon Sep 17 00:00:00 2001 From: Terrence Meiczinger Date: Thu, 16 Oct 2025 12:21:15 -0400 Subject: [PATCH] add custom bool converter --- src/reliqua/middleware.py | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/src/reliqua/middleware.py b/src/reliqua/middleware.py index cf343c0..9ae7e30 100644 --- a/src/reliqua/middleware.py +++ b/src/reliqua/middleware.py @@ -9,6 +9,30 @@ import falcon + +def to_bool(value): + """ + Convert value to bool. + + This method will do a more extensive conversion to a python bool. + + :param any value: The value to be converted + :return bool: Boolean value + """ + truthy = {"true", "yes", "1", "on", "t", "y"} + falsy = {"false", "no", "0", "off", "f", "n", ""} + + val = str(value).strip().lower() + + if val in truthy: + return True + + if val in falsy: + return False + + return bool(value) + + TRANSFORMS = { "string": str, "str": str, @@ -16,8 +40,8 @@ "float": float, "integer": int, "int": int, - "boolean": bool, - "bool": bool, + "boolean": to_bool, + "bool": to_bool, "object": json.loads, "list": list, "array": list, @@ -185,6 +209,7 @@ def convert(req, parameter, transform=None): converter = getattr(Converter, f"as_{parameter.datatype}", Converter.as_str) transform = TRANSFORMS.get(transform, str) + print(f"transform: {transform}") default = transform(parameter.default) if transform and parameter.default else None return converter(