Skip to content

Commit f8bd60b

Browse files
committed
PR feedback: simplify model builtin global
1 parent eea3747 commit f8bd60b

File tree

3 files changed

+8
-21
lines changed

3 files changed

+8
-21
lines changed

sqlmesh/dbt/basemodel.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@
2222
DbtConfig,
2323
Dependencies,
2424
GeneralConfig,
25+
RAW_CODE_KEY,
2526
SqlStr,
2627
sql_str_validator,
2728
)
2829
from sqlmesh.dbt.relation import Policy, RelationType
2930
from sqlmesh.dbt.test import TestConfig
30-
from sqlmesh.dbt.util import DBT_VERSION
3131
from sqlmesh.utils import AttributeDict
3232
from sqlmesh.utils.errors import ConfigError
3333
from sqlmesh.utils.pydantic import field_validator
@@ -385,11 +385,9 @@ def _model_jinja_context(
385385
filter(lambda kv: kv[0] in dependencies.model_attrs.attrs, attributes.items())
386386
)
387387

388-
raw_code_key = "raw_code" if DBT_VERSION >= (1, 3, 0) else "raw_sql" # type: ignore
389-
390388
# We exclude the raw SQL code to reduce the payload size. It's still accessible through
391389
# the JinjaQuery instance stored in the resulting SQLMesh model's `query` field.
392-
model_node.pop(raw_code_key, None)
390+
model_node.pop(RAW_CODE_KEY, None)
393391
else:
394392
model_node = AttributeDict({})
395393

sqlmesh/dbt/builtin.py

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
from sqlmesh.core.engine_adapter import EngineAdapter
1919
from sqlmesh.core.snapshot.definition import DeployabilityIndex
2020
from sqlmesh.dbt.adapter import BaseAdapter, ParsetimeAdapter, RuntimeAdapter
21+
from sqlmesh.dbt.common import RAW_CODE_KEY
2122
from sqlmesh.dbt.relation import Policy
2223
from sqlmesh.dbt.target import TARGET_TYPE_TO_CONFIG_CLASS
2324
from sqlmesh.dbt.util import DBT_VERSION
@@ -256,21 +257,6 @@ def source(package: str, name: str) -> t.Optional[BaseRelation]:
256257
return source
257258

258259

259-
def generate_model(model: AttributeDict, raw_code: str) -> Model:
260-
class Model:
261-
def __init__(self, model: AttributeDict) -> None:
262-
self._model = model
263-
self._raw_code_key = "raw_code" if DBT_VERSION >= (1, 3, 0) else "raw_sql" # type: ignore
264-
265-
def __getattr__(self, key: str) -> t.Any:
266-
if key == self._raw_code_key:
267-
return raw_code
268-
269-
return getattr(self._model, key)
270-
271-
return Model(model)
272-
273-
274260
def return_val(val: t.Any) -> None:
275261
raise MacroReturnVal(val)
276262

@@ -445,7 +431,8 @@ def create_builtin_globals(
445431
)
446432

447433
if (model := jinja_globals.pop("model", None)) is not None:
448-
builtin_globals["model"] = generate_model(model, jinja_globals.pop("model", ""))
434+
raw_code = jinja_globals.pop("raw_code", "")
435+
builtin_globals["model"] = AttributeDict({**model, RAW_CODE_KEY: raw_code})
449436

450437
if engine_adapter is not None:
451438
builtin_globals["flags"] = Flags(which="run")

sqlmesh/dbt/common.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,20 @@
88
from ruamel.yaml.constructor import DuplicateKeyError
99
from sqlglot.helper import ensure_list
1010

11+
from sqlmesh.dbt.util import DBT_VERSION
1112
from sqlmesh.core.config.base import BaseConfig, UpdateStrategy
13+
from sqlmesh.core.config.common import DBT_PROJECT_FILENAME
1214
from sqlmesh.utils import AttributeDict
1315
from sqlmesh.utils.conversions import ensure_bool, try_str_to_bool
1416
from sqlmesh.utils.errors import ConfigError
1517
from sqlmesh.utils.jinja import MacroReference
1618
from sqlmesh.utils.pydantic import PydanticModel, field_validator
1719
from sqlmesh.utils.yaml import load
18-
from sqlmesh.core.config.common import DBT_PROJECT_FILENAME
1920

2021
T = t.TypeVar("T", bound="GeneralConfig")
2122

2223
PROJECT_FILENAME = DBT_PROJECT_FILENAME
24+
RAW_CODE_KEY = "raw_code" if DBT_VERSION >= (1, 3, 0) else "raw_sql" # type: ignore
2325

2426
JINJA_ONLY = {
2527
"adapter",

0 commit comments

Comments
 (0)