From fe5e5005015d9a26df26242382ee5bea69720ade Mon Sep 17 00:00:00 2001 From: geekan Date: Tue, 2 Jan 2024 15:26:23 +0800 Subject: [PATCH] add comments to SerializationMixin --- metagpt/schema.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/metagpt/schema.py b/metagpt/schema.py index 91158ffeb..e36bef395 100644 --- a/metagpt/schema.py +++ b/metagpt/schema.py @@ -55,7 +55,16 @@ from metagpt.utils.serialize import ( class SerializationMixin(BaseModel): - """SereDeserMixin for subclass' ser&deser""" + """ + PolyMorphic subclasses Serialization / Deserialization Mixin + - First of all, we need to know that pydantic is not designed for polymorphism. + - If Engineer is subclass of Role, it would be serialized as Role. If we want to serialize it as Engineer, we need + to add `class name` to Engineer. So we need Engineer inherit SerializationMixin. + + More details: + - https://docs.pydantic.dev/latest/concepts/serialization/ + - https://github.com/pydantic/pydantic/discussions/7008 discuss about avoid `__get_pydantic_core_schema__` + """ __is_polymorphic_base = False __subclasses_map__ = {}