sqlmesh 0.199.1.dev30__py3-none-any.whl → 0.199.1.dev31__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
sqlmesh/_version.py CHANGED
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '0.199.1.dev30'
21
- __version_tuple__ = version_tuple = (0, 199, 1, 'dev30')
20
+ __version__ = version = '0.199.1.dev31'
21
+ __version_tuple__ = version_tuple = (0, 199, 1, 'dev31')
@@ -440,6 +440,19 @@ def sorted_python_env_payloads(python_env: t.Dict[str, Executable]) -> t.List[st
440
440
  return [_executable_to_str(k, v) for k, v in sort_python_env(python_env)]
441
441
 
442
442
 
443
+ def parse_strings_with_macro_refs(value: t.Any, dialect: DialectType) -> t.Any:
444
+ if isinstance(value, str) and "@" in value:
445
+ return exp.maybe_parse(value, dialect=dialect)
446
+
447
+ if isinstance(value, dict):
448
+ for k, v in dict(value).items():
449
+ value[k] = parse_strings_with_macro_refs(v, dialect)
450
+ elif isinstance(value, list):
451
+ value = [parse_strings_with_macro_refs(v, dialect) for v in value]
452
+
453
+ return value
454
+
455
+
443
456
  expression_validator: t.Callable = field_validator(
444
457
  "query",
445
458
  "expressions_",
@@ -27,6 +27,7 @@ from sqlmesh.core.model.common import (
27
27
  expression_validator,
28
28
  make_python_env,
29
29
  parse_dependencies,
30
+ parse_strings_with_macro_refs,
30
31
  single_value_or_tuple,
31
32
  sorted_python_env_payloads,
32
33
  validate_extra_and_required_fields,
@@ -72,13 +73,14 @@ if t.TYPE_CHECKING:
72
73
 
73
74
  logger = logging.getLogger(__name__)
74
75
 
76
+
77
+ UNRENDERABLE_MODEL_FIELDS = {"cron", "description"}
78
+
75
79
  PROPERTIES = {"physical_properties", "session_properties", "virtual_properties"}
76
80
 
77
81
  RUNTIME_RENDERED_MODEL_FIELDS = {
78
82
  "audits",
79
83
  "signals",
80
- "description",
81
- "cron",
82
84
  "merge_filter",
83
85
  } | PROPERTIES
84
86
 
@@ -2469,6 +2471,9 @@ def _create_model(
2469
2471
  if isinstance(property_values, exp.Tuple):
2470
2472
  statements.extend(property_values.expressions)
2471
2473
 
2474
+ if isinstance(getattr(kwargs.get("kind"), "merge_filter", None), exp.Expression):
2475
+ statements.append(kwargs["kind"].merge_filter)
2476
+
2472
2477
  jinja_macro_references, used_variables = extract_macro_references_and_variables(
2473
2478
  *(gen(e if isinstance(e, exp.Expression) else e[0]) for e in statements)
2474
2479
  )
@@ -2751,21 +2756,24 @@ def render_meta_fields(
2751
2756
 
2752
2757
  for field_name, field_info in ModelMeta.all_field_infos().items():
2753
2758
  field = field_info.alias or field_name
2759
+ field_value = fields.get(field)
2754
2760
 
2755
- if field in RUNTIME_RENDERED_MODEL_FIELDS:
2761
+ # We don't want to parse python model cron="@..." kwargs (e.g. @daily) into MacroVar
2762
+ if field == "cron" or field_value is None:
2756
2763
  continue
2757
2764
 
2758
- field_value = fields.get(field)
2759
- if field_value is None:
2765
+ if field in RUNTIME_RENDERED_MODEL_FIELDS:
2766
+ fields[field] = parse_strings_with_macro_refs(field_value, dialect)
2760
2767
  continue
2761
2768
 
2762
2769
  if isinstance(field_value, dict):
2763
2770
  rendered_dict = {}
2764
2771
  for key, value in field_value.items():
2765
2772
  if key in RUNTIME_RENDERED_MODEL_FIELDS:
2766
- rendered_dict[key] = value
2773
+ rendered_dict[key] = parse_strings_with_macro_refs(value, dialect)
2767
2774
  elif (rendered := render_field_value(value)) is not None:
2768
2775
  rendered_dict[key] = rendered
2776
+
2769
2777
  if rendered_dict:
2770
2778
  fields[field] = rendered_dict
2771
2779
  else:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sqlmesh
3
- Version: 0.199.1.dev30
3
+ Version: 0.199.1.dev31
4
4
  Summary: Next-generation data transformation framework
5
5
  Author-email: "TobikoData Inc." <engineering@tobikodata.com>
6
6
  License: Apache License
@@ -1,5 +1,5 @@
1
1
  sqlmesh/__init__.py,sha256=QjwaamJIdW7voXoS880yAx7tHm-Im4_mqGA-XJgafos,7631
2
- sqlmesh/_version.py,sha256=46GTV85JgHlJUyiIjbHX22RamgYRAEC3f2U8M76p5nE,530
2
+ sqlmesh/_version.py,sha256=CgHjS2NBWQdSFZUQVN24C3Ezoj0vTyfhAquX6nAtixs,530
3
3
  sqlmesh/magics.py,sha256=R9U0Mp9ZQhDYe751nxAQDLaMv3zLAR4HcTdIflKTmEE,41709
4
4
  sqlmesh/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  sqlmesh/cicd/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -86,9 +86,9 @@ sqlmesh/core/metric/definition.py,sha256=Yd5aVgsZCDPJ43aGP7WqtzZOuuSUtB8uJGVA6Jw
86
86
  sqlmesh/core/metric/rewriter.py,sha256=GiSTHfn2kinqCfNPYgZPRk93JFLzVaaejHtHDQ0yXZI,7326
87
87
  sqlmesh/core/model/__init__.py,sha256=C8GRZ53xuXEA9hQv3BQS9pNNyd9rZ06R_B96UYGhDu4,1644
88
88
  sqlmesh/core/model/cache.py,sha256=csun0RJguHzKX6-qITcOs4fVP4f8_Ts8qiUVV4sHY6Q,7869
89
- sqlmesh/core/model/common.py,sha256=PcQS3rHFNIXV_Z1dGwLQ7gLPbYVlrbWGGKAyc58-9Xk,17379
89
+ sqlmesh/core/model/common.py,sha256=dPyqXLaDSnQgDVdbiOZ7YwomlaPIvGfyL-mHhc7bR1o,17830
90
90
  sqlmesh/core/model/decorator.py,sha256=wUUg5t0K559tV9Pqt6FE2EWXt5TPGb4wF2Yg4B4hX4w,9251
91
- sqlmesh/core/model/definition.py,sha256=mG6UPwxiZj0xP_cdHSVELEcXusAcltpgHBX-wiUSuPM,111963
91
+ sqlmesh/core/model/definition.py,sha256=mAcbq5chgFgDQi0f_p-lByvbFK9kIQgQfROqvP5LnB8,112396
92
92
  sqlmesh/core/model/kind.py,sha256=8Dp8yiTiXltboZWrB2FJ-LQ3zx4Fv_5Tj0KdUIPwCHI,36358
93
93
  sqlmesh/core/model/meta.py,sha256=D9InI9M2-IXeb34vkXNQSLALL8xVXjZ_LXwI-Tqxm7I,21197
94
94
  sqlmesh/core/model/schema.py,sha256=_HMYfzK9wWXh7_CQDIIGnuQUD4aiX3o5D2cRp2sERzc,3387
@@ -284,7 +284,7 @@ sqlmesh/utils/pydantic.py,sha256=o_NsXbIpDqNpUA1Uc5xF0ZzoXQYYB0DfHwdRxBwXPNk,120
284
284
  sqlmesh/utils/rich.py,sha256=BpB47G0-JcU41LkGkeGKroexj4NOV5fox4-GOIXPgIc,3545
285
285
  sqlmesh/utils/windows.py,sha256=r7Yin4WEwbvH7sKA3hOJtRsclmscNuBeCklCfVPvtQs,611
286
286
  sqlmesh/utils/yaml.py,sha256=hvo5lmybYLcIx4p6CQwufS8X4MbwS60lEBnCmYJCXmU,2336
287
- sqlmesh-0.199.1.dev30.dist-info/licenses/LICENSE,sha256=OlMefUjgWJdULtf84BLW0AZZcY8DwdgQqb_1j2862j8,11346
287
+ sqlmesh-0.199.1.dev31.dist-info/licenses/LICENSE,sha256=OlMefUjgWJdULtf84BLW0AZZcY8DwdgQqb_1j2862j8,11346
288
288
  web/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
289
289
  web/client/dist/index.html,sha256=DAv6ABGogw4xRLb0T_92WP_S7XWyqVhwBgGKWtuQwU4,5472
290
290
  web/client/dist/assets/Audits-BuHAmFO8.js,sha256=zbYUF6WdUGMbnMm01GMNPb7xAJwj-o5wMdL56vPo2qE,1041
@@ -402,8 +402,8 @@ web/server/api/endpoints/models.py,sha256=ud-lRwriyI_OYg9tZchrBgeiXELiRTLNEodraf
402
402
  web/server/api/endpoints/modules.py,sha256=8hqqgonGay_mJmpCw0IdbjsPhWlQH2VLdKAqha-myac,468
403
403
  web/server/api/endpoints/plan.py,sha256=bbbY50W_2MsZSTxOHWMKz0tbIm75nsRSlPy8GI2fg9Q,9306
404
404
  web/server/api/endpoints/table_diff.py,sha256=SCy3-pr5x6bEEiOaZGCDbiHQhpgxwmnz3Acqa2Ie6jI,2090
405
- sqlmesh-0.199.1.dev30.dist-info/METADATA,sha256=Wp-xndHOHoMfiDF9zDNfQmYgaUdZu-IaMh_-KtxIvys,26659
406
- sqlmesh-0.199.1.dev30.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
407
- sqlmesh-0.199.1.dev30.dist-info/entry_points.txt,sha256=pIYKtg-u-uO7BK_Y0qrdmfyj0bYrcMc3Xiqr5WE3VFk,121
408
- sqlmesh-0.199.1.dev30.dist-info/top_level.txt,sha256=bspjo5vjELQkuN0qKuTFIbsrUt3Zeo8D2mlKeHG1LdE,12
409
- sqlmesh-0.199.1.dev30.dist-info/RECORD,,
405
+ sqlmesh-0.199.1.dev31.dist-info/METADATA,sha256=b2S5AOFx4aEUG1T59ljG0g7winpSYkR_WMjLrl8uUgw,26659
406
+ sqlmesh-0.199.1.dev31.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
407
+ sqlmesh-0.199.1.dev31.dist-info/entry_points.txt,sha256=pIYKtg-u-uO7BK_Y0qrdmfyj0bYrcMc3Xiqr5WE3VFk,121
408
+ sqlmesh-0.199.1.dev31.dist-info/top_level.txt,sha256=bspjo5vjELQkuN0qKuTFIbsrUt3Zeo8D2mlKeHG1LdE,12
409
+ sqlmesh-0.199.1.dev31.dist-info/RECORD,,