sqlmesh 0.199.1.dev28__py3-none-any.whl → 0.199.1.dev30__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.dev28'
21
- __version_tuple__ = version_tuple = (0, 199, 1, 'dev28')
20
+ __version__ = version = '0.199.1.dev30'
21
+ __version_tuple__ = version_tuple = (0, 199, 1, 'dev30')
sqlmesh/core/context.py CHANGED
@@ -453,7 +453,7 @@ class GenericContext(BaseContext, t.Generic[C]):
453
453
  if not self._snapshot_evaluator:
454
454
  self._snapshot_evaluator = SnapshotEvaluator(
455
455
  {
456
- gateway: adapter.with_settings(log_level=logging.INFO)
456
+ gateway: adapter.with_settings(execute_log_level=logging.INFO)
457
457
  for gateway, adapter in self.engine_adapters.items()
458
458
  },
459
459
  ddl_concurrent_tasks=self.concurrent_tasks,
@@ -520,7 +520,11 @@ class GenericContext(BaseContext, t.Generic[C]):
520
520
 
521
521
  return model
522
522
 
523
- def scheduler(self, environment: t.Optional[str] = None) -> Scheduler:
523
+ def scheduler(
524
+ self,
525
+ environment: t.Optional[str] = None,
526
+ snapshot_evaluator: t.Optional[SnapshotEvaluator] = None,
527
+ ) -> Scheduler:
524
528
  """Returns the built-in scheduler.
525
529
 
526
530
  Args:
@@ -542,9 +546,11 @@ class GenericContext(BaseContext, t.Generic[C]):
542
546
  if not snapshots:
543
547
  raise ConfigError("No models were found")
544
548
 
545
- return self.create_scheduler(snapshots)
549
+ return self.create_scheduler(snapshots, snapshot_evaluator or self.snapshot_evaluator)
546
550
 
547
- def create_scheduler(self, snapshots: t.Iterable[Snapshot]) -> Scheduler:
551
+ def create_scheduler(
552
+ self, snapshots: t.Iterable[Snapshot], snapshot_evaluator: SnapshotEvaluator
553
+ ) -> Scheduler:
548
554
  """Creates the built-in scheduler.
549
555
 
550
556
  Args:
@@ -555,7 +561,7 @@ class GenericContext(BaseContext, t.Generic[C]):
555
561
  """
556
562
  return Scheduler(
557
563
  snapshots,
558
- self.snapshot_evaluator,
564
+ snapshot_evaluator,
559
565
  self.state_sync,
560
566
  default_catalog=self.default_catalog,
561
567
  max_workers=self.concurrent_tasks,
@@ -1931,7 +1937,7 @@ class GenericContext(BaseContext, t.Generic[C]):
1931
1937
  )
1932
1938
 
1933
1939
  return TableDiff(
1934
- adapter=adapter.with_settings(logger.getEffectiveLevel()),
1940
+ adapter=adapter.with_settings(execute_log_level=logger.getEffectiveLevel()),
1935
1941
  source=source,
1936
1942
  target=target,
1937
1943
  on=on,
@@ -147,19 +147,23 @@ class EngineAdapter:
147
147
  self._multithreaded = multithreaded
148
148
  self.correlation_id = correlation_id
149
149
 
150
- def with_settings(self, log_level: int, **kwargs: t.Any) -> EngineAdapter:
150
+ def with_settings(self, **kwargs: t.Any) -> EngineAdapter:
151
+ extra_kwargs = {
152
+ "null_connection": True,
153
+ "execute_log_level": kwargs.pop("execute_log_level", self._execute_log_level),
154
+ **self._extra_config,
155
+ **kwargs,
156
+ }
157
+
151
158
  adapter = self.__class__(
152
159
  self._connection_pool,
153
160
  dialect=self.dialect,
154
161
  sql_gen_kwargs=self._sql_gen_kwargs,
155
162
  default_catalog=self._default_catalog,
156
- execute_log_level=log_level,
157
163
  register_comments=self._register_comments,
158
- null_connection=True,
159
164
  multithreaded=self._multithreaded,
160
165
  pretty_sql=self._pretty_sql,
161
- **self._extra_config,
162
- **kwargs,
166
+ **extra_kwargs,
163
167
  )
164
168
 
165
169
  return adapter
@@ -38,6 +38,7 @@ from sqlmesh.core.snapshot import (
38
38
  )
39
39
  from sqlmesh.utils import to_snake_case
40
40
  from sqlmesh.core.state_sync import StateSync
41
+ from sqlmesh.utils import CorrelationId
41
42
  from sqlmesh.utils.concurrency import NodeExecutionFailedError
42
43
  from sqlmesh.utils.errors import PlanError, SQLMeshError
43
44
  from sqlmesh.utils.dag import DAG
@@ -71,7 +72,7 @@ class BuiltInPlanEvaluator(PlanEvaluator):
71
72
  self,
72
73
  state_sync: StateSync,
73
74
  snapshot_evaluator: SnapshotEvaluator,
74
- create_scheduler: t.Callable[[t.Iterable[Snapshot]], Scheduler],
75
+ create_scheduler: t.Callable[[t.Iterable[Snapshot], SnapshotEvaluator], Scheduler],
75
76
  default_catalog: t.Optional[str],
76
77
  console: t.Optional[Console] = None,
77
78
  ):
@@ -88,6 +89,9 @@ class BuiltInPlanEvaluator(PlanEvaluator):
88
89
  circuit_breaker: t.Optional[t.Callable[[], bool]] = None,
89
90
  ) -> None:
90
91
  self._circuit_breaker = circuit_breaker
92
+ self.snapshot_evaluator = self.snapshot_evaluator.set_correlation_id(
93
+ CorrelationId.from_plan_id(plan.plan_id)
94
+ )
91
95
 
92
96
  self.console.start_plan_evaluation(plan)
93
97
  analytics.collector.on_plan_apply_start(
@@ -106,6 +110,7 @@ class BuiltInPlanEvaluator(PlanEvaluator):
106
110
  else:
107
111
  analytics.collector.on_plan_apply_end(plan_id=plan.plan_id)
108
112
  finally:
113
+ self.snapshot_evaluator.recycle()
109
114
  self.console.stop_plan_evaluation()
110
115
 
111
116
  def _evaluate_stages(
@@ -228,7 +233,7 @@ class BuiltInPlanEvaluator(PlanEvaluator):
228
233
  self.console.log_success("SKIP: No model batches to execute")
229
234
  return
230
235
 
231
- scheduler = self.create_scheduler(stage.all_snapshots.values())
236
+ scheduler = self.create_scheduler(stage.all_snapshots.values(), self.snapshot_evaluator)
232
237
  errors, _ = scheduler.run_merged_intervals(
233
238
  merged_intervals=stage.snapshot_to_intervals,
234
239
  deployability_index=stage.deployability_index,
@@ -249,7 +254,7 @@ class BuiltInPlanEvaluator(PlanEvaluator):
249
254
  return
250
255
 
251
256
  # If there are any snapshots to be audited, we'll reuse the scheduler's internals to audit them
252
- scheduler = self.create_scheduler(audit_snapshots)
257
+ scheduler = self.create_scheduler(audit_snapshots, self.snapshot_evaluator)
253
258
  completion_status = scheduler.audit(
254
259
  plan.environment,
255
260
  plan.start,
@@ -61,7 +61,7 @@ from sqlmesh.core.snapshot import (
61
61
  SnapshotTableCleanupTask,
62
62
  )
63
63
  from sqlmesh.core.snapshot.definition import parent_snapshots_by_name
64
- from sqlmesh.utils import random_id
64
+ from sqlmesh.utils import random_id, CorrelationId
65
65
  from sqlmesh.utils.concurrency import (
66
66
  concurrent_apply_to_snapshots,
67
67
  concurrent_apply_to_values,
@@ -127,6 +127,7 @@ class SnapshotEvaluator:
127
127
  if not selected_gateway
128
128
  else self.adapters[selected_gateway]
129
129
  )
130
+ self.selected_gateway = selected_gateway
130
131
  self.ddl_concurrent_tasks = ddl_concurrent_tasks
131
132
 
132
133
  def evaluate(
@@ -1186,6 +1187,16 @@ class SnapshotEvaluator:
1186
1187
  )
1187
1188
  adapter.execute(snapshot.model.render_post_statements(**create_render_kwargs))
1188
1189
 
1190
+ def set_correlation_id(self, correlation_id: CorrelationId) -> SnapshotEvaluator:
1191
+ return SnapshotEvaluator(
1192
+ {
1193
+ gateway: adapter.with_settings(correlation_id=correlation_id)
1194
+ for gateway, adapter in self.adapters.items()
1195
+ },
1196
+ self.ddl_concurrent_tasks,
1197
+ self.selected_gateway,
1198
+ )
1199
+
1189
1200
 
1190
1201
  def _evaluation_strategy(snapshot: SnapshotInfoLike, adapter: EngineAdapter) -> EvaluationStrategy:
1191
1202
  klass: t.Type
@@ -1876,20 +1887,12 @@ class ViewStrategy(PromotableStrategy):
1876
1887
  )
1877
1888
  snapshot = kwargs["snapshot"]
1878
1889
  snapshots = kwargs["snapshots"]
1890
+
1879
1891
  if (
1880
- (
1881
- isinstance(query_or_df, exp.Expression)
1882
- and snapshot.is_materialized_view
1883
- and deployability_index.is_deployable(snapshot)
1884
- and model.render_query(
1885
- snapshots=snapshots,
1886
- deployability_index=deployability_index,
1887
- engine_adapter=self.adapter,
1888
- )
1889
- == query_or_df
1890
- )
1891
- or self.adapter.HAS_VIEW_BINDING
1892
- ) and self.adapter.table_exists(table_name):
1892
+ not snapshot.is_materialized_view
1893
+ and self.adapter.HAS_VIEW_BINDING
1894
+ and self.adapter.table_exists(table_name)
1895
+ ):
1893
1896
  logger.info("Skipping creation of the view '%s'", table_name)
1894
1897
  return
1895
1898
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sqlmesh
3
- Version: 0.199.1.dev28
3
+ Version: 0.199.1.dev30
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=eOe8dOR1gYct24IpqyIdHQMo8OMrOIu4R1zBGgL7m88,530
2
+ sqlmesh/_version.py,sha256=46GTV85JgHlJUyiIjbHX22RamgYRAEC3f2U8M76p5nE,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
@@ -13,7 +13,7 @@ sqlmesh/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
13
  sqlmesh/core/_typing.py,sha256=e1f7xO2aZCy38M_3VoDy-XI3shyd99-IFctgIFSgXWM,497
14
14
  sqlmesh/core/console.py,sha256=ObpdArJOXDOihWPXsWIUuwiQ64cMlroNWJHqQPkVqC0,160753
15
15
  sqlmesh/core/constants.py,sha256=gUABXWYgH_XOSbaZAJsR5o1dmA61JDCvBDyxqqXX3LM,2630
16
- sqlmesh/core/context.py,sha256=VO2Sp0u3CRmUoQI0z2Qwfzp4bhqKdtxlG0az1tND2_w,124223
16
+ sqlmesh/core/context.py,sha256=AuwB0PiV1jW7WZDaMOo_RkfKKTvwq6IDjByCHLA1GKw,124433
17
17
  sqlmesh/core/context_diff.py,sha256=CeUmMBJzN__98YohrtAiIYPIZI9mrGBk6bVADWBLUw8,21692
18
18
  sqlmesh/core/dialect.py,sha256=1ykYwb9WZn_nCaX08PcQ0BJh2Pihv9SPvoMNjpMeCfs,50158
19
19
  sqlmesh/core/environment.py,sha256=7DbJX0r5nZRU3LhcgIxbSV-JosQYDjAt3V5Wc2Fpns8,13005
@@ -59,7 +59,7 @@ sqlmesh/core/config/ui.py,sha256=jsO-S6_d9NkLZGG5pT4mgKgxMF34KzkDociZAMvCX3U,278
59
59
  sqlmesh/core/engine_adapter/__init__.py,sha256=two_WTs4UnSNp-fscJh8vOunJq0Xi37EuDuMjKsKuNE,2281
60
60
  sqlmesh/core/engine_adapter/_typing.py,sha256=_63pYCThfC39UtPVHY3N0H6qJ1YBT32OqwwR3swolGM,1037
61
61
  sqlmesh/core/engine_adapter/athena.py,sha256=DMC94WfCH8m37cVPio43Q11J8RQE8tuf1nl0RtXZ_CM,26198
62
- sqlmesh/core/engine_adapter/base.py,sha256=7JbSAzz1U2umlmcUKYd-nIf__yRFArfwgcPkXewqoHU,104081
62
+ sqlmesh/core/engine_adapter/base.py,sha256=9rRzY01cvPdrWGCGfT4qqsPbklt6vUWTQmK_C9DEiAo,104182
63
63
  sqlmesh/core/engine_adapter/base_postgres.py,sha256=DOsOdCJyQAVfA9S0GznuH0J1bonMqYVP_yJLDYcxFYM,6772
64
64
  sqlmesh/core/engine_adapter/bigquery.py,sha256=qJE8vHLKKAeWMvltmYaUvWS95jM_UEZ6UzYLlr58sGo,50424
65
65
  sqlmesh/core/engine_adapter/clickhouse.py,sha256=LoPdm_s_s-ZxS1XJPA3Et0iOHeJ1LgqTAFbwBdiqE7A,34912
@@ -96,14 +96,14 @@ sqlmesh/core/model/seed.py,sha256=a0M-1zY1gOkN5ph2GQyataEdBSCtq50YjeFk2LyvInI,50
96
96
  sqlmesh/core/plan/__init__.py,sha256=NKSvM7ZBVjw9ho3J65M1wFvG3KURB8PJ0FHHLmtSF44,443
97
97
  sqlmesh/core/plan/builder.py,sha256=TQVSGiGbQi9tro0tBlcL2f5BEvyOYNiLuB3yz8PRUzA,41859
98
98
  sqlmesh/core/plan/definition.py,sha256=yrX_uZMXi29ltkuowWhNUOi1kd0Uq0TQoM574EI6JHo,14019
99
- sqlmesh/core/plan/evaluator.py,sha256=FNA4oQ29lZsabKZU36T2wu7QQymwAfCu6zhirdPKuCg,20627
99
+ sqlmesh/core/plan/evaluator.py,sha256=z5Rweyc-JgWxQck8suZSlb-s5DfN0FvC6Aq1eFPwetI,20923
100
100
  sqlmesh/core/plan/explainer.py,sha256=aBkvtM9eog_2NIglazSDdG_i9TTCdFSVOkCw5N8O-1k,12028
101
101
  sqlmesh/core/plan/stages.py,sha256=7iiVZLSRoI1kSEMyOuuW6gvUA-eyALUfdW5vDh_N4jU,22040
102
102
  sqlmesh/core/snapshot/__init__.py,sha256=Z5HTetNCZGoKF1WAKXk4LWL9dc8EC8lwS2O4TtoBmt4,1317
103
103
  sqlmesh/core/snapshot/cache.py,sha256=bgqCR2hyf6r2A_8QP1EnXFK25gDX37-Zg0YeMuETWxg,3934
104
104
  sqlmesh/core/snapshot/categorizer.py,sha256=qGG5870mu1jR2whKisSBH_GFbsyh96RnzJDgkN7DV9g,2482
105
105
  sqlmesh/core/snapshot/definition.py,sha256=JBrvHx9ZPVWxY649IOXOYs4RKPzgLYvfdxXsdCewad0,85738
106
- sqlmesh/core/snapshot/evaluator.py,sha256=3mjrSp9ggd9uKhuZURrY0HtuCc_WAPsH4PYvQlqmn9o,90443
106
+ sqlmesh/core/snapshot/evaluator.py,sha256=yNVxlTIV8_mKmUsIJtQtjT8RZHDHA64pUPds9VZfOq8,90503
107
107
  sqlmesh/core/state_sync/__init__.py,sha256=B60xj-_Xk-4jas3UphLvwkuf04G-9AyGckcblXE0aRg,869
108
108
  sqlmesh/core/state_sync/base.py,sha256=AdqWmbhnvRFqVcFK6L01uCvpBVAYGuMrm4P0D3u_NaU,18334
109
109
  sqlmesh/core/state_sync/cache.py,sha256=0AsYdQyBqbLdJvkBQ-hDAipsvnn_jSps-nya-Q4XeL0,5337
@@ -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.dev28.dist-info/licenses/LICENSE,sha256=OlMefUjgWJdULtf84BLW0AZZcY8DwdgQqb_1j2862j8,11346
287
+ sqlmesh-0.199.1.dev30.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.dev28.dist-info/METADATA,sha256=6IrSI2yh4RRWamtGNtJtGFyGXUnlzO2X4ZMHFedFgDM,26659
406
- sqlmesh-0.199.1.dev28.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
407
- sqlmesh-0.199.1.dev28.dist-info/entry_points.txt,sha256=pIYKtg-u-uO7BK_Y0qrdmfyj0bYrcMc3Xiqr5WE3VFk,121
408
- sqlmesh-0.199.1.dev28.dist-info/top_level.txt,sha256=bspjo5vjELQkuN0qKuTFIbsrUt3Zeo8D2mlKeHG1LdE,12
409
- sqlmesh-0.199.1.dev28.dist-info/RECORD,,
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,,