Skip to content

Commit 8435c44

Browse files
authored
Fix: add validators to handle None values in Versions class (#1654)
* Fix: add validators to handle None values in Versions class * Add unit test for migrating v0031 -> v0032 * Remove test temporarily
1 parent dc13684 commit 8435c44

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

sqlmesh/core/state_sync/base.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,16 @@ class Versions(PydanticModel):
4343
def minor_sqlglot_version(self) -> t.Tuple[int, int]:
4444
return major_minor(self.sqlglot_version)
4545

46+
@field_validator("sqlglot_version", "sqlmesh_version", mode="before")
47+
@classmethod
48+
def _package_version_validator(cls, v: t.Any) -> str:
49+
return "0.0.0" if v is None else str(v)
50+
51+
@field_validator("schema_version", mode="before")
52+
@classmethod
53+
def _schema_version_validator(cls, v: t.Any) -> int:
54+
return 0 if v is None else int(v)
55+
4656

4757
MIGRATIONS = [
4858
importlib.import_module(f"sqlmesh.migrations.{migration}")

tests/core/test_state_sync.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1062,6 +1062,14 @@ def test_get_version(state_sync: EngineAdapterStateSync) -> None:
10621062
state_sync.get_versions()
10631063
state_sync.get_versions(validate=False)
10641064

1065+
for empty_versions in (
1066+
Versions(),
1067+
Versions(schema_version=None, sqlglot_version=None, sqlmesh_version=None),
1068+
):
1069+
assert empty_versions.schema_version == 0
1070+
assert empty_versions.sqlglot_version == "0.0.0"
1071+
assert empty_versions.sqlmesh_version == "0.0.0"
1072+
10651073

10661074
def test_migrate(state_sync: EngineAdapterStateSync, mocker: MockerFixture) -> None:
10671075
from sqlmesh import __version__ as SQLMESH_VERSION

0 commit comments

Comments
 (0)