Skip to content

Commit 15c7954

Browse files
committed
feat: Add support for Pydantic v2 aliases
1 parent 72e8c36 commit 15c7954

File tree

2 files changed

+16
-12
lines changed

2 files changed

+16
-12
lines changed

sqlmodel/_compat.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,7 @@ def post_init_field_info(field_info: FieldInfo) -> None:
228228
field_info.serialization_alias = field_info.alias
229229
else:
230230
field_info._validate() # type: ignore[attr-defined]
231+
231232
# Dummy to make it importable
232233
def _calculate_keys(
233234
self: "SQLModel",

tests/test_aliases.py

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
from pydantic import Field as PField
66
from sqlmodel import Field, SQLModel
77

8-
98
# -----------------------------------------------------------------------------------
109
# Models
1110

@@ -132,32 +131,36 @@ def test_json_by_alias(
132131

133132

134133
class PydanticUserV2(BaseModel):
135-
first_name: str = PField(
136-
validation_alias="firstName", serialization_alias="f_name"
137-
)
134+
first_name: str = PField(validation_alias="firstName", serialization_alias="f_name")
138135

139136

140137
class SQLModelUserV2(SQLModel):
141-
first_name: str = Field(
142-
validation_alias="firstName", serialization_alias="f_name"
143-
)
138+
first_name: str = Field(validation_alias="firstName", serialization_alias="f_name")
144139

145140

146-
@pytest.mark.skipif(not VERSION.startswith("2."), reason="validation_alias and serialization_alias are not supported in Pydantic v1")
141+
@pytest.mark.skipif(
142+
not VERSION.startswith("2."),
143+
reason="validation_alias and serialization_alias are not supported in Pydantic v1",
144+
)
147145
@pytest.mark.parametrize("model", [PydanticUserV2, SQLModelUserV2])
148-
def test_create_with_validation_alias(model: Union[Type[PydanticUserV2], Type[SQLModelUserV2]]):
146+
def test_create_with_validation_alias(
147+
model: Union[Type[PydanticUserV2], Type[SQLModelUserV2]],
148+
):
149149
user = model(firstName="John")
150150
assert user.first_name == "John"
151151

152152

153-
@pytest.mark.skipif(not VERSION.startswith("2."), reason="validation_alias and serialization_alias are not supported in Pydantic v1")
153+
@pytest.mark.skipif(
154+
not VERSION.startswith("2."),
155+
reason="validation_alias and serialization_alias are not supported in Pydantic v1",
156+
)
154157
@pytest.mark.parametrize("model", [PydanticUserV2, SQLModelUserV2])
155158
def test_serialize_with_serialization_alias(
156-
model: Union[Type[PydanticUserV2], Type[SQLModelUserV2]]
159+
model: Union[Type[PydanticUserV2], Type[SQLModelUserV2]],
157160
):
158161
user = model(firstName="Jane")
159162
data = user.dict(by_alias=True)
160163
assert "f_name" in data
161164
assert "firstName" not in data
162165
assert "first_name" not in data
163-
assert data["f_name"] == "Jane"
166+
assert data["f_name"] == "Jane"

0 commit comments

Comments
 (0)