sqlmesh 0.202.2.dev13__py3-none-any.whl → 0.202.2.dev15__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.202.2.dev13'
21
- __version_tuple__ = version_tuple = (0, 202, 2, 'dev13')
20
+ __version__ = version = '0.202.2.dev15'
21
+ __version_tuple__ = version_tuple = (0, 202, 2, 'dev15')
@@ -10,7 +10,7 @@ from sqlglot.helper import subclasses
10
10
  from sqlmesh.core.linter.helpers import TokenPositionDetails, get_range_of_model_block
11
11
  from sqlmesh.core.linter.rule import Rule, RuleViolation, Range, Fix, TextEdit
12
12
  from sqlmesh.core.linter.definition import RuleSet
13
- from sqlmesh.core.model import Model, SqlModel
13
+ from sqlmesh.core.model import Model, SqlModel, ExternalModel
14
14
 
15
15
 
16
16
  class NoSelectStar(Rule):
@@ -110,4 +110,31 @@ class NoMissingAudits(Rule):
110
110
  return self.violation()
111
111
 
112
112
 
113
+ class NoMissingExternalModels(Rule):
114
+ """All external models must be registered in the external_models.yaml file"""
115
+
116
+ def check_model(self, model: Model) -> t.Optional[RuleViolation]:
117
+ # Ignore external models themselves, because either they are registered,
118
+ # and if they are not, they will be caught as referenced in another model.
119
+ if isinstance(model, ExternalModel):
120
+ return None
121
+
122
+ # Handle other models that may refer to the external models.
123
+ not_registered_external_models: t.Set[str] = set()
124
+ for depends_on_model in model.depends_on:
125
+ existing_model = self.context.get_model(depends_on_model)
126
+ if existing_model is None:
127
+ not_registered_external_models.add(depends_on_model)
128
+
129
+ if not not_registered_external_models:
130
+ return None
131
+
132
+ return RuleViolation(
133
+ rule=self,
134
+ violation_msg=f"Model '{model.name}' depends on unregistered external models: "
135
+ f"{', '.join(m for m in not_registered_external_models)}. "
136
+ "Please register them in the external models file. This can be done by running 'sqlmesh create_external_models'.",
137
+ )
138
+
139
+
113
140
  BUILTIN_RULES = RuleSet(subclasses(__name__, Rule, (Rule,)))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sqlmesh
3
- Version: 0.202.2.dev13
3
+ Version: 0.202.2.dev15
4
4
  Summary: Next-generation data transformation framework
5
5
  Author-email: "TobikoData Inc." <engineering@tobikodata.com>
6
6
  License: Apache License
@@ -234,7 +234,7 @@ Requires-Dist: python-dotenv
234
234
  Requires-Dist: requests
235
235
  Requires-Dist: rich[jupyter]
236
236
  Requires-Dist: ruamel.yaml
237
- Requires-Dist: sqlglot[rs]~=27.1.0
237
+ Requires-Dist: sqlglot[rs]~=27.3.1
238
238
  Requires-Dist: tenacity
239
239
  Requires-Dist: time-machine
240
240
  Requires-Dist: json-stream
@@ -1,5 +1,5 @@
1
1
  sqlmesh/__init__.py,sha256=QjwaamJIdW7voXoS880yAx7tHm-Im4_mqGA-XJgafos,7631
2
- sqlmesh/_version.py,sha256=bPW7iVM6Vs_a7R2vdZ8itgCItk4Gwb3t5tyzUv0ZWVw,530
2
+ sqlmesh/_version.py,sha256=XoklTZ1eJ1V2hS1ailr4G_6yE_ToDLeD4HZPRj3npKM,530
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
@@ -80,7 +80,7 @@ sqlmesh/core/linter/definition.py,sha256=pXDxl8TxTGNuVc1B5ywYmaH7dDjsoMRvCtLCK_c
80
80
  sqlmesh/core/linter/helpers.py,sha256=ygumMRAShxHITK_5vI64tHJoEa2mAdKen5hlMxaXKoQ,5022
81
81
  sqlmesh/core/linter/rule.py,sha256=FlsP0PN4dmke7sJ2oD8ZZo3tWw8i87Q7CvbdNOOy3N8,3648
82
82
  sqlmesh/core/linter/rules/__init__.py,sha256=gevzfb67vFqckTCoVAe_TBGf6hQ-YtE1_YuGuXyh1L0,77
83
- sqlmesh/core/linter/rules/builtin.py,sha256=ea2jOkg78UWBbMjHSI0mTWee-MsCzQWqI7hpTgrjwYs,3939
83
+ sqlmesh/core/linter/rules/builtin.py,sha256=UNelGDGuzE-gPc6DsFw9h0BUbzmwx-Xyrx8wZh61Qq8,5163
84
84
  sqlmesh/core/metric/__init__.py,sha256=H1HmoD5IwN4YWe9iJXyueLYNmTQFZwok5nSWNJcZIBQ,237
85
85
  sqlmesh/core/metric/definition.py,sha256=Yd5aVgsZCDPJ43aGP7WqtzZOuuSUtB8uJGVA6Jw9x9M,7201
86
86
  sqlmesh/core/metric/rewriter.py,sha256=GiSTHfn2kinqCfNPYgZPRk93JFLzVaaejHtHDQ0yXZI,7326
@@ -285,7 +285,7 @@ sqlmesh/utils/pydantic.py,sha256=o_NsXbIpDqNpUA1Uc5xF0ZzoXQYYB0DfHwdRxBwXPNk,120
285
285
  sqlmesh/utils/rich.py,sha256=cwQ5nJ6sgz64xHtoh6_ec7ReV5YpsOGhMtUJnwoRfEI,3549
286
286
  sqlmesh/utils/windows.py,sha256=r7Yin4WEwbvH7sKA3hOJtRsclmscNuBeCklCfVPvtQs,611
287
287
  sqlmesh/utils/yaml.py,sha256=hvo5lmybYLcIx4p6CQwufS8X4MbwS60lEBnCmYJCXmU,2336
288
- sqlmesh-0.202.2.dev13.dist-info/licenses/LICENSE,sha256=OlMefUjgWJdULtf84BLW0AZZcY8DwdgQqb_1j2862j8,11346
288
+ sqlmesh-0.202.2.dev15.dist-info/licenses/LICENSE,sha256=OlMefUjgWJdULtf84BLW0AZZcY8DwdgQqb_1j2862j8,11346
289
289
  web/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
290
290
  web/client/dist/index.html,sha256=SXykdSRNgrT1k6I2dPZPEfpxPjIsi8-yVFijt-naSA4,5472
291
291
  web/client/dist/assets/Audits-Jm353fhk.js,sha256=ry6b5IKT3hLAfD5C3T2BqxulfauEV0n0YZ2vsP4eQ_U,1041
@@ -403,8 +403,8 @@ web/server/api/endpoints/models.py,sha256=kwj0s7uve3iZSMfmjkoPVMFMeY1sD0peTeyrWf
403
403
  web/server/api/endpoints/modules.py,sha256=8hqqgonGay_mJmpCw0IdbjsPhWlQH2VLdKAqha-myac,468
404
404
  web/server/api/endpoints/plan.py,sha256=bbbY50W_2MsZSTxOHWMKz0tbIm75nsRSlPy8GI2fg9Q,9306
405
405
  web/server/api/endpoints/table_diff.py,sha256=SCy3-pr5x6bEEiOaZGCDbiHQhpgxwmnz3Acqa2Ie6jI,2090
406
- sqlmesh-0.202.2.dev13.dist-info/METADATA,sha256=4vyJGux6Oq9ytsUQ02YH39ee6ONIoyHacrXxEJCpNE8,26679
407
- sqlmesh-0.202.2.dev13.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
408
- sqlmesh-0.202.2.dev13.dist-info/entry_points.txt,sha256=pIYKtg-u-uO7BK_Y0qrdmfyj0bYrcMc3Xiqr5WE3VFk,121
409
- sqlmesh-0.202.2.dev13.dist-info/top_level.txt,sha256=bspjo5vjELQkuN0qKuTFIbsrUt3Zeo8D2mlKeHG1LdE,12
410
- sqlmesh-0.202.2.dev13.dist-info/RECORD,,
406
+ sqlmesh-0.202.2.dev15.dist-info/METADATA,sha256=AjAaLSmENS-hQgq1rpZgPW1DRBYNyWuUfig4VXqx3m0,26679
407
+ sqlmesh-0.202.2.dev15.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
408
+ sqlmesh-0.202.2.dev15.dist-info/entry_points.txt,sha256=pIYKtg-u-uO7BK_Y0qrdmfyj0bYrcMc3Xiqr5WE3VFk,121
409
+ sqlmesh-0.202.2.dev15.dist-info/top_level.txt,sha256=bspjo5vjELQkuN0qKuTFIbsrUt3Zeo8D2mlKeHG1LdE,12
410
+ sqlmesh-0.202.2.dev15.dist-info/RECORD,,