Edit on GitHub

sqlmesh.utils.conversions

 1from __future__ import annotations
 2
 3import typing as t
 4from datetime import date, datetime
 5
 6
 7def ensure_bool(val: t.Any) -> bool:
 8    if isinstance(val, bool):
 9        return val
10
11    if isinstance(val, str):
12        val = try_str_to_bool(val)
13
14    return bool(val)
15
16
17def try_str_to_bool(val: str) -> t.Union[str, bool]:
18    maybe_bool = val.lower()
19    if maybe_bool in ["true", "false"]:
20        return maybe_bool == "true"
21
22    return val
23
24
25def make_serializable(obj: t.Any) -> t.Any:
26    if isinstance(obj, (date, datetime)):
27        return obj.isoformat()
28    if isinstance(obj, dict):
29        return {k: make_serializable(v) for k, v in obj.items()}
30    if isinstance(obj, list):
31        return [make_serializable(item) for item in obj]
32    return obj
def ensure_bool(val: Any) -> bool:
 8def ensure_bool(val: t.Any) -> bool:
 9    if isinstance(val, bool):
10        return val
11
12    if isinstance(val, str):
13        val = try_str_to_bool(val)
14
15    return bool(val)
def try_str_to_bool(val: str) -> Union[str, bool]:
18def try_str_to_bool(val: str) -> t.Union[str, bool]:
19    maybe_bool = val.lower()
20    if maybe_bool in ["true", "false"]:
21        return maybe_bool == "true"
22
23    return val
def make_serializable(obj: Any) -> Any:
26def make_serializable(obj: t.Any) -> t.Any:
27    if isinstance(obj, (date, datetime)):
28        return obj.isoformat()
29    if isinstance(obj, dict):
30        return {k: make_serializable(v) for k, v in obj.items()}
31    if isinstance(obj, list):
32        return [make_serializable(item) for item in obj]
33    return obj