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 +2 -2
- sqlmesh/core/linter/rules/builtin.py +28 -1
- {sqlmesh-0.202.2.dev13.dist-info → sqlmesh-0.202.2.dev15.dist-info}/METADATA +2 -2
- {sqlmesh-0.202.2.dev13.dist-info → sqlmesh-0.202.2.dev15.dist-info}/RECORD +8 -8
- {sqlmesh-0.202.2.dev13.dist-info → sqlmesh-0.202.2.dev15.dist-info}/WHEEL +0 -0
- {sqlmesh-0.202.2.dev13.dist-info → sqlmesh-0.202.2.dev15.dist-info}/entry_points.txt +0 -0
- {sqlmesh-0.202.2.dev13.dist-info → sqlmesh-0.202.2.dev15.dist-info}/licenses/LICENSE +0 -0
- {sqlmesh-0.202.2.dev13.dist-info → sqlmesh-0.202.2.dev15.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.202.2.
|
|
21
|
-
__version_tuple__ = version_tuple = (0, 202, 2, '
|
|
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.
|
|
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
|
|
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=
|
|
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=
|
|
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.
|
|
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.
|
|
407
|
-
sqlmesh-0.202.2.
|
|
408
|
-
sqlmesh-0.202.2.
|
|
409
|
-
sqlmesh-0.202.2.
|
|
410
|
-
sqlmesh-0.202.2.
|
|
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,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|