sqlmesh 0.183.1.dev7__py3-none-any.whl → 0.183.1.dev9__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/loader.py +22 -5
- sqlmesh/utils/__init__.py +1 -1
- {sqlmesh-0.183.1.dev7.dist-info → sqlmesh-0.183.1.dev9.dist-info}/METADATA +1 -1
- {sqlmesh-0.183.1.dev7.dist-info → sqlmesh-0.183.1.dev9.dist-info}/RECORD +9 -9
- {sqlmesh-0.183.1.dev7.dist-info → sqlmesh-0.183.1.dev9.dist-info}/WHEEL +0 -0
- {sqlmesh-0.183.1.dev7.dist-info → sqlmesh-0.183.1.dev9.dist-info}/entry_points.txt +0 -0
- {sqlmesh-0.183.1.dev7.dist-info → sqlmesh-0.183.1.dev9.dist-info}/licenses/LICENSE +0 -0
- {sqlmesh-0.183.1.dev7.dist-info → sqlmesh-0.183.1.dev9.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.183.1.
|
|
21
|
-
__version_tuple__ = version_tuple = (0, 183, 1, '
|
|
20
|
+
__version__ = version = '0.183.1.dev9'
|
|
21
|
+
__version_tuple__ = version_tuple = (0, 183, 1, 'dev9')
|
sqlmesh/core/loader.py
CHANGED
|
@@ -223,7 +223,7 @@ class Loader(abc.ABC):
|
|
|
223
223
|
if external_models_path.exists() and external_models_path.is_dir():
|
|
224
224
|
paths_to_load.extend(self._glob_paths(external_models_path, extension=".yaml"))
|
|
225
225
|
|
|
226
|
-
def _load() -> t.List[Model]:
|
|
226
|
+
def _load(path: Path) -> t.List[Model]:
|
|
227
227
|
try:
|
|
228
228
|
with open(path, "r", encoding="utf-8") as file:
|
|
229
229
|
return [
|
|
@@ -241,21 +241,30 @@ class Loader(abc.ABC):
|
|
|
241
241
|
for row in YAML().load(file.read())
|
|
242
242
|
]
|
|
243
243
|
except Exception as ex:
|
|
244
|
-
|
|
244
|
+
self._raise_failed_to_load_model_error(path, str(ex))
|
|
245
|
+
raise
|
|
245
246
|
|
|
246
247
|
for path in paths_to_load:
|
|
247
248
|
self._track_file(path)
|
|
248
249
|
|
|
249
|
-
external_models = cache.get_or_load_models(path, _load)
|
|
250
|
+
external_models = cache.get_or_load_models(path, lambda: _load(path))
|
|
250
251
|
# external models with no explicit gateway defined form the base set
|
|
251
252
|
for model in external_models:
|
|
252
253
|
if model.gateway is None:
|
|
254
|
+
if model.fqn in models:
|
|
255
|
+
self._raise_failed_to_load_model_error(
|
|
256
|
+
path, f"Duplicate external model name: '{model.name}'."
|
|
257
|
+
)
|
|
253
258
|
models[model.fqn] = model
|
|
254
259
|
|
|
255
260
|
# however, if there is a gateway defined, gateway-specific models take precedence
|
|
256
261
|
if gateway:
|
|
257
262
|
for model in external_models:
|
|
258
263
|
if model.gateway == gateway:
|
|
264
|
+
if model.fqn in models and models[model.fqn].gateway == gateway:
|
|
265
|
+
self._raise_failed_to_load_model_error(
|
|
266
|
+
path, f"Duplicate external model name: '{model.name}'."
|
|
267
|
+
)
|
|
259
268
|
models.update({model.fqn: model})
|
|
260
269
|
|
|
261
270
|
return models
|
|
@@ -363,6 +372,9 @@ class Loader(abc.ABC):
|
|
|
363
372
|
|
|
364
373
|
return self._variables_by_gateway[gateway_name]
|
|
365
374
|
|
|
375
|
+
def _raise_failed_to_load_model_error(self, path: Path, message: str) -> None:
|
|
376
|
+
raise ConfigError(f"Failed to load model definition at '{path}'.\n{message}")
|
|
377
|
+
|
|
366
378
|
|
|
367
379
|
class SqlMeshLoader(Loader):
|
|
368
380
|
"""Loads macros and models for a context using the SQLMesh file formats"""
|
|
@@ -484,9 +496,14 @@ class SqlMeshLoader(Loader):
|
|
|
484
496
|
default_catalog_per_gateway=self.context.default_catalog_per_gateway,
|
|
485
497
|
)
|
|
486
498
|
except Exception as ex:
|
|
487
|
-
|
|
499
|
+
self._raise_failed_to_load_model_error(path, str(ex))
|
|
500
|
+
raise
|
|
488
501
|
|
|
489
502
|
for model in cache.get_or_load_models(path, _load):
|
|
503
|
+
if model.fqn in models:
|
|
504
|
+
self._raise_failed_to_load_model_error(
|
|
505
|
+
path, f"Duplicate SQL model name: '{model.name}'."
|
|
506
|
+
)
|
|
490
507
|
if model.enabled:
|
|
491
508
|
models[model.fqn] = model
|
|
492
509
|
|
|
@@ -544,7 +561,7 @@ class SqlMeshLoader(Loader):
|
|
|
544
561
|
if model.enabled:
|
|
545
562
|
models[model.fqn] = model
|
|
546
563
|
except Exception as ex:
|
|
547
|
-
|
|
564
|
+
self._raise_failed_to_load_model_error(path, str(ex))
|
|
548
565
|
|
|
549
566
|
finally:
|
|
550
567
|
model_registry._dialect = None
|
sqlmesh/utils/__init__.py
CHANGED
|
@@ -136,7 +136,7 @@ class registry_decorator:
|
|
|
136
136
|
except ValueError:
|
|
137
137
|
# No need to raise due to duplicate key if the functions are identical
|
|
138
138
|
if func.__code__.co_code != registry[func_name].func.__code__.co_code:
|
|
139
|
-
raise
|
|
139
|
+
raise ValueError(f"Duplicate name: '{func_name}'.")
|
|
140
140
|
|
|
141
141
|
@wraps(func)
|
|
142
142
|
def wrapper(*args: t.Any, **kwargs: t.Any) -> DECORATOR_RETURN_TYPE:
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
sqlmesh/__init__.py,sha256=DRovDXI-9D9xeYDP7t8Fq7mI31S2btlN-LHPOK3y7PA,7240
|
|
2
|
-
sqlmesh/_version.py,sha256=
|
|
2
|
+
sqlmesh/_version.py,sha256=o3HUehMkS345GYljyIblmMHsHVEI0lzikU8rWLq9dPc,528
|
|
3
3
|
sqlmesh/magics.py,sha256=9oY1Uz8uwsuTtPRg9HTYDxnGiJ7-OVRCpmCgAhbKHUU,39431
|
|
4
4
|
sqlmesh/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
5
|
sqlmesh/cicd/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -18,7 +18,7 @@ sqlmesh/core/context_diff.py,sha256=s9toP17d4tJfOpFH91LcjGK2CM64PVuB0MPkeFgF4hQ,
|
|
|
18
18
|
sqlmesh/core/dialect.py,sha256=fPTV517IOS0nWMxYznNNQnXkQkFFrPOSKe8ghsQ0o8A,49759
|
|
19
19
|
sqlmesh/core/environment.py,sha256=0TTQf4C4LXwf37fm-dfYv1qyG7vtZfQI5rizgm5g0j0,11442
|
|
20
20
|
sqlmesh/core/lineage.py,sha256=zjB0Zfamo2Fja2r5SSZPMbrEKTXr1WjozZPVqvxdybI,3143
|
|
21
|
-
sqlmesh/core/loader.py,sha256=
|
|
21
|
+
sqlmesh/core/loader.py,sha256=97_nTWdNdEnz-LNK7AO-tkH9mo_lpe5vJIDGMvaL-bs,31979
|
|
22
22
|
sqlmesh/core/macros.py,sha256=0OE317oNkkENHBess2IiFflgRbtmMsTEmKrTnWGI2_4,59092
|
|
23
23
|
sqlmesh/core/node.py,sha256=r4_1MRTPcU0MAlwZ5KzrykLT58B7dkKvHzPCsJmEKD8,14497
|
|
24
24
|
sqlmesh/core/notification_target.py,sha256=PPGoDrgbRKxr27vJEu03XqNTQLYTw0ZF_b0yAapxGeI,16158
|
|
@@ -246,7 +246,7 @@ sqlmesh/migrations/v0081_update_partitioned_by.py,sha256=Dvus_xfKUHI3xntAWU55_cT
|
|
|
246
246
|
sqlmesh/migrations/v0082_warn_if_incorrectly_duplicated_statements.py,sha256=K-Z0ghTCFSZuAYzNSUXF4L8axihPemM15EOXHcqkK3s,2489
|
|
247
247
|
sqlmesh/migrations/v0083_use_sql_for_scd_time_data_type_data_hash.py,sha256=0r-SlncPec4TBpnQTeblPsiIjIOVKc10GjBVbFPGcFA,148
|
|
248
248
|
sqlmesh/schedulers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
249
|
-
sqlmesh/utils/__init__.py,sha256=
|
|
249
|
+
sqlmesh/utils/__init__.py,sha256=4vN2s-t0p0c9l4erdOFONl_j8StaW6Eljt_SBffMW80,10898
|
|
250
250
|
sqlmesh/utils/aws.py,sha256=krxyhrKtsMJDEjT567UbGZogjJ9JRHkvAV-Cg3FVndM,1062
|
|
251
251
|
sqlmesh/utils/cache.py,sha256=y58l95ka8RgSX-r6Opav4RBKWLnNYLUYqLfDOPI8HzI,4526
|
|
252
252
|
sqlmesh/utils/concurrency.py,sha256=HvK_AwVfy3Npzmsthmd73Z5tLhY-Anrb472IkaoRjOw,9041
|
|
@@ -266,7 +266,7 @@ sqlmesh/utils/pandas.py,sha256=j_tYhuPcWpzuPceZZ6IhdTVbmxYyGJW7l4FHr4bQqjM,1824
|
|
|
266
266
|
sqlmesh/utils/pydantic.py,sha256=ioaAzYF42PutEJRyAS11-AHguiCG3yWI6VRcTVa2G-g,10470
|
|
267
267
|
sqlmesh/utils/rich.py,sha256=xNZyPCqEc4TAlJlsEthg-5eYUWpaizz0QjBzO7a1Yv4,1509
|
|
268
268
|
sqlmesh/utils/yaml.py,sha256=np-WVcwmwsKghCgAj1OBBMsK1SXSRn4wR-H37cGiFr8,2282
|
|
269
|
-
sqlmesh-0.183.1.
|
|
269
|
+
sqlmesh-0.183.1.dev9.dist-info/licenses/LICENSE,sha256=OlMefUjgWJdULtf84BLW0AZZcY8DwdgQqb_1j2862j8,11346
|
|
270
270
|
web/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
271
271
|
web/client/dist/index.html,sha256=nPqIDCJmonOaEAp4hhwrwgPdwt_F-5zzw-WW1kJqq3I,5472
|
|
272
272
|
web/client/dist/assets/Audits-DiRd7NXk.js,sha256=Q5dIFqsHps-vVYD8037NpTPW_1juQgn_Ov45smEm7Y8,1041
|
|
@@ -384,8 +384,8 @@ web/server/api/endpoints/models.py,sha256=SzS5bshzdXyM6hb948sZ_3k-xhpGCHkxkb7pHz
|
|
|
384
384
|
web/server/api/endpoints/modules.py,sha256=8hqqgonGay_mJmpCw0IdbjsPhWlQH2VLdKAqha-myac,468
|
|
385
385
|
web/server/api/endpoints/plan.py,sha256=OYuQ_4dgbhG9ibTcX1a8mvYgH3ANxw9Fhbb4wg6QWqc,9222
|
|
386
386
|
web/server/api/endpoints/table_diff.py,sha256=Wd5YxeKbZB7AkrDvqFgvV9ZQlnKYOF1n5W_w2EHE_Zw,2085
|
|
387
|
-
sqlmesh-0.183.1.
|
|
388
|
-
sqlmesh-0.183.1.
|
|
389
|
-
sqlmesh-0.183.1.
|
|
390
|
-
sqlmesh-0.183.1.
|
|
391
|
-
sqlmesh-0.183.1.
|
|
387
|
+
sqlmesh-0.183.1.dev9.dist-info/METADATA,sha256=K4d2hO9kth3jL5u3_d1ySlEJ5qqd4aZ91XmuH0AA35U,25252
|
|
388
|
+
sqlmesh-0.183.1.dev9.dist-info/WHEEL,sha256=Nw36Djuh_5VDukK0H78QzOX-_FQEo6V37m3nkm96gtU,91
|
|
389
|
+
sqlmesh-0.183.1.dev9.dist-info/entry_points.txt,sha256=pIYKtg-u-uO7BK_Y0qrdmfyj0bYrcMc3Xiqr5WE3VFk,121
|
|
390
|
+
sqlmesh-0.183.1.dev9.dist-info/top_level.txt,sha256=bspjo5vjELQkuN0qKuTFIbsrUt3Zeo8D2mlKeHG1LdE,12
|
|
391
|
+
sqlmesh-0.183.1.dev9.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|