from typing import Type, TypeVar from pydantic import BaseModel T = TypeVar("T", bound=Type[BaseModel]) def pickle(cls: T) -> T: """ 这是一个类装饰器,用来接管 Pydantic 对象的 Pickle 序列化流程。 它强迫 Pickle 使用 Pydantic 经过 Rust 优化的 JSON 导出/导入逻辑。 """ def __reduce__(self): # 1. 序列化:触发 Pydantic-core (Rust) 的极速序列化 data = self.model_dump_json() # 2. 反序列化:告诉 Pickle 重建时调用 cls.model_validate_json return cls.model_validate_json, (data,) # 动态把这个魔术方法“缝”到类上 cls.__reduce__ = __reduce__ return cls