Feature: 放宽 pydantic compat model dump 类型 (#3898)

This commit is contained in:
呵呵です
2026-03-15 21:50:00 +08:00
committed by GitHub
parent 6090870244
commit 8f7aaf2b21
4 changed files with 58 additions and 16 deletions

View File

@@ -73,12 +73,41 @@ def test_type_adapter():
def test_model_dump():
class NestedModel(BaseModel):
hidden: int
shown: int
class TestModel(BaseModel):
test1: int
test2: int
nested: NestedModel
items: list[NestedModel]
assert model_dump(TestModel(test1=1, test2=2), include={"test1"}) == {"test1": 1}
assert model_dump(TestModel(test1=1, test2=2), exclude={"test1"}) == {"test2": 2}
model = TestModel(
test1=1,
test2=2,
nested=NestedModel(hidden=3, shown=4),
items=[NestedModel(hidden=5, shown=6)],
)
assert model_dump(model, include={"test1"}) == {"test1": 1}
assert model_dump(model, exclude={"test1"}) == {
"test2": 2,
"nested": {"hidden": 3, "shown": 4},
"items": [{"hidden": 5, "shown": 6}],
}
assert model_dump(model, exclude={"nested": {"hidden"}}) == {
"test1": 1,
"test2": 2,
"nested": {"shown": 4},
"items": [{"hidden": 5, "shown": 6}],
}
assert model_dump(model, exclude={"items": {"__all__": {"hidden"}}}) == {
"test1": 1,
"test2": 2,
"nested": {"hidden": 3, "shown": 4},
"items": [{"shown": 6}],
}
def test_model_validator():