sqlmesh 0.180.1.dev6__py3-none-any.whl → 0.180.1.dev7__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.180.1.dev6'
21
- __version_tuple__ = version_tuple = (0, 180, 1, 'dev6')
20
+ __version__ = version = '0.180.1.dev7'
21
+ __version_tuple__ = version_tuple = (0, 180, 1, 'dev7')
sqlmesh/core/context.py CHANGED
@@ -88,6 +88,7 @@ from sqlmesh.core.notification_target import (
88
88
  NotificationTargetManager,
89
89
  )
90
90
  from sqlmesh.core.plan import Plan, PlanBuilder, SnapshotIntervals
91
+ from sqlmesh.core.plan.definition import UserProvidedFlags
91
92
  from sqlmesh.core.reference import ReferenceGraph
92
93
  from sqlmesh.core.scheduler import Scheduler, CompletionStatus
93
94
  from sqlmesh.core.schema_loader import create_external_models_file
@@ -1161,11 +1162,11 @@ class GenericContext(BaseContext, t.Generic[C]):
1161
1162
  end: t.Optional[TimeLike] = None,
1162
1163
  execution_time: t.Optional[TimeLike] = None,
1163
1164
  create_from: t.Optional[str] = None,
1164
- skip_tests: bool = False,
1165
+ skip_tests: t.Optional[bool] = None,
1165
1166
  restate_models: t.Optional[t.Iterable[str]] = None,
1166
- no_gaps: bool = False,
1167
- skip_backfill: bool = False,
1168
- empty_backfill: bool = False,
1167
+ no_gaps: t.Optional[bool] = None,
1168
+ skip_backfill: t.Optional[bool] = None,
1169
+ empty_backfill: t.Optional[bool] = None,
1169
1170
  forward_only: t.Optional[bool] = None,
1170
1171
  allow_destructive_models: t.Optional[t.Collection[str]] = None,
1171
1172
  no_prompts: t.Optional[bool] = None,
@@ -1178,9 +1179,9 @@ class GenericContext(BaseContext, t.Generic[C]):
1178
1179
  categorizer_config: t.Optional[CategorizerConfig] = None,
1179
1180
  enable_preview: t.Optional[bool] = None,
1180
1181
  no_diff: t.Optional[bool] = None,
1181
- run: bool = False,
1182
- diff_rendered: bool = False,
1183
- skip_linter: bool = False,
1182
+ run: t.Optional[bool] = None,
1183
+ diff_rendered: t.Optional[bool] = None,
1184
+ skip_linter: t.Optional[bool] = None,
1184
1185
  ) -> Plan:
1185
1186
  """Interactively creates a plan.
1186
1187
 
@@ -1278,11 +1279,11 @@ class GenericContext(BaseContext, t.Generic[C]):
1278
1279
  end: t.Optional[TimeLike] = None,
1279
1280
  execution_time: t.Optional[TimeLike] = None,
1280
1281
  create_from: t.Optional[str] = None,
1281
- skip_tests: bool = False,
1282
+ skip_tests: t.Optional[bool] = None,
1282
1283
  restate_models: t.Optional[t.Iterable[str]] = None,
1283
- no_gaps: bool = False,
1284
- skip_backfill: bool = False,
1285
- empty_backfill: bool = False,
1284
+ no_gaps: t.Optional[bool] = None,
1285
+ skip_backfill: t.Optional[bool] = None,
1286
+ empty_backfill: t.Optional[bool] = None,
1286
1287
  forward_only: t.Optional[bool] = None,
1287
1288
  allow_destructive_models: t.Optional[t.Collection[str]] = None,
1288
1289
  no_auto_categorization: t.Optional[bool] = None,
@@ -1292,9 +1293,9 @@ class GenericContext(BaseContext, t.Generic[C]):
1292
1293
  backfill_models: t.Optional[t.Collection[str]] = None,
1293
1294
  categorizer_config: t.Optional[CategorizerConfig] = None,
1294
1295
  enable_preview: t.Optional[bool] = None,
1295
- run: bool = False,
1296
- diff_rendered: bool = False,
1297
- skip_linter: bool = False,
1296
+ run: t.Optional[bool] = None,
1297
+ diff_rendered: t.Optional[bool] = None,
1298
+ skip_linter: t.Optional[bool] = None,
1298
1299
  ) -> PlanBuilder:
1299
1300
  """Creates a plan builder.
1300
1301
 
@@ -1335,6 +1336,42 @@ class GenericContext(BaseContext, t.Generic[C]):
1335
1336
  Returns:
1336
1337
  The plan builder.
1337
1338
  """
1339
+ kwargs: t.Dict[str, t.Optional[UserProvidedFlags]] = {
1340
+ "start": start,
1341
+ "end": end,
1342
+ "execution_time": execution_time,
1343
+ "create_from": create_from,
1344
+ "skip_tests": skip_tests,
1345
+ "restate_models": list(restate_models) if restate_models is not None else None,
1346
+ "no_gaps": no_gaps,
1347
+ "skip_backfill": skip_backfill,
1348
+ "empty_backfill": empty_backfill,
1349
+ "forward_only": forward_only,
1350
+ "allow_destructive_models": list(allow_destructive_models)
1351
+ if allow_destructive_models is not None
1352
+ else None,
1353
+ "no_auto_categorization": no_auto_categorization,
1354
+ "effective_from": effective_from,
1355
+ "include_unmodified": include_unmodified,
1356
+ "select_models": list(select_models) if select_models is not None else None,
1357
+ "backfill_models": list(backfill_models) if backfill_models is not None else None,
1358
+ "enable_preview": enable_preview,
1359
+ "run": run,
1360
+ "diff_rendered": diff_rendered,
1361
+ "skip_linter": skip_linter,
1362
+ }
1363
+ user_provided_flags: t.Dict[str, UserProvidedFlags] = {
1364
+ k: v for k, v in kwargs.items() if v is not None
1365
+ }
1366
+
1367
+ skip_tests = skip_tests or False
1368
+ no_gaps = no_gaps or False
1369
+ skip_backfill = skip_backfill or False
1370
+ empty_backfill = empty_backfill or False
1371
+ run = run or False
1372
+ diff_rendered = diff_rendered or False
1373
+ skip_linter = skip_linter or False
1374
+
1338
1375
  environment = environment or self.config.default_target_environment
1339
1376
  environment = Environment.sanitize_name(environment)
1340
1377
  is_dev = environment != c.PROD
@@ -1469,6 +1506,7 @@ class GenericContext(BaseContext, t.Generic[C]):
1469
1506
  engine_schema_differ=self.engine_adapter.SCHEMA_DIFFER,
1470
1507
  interval_end_per_model=max_interval_end_per_model,
1471
1508
  console=self.console,
1509
+ user_provided_flags=user_provided_flags,
1472
1510
  )
1473
1511
 
1474
1512
  def apply(
@@ -15,7 +15,12 @@ from sqlmesh.core.config import (
15
15
  )
16
16
  from sqlmesh.core.context_diff import ContextDiff
17
17
  from sqlmesh.core.environment import EnvironmentNamingInfo
18
- from sqlmesh.core.plan.definition import Plan, SnapshotMapping, earliest_interval_start
18
+ from sqlmesh.core.plan.definition import (
19
+ Plan,
20
+ SnapshotMapping,
21
+ UserProvidedFlags,
22
+ earliest_interval_start,
23
+ )
19
24
  from sqlmesh.core.schema_diff import SchemaDiffer, has_drop_alteration, get_dropped_column_names
20
25
  from sqlmesh.core.snapshot import (
21
26
  DeployabilityIndex,
@@ -107,6 +112,7 @@ class PlanBuilder:
107
112
  ensure_finalized_snapshots: bool = False,
108
113
  interval_end_per_model: t.Optional[t.Dict[str, int]] = None,
109
114
  console: t.Optional[PlanBuilderConsole] = None,
115
+ user_provided_flags: t.Optional[t.Dict[str, UserProvidedFlags]] = None,
110
116
  ):
111
117
  self._context_diff = context_diff
112
118
  self._no_gaps = no_gaps
@@ -134,6 +140,7 @@ class PlanBuilder:
134
140
  self._engine_schema_differ = engine_schema_differ
135
141
  self._console = console or get_console()
136
142
  self._choices: t.Dict[SnapshotId, SnapshotChangeCategory] = {}
143
+ self._user_provided_flags = user_provided_flags
137
144
 
138
145
  self._start = start
139
146
  if not self._start and (
@@ -280,6 +287,7 @@ class PlanBuilder:
280
287
  execution_time=self._execution_time,
281
288
  end_bounded=self._end_bounded,
282
289
  ensure_finalized_snapshots=self._ensure_finalized_snapshots,
290
+ user_provided_flags=self._user_provided_flags,
283
291
  )
284
292
  self._latest_plan = plan
285
293
  return plan
@@ -28,6 +28,7 @@ from sqlmesh.utils.date import TimeLike, now, to_datetime, to_timestamp
28
28
  from sqlmesh.utils.pydantic import PydanticModel
29
29
 
30
30
  SnapshotMapping = t.Dict[SnapshotId, t.Set[SnapshotId]]
31
+ UserProvidedFlags = t.Union[TimeLike, str, bool, t.List[str]]
31
32
 
32
33
 
33
34
  class Plan(PydanticModel, frozen=True):
@@ -63,6 +64,8 @@ class Plan(PydanticModel, frozen=True):
63
64
  effective_from: t.Optional[TimeLike] = None
64
65
  execution_time: t.Optional[TimeLike] = None
65
66
 
67
+ user_provided_flags: t.Optional[t.Dict[str, UserProvidedFlags]] = None
68
+
66
69
  @cached_property
67
70
  def start(self) -> TimeLike:
68
71
  if self.provided_start is not None:
@@ -262,6 +265,7 @@ class Plan(PydanticModel, frozen=True):
262
265
  if s.is_model and s.model.disable_restatement
263
266
  },
264
267
  environment_statements=self.context_diff.environment_statements,
268
+ user_provided_flags=self.user_provided_flags,
265
269
  )
266
270
 
267
271
  @cached_property
@@ -294,6 +298,7 @@ class EvaluatablePlan(PydanticModel):
294
298
  execution_time: t.Optional[TimeLike] = None
295
299
  disabled_restatement_models: t.Set[str]
296
300
  environment_statements: t.Optional[t.List[EnvironmentStatements]] = None
301
+ user_provided_flags: t.Optional[t.Dict[str, UserProvidedFlags]] = None
297
302
 
298
303
  def is_selected_for_backfill(self, model_fqn: str) -> bool:
299
304
  return self.models_to_backfill is None or model_fqn in self.models_to_backfill
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sqlmesh
3
- Version: 0.180.1.dev6
3
+ Version: 0.180.1.dev7
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=uPXld_xTZ2NTruSfVJ_vR_w-uAxR3T-gMXAb-EphTe8,7167
2
- sqlmesh/_version.py,sha256=aRSFsh1E3JMhU05mRkzsheci0wWy8KFZpeNIJwy4TyA,528
2
+ sqlmesh/_version.py,sha256=052Ck_Q6K5fDNQDCHUodUEMU99K561pVTbF5SgTNWmY,528
3
3
  sqlmesh/magics.py,sha256=7BU9ec9zE4tjvZ3hdEqwFX2VVV-CI0h06TGZo_Ssi8M,39070
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=ERAYluCseNnRxWXpgtNE0MYut5CCWGoyHdPKMnYv0Fc,146135
15
15
  sqlmesh/core/constants.py,sha256=oqt6zjepUhQoWlgapKn_HpG7Pu9mrFwepdX5caNfJUI,2499
16
- sqlmesh/core/context.py,sha256=ZuT9DBAqnu2bHW8wBkZ8QsDoll9z_qe4Cousaa0Ph88,111766
16
+ sqlmesh/core/context.py,sha256=9QX_FW-CoTvEhp-yTQYntHcZ9SXyRK-AJmZp_kelW-I,113609
17
17
  sqlmesh/core/context_diff.py,sha256=s9toP17d4tJfOpFH91LcjGK2CM64PVuB0MPkeFgF4hQ,20415
18
18
  sqlmesh/core/dialect.py,sha256=fPTV517IOS0nWMxYznNNQnXkQkFFrPOSKe8ghsQ0o8A,49759
19
19
  sqlmesh/core/environment.py,sha256=0TTQf4C4LXwf37fm-dfYv1qyG7vtZfQI5rizgm5g0j0,11442
@@ -93,8 +93,8 @@ sqlmesh/core/model/meta.py,sha256=v-g1lnGPoeZ2SjV2CbVjvlec9buydiOFKkZWUm2dQPs,19
93
93
  sqlmesh/core/model/schema.py,sha256=QzM1cOfukuK3L-cEE9MtxKeYec3x5JvutdZAnczJSiQ,3858
94
94
  sqlmesh/core/model/seed.py,sha256=ctUHH6CmeEnBVJyIAZznx0xJBm09W7VIZ-76Cfwfq28,5004
95
95
  sqlmesh/core/plan/__init__.py,sha256=ctpnu9mK3uTujs0It8qRMqcj9GdObXDnvSgn4rD2zqc,450
96
- sqlmesh/core/plan/builder.py,sha256=ox6DkpWXlhRGYASObuJKOmgVmquHi6IJl3_T2Xi137c,38236
97
- sqlmesh/core/plan/definition.py,sha256=qNyx6dok3v9dHNgzvGDCOEdoWNVS5KwZK8VlRPzZXeo,12947
96
+ sqlmesh/core/plan/builder.py,sha256=ltoUlUr13uoEftYqGzjbnOa_n7-Q1CUiE9R_LgHY9Mc,38471
97
+ sqlmesh/core/plan/definition.py,sha256=SI3zi2poPkKJKTZogYv60Q7eIOhksaAcFUcu-J2-XqI,13218
98
98
  sqlmesh/core/plan/evaluator.py,sha256=Ocb4vxWUFRI1hD5tpkVvdJicWSa9rUfL8Qm1C3DMVts,23760
99
99
  sqlmesh/core/snapshot/__init__.py,sha256=Z5HTetNCZGoKF1WAKXk4LWL9dc8EC8lwS2O4TtoBmt4,1317
100
100
  sqlmesh/core/snapshot/cache.py,sha256=MRYi_koDvp2yeQ5NDGoNFzhuJTw7Vh7mI0oJyeVbqio,4022
@@ -265,7 +265,7 @@ sqlmesh/utils/pandas.py,sha256=j_tYhuPcWpzuPceZZ6IhdTVbmxYyGJW7l4FHr4bQqjM,1824
265
265
  sqlmesh/utils/pydantic.py,sha256=ioaAzYF42PutEJRyAS11-AHguiCG3yWI6VRcTVa2G-g,10470
266
266
  sqlmesh/utils/rich.py,sha256=xNZyPCqEc4TAlJlsEthg-5eYUWpaizz0QjBzO7a1Yv4,1509
267
267
  sqlmesh/utils/yaml.py,sha256=np-WVcwmwsKghCgAj1OBBMsK1SXSRn4wR-H37cGiFr8,2282
268
- sqlmesh-0.180.1.dev6.dist-info/licenses/LICENSE,sha256=OlMefUjgWJdULtf84BLW0AZZcY8DwdgQqb_1j2862j8,11346
268
+ sqlmesh-0.180.1.dev7.dist-info/licenses/LICENSE,sha256=OlMefUjgWJdULtf84BLW0AZZcY8DwdgQqb_1j2862j8,11346
269
269
  web/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
270
270
  web/client/dist/index.html,sha256=cQRIlDgkl6OgeWuHI9hM8bJhKUE9-Ji2NpQa2hlgNM8,5472
271
271
  web/client/dist/assets/Audits-4U9LnWyN.js,sha256=reXu-sKJ76kiaAZIGkCPvgO68Km9tj1PN_9mx6X6WAY,997
@@ -382,8 +382,8 @@ web/server/api/endpoints/models.py,sha256=SzS5bshzdXyM6hb948sZ_3k-xhpGCHkxkb7pHz
382
382
  web/server/api/endpoints/modules.py,sha256=8hqqgonGay_mJmpCw0IdbjsPhWlQH2VLdKAqha-myac,468
383
383
  web/server/api/endpoints/plan.py,sha256=OYuQ_4dgbhG9ibTcX1a8mvYgH3ANxw9Fhbb4wg6QWqc,9222
384
384
  web/server/api/endpoints/table_diff.py,sha256=Wd5YxeKbZB7AkrDvqFgvV9ZQlnKYOF1n5W_w2EHE_Zw,2085
385
- sqlmesh-0.180.1.dev6.dist-info/METADATA,sha256=6BV3t57PgqikY87SHfPECnTNXPXdZLR5otYHMtnRI3Y,25307
386
- sqlmesh-0.180.1.dev6.dist-info/WHEEL,sha256=0CuiUZ_p9E4cD6NyLD6UG80LBXYyiSYZOKDm5lp32xk,91
387
- sqlmesh-0.180.1.dev6.dist-info/entry_points.txt,sha256=pIYKtg-u-uO7BK_Y0qrdmfyj0bYrcMc3Xiqr5WE3VFk,121
388
- sqlmesh-0.180.1.dev6.dist-info/top_level.txt,sha256=bspjo5vjELQkuN0qKuTFIbsrUt3Zeo8D2mlKeHG1LdE,12
389
- sqlmesh-0.180.1.dev6.dist-info/RECORD,,
385
+ sqlmesh-0.180.1.dev7.dist-info/METADATA,sha256=1KbYPc5IlJFeCYcqieGPzuOFI1jK5g8lBHA7DXeBa3M,25307
386
+ sqlmesh-0.180.1.dev7.dist-info/WHEEL,sha256=0CuiUZ_p9E4cD6NyLD6UG80LBXYyiSYZOKDm5lp32xk,91
387
+ sqlmesh-0.180.1.dev7.dist-info/entry_points.txt,sha256=pIYKtg-u-uO7BK_Y0qrdmfyj0bYrcMc3Xiqr5WE3VFk,121
388
+ sqlmesh-0.180.1.dev7.dist-info/top_level.txt,sha256=bspjo5vjELQkuN0qKuTFIbsrUt3Zeo8D2mlKeHG1LdE,12
389
+ sqlmesh-0.180.1.dev7.dist-info/RECORD,,