Serialize concrete Pydantic subclasses (#6187)

This commit is contained in:
Vinicius Brasil
2026-06-16 11:00:07 -07:00
committed by GitHub
parent e9d568dc69
commit 9d44d0a5e5
2 changed files with 15 additions and 1 deletions

View File

@@ -99,7 +99,7 @@ def to_serializable(
if isinstance(obj, BaseModel):
try:
return to_serializable(
obj=obj.model_dump(mode="json", exclude=exclude),
obj=obj.model_dump(mode="json", exclude=exclude, serialize_as_any=True),
max_depth=max_depth,
_current_depth=_current_depth + 1,
_ancestors=new_ancestors,

View File

@@ -21,6 +21,10 @@ class Person(BaseModel):
skills: List[str]
class Container(BaseModel):
payload: BaseModel | None = None
@dataclass
class DataclassPerson:
name: str
@@ -114,6 +118,16 @@ def test_pydantic_model_serialization():
)
def test_polymorphic_field_serializes_concrete_subclass():
container = Container(
payload=Address(street="1 Main", city="Tech City", country="Pythonia")
)
assert to_serializable(container) == {
"payload": {"street": "1 Main", "city": "Tech City", "country": "Pythonia"}
}
def test_dataclass_serialization_recurses_into_nested_values():
person = DataclassPerson(
name="Ada",