diff --git a/src/dvc_render/vega_templates.py b/src/dvc_render/vega_templates.py index 1ad556a..a7af755 100644 --- a/src/dvc_render/vega_templates.py +++ b/src/dvc_render/vega_templates.py @@ -69,6 +69,8 @@ def dict_find_value(d: dict, value: str) -> bool: if isinstance(v, str): if v == value: return True + if isinstance(v, list): + return any(dict_find_value(e, value) for e in v) return False diff --git a/tests/test_templates.py b/tests/test_templates.py index af0b02a..2fd88de 100644 --- a/tests/test_templates.py +++ b/tests/test_templates.py @@ -10,6 +10,7 @@ Template, TemplateContentDoesNotMatch, TemplateNotFoundError, + dict_find_value, dump_templates, get_template, ) @@ -101,3 +102,15 @@ def test_raise_on_init_modified(tmp_dir): def test_escape_special_characters(): value = "foo.bar[2]" assert Template.escape_special_characters(value) == "foo\\.bar\\[2\\]" + + +@pytest.mark.parametrize( + "content_dict, value_name", + [ + ({"key": "value"}, "value"), + ({"key": {"subkey": "value"}}, "value"), + ({"key": [{"subkey": "value"}]}, "value"), + ], +) +def test_dict_find_value(content_dict, value_name): + assert dict_find_value(content_dict, value_name)