sqlmesh 0.209.1.dev35__py3-none-any.whl → 0.209.1.dev37__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.209.1.dev35'
21
- __version_tuple__ = version_tuple = (0, 209, 1, 'dev35')
20
+ __version__ = version = '0.209.1.dev37'
21
+ __version_tuple__ = version_tuple = (0, 209, 1, 'dev37')
sqlmesh/cli/main.py CHANGED
@@ -522,6 +522,12 @@ def diff(ctx: click.Context, environment: t.Optional[str] = None) -> None:
522
522
  help="Explain the plan instead of applying it.",
523
523
  default=None,
524
524
  )
525
+ @click.option(
526
+ "--ignore-cron",
527
+ is_flag=True,
528
+ help="Run all missing intervals, ignoring individual cron schedules. Only applies if --run is set.",
529
+ default=None,
530
+ )
525
531
  @click.option(
526
532
  "--min-intervals",
527
533
  default=0,
@@ -543,6 +549,7 @@ def plan(
543
549
  select_models = kwargs.pop("select_model") or None
544
550
  allow_destructive_models = kwargs.pop("allow_destructive_model") or None
545
551
  backfill_models = kwargs.pop("backfill_model") or None
552
+ ignore_cron = kwargs.pop("ignore_cron") or None
546
553
  setattr(get_console(), "verbosity", Verbosity(verbose))
547
554
 
548
555
  context.plan(
@@ -551,6 +558,7 @@ def plan(
551
558
  select_models=select_models,
552
559
  allow_destructive_models=allow_destructive_models,
553
560
  backfill_models=backfill_models,
561
+ ignore_cron=ignore_cron,
554
562
  **kwargs,
555
563
  )
556
564
 
sqlmesh/core/context.py CHANGED
@@ -1290,6 +1290,7 @@ class GenericContext(BaseContext, t.Generic[C]):
1290
1290
  diff_rendered: t.Optional[bool] = None,
1291
1291
  skip_linter: t.Optional[bool] = None,
1292
1292
  explain: t.Optional[bool] = None,
1293
+ ignore_cron: t.Optional[bool] = None,
1293
1294
  min_intervals: t.Optional[int] = None,
1294
1295
  ) -> Plan:
1295
1296
  """Interactively creates a plan.
@@ -1367,6 +1368,7 @@ class GenericContext(BaseContext, t.Generic[C]):
1367
1368
  diff_rendered=diff_rendered,
1368
1369
  skip_linter=skip_linter,
1369
1370
  explain=explain,
1371
+ ignore_cron=ignore_cron,
1370
1372
  min_intervals=min_intervals,
1371
1373
  )
1372
1374
 
@@ -1417,6 +1419,7 @@ class GenericContext(BaseContext, t.Generic[C]):
1417
1419
  diff_rendered: t.Optional[bool] = None,
1418
1420
  skip_linter: t.Optional[bool] = None,
1419
1421
  explain: t.Optional[bool] = None,
1422
+ ignore_cron: t.Optional[bool] = None,
1420
1423
  min_intervals: t.Optional[int] = None,
1421
1424
  ) -> PlanBuilder:
1422
1425
  """Creates a plan builder.
@@ -1590,6 +1593,7 @@ class GenericContext(BaseContext, t.Generic[C]):
1590
1593
  max_interval_end_per_model = None
1591
1594
  default_start, default_end = None, None
1592
1595
  if not run:
1596
+ ignore_cron = False
1593
1597
  max_interval_end_per_model = self._get_max_interval_end_per_model(
1594
1598
  snapshots, backfill_models
1595
1599
  )
@@ -1654,6 +1658,7 @@ class GenericContext(BaseContext, t.Generic[C]):
1654
1658
  console=self.console,
1655
1659
  user_provided_flags=user_provided_flags,
1656
1660
  explain=explain or False,
1661
+ ignore_cron=ignore_cron or False,
1657
1662
  )
1658
1663
 
1659
1664
  def apply(
@@ -89,6 +89,7 @@ class PlanBuilder:
89
89
  the environment is not finalized.
90
90
  start_override_per_model: A mapping of model FQNs to target start dates.
91
91
  end_override_per_model: A mapping of model FQNs to target end dates.
92
+ ignore_cron: Whether to ignore the node's cron schedule when computing missing intervals.
92
93
  explain: Whether to explain the plan instead of applying it.
93
94
  """
94
95
 
@@ -120,6 +121,7 @@ class PlanBuilder:
120
121
  end_bounded: bool = False,
121
122
  ensure_finalized_snapshots: bool = False,
122
123
  explain: bool = False,
124
+ ignore_cron: bool = False,
123
125
  start_override_per_model: t.Optional[t.Dict[str, datetime]] = None,
124
126
  end_override_per_model: t.Optional[t.Dict[str, datetime]] = None,
125
127
  console: t.Optional[PlanBuilderConsole] = None,
@@ -137,6 +139,7 @@ class PlanBuilder:
137
139
  self._enable_preview = enable_preview
138
140
  self._end_bounded = end_bounded
139
141
  self._ensure_finalized_snapshots = ensure_finalized_snapshots
142
+ self._ignore_cron = ignore_cron
140
143
  self._start_override_per_model = start_override_per_model
141
144
  self._end_override_per_model = end_override_per_model
142
145
  self._environment_ttl = environment_ttl
@@ -335,6 +338,7 @@ class PlanBuilder:
335
338
  execution_time=plan_execution_time,
336
339
  end_bounded=self._end_bounded,
337
340
  ensure_finalized_snapshots=self._ensure_finalized_snapshots,
341
+ ignore_cron=self._ignore_cron,
338
342
  user_provided_flags=self._user_provided_flags,
339
343
  )
340
344
  self._latest_plan = plan
@@ -48,6 +48,7 @@ class Plan(PydanticModel, frozen=True):
48
48
  end_bounded: bool
49
49
  ensure_finalized_snapshots: bool
50
50
  explain: bool
51
+ ignore_cron: bool = False
51
52
 
52
53
  environment_ttl: t.Optional[str] = None
53
54
  environment_naming_info: EnvironmentNamingInfo
@@ -181,6 +182,7 @@ class Plan(PydanticModel, frozen=True):
181
182
  start_override_per_model=self.start_override_per_model,
182
183
  end_override_per_model=self.end_override_per_model,
183
184
  end_bounded=self.end_bounded,
185
+ ignore_cron=self.ignore_cron,
184
186
  ).items()
185
187
  if snapshot.is_model and missing
186
188
  ]
@@ -259,6 +261,7 @@ class Plan(PydanticModel, frozen=True):
259
261
  forward_only=self.forward_only,
260
262
  end_bounded=self.end_bounded,
261
263
  ensure_finalized_snapshots=self.ensure_finalized_snapshots,
264
+ ignore_cron=self.ignore_cron,
262
265
  directly_modified_snapshots=sorted(self.directly_modified),
263
266
  indirectly_modified_snapshots={
264
267
  s.name: sorted(snapshot_ids) for s, snapshot_ids in self.indirectly_modified.items()
@@ -300,6 +303,7 @@ class EvaluatablePlan(PydanticModel):
300
303
  forward_only: bool
301
304
  end_bounded: bool
302
305
  ensure_finalized_snapshots: bool
306
+ ignore_cron: bool = False
303
307
  directly_modified_snapshots: t.List[SnapshotId]
304
308
  indirectly_modified_snapshots: t.Dict[str, t.List[SnapshotId]]
305
309
  metadata_updated_snapshots: t.List[SnapshotId]
@@ -524,6 +524,7 @@ class PlanStagesBuilder:
524
524
  },
525
525
  deployability_index=deployability_index,
526
526
  end_bounded=plan.end_bounded,
527
+ ignore_cron=plan.ignore_cron,
527
528
  start_override_per_model=plan.start_override_per_model,
528
529
  end_override_per_model=plan.end_override_per_model,
529
530
  )
sqlmesh/magics.py CHANGED
@@ -486,6 +486,12 @@ class SQLMeshMagics(Magics):
486
486
  action="store_true",
487
487
  help="Run latest intervals as part of the plan application (prod environment only).",
488
488
  )
489
+ @argument(
490
+ "--ignore-cron",
491
+ action="store_true",
492
+ help="Run for all missing intervals, ignoring individual cron schedules. Only applies if --run is set.",
493
+ default=None,
494
+ )
489
495
  @argument(
490
496
  "--enable-preview",
491
497
  action="store_true",
@@ -533,6 +539,7 @@ class SQLMeshMagics(Magics):
533
539
  select_models=args.select_model,
534
540
  no_diff=args.no_diff,
535
541
  run=args.run,
542
+ ignore_cron=args.run,
536
543
  enable_preview=args.enable_preview,
537
544
  diff_rendered=args.diff_rendered,
538
545
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sqlmesh
3
- Version: 0.209.1.dev35
3
+ Version: 0.209.1.dev37
4
4
  Summary: Next-generation data transformation framework
5
5
  Author-email: "TobikoData Inc." <engineering@tobikodata.com>
6
6
  License: Apache License
@@ -1,19 +1,19 @@
1
1
  sqlmesh/__init__.py,sha256=QjwaamJIdW7voXoS880yAx7tHm-Im4_mqGA-XJgafos,7631
2
- sqlmesh/_version.py,sha256=D-Dw2fDXWn43lhOwHkaIoX_cSJIJkVBEAQRkdajI980,530
3
- sqlmesh/magics.py,sha256=bEzYqXHcM0P3CjyUZ1O9arlmXAdLAhoglKbQ29fD9AE,41842
2
+ sqlmesh/_version.py,sha256=Xk-l9vOv9CFuDnDlprQCpoDyPPOZVaCTnt5NXKaHOq4,530
3
+ sqlmesh/magics.py,sha256=xLh3u4eqpVrKRVN5KF3X84RPRqjygAB9AJP1TXwH8hg,42086
4
4
  sqlmesh/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  sqlmesh/cicd/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
6
  sqlmesh/cicd/bot.py,sha256=2zlbn-DXkqQzr3lA0__IGU4XaIfXBXBKLWXNI2DRJX8,759
7
7
  sqlmesh/cicd/config.py,sha256=mpgkisSBBovlNrNZir2unT8Wes6b38RW2UsU_o4e8vY,109
8
8
  sqlmesh/cli/__init__.py,sha256=MAXAyO7isbyM-PaSdFjkJNcjn32WjOl0XzxT5gvp_vo,1690
9
- sqlmesh/cli/main.py,sha256=vDs65xGTyki-9bnssMWoZxyEbezH4Hnt-LYlPUG7vBQ,36404
9
+ sqlmesh/cli/main.py,sha256=xRpcd3A5aO3mX3texhvdEA2wZFYyCitWceSeUc3vo_U,36668
10
10
  sqlmesh/cli/options.py,sha256=8qEGWivk4urGikpEmaU9T8WsyaZtjCpmW4Ed25iQ73I,2543
11
11
  sqlmesh/cli/project_init.py,sha256=5JmDmUK0WJs39hM-p76uzHYdo1Hnx6fKuJg_pR3Hn5A,16419
12
12
  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=Wg6qApCRhENA1me7ELUS5GnArKlTBH-8192gQYKQnE8,2759
16
- sqlmesh/core/context.py,sha256=HFEIAMbxDa7gBvyvR2B6OTJsRuD-JXO2fOKHIAFoDLY,127702
16
+ sqlmesh/core/context.py,sha256=6XBD3Bs1FFOTFZlGdcJbIhDn7mp8NzMC0F7wiV6heu0,127909
17
17
  sqlmesh/core/context_diff.py,sha256=_Ur55fGLJ58Icsp44I4pVhdi7_JHiHq45mWIco9oFzk,21792
18
18
  sqlmesh/core/dialect.py,sha256=wJ2cDoxz72LIRJ3iBZdCqtnKMbMUdIftl-AvbVldI28,52413
19
19
  sqlmesh/core/environment.py,sha256=odus40R-YzdQdS_IiUq_tFouUXIhnpwmNwo8dE8Aw1k,13041
@@ -94,12 +94,12 @@ sqlmesh/core/model/meta.py,sha256=PCYfLMevlWExRHQtYs1H_158x3I5K-yUXbdjRzH2YQw,20
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=vAfziTkuM4Oq2s-flqScQf-Mac-i21YVmLpKL_I3b0c,42176
97
+ sqlmesh/core/plan/builder.py,sha256=hXdjPYP8HuG2Qjq9-KhX9918E--M7z-INn6bTrCCXTI,42392
98
98
  sqlmesh/core/plan/common.py,sha256=xchdSb_XqQBu0S6OqnpeLBR5XB8Rmr9FRCfO_v4Tl50,768
99
- sqlmesh/core/plan/definition.py,sha256=yrX_uZMXi29ltkuowWhNUOi1kd0Uq0TQoM574EI6JHo,14019
99
+ sqlmesh/core/plan/definition.py,sha256=28hLSx5J122uEuxVhkqtIa-3gwe3ldYJAd_L-byqzbc,14167
100
100
  sqlmesh/core/plan/evaluator.py,sha256=B8ugjmOze7uwAnFxO266u7E72IpJyK_VHHqTwLcCODs,21869
101
101
  sqlmesh/core/plan/explainer.py,sha256=aBkvtM9eog_2NIglazSDdG_i9TTCdFSVOkCw5N8O-1k,12028
102
- sqlmesh/core/plan/stages.py,sha256=ZxaHdV6G1P8g9fk2kgsFBGJFe8JPPICdoG_8U1FbklY,23743
102
+ sqlmesh/core/plan/stages.py,sha256=CNStXehZLEFkouaTB-0vylovO_eNNIGqQUXix8pvglU,23785
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
@@ -292,7 +292,7 @@ sqlmesh/utils/pydantic.py,sha256=o_NsXbIpDqNpUA1Uc5xF0ZzoXQYYB0DfHwdRxBwXPNk,120
292
292
  sqlmesh/utils/rich.py,sha256=cwQ5nJ6sgz64xHtoh6_ec7ReV5YpsOGhMtUJnwoRfEI,3549
293
293
  sqlmesh/utils/windows.py,sha256=r7Yin4WEwbvH7sKA3hOJtRsclmscNuBeCklCfVPvtQs,611
294
294
  sqlmesh/utils/yaml.py,sha256=hvo5lmybYLcIx4p6CQwufS8X4MbwS60lEBnCmYJCXmU,2336
295
- sqlmesh-0.209.1.dev35.dist-info/licenses/LICENSE,sha256=OlMefUjgWJdULtf84BLW0AZZcY8DwdgQqb_1j2862j8,11346
295
+ sqlmesh-0.209.1.dev37.dist-info/licenses/LICENSE,sha256=OlMefUjgWJdULtf84BLW0AZZcY8DwdgQqb_1j2862j8,11346
296
296
  sqlmesh_dbt/__init__.py,sha256=awYS5y5mz-1NUmx6i5h5NSTJ7tidRl9NC0FAnFWSF6U,350
297
297
  sqlmesh_dbt/cli.py,sha256=Ekn77WLMmyyr31aoDoWrZp5DS0rfiddy7pNohBK8G0s,2115
298
298
  sqlmesh_dbt/console.py,sha256=1B0B5_R1DlrEkyWVDl8G78-B6_K-ZtLPsQEhqPCfLEU,188
@@ -414,8 +414,8 @@ web/server/api/endpoints/models.py,sha256=kwj0s7uve3iZSMfmjkoPVMFMeY1sD0peTeyrWf
414
414
  web/server/api/endpoints/modules.py,sha256=8hqqgonGay_mJmpCw0IdbjsPhWlQH2VLdKAqha-myac,468
415
415
  web/server/api/endpoints/plan.py,sha256=bbbY50W_2MsZSTxOHWMKz0tbIm75nsRSlPy8GI2fg9Q,9306
416
416
  web/server/api/endpoints/table_diff.py,sha256=SCy3-pr5x6bEEiOaZGCDbiHQhpgxwmnz3Acqa2Ie6jI,2090
417
- sqlmesh-0.209.1.dev35.dist-info/METADATA,sha256=kBPqY2L0HvaWUm3tIWFJw3qfEqnCjWriDHAUNTpHOI4,26686
418
- sqlmesh-0.209.1.dev35.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
419
- sqlmesh-0.209.1.dev35.dist-info/entry_points.txt,sha256=sHAf6tQczIM8xZoduN4qaUjV7QEPVUUW_LCT8EDUMv4,155
420
- sqlmesh-0.209.1.dev35.dist-info/top_level.txt,sha256=RQ-33FPe2IgL0rgossAfJkCRtqslz9b7wFARqiWLC5Q,24
421
- sqlmesh-0.209.1.dev35.dist-info/RECORD,,
417
+ sqlmesh-0.209.1.dev37.dist-info/METADATA,sha256=8sb0gryuPSeSh2oHv9CO8sMGJvc7j6MMD9Nw0eMNLdw,26686
418
+ sqlmesh-0.209.1.dev37.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
419
+ sqlmesh-0.209.1.dev37.dist-info/entry_points.txt,sha256=sHAf6tQczIM8xZoduN4qaUjV7QEPVUUW_LCT8EDUMv4,155
420
+ sqlmesh-0.209.1.dev37.dist-info/top_level.txt,sha256=RQ-33FPe2IgL0rgossAfJkCRtqslz9b7wFARqiWLC5Q,24
421
+ sqlmesh-0.209.1.dev37.dist-info/RECORD,,