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 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.dev7'
21
- __version_tuple__ = version_tuple = (0, 183, 1, 'dev7')
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
- raise ConfigError(f"Failed to load model definition at '{path}'.\n{ex}")
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
- raise ConfigError(f"Failed to load model definition at '{path}'.\n{ex}")
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
- raise ConfigError(f"Failed to load model definition at '{path}'.\n{ex}")
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,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sqlmesh
3
- Version: 0.183.1.dev7
3
+ Version: 0.183.1.dev9
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=DRovDXI-9D9xeYDP7t8Fq7mI31S2btlN-LHPOK3y7PA,7240
2
- sqlmesh/_version.py,sha256=JtA2gDttk1pi5qeBWWEx3xhLJvDCw_byUIL1TZnVJvk,528
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=HczzAYejuUfkM5dymKb-h5SRNzHg2EJcAojvAke2VSE,31104
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=fXRHsHFEiYYW88RE-pTgQZV_1h9mr6KtVyaAW_orQAw,10852
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.dev7.dist-info/licenses/LICENSE,sha256=OlMefUjgWJdULtf84BLW0AZZcY8DwdgQqb_1j2862j8,11346
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.dev7.dist-info/METADATA,sha256=PTsnxfQSDcLqBn0etBOx0PWsPxuIZ6sR_nEWoRH5--c,25252
388
- sqlmesh-0.183.1.dev7.dist-info/WHEEL,sha256=Nw36Djuh_5VDukK0H78QzOX-_FQEo6V37m3nkm96gtU,91
389
- sqlmesh-0.183.1.dev7.dist-info/entry_points.txt,sha256=pIYKtg-u-uO7BK_Y0qrdmfyj0bYrcMc3Xiqr5WE3VFk,121
390
- sqlmesh-0.183.1.dev7.dist-info/top_level.txt,sha256=bspjo5vjELQkuN0qKuTFIbsrUt3Zeo8D2mlKeHG1LdE,12
391
- sqlmesh-0.183.1.dev7.dist-info/RECORD,,
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,,