sqlmesh 0.184.1.dev3__py3-none-any.whl → 0.184.1.dev5__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/config/connection.py +13 -2
- sqlmesh/core/config/loader.py +18 -4
- sqlmesh/core/config/scheduler.py +9 -3
- sqlmesh/core/loader.py +10 -5
- sqlmesh/core/model/common.py +17 -1
- sqlmesh/core/model/definition.py +20 -38
- sqlmesh/core/model/kind.py +6 -1
- sqlmesh/core/model/meta.py +1 -1
- sqlmesh/utils/pydantic.py +17 -0
- {sqlmesh-0.184.1.dev3.dist-info → sqlmesh-0.184.1.dev5.dist-info}/METADATA +1 -1
- {sqlmesh-0.184.1.dev3.dist-info → sqlmesh-0.184.1.dev5.dist-info}/RECORD +16 -16
- {sqlmesh-0.184.1.dev3.dist-info → sqlmesh-0.184.1.dev5.dist-info}/WHEEL +0 -0
- {sqlmesh-0.184.1.dev3.dist-info → sqlmesh-0.184.1.dev5.dist-info}/entry_points.txt +0 -0
- {sqlmesh-0.184.1.dev3.dist-info → sqlmesh-0.184.1.dev5.dist-info}/licenses/LICENSE +0 -0
- {sqlmesh-0.184.1.dev3.dist-info → sqlmesh-0.184.1.dev5.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.184.1.
|
|
21
|
-
__version_tuple__ = version_tuple = (0, 184, 1, '
|
|
20
|
+
__version__ = version = '0.184.1.dev5'
|
|
21
|
+
__version_tuple__ = version_tuple = (0, 184, 1, 'dev5')
|
|
@@ -25,7 +25,12 @@ from sqlmesh.core.config.common import (
|
|
|
25
25
|
from sqlmesh.core.engine_adapter.shared import CatalogSupport
|
|
26
26
|
from sqlmesh.core.engine_adapter import EngineAdapter
|
|
27
27
|
from sqlmesh.utils.errors import ConfigError
|
|
28
|
-
from sqlmesh.utils.pydantic import
|
|
28
|
+
from sqlmesh.utils.pydantic import (
|
|
29
|
+
ValidationInfo,
|
|
30
|
+
field_validator,
|
|
31
|
+
model_validator,
|
|
32
|
+
validation_error_message,
|
|
33
|
+
)
|
|
29
34
|
from sqlmesh.utils.aws import validate_s3_uri
|
|
30
35
|
|
|
31
36
|
if t.TYPE_CHECKING:
|
|
@@ -1846,7 +1851,13 @@ def _connection_config_validator(
|
|
|
1846
1851
|
) -> ConnectionConfig | None:
|
|
1847
1852
|
if v is None or isinstance(v, ConnectionConfig):
|
|
1848
1853
|
return v
|
|
1849
|
-
|
|
1854
|
+
try:
|
|
1855
|
+
return parse_connection_config(v)
|
|
1856
|
+
except pydantic.ValidationError as e:
|
|
1857
|
+
raise ConfigError(
|
|
1858
|
+
validation_error_message(e, f"Invalid '{v['type']}' connection config:")
|
|
1859
|
+
+ "\n\nVerify your config.yaml and environment variables."
|
|
1860
|
+
)
|
|
1850
1861
|
|
|
1851
1862
|
|
|
1852
1863
|
connection_config_validator: t.Callable = field_validator(
|
sqlmesh/core/config/loader.py
CHANGED
|
@@ -5,6 +5,7 @@ import os
|
|
|
5
5
|
import typing as t
|
|
6
6
|
from pathlib import Path
|
|
7
7
|
|
|
8
|
+
from pydantic import ValidationError
|
|
8
9
|
from sqlglot.helper import ensure_list
|
|
9
10
|
|
|
10
11
|
from sqlmesh.core import constants as c
|
|
@@ -13,6 +14,7 @@ from sqlmesh.core.config.root import Config
|
|
|
13
14
|
from sqlmesh.utils import env_vars, merge_dicts, sys_path
|
|
14
15
|
from sqlmesh.utils.errors import ConfigError
|
|
15
16
|
from sqlmesh.utils.metaprogramming import import_python_file
|
|
17
|
+
from sqlmesh.utils.pydantic import validation_error_message
|
|
16
18
|
from sqlmesh.utils.yaml import load as yaml_load
|
|
17
19
|
|
|
18
20
|
C = t.TypeVar("C", bound=Config)
|
|
@@ -99,9 +101,15 @@ def load_config_from_paths(
|
|
|
99
101
|
)
|
|
100
102
|
non_python_configs.append(load_config_from_yaml(path))
|
|
101
103
|
elif extension == "py":
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
104
|
+
try:
|
|
105
|
+
python_config = load_config_from_python_module(
|
|
106
|
+
config_type, path, config_name=config_name
|
|
107
|
+
)
|
|
108
|
+
except ValidationError as e:
|
|
109
|
+
raise ConfigError(
|
|
110
|
+
validation_error_message(e, f"Invalid project config '{config_name}':")
|
|
111
|
+
+ "\n\nVerify your config.py."
|
|
112
|
+
)
|
|
105
113
|
else:
|
|
106
114
|
raise ConfigError(
|
|
107
115
|
f"Unsupported config file extension '{extension}' in config file '{path}'."
|
|
@@ -126,7 +134,13 @@ def load_config_from_paths(
|
|
|
126
134
|
f"'{default}' is not a valid model default configuration key. Please remove it from the `model_defaults` specification in your config file."
|
|
127
135
|
)
|
|
128
136
|
|
|
129
|
-
|
|
137
|
+
try:
|
|
138
|
+
non_python_config = config_type.parse_obj(non_python_config_dict)
|
|
139
|
+
except ValidationError as e:
|
|
140
|
+
raise ConfigError(
|
|
141
|
+
validation_error_message(e, "Invalid project config:")
|
|
142
|
+
+ "\n\nVerify your config.yaml and environment variables."
|
|
143
|
+
)
|
|
130
144
|
|
|
131
145
|
no_dialect_err_msg = "Default model SQL dialect is a required configuration parameter. Set it in the `model_defaults` `dialect` key in your config file."
|
|
132
146
|
if python_config:
|
sqlmesh/core/config/scheduler.py
CHANGED
|
@@ -3,7 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
import abc
|
|
4
4
|
import typing as t
|
|
5
5
|
|
|
6
|
-
from pydantic import Field
|
|
6
|
+
from pydantic import Field, ValidationError
|
|
7
7
|
|
|
8
8
|
from sqlglot.helper import subclasses
|
|
9
9
|
from sqlmesh.core.config.base import BaseConfig
|
|
@@ -16,7 +16,7 @@ from sqlmesh.core.config import DuckDBConnectionConfig
|
|
|
16
16
|
from sqlmesh.core.state_sync import EngineAdapterStateSync, StateSync
|
|
17
17
|
from sqlmesh.utils.errors import ConfigError
|
|
18
18
|
from sqlmesh.utils.hashing import md5
|
|
19
|
-
from sqlmesh.utils.pydantic import field_validator
|
|
19
|
+
from sqlmesh.utils.pydantic import field_validator, validation_error_message
|
|
20
20
|
|
|
21
21
|
if t.TYPE_CHECKING:
|
|
22
22
|
from sqlmesh.core.context import GenericContext
|
|
@@ -159,7 +159,13 @@ def _scheduler_config_validator(
|
|
|
159
159
|
if scheduler_type not in SCHEDULER_CONFIG_TO_TYPE:
|
|
160
160
|
raise ConfigError(f"Unknown scheduler type '{scheduler_type}'.")
|
|
161
161
|
|
|
162
|
-
|
|
162
|
+
try:
|
|
163
|
+
return SCHEDULER_CONFIG_TO_TYPE[scheduler_type](**v)
|
|
164
|
+
except ValidationError as e:
|
|
165
|
+
raise ConfigError(
|
|
166
|
+
validation_error_message(e, f"Invalid '{scheduler_type}' scheduler config:")
|
|
167
|
+
+ "\n\nVerify your config.yaml and environment variables."
|
|
168
|
+
)
|
|
163
169
|
|
|
164
170
|
|
|
165
171
|
scheduler_config_validator = field_validator(
|
sqlmesh/core/loader.py
CHANGED
|
@@ -11,6 +11,7 @@ import typing as t
|
|
|
11
11
|
from collections import Counter, defaultdict
|
|
12
12
|
from dataclasses import dataclass
|
|
13
13
|
from pathlib import Path
|
|
14
|
+
from pydantic import ValidationError
|
|
14
15
|
|
|
15
16
|
from sqlglot.errors import SqlglotError
|
|
16
17
|
from sqlglot import exp
|
|
@@ -39,6 +40,7 @@ from sqlmesh.utils import UniqueKeyDict, sys_path
|
|
|
39
40
|
from sqlmesh.utils.errors import ConfigError
|
|
40
41
|
from sqlmesh.utils.jinja import JinjaMacroRegistry, MacroExtractor
|
|
41
42
|
from sqlmesh.utils.metaprogramming import import_python_file
|
|
43
|
+
from sqlmesh.utils.pydantic import validation_error_message
|
|
42
44
|
from sqlmesh.utils.yaml import YAML, load as yaml_load
|
|
43
45
|
|
|
44
46
|
|
|
@@ -241,7 +243,7 @@ class Loader(abc.ABC):
|
|
|
241
243
|
for row in YAML().load(file.read())
|
|
242
244
|
]
|
|
243
245
|
except Exception as ex:
|
|
244
|
-
self._raise_failed_to_load_model_error(path,
|
|
246
|
+
self._raise_failed_to_load_model_error(path, ex)
|
|
245
247
|
raise
|
|
246
248
|
|
|
247
249
|
for path in paths_to_load:
|
|
@@ -372,8 +374,11 @@ class Loader(abc.ABC):
|
|
|
372
374
|
|
|
373
375
|
return self._variables_by_gateway[gateway_name]
|
|
374
376
|
|
|
375
|
-
def _raise_failed_to_load_model_error(self, path: Path,
|
|
376
|
-
|
|
377
|
+
def _raise_failed_to_load_model_error(self, path: Path, error: t.Union[str, Exception]) -> None:
|
|
378
|
+
base_message = f"Failed to load model definition at '{path}':"
|
|
379
|
+
if isinstance(error, ValidationError):
|
|
380
|
+
raise ConfigError(validation_error_message(error, base_message))
|
|
381
|
+
raise ConfigError(f"{base_message}\n {error}")
|
|
377
382
|
|
|
378
383
|
|
|
379
384
|
class SqlMeshLoader(Loader):
|
|
@@ -496,7 +501,7 @@ class SqlMeshLoader(Loader):
|
|
|
496
501
|
default_catalog_per_gateway=self.context.default_catalog_per_gateway,
|
|
497
502
|
)
|
|
498
503
|
except Exception as ex:
|
|
499
|
-
self._raise_failed_to_load_model_error(path,
|
|
504
|
+
self._raise_failed_to_load_model_error(path, ex)
|
|
500
505
|
raise
|
|
501
506
|
|
|
502
507
|
for model in cache.get_or_load_models(path, _load):
|
|
@@ -561,7 +566,7 @@ class SqlMeshLoader(Loader):
|
|
|
561
566
|
if model.enabled:
|
|
562
567
|
models[model.fqn] = model
|
|
563
568
|
except Exception as ex:
|
|
564
|
-
self._raise_failed_to_load_model_error(path,
|
|
569
|
+
self._raise_failed_to_load_model_error(path, ex)
|
|
565
570
|
|
|
566
571
|
finally:
|
|
567
572
|
model_registry._dialect = None
|
sqlmesh/core/model/common.py
CHANGED
|
@@ -20,7 +20,7 @@ from sqlmesh.utils.metaprogramming import (
|
|
|
20
20
|
prepare_env,
|
|
21
21
|
serialize_env,
|
|
22
22
|
)
|
|
23
|
-
from sqlmesh.utils.pydantic import ValidationInfo, field_validator
|
|
23
|
+
from sqlmesh.utils.pydantic import PydanticModel, ValidationInfo, field_validator
|
|
24
24
|
|
|
25
25
|
if t.TYPE_CHECKING:
|
|
26
26
|
from sqlglot.dialects.dialect import DialectType
|
|
@@ -260,6 +260,22 @@ def parse_dependencies(
|
|
|
260
260
|
return depends_on, used_variables
|
|
261
261
|
|
|
262
262
|
|
|
263
|
+
def validate_extra_and_required_fields(
|
|
264
|
+
klass: t.Type[PydanticModel],
|
|
265
|
+
provided_fields: t.Set[str],
|
|
266
|
+
entity_name: str,
|
|
267
|
+
) -> None:
|
|
268
|
+
missing_required_fields = klass.missing_required_fields(provided_fields)
|
|
269
|
+
if missing_required_fields:
|
|
270
|
+
raise_config_error(
|
|
271
|
+
f"Missing required fields {missing_required_fields} in the {entity_name}"
|
|
272
|
+
)
|
|
273
|
+
|
|
274
|
+
extra_fields = klass.extra_fields(provided_fields)
|
|
275
|
+
if extra_fields:
|
|
276
|
+
raise_config_error(f"Invalid extra fields {extra_fields} in the {entity_name}")
|
|
277
|
+
|
|
278
|
+
|
|
263
279
|
def single_value_or_tuple(values: t.Sequence) -> exp.Identifier | exp.Tuple:
|
|
264
280
|
return (
|
|
265
281
|
exp.to_identifier(values[0])
|
sqlmesh/core/model/definition.py
CHANGED
|
@@ -31,6 +31,7 @@ from sqlmesh.core.model.common import (
|
|
|
31
31
|
parse_dependencies,
|
|
32
32
|
single_value_or_tuple,
|
|
33
33
|
sorted_python_env_payloads,
|
|
34
|
+
validate_extra_and_required_fields,
|
|
34
35
|
)
|
|
35
36
|
from sqlmesh.core.model.meta import ModelMeta, FunctionCall
|
|
36
37
|
from sqlmesh.core.model.kind import (
|
|
@@ -2190,15 +2191,11 @@ def load_sql_based_model(
|
|
|
2190
2191
|
seed_properties = {
|
|
2191
2192
|
p.name.lower(): p.args.get("value") for p in common_kwargs.pop("kind").expressions
|
|
2192
2193
|
}
|
|
2193
|
-
|
|
2194
|
-
|
|
2195
|
-
|
|
2196
|
-
|
|
2197
|
-
|
|
2198
|
-
)
|
|
2199
|
-
except Exception as ex:
|
|
2200
|
-
raise_config_error(str(ex), path)
|
|
2201
|
-
raise
|
|
2194
|
+
return create_seed_model(
|
|
2195
|
+
name,
|
|
2196
|
+
SeedKind(**seed_properties),
|
|
2197
|
+
**common_kwargs,
|
|
2198
|
+
)
|
|
2202
2199
|
|
|
2203
2200
|
|
|
2204
2201
|
def create_sql_model(
|
|
@@ -2398,7 +2395,9 @@ def _create_model(
|
|
|
2398
2395
|
blueprint_variables: t.Optional[t.Dict[str, t.Any]] = None,
|
|
2399
2396
|
**kwargs: t.Any,
|
|
2400
2397
|
) -> Model:
|
|
2401
|
-
|
|
2398
|
+
validate_extra_and_required_fields(
|
|
2399
|
+
klass, {"name", *kwargs} - {"grain", "table_properties"}, "model definition"
|
|
2400
|
+
)
|
|
2402
2401
|
|
|
2403
2402
|
for prop in PROPERTIES:
|
|
2404
2403
|
kwargs[prop] = _resolve_properties((defaults or {}).get(prop), kwargs.get(prop))
|
|
@@ -2457,21 +2456,17 @@ def _create_model(
|
|
|
2457
2456
|
for jinja_macro in jinja_macros.root_macros.values():
|
|
2458
2457
|
used_variables.update(extract_macro_references_and_variables(jinja_macro.definition)[1])
|
|
2459
2458
|
|
|
2460
|
-
|
|
2461
|
-
|
|
2462
|
-
|
|
2463
|
-
**{
|
|
2464
|
-
|
|
2465
|
-
|
|
2466
|
-
|
|
2467
|
-
|
|
2468
|
-
|
|
2469
|
-
|
|
2470
|
-
|
|
2471
|
-
)
|
|
2472
|
-
except Exception as ex:
|
|
2473
|
-
raise_config_error(str(ex), location=path)
|
|
2474
|
-
raise
|
|
2459
|
+
model = klass(
|
|
2460
|
+
name=name,
|
|
2461
|
+
**{
|
|
2462
|
+
**(defaults or {}),
|
|
2463
|
+
"jinja_macros": jinja_macros or JinjaMacroRegistry(),
|
|
2464
|
+
"dialect": dialect,
|
|
2465
|
+
"depends_on": depends_on,
|
|
2466
|
+
"physical_schema_override": physical_schema_override,
|
|
2467
|
+
**kwargs,
|
|
2468
|
+
},
|
|
2469
|
+
)
|
|
2475
2470
|
|
|
2476
2471
|
audit_definitions = {
|
|
2477
2472
|
**(audit_definitions or {}),
|
|
@@ -2636,19 +2631,6 @@ def _resolve_properties(
|
|
|
2636
2631
|
return None
|
|
2637
2632
|
|
|
2638
2633
|
|
|
2639
|
-
def _validate_model_fields(klass: t.Type[_Model], provided_fields: t.Set[str], path: Path) -> None:
|
|
2640
|
-
missing_required_fields = klass.missing_required_fields(provided_fields)
|
|
2641
|
-
if missing_required_fields:
|
|
2642
|
-
raise_config_error(
|
|
2643
|
-
f"Missing required fields {missing_required_fields} in the model definition",
|
|
2644
|
-
path,
|
|
2645
|
-
)
|
|
2646
|
-
|
|
2647
|
-
extra_fields = klass.extra_fields(provided_fields)
|
|
2648
|
-
if extra_fields:
|
|
2649
|
-
raise_config_error(f"Invalid extra fields {extra_fields} in the model definition", path)
|
|
2650
|
-
|
|
2651
|
-
|
|
2652
2634
|
def _list_of_calls_to_exp(value: t.List[t.Tuple[str, t.Dict[str, t.Any]]]) -> exp.Expression:
|
|
2653
2635
|
return exp.Tuple(
|
|
2654
2636
|
expressions=[
|
sqlmesh/core/model/kind.py
CHANGED
|
@@ -12,7 +12,11 @@ from sqlglot.optimizer.simplify import gen
|
|
|
12
12
|
from sqlglot.time import format_time
|
|
13
13
|
|
|
14
14
|
from sqlmesh.core import dialect as d
|
|
15
|
-
from sqlmesh.core.model.common import
|
|
15
|
+
from sqlmesh.core.model.common import (
|
|
16
|
+
parse_properties,
|
|
17
|
+
properties_validator,
|
|
18
|
+
validate_extra_and_required_fields,
|
|
19
|
+
)
|
|
16
20
|
from sqlmesh.core.model.seed import CsvSettings
|
|
17
21
|
from sqlmesh.utils.errors import ConfigError
|
|
18
22
|
from sqlmesh.utils.pydantic import (
|
|
@@ -1011,6 +1015,7 @@ def create_model_kind(v: t.Any, dialect: str, defaults: t.Dict[str, t.Any]) -> M
|
|
|
1011
1015
|
actual_kind_type, _ = custom_materialization
|
|
1012
1016
|
return actual_kind_type(**props)
|
|
1013
1017
|
|
|
1018
|
+
validate_extra_and_required_fields(kind_type, set(props), f"model kind '{name}'")
|
|
1014
1019
|
return kind_type(**props)
|
|
1015
1020
|
|
|
1016
1021
|
name = (v.name if isinstance(v, exp.Expression) else str(v)).upper()
|
sqlmesh/core/model/meta.py
CHANGED
|
@@ -355,7 +355,7 @@ class ModelMeta(_Node):
|
|
|
355
355
|
and not (kind.is_view and kind.materialized)
|
|
356
356
|
):
|
|
357
357
|
name = field[:-1] if field.endswith("_") else field
|
|
358
|
-
raise ValueError(f"{name} field cannot be set for {kind} models")
|
|
358
|
+
raise ValueError(f"{name} field cannot be set for {kind.name} models")
|
|
359
359
|
if kind.is_incremental_by_partition and not getattr(self, "partitioned_by_", None):
|
|
360
360
|
raise ValueError(f"partitioned_by field is required for {kind.name} models")
|
|
361
361
|
|
sqlmesh/utils/pydantic.py
CHANGED
|
@@ -211,6 +211,20 @@ def positive_int_validator(v: t.Any) -> int:
|
|
|
211
211
|
return v
|
|
212
212
|
|
|
213
213
|
|
|
214
|
+
def validation_error_message(error: pydantic.ValidationError, base: str) -> str:
|
|
215
|
+
errors = "\n ".join(_formatted_validation_errors(error))
|
|
216
|
+
return f"{base}\n {errors}"
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
def _formatted_validation_errors(error: pydantic.ValidationError) -> t.List[str]:
|
|
220
|
+
result = []
|
|
221
|
+
for e in error.errors():
|
|
222
|
+
msg = e["msg"]
|
|
223
|
+
loc: t.Optional[t.Tuple] = e.get("loc")
|
|
224
|
+
result.append(f"Invalid field '{loc[0]}':\n {msg}" if loc else msg)
|
|
225
|
+
return result
|
|
226
|
+
|
|
227
|
+
|
|
214
228
|
def _get_field(
|
|
215
229
|
v: t.Any,
|
|
216
230
|
values: t.Any,
|
|
@@ -281,6 +295,9 @@ def cron_validator(v: t.Any) -> str:
|
|
|
281
295
|
|
|
282
296
|
from croniter import CroniterBadCronError, croniter
|
|
283
297
|
|
|
298
|
+
if not isinstance(v, str):
|
|
299
|
+
raise ValueError(f"Invalid cron expression '{v}'. Value must be a string.")
|
|
300
|
+
|
|
284
301
|
try:
|
|
285
302
|
croniter(v)
|
|
286
303
|
except CroniterBadCronError:
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
sqlmesh/__init__.py,sha256=DRovDXI-9D9xeYDP7t8Fq7mI31S2btlN-LHPOK3y7PA,7240
|
|
2
|
-
sqlmesh/_version.py,sha256=
|
|
2
|
+
sqlmesh/_version.py,sha256=ZNuAQ7PbIqwJM-d2X51SzdTnNJ9SLbYDmFE8k2HZhH8,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=5ty4qY4qQFQuinhtNRzB-l5yvU4TgdPPW_Y_9VrnS2U,32244
|
|
22
22
|
sqlmesh/core/macros.py,sha256=itPrfJt8jXTtg5BMfMHShXca9sBpgeNGdv5hBhCUh90,58851
|
|
23
23
|
sqlmesh/core/node.py,sha256=r4_1MRTPcU0MAlwZ5KzrykLT58B7dkKvHzPCsJmEKD8,14497
|
|
24
24
|
sqlmesh/core/notification_target.py,sha256=PPGoDrgbRKxr27vJEu03XqNTQLYTw0ZF_b0yAapxGeI,16158
|
|
@@ -41,20 +41,20 @@ sqlmesh/core/config/__init__.py,sha256=b4gFb04tpeZpowqJD-7h3U3TLgxrpQhZahVEAo6VW
|
|
|
41
41
|
sqlmesh/core/config/base.py,sha256=t8NQmsgQoZSc-k0dlDiCb8t1jj0AMYdGZ-6se9q_Pks,4898
|
|
42
42
|
sqlmesh/core/config/categorizer.py,sha256=6vzUoNLjR6GOEb_2mYVz2TwmMv2BfldgHX2u-Le5HZs,1975
|
|
43
43
|
sqlmesh/core/config/common.py,sha256=-o_HoRFtR4u84frg_TLno7z7vS9II6ASiOayb59MKHo,2806
|
|
44
|
-
sqlmesh/core/config/connection.py,sha256=
|
|
44
|
+
sqlmesh/core/config/connection.py,sha256=hWwoMeB8MD_ou57fJG_Rb0tmzHwqVjR9rR1fEs_Xu50,70008
|
|
45
45
|
sqlmesh/core/config/feature_flag.py,sha256=JRcD31OG_t2cYc24meKbHDGB0iVID0P07V2oOeB_mgA,203
|
|
46
46
|
sqlmesh/core/config/format.py,sha256=6CXFbvnor56xbldKE-Vrm9k_ABRoY4v6vgIb3mCihiQ,1355
|
|
47
47
|
sqlmesh/core/config/gateway.py,sha256=tYngyqwd_4Qr9lhcv2hlvLvb_2pgYYtKu6hdGsTr-4I,1931
|
|
48
48
|
sqlmesh/core/config/janitor.py,sha256=NP0i51V8XwMrHw8uuwQknivuudIleNiFBtBnMuXmfIY,362
|
|
49
49
|
sqlmesh/core/config/linter.py,sha256=4Fh6UgY5FrRD9tk_R41Y-M_r91Wh7EQW3Pc1IdRN9Cg,1287
|
|
50
|
-
sqlmesh/core/config/loader.py,sha256=
|
|
50
|
+
sqlmesh/core/config/loader.py,sha256=Jcxp5Y6fCqg_BFQ03h9XVWhEQKESy5e2pomjvxh2Qa8,7538
|
|
51
51
|
sqlmesh/core/config/migration.py,sha256=3lZIlmIcQH3_hIEm3Y3jFtvpw0YXzRzAnk4OdiklO6M,408
|
|
52
52
|
sqlmesh/core/config/model.py,sha256=GIz9kAfKD2NEXNzCZCQ17-CK2OtqN6WgeG1fvibcChM,3650
|
|
53
53
|
sqlmesh/core/config/naming.py,sha256=KVGaxUgswoQajXR_cHFJvgkmEFcU1V182GkOH1SJxuE,326
|
|
54
54
|
sqlmesh/core/config/plan.py,sha256=Sql_bdO2H_vVrIYosf8rWOTRVoMURciX7mEcbMNFFdg,1389
|
|
55
55
|
sqlmesh/core/config/root.py,sha256=XIN-5zPJrQdlXIalqSMpKNPkrhCPQLjdwNpcEsWQTjI,14540
|
|
56
56
|
sqlmesh/core/config/run.py,sha256=rIK0QnN_vArrwps2TXGVEbvao2AnGZgzXo7EliJa42E,852
|
|
57
|
-
sqlmesh/core/config/scheduler.py,sha256=
|
|
57
|
+
sqlmesh/core/config/scheduler.py,sha256=essKKkJ6jD5gRT_l-WiKwGKVO1hpDlnf_UdrCvyN5JY,6786
|
|
58
58
|
sqlmesh/core/config/ui.py,sha256=jsO-S6_d9NkLZGG5pT4mgKgxMF34KzkDociZAMvCX3U,278
|
|
59
59
|
sqlmesh/core/engine_adapter/__init__.py,sha256=two_WTs4UnSNp-fscJh8vOunJq0Xi37EuDuMjKsKuNE,2281
|
|
60
60
|
sqlmesh/core/engine_adapter/_typing.py,sha256=BAM_U7Vsi0k37XHu_nNnu3whXxuTVDey_uZe3aelKYY,1033
|
|
@@ -85,11 +85,11 @@ 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=J3ukpCEvZyfiYlG38aMhqxlR-Tyq2Sm2dzg5SOnldXc,16279
|
|
89
89
|
sqlmesh/core/model/decorator.py,sha256=v_sVudNROGrtj5cZ3vgcOFnwPdzwoUGY6REAkQpIMQc,8927
|
|
90
|
-
sqlmesh/core/model/definition.py,sha256=
|
|
91
|
-
sqlmesh/core/model/kind.py,sha256=
|
|
92
|
-
sqlmesh/core/model/meta.py,sha256=
|
|
90
|
+
sqlmesh/core/model/definition.py,sha256=vR9Y48WTZTHbjlvuQltueXNxBtVoWpxCw4D9cikRqw4,108422
|
|
91
|
+
sqlmesh/core/model/kind.py,sha256=i6_AMBarXPGPoMdF9kzBkyqS9tu__a2339-BoX7TgCM,36010
|
|
92
|
+
sqlmesh/core/model/meta.py,sha256=Hxn5BjfnGATjopHQ4Odok3FoO0X1Ulb2gm6aAvwQhP0,19076
|
|
93
93
|
sqlmesh/core/model/schema.py,sha256=QzM1cOfukuK3L-cEE9MtxKeYec3x5JvutdZAnczJSiQ,3858
|
|
94
94
|
sqlmesh/core/model/seed.py,sha256=ctUHH6CmeEnBVJyIAZznx0xJBm09W7VIZ-76Cfwfq28,5004
|
|
95
95
|
sqlmesh/core/plan/__init__.py,sha256=ctpnu9mK3uTujs0It8qRMqcj9GdObXDnvSgn4rD2zqc,450
|
|
@@ -264,10 +264,10 @@ sqlmesh/utils/jinja.py,sha256=6Iob2Pv88L2rCaHyl_V90b5GKsG9hI10Ua_FRWhQIl0,23628
|
|
|
264
264
|
sqlmesh/utils/metaprogramming.py,sha256=i1rxWi-oxdh1VwKoBh5Qvy0GgHm9GaDZMvIrv3QXGt4,23083
|
|
265
265
|
sqlmesh/utils/migration.py,sha256=R7Ck6FX-LfcujGy7sgS0kDWlK-xAEBODr3gqIQ8gC08,835
|
|
266
266
|
sqlmesh/utils/pandas.py,sha256=WmNlTLuv_qLelrcTnwb05QMaW53AYM6dpOW0o3dz6qM,2051
|
|
267
|
-
sqlmesh/utils/pydantic.py,sha256
|
|
267
|
+
sqlmesh/utils/pydantic.py,sha256=-u69PDY-4FLR7ODNKBoN7PsPNmZ0wdhsJcCAG2P6vyY,11061
|
|
268
268
|
sqlmesh/utils/rich.py,sha256=xNZyPCqEc4TAlJlsEthg-5eYUWpaizz0QjBzO7a1Yv4,1509
|
|
269
269
|
sqlmesh/utils/yaml.py,sha256=np-WVcwmwsKghCgAj1OBBMsK1SXSRn4wR-H37cGiFr8,2282
|
|
270
|
-
sqlmesh-0.184.1.
|
|
270
|
+
sqlmesh-0.184.1.dev5.dist-info/licenses/LICENSE,sha256=OlMefUjgWJdULtf84BLW0AZZcY8DwdgQqb_1j2862j8,11346
|
|
271
271
|
web/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
272
272
|
web/client/dist/index.html,sha256=nPqIDCJmonOaEAp4hhwrwgPdwt_F-5zzw-WW1kJqq3I,5472
|
|
273
273
|
web/client/dist/assets/Audits-DiRd7NXk.js,sha256=Q5dIFqsHps-vVYD8037NpTPW_1juQgn_Ov45smEm7Y8,1041
|
|
@@ -385,8 +385,8 @@ web/server/api/endpoints/models.py,sha256=SzS5bshzdXyM6hb948sZ_3k-xhpGCHkxkb7pHz
|
|
|
385
385
|
web/server/api/endpoints/modules.py,sha256=8hqqgonGay_mJmpCw0IdbjsPhWlQH2VLdKAqha-myac,468
|
|
386
386
|
web/server/api/endpoints/plan.py,sha256=OYuQ_4dgbhG9ibTcX1a8mvYgH3ANxw9Fhbb4wg6QWqc,9222
|
|
387
387
|
web/server/api/endpoints/table_diff.py,sha256=Wd5YxeKbZB7AkrDvqFgvV9ZQlnKYOF1n5W_w2EHE_Zw,2085
|
|
388
|
-
sqlmesh-0.184.1.
|
|
389
|
-
sqlmesh-0.184.1.
|
|
390
|
-
sqlmesh-0.184.1.
|
|
391
|
-
sqlmesh-0.184.1.
|
|
392
|
-
sqlmesh-0.184.1.
|
|
388
|
+
sqlmesh-0.184.1.dev5.dist-info/METADATA,sha256=tO0x611zOT7wWMvmGEX7XTmL-wtUanQ0ZMCcF_aHbUg,25498
|
|
389
|
+
sqlmesh-0.184.1.dev5.dist-info/WHEEL,sha256=Nw36Djuh_5VDukK0H78QzOX-_FQEo6V37m3nkm96gtU,91
|
|
390
|
+
sqlmesh-0.184.1.dev5.dist-info/entry_points.txt,sha256=pIYKtg-u-uO7BK_Y0qrdmfyj0bYrcMc3Xiqr5WE3VFk,121
|
|
391
|
+
sqlmesh-0.184.1.dev5.dist-info/top_level.txt,sha256=bspjo5vjELQkuN0qKuTFIbsrUt3Zeo8D2mlKeHG1LdE,12
|
|
392
|
+
sqlmesh-0.184.1.dev5.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|