sqlmesh 0.208.2.dev1__py3-none-any.whl → 0.208.2.dev3__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/context.py +2 -2
- sqlmesh/core/plan/builder.py +49 -45
- sqlmesh/core/snapshot/definition.py +27 -8
- sqlmesh/core/snapshot/evaluator.py +1 -1
- sqlmesh/core/state_sync/db/snapshot.py +3 -1
- {sqlmesh-0.208.2.dev1.dist-info → sqlmesh-0.208.2.dev3.dist-info}/METADATA +1 -1
- {sqlmesh-0.208.2.dev1.dist-info → sqlmesh-0.208.2.dev3.dist-info}/RECORD +12 -12
- {sqlmesh-0.208.2.dev1.dist-info → sqlmesh-0.208.2.dev3.dist-info}/WHEEL +0 -0
- {sqlmesh-0.208.2.dev1.dist-info → sqlmesh-0.208.2.dev3.dist-info}/entry_points.txt +0 -0
- {sqlmesh-0.208.2.dev1.dist-info → sqlmesh-0.208.2.dev3.dist-info}/licenses/LICENSE +0 -0
- {sqlmesh-0.208.2.dev1.dist-info → sqlmesh-0.208.2.dev3.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.208.2.
|
|
21
|
-
__version_tuple__ = version_tuple = (0, 208, 2, '
|
|
20
|
+
__version__ = version = '0.208.2.dev3'
|
|
21
|
+
__version_tuple__ = version_tuple = (0, 208, 2, 'dev3')
|
sqlmesh/core/context.py
CHANGED
|
@@ -2537,8 +2537,8 @@ class GenericContext(BaseContext, t.Generic[C]):
|
|
|
2537
2537
|
if self.cache_dir.exists():
|
|
2538
2538
|
rmtree(self.cache_dir)
|
|
2539
2539
|
|
|
2540
|
-
if isinstance(self.
|
|
2541
|
-
self.
|
|
2540
|
+
if isinstance(self._state_sync, CachingStateSync):
|
|
2541
|
+
self._state_sync.clear_cache()
|
|
2542
2542
|
|
|
2543
2543
|
def export_state(
|
|
2544
2544
|
self,
|
sqlmesh/core/plan/builder.py
CHANGED
|
@@ -239,8 +239,6 @@ class PlanBuilder:
|
|
|
239
239
|
snapshot: The target snapshot.
|
|
240
240
|
choice: The user decision on how to version the target snapshot and its children.
|
|
241
241
|
"""
|
|
242
|
-
if self._forward_only:
|
|
243
|
-
raise PlanError("Choice setting is not supported by a forward-only plan.")
|
|
244
242
|
if not self._is_new_snapshot(snapshot):
|
|
245
243
|
raise PlanError(
|
|
246
244
|
f"A choice can't be changed for the existing version of {snapshot.name}."
|
|
@@ -250,8 +248,6 @@ class PlanBuilder:
|
|
|
250
248
|
and snapshot.snapshot_id not in self._context_diff.added
|
|
251
249
|
):
|
|
252
250
|
raise PlanError(f"Only directly modified models can be categorized ({snapshot.name}).")
|
|
253
|
-
if snapshot.is_model and snapshot.model.forward_only:
|
|
254
|
-
raise PlanError(f"Forward-only model {snapshot.name} cannot be categorized manually.")
|
|
255
251
|
|
|
256
252
|
self._choices[snapshot.snapshot_id] = choice
|
|
257
253
|
self._latest_plan = None
|
|
@@ -369,8 +365,10 @@ class PlanBuilder:
|
|
|
369
365
|
restate_models = {
|
|
370
366
|
s.name
|
|
371
367
|
for s in self._context_diff.new_snapshots.values()
|
|
372
|
-
if s.
|
|
373
|
-
and
|
|
368
|
+
if s.is_model
|
|
369
|
+
and not s.is_symbolic
|
|
370
|
+
and (s.is_forward_only or s.model.forward_only)
|
|
371
|
+
and not s.is_no_preview
|
|
374
372
|
and (
|
|
375
373
|
# Metadata changes should not be previewed.
|
|
376
374
|
self._context_diff.directly_modified(s.name)
|
|
@@ -395,6 +393,9 @@ class PlanBuilder:
|
|
|
395
393
|
for s_id in dag:
|
|
396
394
|
snapshot = self._context_diff.snapshots[s_id]
|
|
397
395
|
|
|
396
|
+
if is_preview and snapshot.is_no_preview:
|
|
397
|
+
continue
|
|
398
|
+
|
|
398
399
|
# Since we are traversing the graph in topological order and the largest interval range is pushed down
|
|
399
400
|
# the graph we just have to check our immediate parents in the graph and not the whole upstream graph.
|
|
400
401
|
restating_parents = [
|
|
@@ -526,6 +527,9 @@ class PlanBuilder:
|
|
|
526
527
|
|
|
527
528
|
def _check_destructive_changes(self, directly_modified: t.Set[SnapshotId]) -> None:
|
|
528
529
|
for s_id in sorted(directly_modified):
|
|
530
|
+
if s_id.name not in self._context_diff.modified_snapshots:
|
|
531
|
+
continue
|
|
532
|
+
|
|
529
533
|
snapshot = self._context_diff.snapshots[s_id]
|
|
530
534
|
# should we raise/warn if this snapshot has/inherits a destructive change?
|
|
531
535
|
should_raise_or_warn = (
|
|
@@ -583,38 +587,38 @@ class PlanBuilder:
|
|
|
583
587
|
if not snapshot or not self._is_new_snapshot(snapshot):
|
|
584
588
|
continue
|
|
585
589
|
|
|
590
|
+
forward_only = self._is_forward_only_change(s_id) or self._forward_only
|
|
591
|
+
|
|
586
592
|
if s_id in self._choices:
|
|
587
|
-
snapshot.categorize_as(self._choices[s_id])
|
|
593
|
+
snapshot.categorize_as(self._choices[s_id], forward_only)
|
|
588
594
|
continue
|
|
589
595
|
|
|
590
596
|
if s_id in self._context_diff.added:
|
|
591
|
-
snapshot.categorize_as(SnapshotChangeCategory.BREAKING)
|
|
592
|
-
elif self._is_forward_only_change(s_id) or self._forward_only:
|
|
593
|
-
# In case of the forward only plan any modifications result in reuse of the
|
|
594
|
-
# previous version for non-seed models.
|
|
595
|
-
# New snapshots of seed models are considered non-breaking ones.
|
|
596
|
-
category = (
|
|
597
|
-
SnapshotChangeCategory.NON_BREAKING
|
|
598
|
-
if snapshot.is_seed
|
|
599
|
-
else SnapshotChangeCategory.FORWARD_ONLY
|
|
600
|
-
)
|
|
601
|
-
# If the model kind changes mark as breaking
|
|
602
|
-
if snapshot.is_model and snapshot.name in self._context_diff.modified_snapshots:
|
|
603
|
-
_, old = self._context_diff.modified_snapshots[snapshot.name]
|
|
604
|
-
if _is_breaking_kind_change(old, snapshot):
|
|
605
|
-
category = SnapshotChangeCategory.BREAKING
|
|
606
|
-
|
|
607
|
-
snapshot.categorize_as(category)
|
|
597
|
+
snapshot.categorize_as(SnapshotChangeCategory.BREAKING, forward_only)
|
|
608
598
|
elif s_id.name in self._context_diff.modified_snapshots:
|
|
609
|
-
self._categorize_snapshot(snapshot, dag, indirectly_modified)
|
|
599
|
+
self._categorize_snapshot(snapshot, forward_only, dag, indirectly_modified)
|
|
610
600
|
|
|
611
601
|
def _categorize_snapshot(
|
|
612
|
-
self,
|
|
602
|
+
self,
|
|
603
|
+
snapshot: Snapshot,
|
|
604
|
+
forward_only: bool,
|
|
605
|
+
dag: DAG[SnapshotId],
|
|
606
|
+
indirectly_modified: SnapshotMapping,
|
|
613
607
|
) -> None:
|
|
614
608
|
s_id = snapshot.snapshot_id
|
|
615
609
|
|
|
616
610
|
if self._context_diff.directly_modified(s_id.name):
|
|
611
|
+
new, old = self._context_diff.modified_snapshots[s_id.name]
|
|
612
|
+
is_breaking_kind_change = _is_breaking_kind_change(old, new)
|
|
613
|
+
if is_breaking_kind_change or snapshot.is_seed:
|
|
614
|
+
# Breaking kind changes and seed changes can't be forward-only.
|
|
615
|
+
forward_only = False
|
|
616
|
+
|
|
617
617
|
if self._auto_categorization_enabled:
|
|
618
|
+
if is_breaking_kind_change:
|
|
619
|
+
snapshot.categorize_as(SnapshotChangeCategory.BREAKING, forward_only)
|
|
620
|
+
return
|
|
621
|
+
|
|
618
622
|
s_id_with_missing_columns: t.Optional[SnapshotId] = None
|
|
619
623
|
this_sid_with_downstream = indirectly_modified.get(s_id, set()) | {s_id}
|
|
620
624
|
for downstream_s_id in this_sid_with_downstream:
|
|
@@ -626,18 +630,18 @@ class PlanBuilder:
|
|
|
626
630
|
s_id_with_missing_columns = downstream_s_id
|
|
627
631
|
break
|
|
628
632
|
|
|
629
|
-
new, old = self._context_diff.modified_snapshots[s_id.name]
|
|
630
633
|
if s_id_with_missing_columns is None:
|
|
631
634
|
change_category = categorize_change(new, old, config=self._categorizer_config)
|
|
632
635
|
if change_category is not None:
|
|
633
|
-
snapshot.categorize_as(change_category)
|
|
636
|
+
snapshot.categorize_as(change_category, forward_only)
|
|
634
637
|
else:
|
|
635
638
|
mode = self._categorizer_config.dict().get(
|
|
636
639
|
new.model.source_type, AutoCategorizationMode.OFF
|
|
637
640
|
)
|
|
638
641
|
if mode == AutoCategorizationMode.FULL:
|
|
639
|
-
snapshot.categorize_as(SnapshotChangeCategory.BREAKING)
|
|
642
|
+
snapshot.categorize_as(SnapshotChangeCategory.BREAKING, forward_only)
|
|
640
643
|
elif self._context_diff.indirectly_modified(snapshot.name):
|
|
644
|
+
all_upstream_forward_only = set()
|
|
641
645
|
all_upstream_categories = set()
|
|
642
646
|
direct_parent_categories = set()
|
|
643
647
|
|
|
@@ -646,27 +650,30 @@ class PlanBuilder:
|
|
|
646
650
|
|
|
647
651
|
if parent and self._is_new_snapshot(parent):
|
|
648
652
|
all_upstream_categories.add(parent.change_category)
|
|
653
|
+
all_upstream_forward_only.add(parent.is_forward_only)
|
|
649
654
|
if p_id in snapshot.parents:
|
|
650
655
|
direct_parent_categories.add(parent.change_category)
|
|
651
656
|
|
|
652
|
-
if
|
|
653
|
-
snapshot.
|
|
654
|
-
|
|
657
|
+
if all_upstream_forward_only == {True} or (
|
|
658
|
+
snapshot.is_model and snapshot.model.forward_only
|
|
659
|
+
):
|
|
660
|
+
forward_only = True
|
|
661
|
+
|
|
662
|
+
if direct_parent_categories.intersection(
|
|
655
663
|
{SnapshotChangeCategory.BREAKING, SnapshotChangeCategory.INDIRECT_BREAKING}
|
|
656
664
|
):
|
|
657
|
-
snapshot.categorize_as(SnapshotChangeCategory.INDIRECT_BREAKING)
|
|
665
|
+
snapshot.categorize_as(SnapshotChangeCategory.INDIRECT_BREAKING, forward_only)
|
|
658
666
|
elif not direct_parent_categories:
|
|
659
|
-
snapshot.categorize_as(
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
snapshot.categorize_as(SnapshotChangeCategory.FORWARD_ONLY)
|
|
667
|
+
snapshot.categorize_as(
|
|
668
|
+
self._get_orphaned_indirect_change_category(snapshot), forward_only
|
|
669
|
+
)
|
|
663
670
|
elif all_upstream_categories == {SnapshotChangeCategory.METADATA}:
|
|
664
|
-
snapshot.categorize_as(SnapshotChangeCategory.METADATA)
|
|
671
|
+
snapshot.categorize_as(SnapshotChangeCategory.METADATA, forward_only)
|
|
665
672
|
else:
|
|
666
|
-
snapshot.categorize_as(SnapshotChangeCategory.INDIRECT_NON_BREAKING)
|
|
673
|
+
snapshot.categorize_as(SnapshotChangeCategory.INDIRECT_NON_BREAKING, forward_only)
|
|
667
674
|
else:
|
|
668
675
|
# Metadata updated.
|
|
669
|
-
snapshot.categorize_as(SnapshotChangeCategory.METADATA)
|
|
676
|
+
snapshot.categorize_as(SnapshotChangeCategory.METADATA, forward_only)
|
|
670
677
|
|
|
671
678
|
def _get_orphaned_indirect_change_category(
|
|
672
679
|
self, indirect_snapshot: Snapshot
|
|
@@ -769,10 +776,7 @@ class PlanBuilder:
|
|
|
769
776
|
if snapshot.is_model and _is_breaking_kind_change(old, snapshot):
|
|
770
777
|
return False
|
|
771
778
|
return (
|
|
772
|
-
snapshot.is_model
|
|
773
|
-
and snapshot.model.forward_only
|
|
774
|
-
and not snapshot.change_category
|
|
775
|
-
and bool(snapshot.previous_versions)
|
|
779
|
+
snapshot.is_model and snapshot.model.forward_only and bool(snapshot.previous_versions)
|
|
776
780
|
)
|
|
777
781
|
|
|
778
782
|
def _is_new_snapshot(self, snapshot: Snapshot) -> bool:
|
|
@@ -811,7 +815,7 @@ class PlanBuilder:
|
|
|
811
815
|
and not candidate.model.forward_only
|
|
812
816
|
and promoted.is_forward_only
|
|
813
817
|
and not promoted.is_paused
|
|
814
|
-
and not candidate.
|
|
818
|
+
and not candidate.is_no_rebuild
|
|
815
819
|
and promoted.version == candidate.version
|
|
816
820
|
):
|
|
817
821
|
raise PlanError(
|
|
@@ -76,6 +76,7 @@ class SnapshotChangeCategory(IntEnum):
|
|
|
76
76
|
|
|
77
77
|
BREAKING = 1
|
|
78
78
|
NON_BREAKING = 2
|
|
79
|
+
# FORWARD_ONLY category is deprecated and is kept for backwards compatibility.
|
|
79
80
|
FORWARD_ONLY = 3
|
|
80
81
|
INDIRECT_BREAKING = 4
|
|
81
82
|
INDIRECT_NON_BREAKING = 5
|
|
@@ -336,6 +337,7 @@ class SnapshotInfoMixin(ModelKindMixin):
|
|
|
336
337
|
base_table_name_override: t.Optional[str]
|
|
337
338
|
dev_table_suffix: str
|
|
338
339
|
table_naming_convention: TableNamingConvention = Field(default=TableNamingConvention.default)
|
|
340
|
+
forward_only: bool
|
|
339
341
|
|
|
340
342
|
@cached_property
|
|
341
343
|
def identifier(self) -> str:
|
|
@@ -383,7 +385,7 @@ class SnapshotInfoMixin(ModelKindMixin):
|
|
|
383
385
|
|
|
384
386
|
@property
|
|
385
387
|
def is_forward_only(self) -> bool:
|
|
386
|
-
return self.change_category == SnapshotChangeCategory.FORWARD_ONLY
|
|
388
|
+
return self.forward_only or self.change_category == SnapshotChangeCategory.FORWARD_ONLY
|
|
387
389
|
|
|
388
390
|
@property
|
|
389
391
|
def is_metadata(self) -> bool:
|
|
@@ -394,9 +396,18 @@ class SnapshotInfoMixin(ModelKindMixin):
|
|
|
394
396
|
return self.change_category == SnapshotChangeCategory.INDIRECT_NON_BREAKING
|
|
395
397
|
|
|
396
398
|
@property
|
|
397
|
-
def
|
|
398
|
-
|
|
399
|
-
|
|
399
|
+
def is_no_rebuild(self) -> bool:
|
|
400
|
+
"""Returns true if this snapshot doesn't require a rebuild in production."""
|
|
401
|
+
return self.forward_only or self.change_category in (
|
|
402
|
+
SnapshotChangeCategory.FORWARD_ONLY, # Backwards compatibility
|
|
403
|
+
SnapshotChangeCategory.METADATA,
|
|
404
|
+
SnapshotChangeCategory.INDIRECT_NON_BREAKING,
|
|
405
|
+
)
|
|
406
|
+
|
|
407
|
+
@property
|
|
408
|
+
def is_no_preview(self) -> bool:
|
|
409
|
+
"""Returns true if this snapshot doesn't require a preview in development."""
|
|
410
|
+
return self.forward_only and self.change_category in (
|
|
400
411
|
SnapshotChangeCategory.METADATA,
|
|
401
412
|
SnapshotChangeCategory.INDIRECT_NON_BREAKING,
|
|
402
413
|
)
|
|
@@ -487,6 +498,7 @@ class SnapshotTableInfo(PydanticModel, SnapshotInfoMixin, frozen=True):
|
|
|
487
498
|
custom_materialization: t.Optional[str] = None
|
|
488
499
|
dev_table_suffix: str
|
|
489
500
|
model_gateway: t.Optional[str] = None
|
|
501
|
+
forward_only: bool = False
|
|
490
502
|
|
|
491
503
|
def __lt__(self, other: SnapshotTableInfo) -> bool:
|
|
492
504
|
return self.name < other.name
|
|
@@ -614,6 +626,7 @@ class Snapshot(PydanticModel, SnapshotInfoMixin):
|
|
|
614
626
|
table_naming_convention_: TableNamingConvention = Field(
|
|
615
627
|
default=TableNamingConvention.default, alias="table_naming_convention"
|
|
616
628
|
)
|
|
629
|
+
forward_only: bool = False
|
|
617
630
|
|
|
618
631
|
@field_validator("ttl")
|
|
619
632
|
@classmethod
|
|
@@ -1006,22 +1019,26 @@ class Snapshot(PydanticModel, SnapshotInfoMixin):
|
|
|
1006
1019
|
)
|
|
1007
1020
|
return intervals
|
|
1008
1021
|
|
|
1009
|
-
def categorize_as(self, category: SnapshotChangeCategory) -> None:
|
|
1022
|
+
def categorize_as(self, category: SnapshotChangeCategory, forward_only: bool = False) -> None:
|
|
1010
1023
|
"""Assigns the given category to this snapshot.
|
|
1011
1024
|
|
|
1012
1025
|
Args:
|
|
1013
1026
|
category: The change category to assign to this snapshot.
|
|
1027
|
+
forward_only: Whether or not this snapshot is applied going forward in production.
|
|
1014
1028
|
"""
|
|
1029
|
+
assert category != SnapshotChangeCategory.FORWARD_ONLY, (
|
|
1030
|
+
"FORWARD_ONLY change category is deprecated"
|
|
1031
|
+
)
|
|
1032
|
+
|
|
1015
1033
|
self.dev_version_ = self.fingerprint.to_version()
|
|
1016
|
-
|
|
1017
|
-
SnapshotChangeCategory.FORWARD_ONLY,
|
|
1034
|
+
is_no_rebuild = forward_only or category in (
|
|
1018
1035
|
SnapshotChangeCategory.INDIRECT_NON_BREAKING,
|
|
1019
1036
|
SnapshotChangeCategory.METADATA,
|
|
1020
1037
|
)
|
|
1021
1038
|
if self.is_model and self.model.physical_version:
|
|
1022
1039
|
# If the model has a pinned version then use that.
|
|
1023
1040
|
self.version = self.model.physical_version
|
|
1024
|
-
elif
|
|
1041
|
+
elif is_no_rebuild and self.previous_version:
|
|
1025
1042
|
previous_version = self.previous_version
|
|
1026
1043
|
self.version = previous_version.data_version.version
|
|
1027
1044
|
self.physical_schema_ = previous_version.physical_schema
|
|
@@ -1040,6 +1057,7 @@ class Snapshot(PydanticModel, SnapshotInfoMixin):
|
|
|
1040
1057
|
self.version = self.fingerprint.to_version()
|
|
1041
1058
|
|
|
1042
1059
|
self.change_category = category
|
|
1060
|
+
self.forward_only = forward_only
|
|
1043
1061
|
|
|
1044
1062
|
@property
|
|
1045
1063
|
def categorized(self) -> bool:
|
|
@@ -1220,6 +1238,7 @@ class Snapshot(PydanticModel, SnapshotInfoMixin):
|
|
|
1220
1238
|
dev_table_suffix=self.dev_table_suffix,
|
|
1221
1239
|
model_gateway=self.model_gateway,
|
|
1222
1240
|
table_naming_convention=self.table_naming_convention, # type: ignore
|
|
1241
|
+
forward_only=self.forward_only,
|
|
1223
1242
|
)
|
|
1224
1243
|
|
|
1225
1244
|
@property
|
|
@@ -338,7 +338,7 @@ class SnapshotEvaluator:
|
|
|
338
338
|
continue
|
|
339
339
|
deployability_flags = [True]
|
|
340
340
|
if (
|
|
341
|
-
snapshot.
|
|
341
|
+
snapshot.is_no_rebuild
|
|
342
342
|
or snapshot.is_managed
|
|
343
343
|
or (snapshot.is_model and snapshot.model.forward_only)
|
|
344
344
|
or (deployability_index and not deployability_index.is_deployable(snapshot))
|
|
@@ -727,6 +727,7 @@ class SharedVersionSnapshot(PydanticModel):
|
|
|
727
727
|
disable_restatement: bool
|
|
728
728
|
effective_from: t.Optional[TimeLike]
|
|
729
729
|
raw_snapshot: t.Dict[str, t.Any]
|
|
730
|
+
forward_only: bool
|
|
730
731
|
|
|
731
732
|
@property
|
|
732
733
|
def snapshot_id(self) -> SnapshotId:
|
|
@@ -734,7 +735,7 @@ class SharedVersionSnapshot(PydanticModel):
|
|
|
734
735
|
|
|
735
736
|
@property
|
|
736
737
|
def is_forward_only(self) -> bool:
|
|
737
|
-
return self.change_category == SnapshotChangeCategory.FORWARD_ONLY
|
|
738
|
+
return self.forward_only or self.change_category == SnapshotChangeCategory.FORWARD_ONLY
|
|
738
739
|
|
|
739
740
|
@property
|
|
740
741
|
def normalized_effective_from_ts(self) -> t.Optional[int]:
|
|
@@ -797,4 +798,5 @@ class SharedVersionSnapshot(PydanticModel):
|
|
|
797
798
|
disable_restatement=raw_node.get("kind", {}).get("disable_restatement", False),
|
|
798
799
|
effective_from=raw_snapshot.get("effective_from"),
|
|
799
800
|
raw_snapshot=raw_snapshot,
|
|
801
|
+
forward_only=raw_snapshot.get("forward_only", False),
|
|
800
802
|
)
|
|
@@ -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=2yhGdTiOM_8xzexAMMOW8mI6LuP-FyYBN0zpkedz24A,528
|
|
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
|
|
@@ -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=KbIXoxt5hpDENEolY-DpBlPmcWtJ9vzEgF52mjG2jPE,165710
|
|
15
15
|
sqlmesh/core/constants.py,sha256=gUABXWYgH_XOSbaZAJsR5o1dmA61JDCvBDyxqqXX3LM,2630
|
|
16
|
-
sqlmesh/core/context.py,sha256=
|
|
16
|
+
sqlmesh/core/context.py,sha256=bFAvnjg3YENIgWVDYfflKA5yW6o6gMEZhiSKBPIrBk8,127613
|
|
17
17
|
sqlmesh/core/context_diff.py,sha256=_Ur55fGLJ58Icsp44I4pVhdi7_JHiHq45mWIco9oFzk,21792
|
|
18
18
|
sqlmesh/core/dialect.py,sha256=gWxJv6Nowd4bdfj-yDhe_9TaRcWg0WevXtNautYASWw,51071
|
|
19
19
|
sqlmesh/core/environment.py,sha256=odus40R-YzdQdS_IiUq_tFouUXIhnpwmNwo8dE8Aw1k,13041
|
|
@@ -94,7 +94,7 @@ sqlmesh/core/model/meta.py,sha256=D9InI9M2-IXeb34vkXNQSLALL8xVXjZ_LXwI-Tqxm7I,21
|
|
|
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=2Nv3D8SujJfMiDLXZR8uUv95lKZZx95RHVbeJ_H2iLo,41988
|
|
98
98
|
sqlmesh/core/plan/definition.py,sha256=yrX_uZMXi29ltkuowWhNUOi1kd0Uq0TQoM574EI6JHo,14019
|
|
99
99
|
sqlmesh/core/plan/evaluator.py,sha256=0oqepq0qZ_tPhAye6Q9gLenBD_8yE3E8AAwt553lz7U,22163
|
|
100
100
|
sqlmesh/core/plan/explainer.py,sha256=aBkvtM9eog_2NIglazSDdG_i9TTCdFSVOkCw5N8O-1k,12028
|
|
@@ -102,8 +102,8 @@ sqlmesh/core/plan/stages.py,sha256=n2gBzOdal2oMgwHgL2pns9vLZmkKQb1j6qBZnk5y8NE,2
|
|
|
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
|
-
sqlmesh/core/snapshot/definition.py,sha256=
|
|
106
|
-
sqlmesh/core/snapshot/evaluator.py,sha256=
|
|
105
|
+
sqlmesh/core/snapshot/definition.py,sha256=iYQAIkrAUQmMt7_HTVGcXsdXK4waBVWR8UhqEJ7yLdc,89669
|
|
106
|
+
sqlmesh/core/snapshot/evaluator.py,sha256=brtESRAypTYpltOKyQYQZ8JwpT9OmBOXUR3zR5hJ6qE,91709
|
|
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
|
|
@@ -114,7 +114,7 @@ sqlmesh/core/state_sync/db/environment.py,sha256=iTxrdNlKB36S54PUdlqEqlxiAZJtKNE
|
|
|
114
114
|
sqlmesh/core/state_sync/db/facade.py,sha256=WWditN46A9DXHDcHT7kUZaCfkkjcaDfMC9qO1EfH4Og,25266
|
|
115
115
|
sqlmesh/core/state_sync/db/interval.py,sha256=aMQSF42bVOUU05g7oizcrKR6TBVzR6TJppxzlxkmJFU,17985
|
|
116
116
|
sqlmesh/core/state_sync/db/migrator.py,sha256=2LNUwOBNFkA1ntp-Z93S_OWxFQhOBj3ZD_ZqPCyPEAE,18139
|
|
117
|
-
sqlmesh/core/state_sync/db/snapshot.py,sha256=
|
|
117
|
+
sqlmesh/core/state_sync/db/snapshot.py,sha256=SpVg55CB4FB4DX1ZXVSJrjdek_W0RNYEkgrQBkCPJIg,29534
|
|
118
118
|
sqlmesh/core/state_sync/db/utils.py,sha256=204OpT3ISFPCwWP9Aqq8nr6ETl24sbG5uOyo86IJv6E,3819
|
|
119
119
|
sqlmesh/core/state_sync/db/version.py,sha256=fl5g1tNMYu8O6WTN4J3bciwjGq0c5nZlRDlxxRKGU78,2210
|
|
120
120
|
sqlmesh/core/test/__init__.py,sha256=e83TJPwPRR_rAG29Y0OVbZb-5oWVBzz-_wrcd22Qk10,418
|
|
@@ -288,7 +288,7 @@ sqlmesh/utils/pydantic.py,sha256=o_NsXbIpDqNpUA1Uc5xF0ZzoXQYYB0DfHwdRxBwXPNk,120
|
|
|
288
288
|
sqlmesh/utils/rich.py,sha256=cwQ5nJ6sgz64xHtoh6_ec7ReV5YpsOGhMtUJnwoRfEI,3549
|
|
289
289
|
sqlmesh/utils/windows.py,sha256=r7Yin4WEwbvH7sKA3hOJtRsclmscNuBeCklCfVPvtQs,611
|
|
290
290
|
sqlmesh/utils/yaml.py,sha256=hvo5lmybYLcIx4p6CQwufS8X4MbwS60lEBnCmYJCXmU,2336
|
|
291
|
-
sqlmesh-0.208.2.
|
|
291
|
+
sqlmesh-0.208.2.dev3.dist-info/licenses/LICENSE,sha256=OlMefUjgWJdULtf84BLW0AZZcY8DwdgQqb_1j2862j8,11346
|
|
292
292
|
web/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
293
293
|
web/client/dist/index.html,sha256=SXykdSRNgrT1k6I2dPZPEfpxPjIsi8-yVFijt-naSA4,5472
|
|
294
294
|
web/client/dist/assets/Audits-Jm353fhk.js,sha256=ry6b5IKT3hLAfD5C3T2BqxulfauEV0n0YZ2vsP4eQ_U,1041
|
|
@@ -406,8 +406,8 @@ web/server/api/endpoints/models.py,sha256=kwj0s7uve3iZSMfmjkoPVMFMeY1sD0peTeyrWf
|
|
|
406
406
|
web/server/api/endpoints/modules.py,sha256=8hqqgonGay_mJmpCw0IdbjsPhWlQH2VLdKAqha-myac,468
|
|
407
407
|
web/server/api/endpoints/plan.py,sha256=bbbY50W_2MsZSTxOHWMKz0tbIm75nsRSlPy8GI2fg9Q,9306
|
|
408
408
|
web/server/api/endpoints/table_diff.py,sha256=SCy3-pr5x6bEEiOaZGCDbiHQhpgxwmnz3Acqa2Ie6jI,2090
|
|
409
|
-
sqlmesh-0.208.2.
|
|
410
|
-
sqlmesh-0.208.2.
|
|
411
|
-
sqlmesh-0.208.2.
|
|
412
|
-
sqlmesh-0.208.2.
|
|
413
|
-
sqlmesh-0.208.2.
|
|
409
|
+
sqlmesh-0.208.2.dev3.dist-info/METADATA,sha256=UVocMY8V61XGRDT55-zhV0pfTSb1i4f0M1oXjIdTfO8,26685
|
|
410
|
+
sqlmesh-0.208.2.dev3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
411
|
+
sqlmesh-0.208.2.dev3.dist-info/entry_points.txt,sha256=pIYKtg-u-uO7BK_Y0qrdmfyj0bYrcMc3Xiqr5WE3VFk,121
|
|
412
|
+
sqlmesh-0.208.2.dev3.dist-info/top_level.txt,sha256=bspjo5vjELQkuN0qKuTFIbsrUt3Zeo8D2mlKeHG1LdE,12
|
|
413
|
+
sqlmesh-0.208.2.dev3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|