From ebfd8f63f51f1c1053101dc202746c085ca71ebb Mon Sep 17 00:00:00 2001 From: JanakiRamChittineni <341781521+raams95@users.noreply.github.com> Date: Tue, 13 Oct 2026 16:22:48 -0500 Subject: [PATCH] fix(dbt): return lists and scalars from fromyaml The fromyaml builtin wrapped the parsed document in dict(), so YAML whose top level is not a mapping was mishandled: a block-style list raised an uncaught ValueError, and a flow-style list or a scalar was silently returned as None. dbt returns the parsed value as is. sqlmesh.utils.yaml.load already returns plain Python objects, so return its result directly. Mappings are unaffected. Fixes #6137 Signed-off-by: JanakiRamChittineni <341781521+raams95@users.noreply.github.com> --- sqlmesh/dbt/builtin.py | 2 +- tests/dbt/test_transformation.py | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/sqlmesh/dbt/builtin.py b/sqlmesh/dbt/builtin.py index fa05e3d7f9..3b06ec985a 100644 --- a/sqlmesh/dbt/builtin.py +++ b/sqlmesh/dbt/builtin.py @@ -369,7 +369,7 @@ def to_yaml(value: t.Any, default: t.Optional[t.Any] = None) -> t.Optional[t.Any def from_yaml(value: t.Any, default: t.Optional[t.Any] = None) -> t.Optional[t.Any]: try: - return dict(yaml.load(value, raise_if_empty=False, render_jinja=False)) + return yaml.load(value, raise_if_empty=False, render_jinja=False) except (TypeError, YAMLError): return default diff --git a/tests/dbt/test_transformation.py b/tests/dbt/test_transformation.py index fe6073dfad..32249cbef3 100644 --- a/tests/dbt/test_transformation.py +++ b/tests/dbt/test_transformation.py @@ -1792,6 +1792,12 @@ def test_yaml(sushi_test_project: Project): assert context.render("{{ toyaml(invalid) }}", invalid=lambda: "") == "None" assert context.render("""{{ fromyaml('key: value') }}""") == "{'key': 'value'}" + assert context.render("""{{ fromyaml('[1, 2]') }}""") == "[1, 2]" + assert ( + context.render("{% set my_yaml %}\n- good\n- bad\n{% endset %}{{ fromyaml(my_yaml) }}") + == "['good', 'bad']" + ) + assert context.render("""{{ fromyaml('42') }}""") == "42" @pytest.mark.xdist_group("dbt_manifest")