sqlmesh 0.209.1.dev18__py3-none-any.whl → 0.209.1.dev20__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 +2 -2
- sqlmesh/core/engine_adapter/base.py +2 -45
- sqlmesh/core/engine_adapter/trino.py +0 -4
- sqlmesh/core/model/kind.py +1 -0
- sqlmesh/core/plan/builder.py +20 -0
- sqlmesh/core/plan/evaluator.py +0 -6
- sqlmesh/core/scheduler.py +0 -9
- sqlmesh/core/snapshot/definition.py +0 -15
- sqlmesh/core/snapshot/evaluator.py +0 -9
- {sqlmesh-0.209.1.dev18.dist-info → sqlmesh-0.209.1.dev20.dist-info}/METADATA +1 -1
- {sqlmesh-0.209.1.dev18.dist-info → sqlmesh-0.209.1.dev20.dist-info}/RECORD +15 -15
- {sqlmesh-0.209.1.dev18.dist-info → sqlmesh-0.209.1.dev20.dist-info}/WHEEL +0 -0
- {sqlmesh-0.209.1.dev18.dist-info → sqlmesh-0.209.1.dev20.dist-info}/entry_points.txt +0 -0
- {sqlmesh-0.209.1.dev18.dist-info → sqlmesh-0.209.1.dev20.dist-info}/licenses/LICENSE +0 -0
- {sqlmesh-0.209.1.dev18.dist-info → sqlmesh-0.209.1.dev20.dist-info}/top_level.txt +0 -0
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.209.1.
|
|
21
|
-
__version_tuple__ = version_tuple = (0, 209, 1, '
|
|
20
|
+
__version__ = version = '0.209.1.dev20'
|
|
21
|
+
__version_tuple__ = version_tuple = (0, 209, 1, 'dev20')
|
|
@@ -1497,7 +1497,6 @@ class EngineAdapter:
|
|
|
1497
1497
|
table_description: t.Optional[str] = None,
|
|
1498
1498
|
column_descriptions: t.Optional[t.Dict[str, str]] = None,
|
|
1499
1499
|
truncate: bool = False,
|
|
1500
|
-
is_restatement: bool = False,
|
|
1501
1500
|
**kwargs: t.Any,
|
|
1502
1501
|
) -> None:
|
|
1503
1502
|
self._scd_type_2(
|
|
@@ -1514,7 +1513,6 @@ class EngineAdapter:
|
|
|
1514
1513
|
table_description=table_description,
|
|
1515
1514
|
column_descriptions=column_descriptions,
|
|
1516
1515
|
truncate=truncate,
|
|
1517
|
-
is_restatement=is_restatement,
|
|
1518
1516
|
**kwargs,
|
|
1519
1517
|
)
|
|
1520
1518
|
|
|
@@ -1533,7 +1531,6 @@ class EngineAdapter:
|
|
|
1533
1531
|
table_description: t.Optional[str] = None,
|
|
1534
1532
|
column_descriptions: t.Optional[t.Dict[str, str]] = None,
|
|
1535
1533
|
truncate: bool = False,
|
|
1536
|
-
is_restatement: bool = False,
|
|
1537
1534
|
**kwargs: t.Any,
|
|
1538
1535
|
) -> None:
|
|
1539
1536
|
self._scd_type_2(
|
|
@@ -1550,7 +1547,6 @@ class EngineAdapter:
|
|
|
1550
1547
|
table_description=table_description,
|
|
1551
1548
|
column_descriptions=column_descriptions,
|
|
1552
1549
|
truncate=truncate,
|
|
1553
|
-
is_restatement=is_restatement,
|
|
1554
1550
|
**kwargs,
|
|
1555
1551
|
)
|
|
1556
1552
|
|
|
@@ -1561,7 +1557,6 @@ class EngineAdapter:
|
|
|
1561
1557
|
unique_key: t.Sequence[exp.Expression],
|
|
1562
1558
|
valid_from_col: exp.Column,
|
|
1563
1559
|
valid_to_col: exp.Column,
|
|
1564
|
-
start: TimeLike,
|
|
1565
1560
|
execution_time: t.Union[TimeLike, exp.Column],
|
|
1566
1561
|
invalidate_hard_deletes: bool = True,
|
|
1567
1562
|
updated_at_col: t.Optional[exp.Column] = None,
|
|
@@ -1572,7 +1567,6 @@ class EngineAdapter:
|
|
|
1572
1567
|
table_description: t.Optional[str] = None,
|
|
1573
1568
|
column_descriptions: t.Optional[t.Dict[str, str]] = None,
|
|
1574
1569
|
truncate: bool = False,
|
|
1575
|
-
is_restatement: bool = False,
|
|
1576
1570
|
**kwargs: t.Any,
|
|
1577
1571
|
) -> None:
|
|
1578
1572
|
def remove_managed_columns(
|
|
@@ -1757,17 +1751,9 @@ class EngineAdapter:
|
|
|
1757
1751
|
existing_rows_query = exp.select(*table_columns, exp.true().as_("_exists")).from_(
|
|
1758
1752
|
target_table
|
|
1759
1753
|
)
|
|
1760
|
-
|
|
1761
1754
|
if truncate:
|
|
1762
1755
|
existing_rows_query = existing_rows_query.limit(0)
|
|
1763
1756
|
|
|
1764
|
-
# Only set cleanup_ts if is_restatement is True and truncate is False (this to enable full restatement)
|
|
1765
|
-
cleanup_ts = (
|
|
1766
|
-
to_time_column(start, time_data_type, self.dialect, nullable=True)
|
|
1767
|
-
if is_restatement and not truncate
|
|
1768
|
-
else None
|
|
1769
|
-
)
|
|
1770
|
-
|
|
1771
1757
|
with source_queries[0] as source_query:
|
|
1772
1758
|
prefixed_columns_to_types = []
|
|
1773
1759
|
for column in columns_to_types:
|
|
@@ -1804,41 +1790,12 @@ class EngineAdapter:
|
|
|
1804
1790
|
# Historical Records that Do Not Change
|
|
1805
1791
|
.with_(
|
|
1806
1792
|
"static",
|
|
1807
|
-
existing_rows_query.where(valid_to_col.is_(exp.Null()).not_())
|
|
1808
|
-
if cleanup_ts is None
|
|
1809
|
-
else existing_rows_query.where(
|
|
1810
|
-
exp.and_(
|
|
1811
|
-
valid_to_col.is_(exp.Null().not_()),
|
|
1812
|
-
valid_to_col < cleanup_ts,
|
|
1813
|
-
),
|
|
1814
|
-
),
|
|
1793
|
+
existing_rows_query.where(valid_to_col.is_(exp.Null()).not_()),
|
|
1815
1794
|
)
|
|
1816
1795
|
# Latest Records that can be updated
|
|
1817
1796
|
.with_(
|
|
1818
1797
|
"latest",
|
|
1819
|
-
existing_rows_query.where(valid_to_col.is_(exp.Null()))
|
|
1820
|
-
if cleanup_ts is None
|
|
1821
|
-
else exp.select(
|
|
1822
|
-
*(
|
|
1823
|
-
to_time_column(
|
|
1824
|
-
exp.null(), time_data_type, self.dialect, nullable=True
|
|
1825
|
-
).as_(col)
|
|
1826
|
-
if col == valid_to_col.name
|
|
1827
|
-
else exp.column(col)
|
|
1828
|
-
for col in columns_to_types
|
|
1829
|
-
),
|
|
1830
|
-
exp.true().as_("_exists"),
|
|
1831
|
-
)
|
|
1832
|
-
.from_(target_table)
|
|
1833
|
-
.where(
|
|
1834
|
-
exp.and_(
|
|
1835
|
-
valid_from_col <= cleanup_ts,
|
|
1836
|
-
exp.or_(
|
|
1837
|
-
valid_to_col.is_(exp.null()),
|
|
1838
|
-
valid_to_col >= cleanup_ts,
|
|
1839
|
-
),
|
|
1840
|
-
)
|
|
1841
|
-
),
|
|
1798
|
+
existing_rows_query.where(valid_to_col.is_(exp.Null())),
|
|
1842
1799
|
)
|
|
1843
1800
|
# Deleted records which can be used to determine `valid_from` for undeleted source records
|
|
1844
1801
|
.with_(
|
|
@@ -256,7 +256,6 @@ class TrinoEngineAdapter(
|
|
|
256
256
|
unique_key: t.Sequence[exp.Expression],
|
|
257
257
|
valid_from_col: exp.Column,
|
|
258
258
|
valid_to_col: exp.Column,
|
|
259
|
-
start: TimeLike,
|
|
260
259
|
execution_time: t.Union[TimeLike, exp.Column],
|
|
261
260
|
invalidate_hard_deletes: bool = True,
|
|
262
261
|
updated_at_col: t.Optional[exp.Column] = None,
|
|
@@ -267,7 +266,6 @@ class TrinoEngineAdapter(
|
|
|
267
266
|
table_description: t.Optional[str] = None,
|
|
268
267
|
column_descriptions: t.Optional[t.Dict[str, str]] = None,
|
|
269
268
|
truncate: bool = False,
|
|
270
|
-
is_restatement: bool = False,
|
|
271
269
|
**kwargs: t.Any,
|
|
272
270
|
) -> None:
|
|
273
271
|
if columns_to_types and self.current_catalog_type == "delta_lake":
|
|
@@ -279,7 +277,6 @@ class TrinoEngineAdapter(
|
|
|
279
277
|
unique_key,
|
|
280
278
|
valid_from_col,
|
|
281
279
|
valid_to_col,
|
|
282
|
-
start,
|
|
283
280
|
execution_time,
|
|
284
281
|
invalidate_hard_deletes,
|
|
285
282
|
updated_at_col,
|
|
@@ -290,7 +287,6 @@ class TrinoEngineAdapter(
|
|
|
290
287
|
table_description,
|
|
291
288
|
column_descriptions,
|
|
292
289
|
truncate,
|
|
293
|
-
is_restatement,
|
|
294
290
|
**kwargs,
|
|
295
291
|
)
|
|
296
292
|
|
sqlmesh/core/model/kind.py
CHANGED
sqlmesh/core/plan/builder.py
CHANGED
|
@@ -155,6 +155,7 @@ class PlanBuilder:
|
|
|
155
155
|
|
|
156
156
|
self._backfill_models = backfill_models
|
|
157
157
|
self._end = end or default_end
|
|
158
|
+
self._default_start = default_start
|
|
158
159
|
self._apply = apply
|
|
159
160
|
self._console = console or get_console()
|
|
160
161
|
self._choices: t.Dict[SnapshotId, SnapshotChangeCategory] = {}
|
|
@@ -802,6 +803,25 @@ class PlanBuilder:
|
|
|
802
803
|
f"Plan end date: '{time_like_to_str(end)}' cannot be in the future (execution time: '{time_like_to_str(self.execution_time)}')"
|
|
803
804
|
)
|
|
804
805
|
|
|
806
|
+
# Validate model-specific start/end dates
|
|
807
|
+
if (start := self.start or self._default_start) and (end := self.end):
|
|
808
|
+
start_ts = to_datetime(start)
|
|
809
|
+
end_ts = to_datetime(end)
|
|
810
|
+
if start_ts > end_ts:
|
|
811
|
+
models_to_check: t.Set[str] = (
|
|
812
|
+
set(self._backfill_models or [])
|
|
813
|
+
| set(self._context_diff.modified_snapshots.keys())
|
|
814
|
+
| {s.name for s in self._context_diff.added}
|
|
815
|
+
| set((self._end_override_per_model or {}).keys())
|
|
816
|
+
)
|
|
817
|
+
for model_name in models_to_check:
|
|
818
|
+
if snapshot := self._model_fqn_to_snapshot.get(model_name):
|
|
819
|
+
if snapshot.node.start is None or to_datetime(snapshot.node.start) > end_ts:
|
|
820
|
+
raise PlanError(
|
|
821
|
+
f"Model '{model_name}': Start date / time '({time_like_to_str(start_ts)})' can't be greater than end date / time '({time_like_to_str(end_ts)})'.\n"
|
|
822
|
+
f"Set the `start` attribute in your project config model defaults to avoid this issue."
|
|
823
|
+
)
|
|
824
|
+
|
|
805
825
|
def _ensure_no_broken_references(self) -> None:
|
|
806
826
|
for snapshot in self._context_diff.snapshots.values():
|
|
807
827
|
broken_references = {
|
sqlmesh/core/plan/evaluator.py
CHANGED
|
@@ -235,11 +235,6 @@ class BuiltInPlanEvaluator(PlanEvaluator):
|
|
|
235
235
|
return
|
|
236
236
|
|
|
237
237
|
scheduler = self.create_scheduler(stage.all_snapshots.values(), self.snapshot_evaluator)
|
|
238
|
-
# Convert model name restatements to snapshot ID restatements
|
|
239
|
-
restatements_by_snapshot_id = {
|
|
240
|
-
stage.all_snapshots[name].snapshot_id: interval
|
|
241
|
-
for name, interval in plan.restatements.items()
|
|
242
|
-
}
|
|
243
238
|
errors, _ = scheduler.run_merged_intervals(
|
|
244
239
|
merged_intervals=stage.snapshot_to_intervals,
|
|
245
240
|
deployability_index=stage.deployability_index,
|
|
@@ -248,7 +243,6 @@ class BuiltInPlanEvaluator(PlanEvaluator):
|
|
|
248
243
|
circuit_breaker=self._circuit_breaker,
|
|
249
244
|
start=plan.start,
|
|
250
245
|
end=plan.end,
|
|
251
|
-
restatements=restatements_by_snapshot_id,
|
|
252
246
|
)
|
|
253
247
|
if errors:
|
|
254
248
|
raise PlanError("Plan application failed.")
|
sqlmesh/core/scheduler.py
CHANGED
|
@@ -161,7 +161,6 @@ class Scheduler:
|
|
|
161
161
|
deployability_index: DeployabilityIndex,
|
|
162
162
|
batch_index: int,
|
|
163
163
|
environment_naming_info: t.Optional[EnvironmentNamingInfo] = None,
|
|
164
|
-
is_restatement: bool = False,
|
|
165
164
|
**kwargs: t.Any,
|
|
166
165
|
) -> t.List[AuditResult]:
|
|
167
166
|
"""Evaluate a snapshot and add the processed interval to the state sync.
|
|
@@ -193,7 +192,6 @@ class Scheduler:
|
|
|
193
192
|
snapshots=snapshots,
|
|
194
193
|
deployability_index=deployability_index,
|
|
195
194
|
batch_index=batch_index,
|
|
196
|
-
is_restatement=is_restatement,
|
|
197
195
|
**kwargs,
|
|
198
196
|
)
|
|
199
197
|
audit_results = self._audit_snapshot(
|
|
@@ -373,7 +371,6 @@ class Scheduler:
|
|
|
373
371
|
end: t.Optional[TimeLike] = None,
|
|
374
372
|
run_environment_statements: bool = False,
|
|
375
373
|
audit_only: bool = False,
|
|
376
|
-
restatements: t.Optional[t.Dict[SnapshotId, Interval]] = None,
|
|
377
374
|
) -> t.Tuple[t.List[NodeExecutionFailedError[SchedulingUnit]], t.List[SchedulingUnit]]:
|
|
378
375
|
"""Runs precomputed batches of missing intervals.
|
|
379
376
|
|
|
@@ -450,10 +447,6 @@ class Scheduler:
|
|
|
450
447
|
execution_time=execution_time,
|
|
451
448
|
)
|
|
452
449
|
else:
|
|
453
|
-
# Determine if this snapshot and interval is a restatement (for SCD type 2)
|
|
454
|
-
is_restatement = (
|
|
455
|
-
restatements is not None and snapshot.snapshot_id in restatements
|
|
456
|
-
)
|
|
457
450
|
audit_results = self.evaluate(
|
|
458
451
|
snapshot=snapshot,
|
|
459
452
|
environment_naming_info=environment_naming_info,
|
|
@@ -462,7 +455,6 @@ class Scheduler:
|
|
|
462
455
|
execution_time=execution_time,
|
|
463
456
|
deployability_index=deployability_index,
|
|
464
457
|
batch_index=batch_idx,
|
|
465
|
-
is_restatement=is_restatement,
|
|
466
458
|
)
|
|
467
459
|
|
|
468
460
|
evaluation_duration_ms = now_timestamp() - execution_start_ts
|
|
@@ -671,7 +663,6 @@ class Scheduler:
|
|
|
671
663
|
end=end,
|
|
672
664
|
run_environment_statements=run_environment_statements,
|
|
673
665
|
audit_only=audit_only,
|
|
674
|
-
restatements=remove_intervals,
|
|
675
666
|
)
|
|
676
667
|
|
|
677
668
|
return CompletionStatus.FAILURE if errors else CompletionStatus.SUCCESS
|
|
@@ -837,21 +837,6 @@ class Snapshot(PydanticModel, SnapshotInfoMixin):
|
|
|
837
837
|
|
|
838
838
|
removal_interval = expanded_removal_interval
|
|
839
839
|
|
|
840
|
-
# SCD Type 2 validation that end date is the latest interval if it was provided
|
|
841
|
-
if not is_preview and self.is_scd_type_2 and self.intervals:
|
|
842
|
-
requested_start, requested_end = removal_interval
|
|
843
|
-
latest_end = self.intervals[-1][1]
|
|
844
|
-
if requested_end < latest_end:
|
|
845
|
-
from sqlmesh.core.console import get_console
|
|
846
|
-
|
|
847
|
-
get_console().log_warning(
|
|
848
|
-
f"SCD Type 2 model '{self.model.name}' does not support end date in restatements.\n"
|
|
849
|
-
f"Requested end date [{to_ts(requested_end)}] is less than the latest interval end date.\n"
|
|
850
|
-
f"The requested end date will be ignored. Using the latest interval end instead: [{to_ts(latest_end)}]"
|
|
851
|
-
)
|
|
852
|
-
|
|
853
|
-
removal_interval = self.inclusive_exclusive(requested_start, latest_end, strict)
|
|
854
|
-
|
|
855
840
|
return removal_interval
|
|
856
841
|
|
|
857
842
|
@property
|
|
@@ -140,7 +140,6 @@ class SnapshotEvaluator:
|
|
|
140
140
|
snapshots: t.Dict[str, Snapshot],
|
|
141
141
|
deployability_index: t.Optional[DeployabilityIndex] = None,
|
|
142
142
|
batch_index: int = 0,
|
|
143
|
-
is_restatement: bool = False,
|
|
144
143
|
**kwargs: t.Any,
|
|
145
144
|
) -> t.Optional[str]:
|
|
146
145
|
"""Renders the snapshot's model, executes it and stores the result in the snapshot's physical table.
|
|
@@ -166,7 +165,6 @@ class SnapshotEvaluator:
|
|
|
166
165
|
snapshots,
|
|
167
166
|
deployability_index=deployability_index,
|
|
168
167
|
batch_index=batch_index,
|
|
169
|
-
is_restatement=is_restatement,
|
|
170
168
|
**kwargs,
|
|
171
169
|
)
|
|
172
170
|
if result is None or isinstance(result, str):
|
|
@@ -624,7 +622,6 @@ class SnapshotEvaluator:
|
|
|
624
622
|
limit: t.Optional[int] = None,
|
|
625
623
|
deployability_index: t.Optional[DeployabilityIndex] = None,
|
|
626
624
|
batch_index: int = 0,
|
|
627
|
-
is_restatement: bool = False,
|
|
628
625
|
**kwargs: t.Any,
|
|
629
626
|
) -> DF | str | None:
|
|
630
627
|
"""Renders the snapshot's model and executes it. The return value depends on whether the limit was specified.
|
|
@@ -697,7 +694,6 @@ class SnapshotEvaluator:
|
|
|
697
694
|
end=end,
|
|
698
695
|
execution_time=execution_time,
|
|
699
696
|
physical_properties=rendered_physical_properties,
|
|
700
|
-
is_restatement=is_restatement,
|
|
701
697
|
)
|
|
702
698
|
else:
|
|
703
699
|
logger.info(
|
|
@@ -719,7 +715,6 @@ class SnapshotEvaluator:
|
|
|
719
715
|
end=end,
|
|
720
716
|
execution_time=execution_time,
|
|
721
717
|
physical_properties=rendered_physical_properties,
|
|
722
|
-
is_restatement=is_restatement,
|
|
723
718
|
)
|
|
724
719
|
|
|
725
720
|
with (
|
|
@@ -1840,8 +1835,6 @@ class SCDType2Strategy(MaterializableStrategy):
|
|
|
1840
1835
|
table_description=model.description,
|
|
1841
1836
|
column_descriptions=model.column_descriptions,
|
|
1842
1837
|
truncate=is_first_insert,
|
|
1843
|
-
start=kwargs["start"],
|
|
1844
|
-
is_restatement=kwargs.get("is_restatement", False),
|
|
1845
1838
|
)
|
|
1846
1839
|
elif isinstance(model.kind, SCDType2ByColumnKind):
|
|
1847
1840
|
self.adapter.scd_type_2_by_column(
|
|
@@ -1859,8 +1852,6 @@ class SCDType2Strategy(MaterializableStrategy):
|
|
|
1859
1852
|
table_description=model.description,
|
|
1860
1853
|
column_descriptions=model.column_descriptions,
|
|
1861
1854
|
truncate=is_first_insert,
|
|
1862
|
-
start=kwargs["start"],
|
|
1863
|
-
is_restatement=kwargs.get("is_restatement", False),
|
|
1864
1855
|
)
|
|
1865
1856
|
else:
|
|
1866
1857
|
raise SQLMeshError(
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
sqlmesh/__init__.py,sha256=QjwaamJIdW7voXoS880yAx7tHm-Im4_mqGA-XJgafos,7631
|
|
2
|
-
sqlmesh/_version.py,sha256
|
|
2
|
+
sqlmesh/_version.py,sha256=-H124qfvPmI-6kz_ewhkcpnhct8LluB7Bi6p9mziUtI,530
|
|
3
3
|
sqlmesh/magics.py,sha256=bEzYqXHcM0P3CjyUZ1O9arlmXAdLAhoglKbQ29fD9AE,41842
|
|
4
4
|
sqlmesh/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
5
|
sqlmesh/cicd/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -24,7 +24,7 @@ sqlmesh/core/node.py,sha256=3ChBz1PIMJhp-jzed_GLBrtmEF2v_BVDEM5WNe0ssPk,14658
|
|
|
24
24
|
sqlmesh/core/notification_target.py,sha256=PPGoDrgbRKxr27vJEu03XqNTQLYTw0ZF_b0yAapxGeI,16158
|
|
25
25
|
sqlmesh/core/reference.py,sha256=k7OSkLqTjPR8WJjNeFj0xAJ297nZUMgb_iTVwKRRKjc,4875
|
|
26
26
|
sqlmesh/core/renderer.py,sha256=PMUmmtwqk3FA5lN-16OWl6buCbrVa1M8NIgRXCYEB8k,26805
|
|
27
|
-
sqlmesh/core/scheduler.py,sha256=
|
|
27
|
+
sqlmesh/core/scheduler.py,sha256=I30K5NyeM5HuZxyZ62Vgs1VoMWPNA0gev0nveWugmLM,40544
|
|
28
28
|
sqlmesh/core/schema_diff.py,sha256=Sp2MoqAngp-yTYevkLaf9jb26SuAdGXoZ54g5MjWowU,30516
|
|
29
29
|
sqlmesh/core/schema_loader.py,sha256=_Pq2RSw91uthqv1vNi_eHmLlzhtGz_APMJ0wAJZYuvk,3677
|
|
30
30
|
sqlmesh/core/selector.py,sha256=CBuCbaFzidinaoS66o4MY9F-1C3k9YddNMyUv-5Z2i8,12815
|
|
@@ -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=AS1w_l_VrFZsc2CIicElg1dtS9y6q5hHHmTg4ECH-xs,26453
|
|
62
|
-
sqlmesh/core/engine_adapter/base.py,sha256=
|
|
62
|
+
sqlmesh/core/engine_adapter/base.py,sha256=wwbWWmNv3T0caxp76rw8J1BVwhSaF6joL7-D75w6zsA,105632
|
|
63
63
|
sqlmesh/core/engine_adapter/base_postgres.py,sha256=DOsOdCJyQAVfA9S0GznuH0J1bonMqYVP_yJLDYcxFYM,6772
|
|
64
64
|
sqlmesh/core/engine_adapter/bigquery.py,sha256=JR7YhT4h6POqE6DhNeBxT83zzDyuHR-dBh3fnmavt18,52811
|
|
65
65
|
sqlmesh/core/engine_adapter/clickhouse.py,sha256=LoPdm_s_s-ZxS1XJPA3Et0iOHeJ1LgqTAFbwBdiqE7A,34912
|
|
@@ -74,7 +74,7 @@ sqlmesh/core/engine_adapter/risingwave.py,sha256=GY0u085TWerl8kTRNJpEutdD5FBsoPi
|
|
|
74
74
|
sqlmesh/core/engine_adapter/shared.py,sha256=pvYU-sC2WEIOENm4oG4UrOCWXF56h-FEmlAqAR8TYoA,13500
|
|
75
75
|
sqlmesh/core/engine_adapter/snowflake.py,sha256=IEEzepxNpfqBIMe4ziz2k8fjOcJPeQPZyM3XljymAj0,28874
|
|
76
76
|
sqlmesh/core/engine_adapter/spark.py,sha256=sYkVOPS0X43UPbI0z7Hh_EpKlI36qkOcr4NNFOTQlLs,21045
|
|
77
|
-
sqlmesh/core/engine_adapter/trino.py,sha256=
|
|
77
|
+
sqlmesh/core/engine_adapter/trino.py,sha256=7WdLFlT0AyD5NF0EDP7GqX0SHF8sTm7cafBZxk84cmY,15798
|
|
78
78
|
sqlmesh/core/linter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
79
79
|
sqlmesh/core/linter/definition.py,sha256=JDJTkhByUw4Tr3nF-BOHKFAx_eASQqEqzX6AUVQUz8I,5659
|
|
80
80
|
sqlmesh/core/linter/helpers.py,sha256=Bv11aGRIrnv9Ym9fudy3XQB0k-FvchkLtBTkGI91SEw,6504
|
|
@@ -89,22 +89,22 @@ sqlmesh/core/model/cache.py,sha256=csun0RJguHzKX6-qITcOs4fVP4f8_Ts8qiUVV4sHY6Q,7
|
|
|
89
89
|
sqlmesh/core/model/common.py,sha256=xCMdwkJXnwjE9-56wNb1HiER0KHmWbBzc2Tm--2u168,25610
|
|
90
90
|
sqlmesh/core/model/decorator.py,sha256=bL-JuNrdBAikZSjVxnXqeB9i0e9qC7jm7yLjwiZ38aU,9470
|
|
91
91
|
sqlmesh/core/model/definition.py,sha256=IxapmZQkSPFpqGA9_mfzA5xGu1AZVxgsR0P1f1-ngus,113980
|
|
92
|
-
sqlmesh/core/model/kind.py,sha256=
|
|
92
|
+
sqlmesh/core/model/kind.py,sha256=dLIR49W5gh482ExcXz1UY81vqsudakhqAUL1XN7nrlk,36356
|
|
93
93
|
sqlmesh/core/model/meta.py,sha256=PCYfLMevlWExRHQtYs1H_158x3I5K-yUXbdjRzH2YQw,20212
|
|
94
94
|
sqlmesh/core/model/schema.py,sha256=_HMYfzK9wWXh7_CQDIIGnuQUD4aiX3o5D2cRp2sERzc,3387
|
|
95
95
|
sqlmesh/core/model/seed.py,sha256=a0M-1zY1gOkN5ph2GQyataEdBSCtq50YjeFk2LyvInI,5058
|
|
96
96
|
sqlmesh/core/plan/__init__.py,sha256=NKSvM7ZBVjw9ho3J65M1wFvG3KURB8PJ0FHHLmtSF44,443
|
|
97
|
-
sqlmesh/core/plan/builder.py,sha256=
|
|
97
|
+
sqlmesh/core/plan/builder.py,sha256=vAfziTkuM4Oq2s-flqScQf-Mac-i21YVmLpKL_I3b0c,42176
|
|
98
98
|
sqlmesh/core/plan/common.py,sha256=xchdSb_XqQBu0S6OqnpeLBR5XB8Rmr9FRCfO_v4Tl50,768
|
|
99
99
|
sqlmesh/core/plan/definition.py,sha256=yrX_uZMXi29ltkuowWhNUOi1kd0Uq0TQoM574EI6JHo,14019
|
|
100
|
-
sqlmesh/core/plan/evaluator.py,sha256=
|
|
100
|
+
sqlmesh/core/plan/evaluator.py,sha256=B8ugjmOze7uwAnFxO266u7E72IpJyK_VHHqTwLcCODs,21869
|
|
101
101
|
sqlmesh/core/plan/explainer.py,sha256=aBkvtM9eog_2NIglazSDdG_i9TTCdFSVOkCw5N8O-1k,12028
|
|
102
102
|
sqlmesh/core/plan/stages.py,sha256=ZxaHdV6G1P8g9fk2kgsFBGJFe8JPPICdoG_8U1FbklY,23743
|
|
103
103
|
sqlmesh/core/snapshot/__init__.py,sha256=Z5HTetNCZGoKF1WAKXk4LWL9dc8EC8lwS2O4TtoBmt4,1317
|
|
104
104
|
sqlmesh/core/snapshot/cache.py,sha256=bgqCR2hyf6r2A_8QP1EnXFK25gDX37-Zg0YeMuETWxg,3934
|
|
105
105
|
sqlmesh/core/snapshot/categorizer.py,sha256=qGG5870mu1jR2whKisSBH_GFbsyh96RnzJDgkN7DV9g,2482
|
|
106
|
-
sqlmesh/core/snapshot/definition.py,sha256=
|
|
107
|
-
sqlmesh/core/snapshot/evaluator.py,sha256=
|
|
106
|
+
sqlmesh/core/snapshot/definition.py,sha256=RRlpahl5hfzcR34X8L6_xLR5X5e3ihPwWZKkS7wg2gE,90433
|
|
107
|
+
sqlmesh/core/snapshot/evaluator.py,sha256=lgqSiG65sOEXSsxQ3Nx5rrcbJgWXgqE9lSWUEHMRZd0,92025
|
|
108
108
|
sqlmesh/core/state_sync/__init__.py,sha256=B60xj-_Xk-4jas3UphLvwkuf04G-9AyGckcblXE0aRg,869
|
|
109
109
|
sqlmesh/core/state_sync/base.py,sha256=AdqWmbhnvRFqVcFK6L01uCvpBVAYGuMrm4P0D3u_NaU,18334
|
|
110
110
|
sqlmesh/core/state_sync/cache.py,sha256=0AsYdQyBqbLdJvkBQ-hDAipsvnn_jSps-nya-Q4XeL0,5337
|
|
@@ -291,7 +291,7 @@ sqlmesh/utils/pydantic.py,sha256=o_NsXbIpDqNpUA1Uc5xF0ZzoXQYYB0DfHwdRxBwXPNk,120
|
|
|
291
291
|
sqlmesh/utils/rich.py,sha256=cwQ5nJ6sgz64xHtoh6_ec7ReV5YpsOGhMtUJnwoRfEI,3549
|
|
292
292
|
sqlmesh/utils/windows.py,sha256=r7Yin4WEwbvH7sKA3hOJtRsclmscNuBeCklCfVPvtQs,611
|
|
293
293
|
sqlmesh/utils/yaml.py,sha256=hvo5lmybYLcIx4p6CQwufS8X4MbwS60lEBnCmYJCXmU,2336
|
|
294
|
-
sqlmesh-0.209.1.
|
|
294
|
+
sqlmesh-0.209.1.dev20.dist-info/licenses/LICENSE,sha256=OlMefUjgWJdULtf84BLW0AZZcY8DwdgQqb_1j2862j8,11346
|
|
295
295
|
sqlmesh_dbt/__init__.py,sha256=awYS5y5mz-1NUmx6i5h5NSTJ7tidRl9NC0FAnFWSF6U,350
|
|
296
296
|
sqlmesh_dbt/cli.py,sha256=Ekn77WLMmyyr31aoDoWrZp5DS0rfiddy7pNohBK8G0s,2115
|
|
297
297
|
sqlmesh_dbt/console.py,sha256=1B0B5_R1DlrEkyWVDl8G78-B6_K-ZtLPsQEhqPCfLEU,188
|
|
@@ -413,8 +413,8 @@ web/server/api/endpoints/models.py,sha256=kwj0s7uve3iZSMfmjkoPVMFMeY1sD0peTeyrWf
|
|
|
413
413
|
web/server/api/endpoints/modules.py,sha256=8hqqgonGay_mJmpCw0IdbjsPhWlQH2VLdKAqha-myac,468
|
|
414
414
|
web/server/api/endpoints/plan.py,sha256=bbbY50W_2MsZSTxOHWMKz0tbIm75nsRSlPy8GI2fg9Q,9306
|
|
415
415
|
web/server/api/endpoints/table_diff.py,sha256=SCy3-pr5x6bEEiOaZGCDbiHQhpgxwmnz3Acqa2Ie6jI,2090
|
|
416
|
-
sqlmesh-0.209.1.
|
|
417
|
-
sqlmesh-0.209.1.
|
|
418
|
-
sqlmesh-0.209.1.
|
|
419
|
-
sqlmesh-0.209.1.
|
|
420
|
-
sqlmesh-0.209.1.
|
|
416
|
+
sqlmesh-0.209.1.dev20.dist-info/METADATA,sha256=WILYB84ir6JQNMNVdb_10I4O_f95kPqfM_YrUx0pKks,26686
|
|
417
|
+
sqlmesh-0.209.1.dev20.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
418
|
+
sqlmesh-0.209.1.dev20.dist-info/entry_points.txt,sha256=sHAf6tQczIM8xZoduN4qaUjV7QEPVUUW_LCT8EDUMv4,155
|
|
419
|
+
sqlmesh-0.209.1.dev20.dist-info/top_level.txt,sha256=RQ-33FPe2IgL0rgossAfJkCRtqslz9b7wFARqiWLC5Q,24
|
|
420
|
+
sqlmesh-0.209.1.dev20.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|