Skip to content

Commit 27f64cf

Browse files
authored
catch InvalidFieldValue and raise ParsingError during context config generation (#12758)
1 parent 2a30a94 commit 27f64cf

File tree

3 files changed

+16
-4
lines changed

3 files changed

+16
-4
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
kind: Fixes
2+
body: catch InvalidFieldValue and raise ParsingError during context config generation
3+
time: 2026-03-31T22:49:46.804326-04:00
4+
custom:
5+
Author: michelleark
6+
Issue: "12758"

core/dbt/context/context_config.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@
33
from dataclasses import dataclass
44
from typing import Any, Dict, Generic, Iterator, List, Optional, TypeVar
55

6+
from mashumaro.exceptions import InvalidFieldValue
7+
68
from dbt.adapters.factory import get_config_class_by_name
79
from dbt.config import IsFQNResource, Project, RuntimeConfig
810
from dbt.contracts.graph.model_config import get_config_for
9-
from dbt.exceptions import SchemaConfigError
11+
from dbt.exceptions import ParsingError, SchemaConfigError
1012
from dbt.flags import get_flags
1113
from dbt.node_types import NodeType
1214
from dbt.utils import fqn_search
@@ -223,7 +225,11 @@ def _update_from_config(self, result: C, partial: Dict[str, Any], validate: bool
223225
adapter_type = self._active_project.credentials.type
224226
adapter_config_cls = get_config_class_by_name(adapter_type)
225227

226-
updated = result.update_from(translated, adapter_config_cls, validate=validate)
228+
try:
229+
updated = result.update_from(translated, adapter_config_cls, validate=validate)
230+
except InvalidFieldValue as e:
231+
raise ParsingError(str(e))
232+
227233
return updated
228234

229235
def translate_hook_names(self, project_dict):

tests/functional/exposures/test_exposure_configs.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import pytest
22

33
from dbt.artifacts.resources import ExposureConfig
4+
from dbt.exceptions import ParsingError
45
from dbt.tests.util import get_manifest, run_dbt, update_config_file
56
from dbt_common.dataclass_schema import ValidationError
67
from tests.functional.exposures.fixtures import (
@@ -162,10 +163,9 @@ def project_config_update(self):
162163
return {"exposures": {"tags": None}}
163164

164165
def test_null_exposure_tags_raises_invalid_field_value(self, project):
165-
from mashumaro.exceptions import InvalidFieldValue
166166

167167
with pytest.raises(
168-
InvalidFieldValue,
168+
ParsingError,
169169
match='Field "tags" of type List\[str\] in ExposureConfig has invalid value None', # noqa: [W605]
170170
):
171171
run_dbt(["parse"])

0 commit comments

Comments
 (0)