sqlmesh 0.182.1.dev7__py3-none-any.whl → 0.182.1.dev8__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/model/common.py +29 -7
- sqlmesh/core/model/definition.py +7 -1
- {sqlmesh-0.182.1.dev7.dist-info → sqlmesh-0.182.1.dev8.dist-info}/METADATA +1 -1
- {sqlmesh-0.182.1.dev7.dist-info → sqlmesh-0.182.1.dev8.dist-info}/RECORD +9 -9
- {sqlmesh-0.182.1.dev7.dist-info → sqlmesh-0.182.1.dev8.dist-info}/WHEEL +0 -0
- {sqlmesh-0.182.1.dev7.dist-info → sqlmesh-0.182.1.dev8.dist-info}/entry_points.txt +0 -0
- {sqlmesh-0.182.1.dev7.dist-info → sqlmesh-0.182.1.dev8.dist-info}/licenses/LICENSE +0 -0
- {sqlmesh-0.182.1.dev7.dist-info → sqlmesh-0.182.1.dev8.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.182.1.
|
|
21
|
-
__version_tuple__ = version_tuple = (0, 182, 1, '
|
|
20
|
+
__version__ = version = '0.182.1.dev8'
|
|
21
|
+
__version_tuple__ = version_tuple = (0, 182, 1, 'dev8')
|
sqlmesh/core/model/common.py
CHANGED
|
@@ -145,6 +145,8 @@ def _add_variables_to_python_env(
|
|
|
145
145
|
python_env,
|
|
146
146
|
None,
|
|
147
147
|
strict_resolution=strict_resolution,
|
|
148
|
+
variables=variables,
|
|
149
|
+
blueprint_variables=blueprint_variables,
|
|
148
150
|
)
|
|
149
151
|
used_variables = (used_variables or set()) | python_used_variables
|
|
150
152
|
|
|
@@ -163,7 +165,11 @@ def _add_variables_to_python_env(
|
|
|
163
165
|
|
|
164
166
|
|
|
165
167
|
def parse_dependencies(
|
|
166
|
-
python_env: t.Dict[str, Executable],
|
|
168
|
+
python_env: t.Dict[str, Executable],
|
|
169
|
+
entrypoint: t.Optional[str],
|
|
170
|
+
strict_resolution: bool = True,
|
|
171
|
+
variables: t.Optional[t.Dict[str, t.Any]] = None,
|
|
172
|
+
blueprint_variables: t.Optional[t.Dict[str, t.Any]] = None,
|
|
167
173
|
) -> t.Tuple[t.Set[str], t.Set[str]]:
|
|
168
174
|
"""
|
|
169
175
|
Parses the source of a model function and finds upstream table dependencies
|
|
@@ -174,13 +180,29 @@ def parse_dependencies(
|
|
|
174
180
|
entrypoint: The name of the function.
|
|
175
181
|
strict_resolution: If true, the arguments of `table` and `resolve_table` calls must
|
|
176
182
|
be resolvable at parse time, otherwise an exception will be raised.
|
|
183
|
+
variables: The variables available to the python environment.
|
|
184
|
+
blueprint_variables: The blueprint variables available to the python environment.
|
|
177
185
|
|
|
178
186
|
Returns:
|
|
179
187
|
A tuple containing the set of upstream table dependencies and the set of referenced variables.
|
|
180
188
|
"""
|
|
189
|
+
|
|
190
|
+
class VariableResolutionContext:
|
|
191
|
+
"""This enables calls like `resolve_table` to reference `var()` and `blueprint_var()`."""
|
|
192
|
+
|
|
193
|
+
@staticmethod
|
|
194
|
+
def var(var_name: str, default: t.Optional[t.Any] = None) -> t.Optional[t.Any]:
|
|
195
|
+
return (variables or {}).get(var_name.lower(), default)
|
|
196
|
+
|
|
197
|
+
@staticmethod
|
|
198
|
+
def blueprint_var(var_name: str, default: t.Optional[t.Any] = None) -> t.Optional[t.Any]:
|
|
199
|
+
return (blueprint_variables or {}).get(var_name.lower(), default)
|
|
200
|
+
|
|
181
201
|
env = prepare_env(python_env)
|
|
202
|
+
local_env = dict.fromkeys(("context", "evaluator"), VariableResolutionContext)
|
|
203
|
+
|
|
182
204
|
depends_on = set()
|
|
183
|
-
|
|
205
|
+
used_variables = set()
|
|
184
206
|
|
|
185
207
|
for executable in python_env.values():
|
|
186
208
|
if not executable.is_definition:
|
|
@@ -206,7 +228,7 @@ def parse_dependencies(
|
|
|
206
228
|
|
|
207
229
|
try:
|
|
208
230
|
expression = to_source(first_arg)
|
|
209
|
-
return eval(expression, env)
|
|
231
|
+
return eval(expression, env, local_env)
|
|
210
232
|
except Exception:
|
|
211
233
|
if strict_resolution:
|
|
212
234
|
raise ConfigError(
|
|
@@ -217,7 +239,7 @@ def parse_dependencies(
|
|
|
217
239
|
if func.value.id == "context" and func.attr in ("table", "resolve_table"):
|
|
218
240
|
depends_on.add(get_first_arg("model_name"))
|
|
219
241
|
elif func.value.id in ("context", "evaluator") and func.attr == c.VAR:
|
|
220
|
-
|
|
242
|
+
used_variables.add(get_first_arg("var_name").lower())
|
|
221
243
|
elif (
|
|
222
244
|
isinstance(node, ast.Attribute)
|
|
223
245
|
and isinstance(node.value, ast.Name)
|
|
@@ -225,9 +247,9 @@ def parse_dependencies(
|
|
|
225
247
|
and node.attr == c.GATEWAY
|
|
226
248
|
):
|
|
227
249
|
# Check whether the gateway attribute is referenced.
|
|
228
|
-
|
|
250
|
+
used_variables.add(c.GATEWAY)
|
|
229
251
|
elif isinstance(node, ast.FunctionDef) and node.name == entrypoint:
|
|
230
|
-
|
|
252
|
+
used_variables.update(
|
|
231
253
|
[
|
|
232
254
|
arg.arg
|
|
233
255
|
for arg in [*node.args.args, *node.args.kwonlyargs]
|
|
@@ -235,7 +257,7 @@ def parse_dependencies(
|
|
|
235
257
|
]
|
|
236
258
|
)
|
|
237
259
|
|
|
238
|
-
return depends_on,
|
|
260
|
+
return depends_on, used_variables
|
|
239
261
|
|
|
240
262
|
|
|
241
263
|
def single_value_or_tuple(values: t.Sequence) -> exp.Identifier | exp.Tuple:
|
sqlmesh/core/model/definition.py
CHANGED
|
@@ -2286,7 +2286,13 @@ def create_python_model(
|
|
|
2286
2286
|
dependencies_unspecified = depends_on is None
|
|
2287
2287
|
|
|
2288
2288
|
parsed_depends_on, referenced_variables = (
|
|
2289
|
-
parse_dependencies(
|
|
2289
|
+
parse_dependencies(
|
|
2290
|
+
python_env,
|
|
2291
|
+
entrypoint,
|
|
2292
|
+
strict_resolution=dependencies_unspecified,
|
|
2293
|
+
variables=variables,
|
|
2294
|
+
blueprint_variables=blueprint_variables,
|
|
2295
|
+
)
|
|
2290
2296
|
if python_env is not None
|
|
2291
2297
|
else (set(), set())
|
|
2292
2298
|
)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
sqlmesh/__init__.py,sha256=DRovDXI-9D9xeYDP7t8Fq7mI31S2btlN-LHPOK3y7PA,7240
|
|
2
|
-
sqlmesh/_version.py,sha256=
|
|
2
|
+
sqlmesh/_version.py,sha256=0cBxYyFyc4y65tFNYy9sudbTOs3xn0j-JeOIT8EUJo4,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
|
|
@@ -85,9 +85,9 @@ sqlmesh/core/metric/definition.py,sha256=Yd5aVgsZCDPJ43aGP7WqtzZOuuSUtB8uJGVA6Jw
|
|
|
85
85
|
sqlmesh/core/metric/rewriter.py,sha256=GiSTHfn2kinqCfNPYgZPRk93JFLzVaaejHtHDQ0yXZI,7326
|
|
86
86
|
sqlmesh/core/model/__init__.py,sha256=C8GRZ53xuXEA9hQv3BQS9pNNyd9rZ06R_B96UYGhDu4,1644
|
|
87
87
|
sqlmesh/core/model/cache.py,sha256=hzpGPXxp2LFMEp6gm-8DULJKCBDGf-1kTQcfNt0xrRM,7028
|
|
88
|
-
sqlmesh/core/model/common.py,sha256
|
|
88
|
+
sqlmesh/core/model/common.py,sha256=Lr2o0KCMt3HPqlc_4uiNz5BhYSUdm5bzvjCaIz58H7A,15724
|
|
89
89
|
sqlmesh/core/model/decorator.py,sha256=v_sVudNROGrtj5cZ3vgcOFnwPdzwoUGY6REAkQpIMQc,8927
|
|
90
|
-
sqlmesh/core/model/definition.py,sha256=
|
|
90
|
+
sqlmesh/core/model/definition.py,sha256=qwj9smoaeVZglkTON6HTTlGzOvPwhmjgcaQ160Pjo6E,108953
|
|
91
91
|
sqlmesh/core/model/kind.py,sha256=em6wq0W4pDnxl9sBgNweosnZH1on3h349t0Pn76wwBM,35867
|
|
92
92
|
sqlmesh/core/model/meta.py,sha256=v-g1lnGPoeZ2SjV2CbVjvlec9buydiOFKkZWUm2dQPs,19071
|
|
93
93
|
sqlmesh/core/model/schema.py,sha256=QzM1cOfukuK3L-cEE9MtxKeYec3x5JvutdZAnczJSiQ,3858
|
|
@@ -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.182.1.
|
|
269
|
+
sqlmesh-0.182.1.dev8.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.182.1.
|
|
388
|
-
sqlmesh-0.182.1.
|
|
389
|
-
sqlmesh-0.182.1.
|
|
390
|
-
sqlmesh-0.182.1.
|
|
391
|
-
sqlmesh-0.182.1.
|
|
387
|
+
sqlmesh-0.182.1.dev8.dist-info/METADATA,sha256=Fjfu0gFZBBHENYA0mS6cubRQBTCtP9dXx7YF1iX8IoE,25252
|
|
388
|
+
sqlmesh-0.182.1.dev8.dist-info/WHEEL,sha256=DnLRTWE75wApRYVsjgc6wsVswC54sMSJhAEd4xhDpBk,91
|
|
389
|
+
sqlmesh-0.182.1.dev8.dist-info/entry_points.txt,sha256=pIYKtg-u-uO7BK_Y0qrdmfyj0bYrcMc3Xiqr5WE3VFk,121
|
|
390
|
+
sqlmesh-0.182.1.dev8.dist-info/top_level.txt,sha256=bspjo5vjELQkuN0qKuTFIbsrUt3Zeo8D2mlKeHG1LdE,12
|
|
391
|
+
sqlmesh-0.182.1.dev8.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|