|
31 | 31 | parse_dependencies, |
32 | 32 | single_value_or_tuple, |
33 | 33 | sorted_python_env_payloads, |
| 34 | + validate_extra_and_required_fields, |
34 | 35 | ) |
35 | 36 | from sqlmesh.core.model.meta import ModelMeta, FunctionCall |
36 | 37 | from sqlmesh.core.model.kind import ( |
@@ -2190,15 +2191,11 @@ def load_sql_based_model( |
2190 | 2191 | seed_properties = { |
2191 | 2192 | p.name.lower(): p.args.get("value") for p in common_kwargs.pop("kind").expressions |
2192 | 2193 | } |
2193 | | - try: |
2194 | | - return create_seed_model( |
2195 | | - name, |
2196 | | - SeedKind(**seed_properties), |
2197 | | - **common_kwargs, |
2198 | | - ) |
2199 | | - except Exception as ex: |
2200 | | - raise_config_error(str(ex), path) |
2201 | | - raise |
| 2194 | + return create_seed_model( |
| 2195 | + name, |
| 2196 | + SeedKind(**seed_properties), |
| 2197 | + **common_kwargs, |
| 2198 | + ) |
2202 | 2199 |
|
2203 | 2200 |
|
2204 | 2201 | def create_sql_model( |
@@ -2398,7 +2395,9 @@ def _create_model( |
2398 | 2395 | blueprint_variables: t.Optional[t.Dict[str, t.Any]] = None, |
2399 | 2396 | **kwargs: t.Any, |
2400 | 2397 | ) -> Model: |
2401 | | - _validate_model_fields(klass, {"name", *kwargs} - {"grain", "table_properties"}, path) |
| 2398 | + validate_extra_and_required_fields( |
| 2399 | + klass, {"name", *kwargs} - {"grain", "table_properties"}, "model definition" |
| 2400 | + ) |
2402 | 2401 |
|
2403 | 2402 | for prop in PROPERTIES: |
2404 | 2403 | kwargs[prop] = _resolve_properties((defaults or {}).get(prop), kwargs.get(prop)) |
@@ -2457,21 +2456,17 @@ def _create_model( |
2457 | 2456 | for jinja_macro in jinja_macros.root_macros.values(): |
2458 | 2457 | used_variables.update(extract_macro_references_and_variables(jinja_macro.definition)[1]) |
2459 | 2458 |
|
2460 | | - try: |
2461 | | - model = klass( |
2462 | | - name=name, |
2463 | | - **{ |
2464 | | - **(defaults or {}), |
2465 | | - "jinja_macros": jinja_macros or JinjaMacroRegistry(), |
2466 | | - "dialect": dialect, |
2467 | | - "depends_on": depends_on, |
2468 | | - "physical_schema_override": physical_schema_override, |
2469 | | - **kwargs, |
2470 | | - }, |
2471 | | - ) |
2472 | | - except Exception as ex: |
2473 | | - raise_config_error(str(ex), location=path) |
2474 | | - raise |
| 2459 | + model = klass( |
| 2460 | + name=name, |
| 2461 | + **{ |
| 2462 | + **(defaults or {}), |
| 2463 | + "jinja_macros": jinja_macros or JinjaMacroRegistry(), |
| 2464 | + "dialect": dialect, |
| 2465 | + "depends_on": depends_on, |
| 2466 | + "physical_schema_override": physical_schema_override, |
| 2467 | + **kwargs, |
| 2468 | + }, |
| 2469 | + ) |
2475 | 2470 |
|
2476 | 2471 | audit_definitions = { |
2477 | 2472 | **(audit_definitions or {}), |
@@ -2636,19 +2631,6 @@ def _resolve_properties( |
2636 | 2631 | return None |
2637 | 2632 |
|
2638 | 2633 |
|
2639 | | -def _validate_model_fields(klass: t.Type[_Model], provided_fields: t.Set[str], path: Path) -> None: |
2640 | | - missing_required_fields = klass.missing_required_fields(provided_fields) |
2641 | | - if missing_required_fields: |
2642 | | - raise_config_error( |
2643 | | - f"Missing required fields {missing_required_fields} in the model definition", |
2644 | | - path, |
2645 | | - ) |
2646 | | - |
2647 | | - extra_fields = klass.extra_fields(provided_fields) |
2648 | | - if extra_fields: |
2649 | | - raise_config_error(f"Invalid extra fields {extra_fields} in the model definition", path) |
2650 | | - |
2651 | | - |
2652 | 2634 | def _list_of_calls_to_exp(value: t.List[t.Tuple[str, t.Dict[str, t.Any]]]) -> exp.Expression: |
2653 | 2635 | return exp.Tuple( |
2654 | 2636 | expressions=[ |
|
0 commit comments