From 01276eda880a90b17f3f95b95b811ab2de3d1906 Mon Sep 17 00:00:00 2001 From: "Han-Ru Chen (Future-Outlier)" Date: Thu, 21 Nov 2024 11:48:14 +0800 Subject: [PATCH] Update docs/user_guide/data_types_and_io/pydantic_basemodel.md Co-authored-by: David Espejo <82604841+davidmirror-ops@users.noreply.github.com> Signed-off-by: Han-Ru Chen (Future-Outlier) --- docs/user_guide/data_types_and_io/pydantic_basemodel.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/user_guide/data_types_and_io/pydantic_basemodel.md b/docs/user_guide/data_types_and_io/pydantic_basemodel.md index f2bbaa8d54..dca37ea1ec 100644 --- a/docs/user_guide/data_types_and_io/pydantic_basemodel.md +++ b/docs/user_guide/data_types_and_io/pydantic_basemodel.md @@ -12,7 +12,9 @@ Pydantic BaseModel V2 only works when you are using flytekit version >= v1.14.0. ::: +With the 1.14 release, `flytekit` adopted `MessagePack` as the serialization format for Pydantic `BaseModel`, overcoming a major limitation of serialization into a JSON string within a Protobuf `struct` datatype like the previous versions do: to store `int` types, Protobuf's `struct` converts them to `float`, forcing users to write boilerplate code to workaround this issue. By default, `flytekit >= 1.14` will produce `msgpack` bytes literals when serializing dataclasses, preserving the types defined in your `BaseModel` class. :::{important} +If you're serializing dataclasses using `flytekit` version >= v1.14.0 and you want to produce Protobuf `struct literal` instead, you can set environment variable `FLYTE_USE_OLD_DC_FORMAT` to `true`. If you're using Flytekit version >= v1.14.0 and you want to produce protobuf struct literal for Pydantic BaseModels, you can set environment variable `FLYTE_USE_OLD_DC_FORMAT` to `true`.