flytekit.extras.pydantic_transformer.transformer
Directory
Classes
| Class | Description |
|---|---|
PydanticTransformer |
Base transformer type that should be implemented for every python native type that can be handled by flytekit. |
Variables
| Property | Type | Description |
|---|---|---|
CACHE_KEY_METADATA |
str |
|
FLYTE_USE_OLD_DC_FORMAT |
str |
|
MESSAGEPACK |
str |
|
SERIALIZATION_FORMAT |
str |
flytekit.extras.pydantic_transformer.transformer.PydanticTransformer
Base transformer type that should be implemented for every python native type that can be handled by flytekit
def PydanticTransformer()Methods
| Method | Description |
|---|---|
assert_type() |
|
from_binary_idl() |
This function primarily handles deserialization for untyped dicts, dataclasses, Pydantic BaseModels, and attribute access. |
from_generic_idl() |
TODO: Support all Flyte Types. |
get_literal_type() |
Converts the python type to a Flyte LiteralType. |
guess_python_type() |
Converts the Flyte LiteralType to a python object type. |
isinstance_generic() |
|
to_generic_literal() |
Note: This is deprecated and will be removed in the future. |
to_html() |
Converts any python val (dataframe, int, float) to a html string, and it will be wrapped in the HTML div. |
to_literal() |
For pydantic basemodel, we have to go through json first. |
to_python_value() |
There will have 2 kinds of literal values:. |
assert_type()
def assert_type(
t: Type[T],
v: T,
)| Parameter | Type | Description |
|---|---|---|
t |
Type[T] |
|
v |
T |
from_binary_idl()
def from_binary_idl(
binary_idl_object: flytekit.models.literals.Binary,
expected_python_type: typing.Type[pydantic.main.BaseModel],
) -> pydantic.main.BaseModelThis function primarily handles deserialization for untyped dicts, dataclasses, Pydantic BaseModels, and attribute access.`
For untyped dict, dataclass, and pydantic basemodel: Life Cycle (Untyped Dict as example): python val -> msgpack bytes -> binary literal scalar -> msgpack bytes -> python val (to_literal) (from_binary_idl)
For attribute access: Life Cycle: python val -> msgpack bytes -> binary literal scalar -> resolved golang value -> binary literal scalar -> msgpack bytes -> python val (to_literal) (propeller attribute access) (from_binary_idl)
| Parameter | Type | Description |
|---|---|---|
binary_idl_object |
flytekit.models.literals.Binary |
|
expected_python_type |
typing.Type[pydantic.main.BaseModel] |
from_generic_idl()
def from_generic_idl(
generic: Struct,
expected_python_type: Type[T],
) -> Optional[T]TODO: Support all Flyte Types. This is for dataclass attribute access from input created from the Flyte Console.
Note:
- This can be removed in the future when the Flyte Console support generate Binary IDL Scalar as input.
| Parameter | Type | Description |
|---|---|---|
generic |
Struct |
|
expected_python_type |
Type[T] |
get_literal_type()
def get_literal_type(
t: typing.Type[pydantic.main.BaseModel],
) -> flytekit.models.types.LiteralTypeConverts the python type to a Flyte LiteralType
| Parameter | Type | Description |
|---|---|---|
t |
typing.Type[pydantic.main.BaseModel] |
guess_python_type()
def guess_python_type(
literal_type: LiteralType,
) -> Type[T]Converts the Flyte LiteralType to a python object type.
| Parameter | Type | Description |
|---|---|---|
literal_type |
LiteralType |
isinstance_generic()
def isinstance_generic(
obj,
generic_alias,
)| Parameter | Type | Description |
|---|---|---|
obj |
||
generic_alias |
to_generic_literal()
def to_generic_literal(
ctx: flytekit.core.context_manager.FlyteContext,
python_val: pydantic.main.BaseModel,
python_type: typing.Type[pydantic.main.BaseModel],
expected: flytekit.models.types.LiteralType,
) -> flytekit.models.literals.LiteralNote: This is deprecated and will be removed in the future.
| Parameter | Type | Description |
|---|---|---|
ctx |
flytekit.core.context_manager.FlyteContext |
|
python_val |
pydantic.main.BaseModel |
|
python_type |
typing.Type[pydantic.main.BaseModel] |
|
expected |
flytekit.models.types.LiteralType |
to_html()
def to_html(
ctx: FlyteContext,
python_val: T,
expected_python_type: Type[T],
) -> strConverts any python val (dataframe, int, float) to a html string, and it will be wrapped in the HTML div
| Parameter | Type | Description |
|---|---|---|
ctx |
FlyteContext |
|
python_val |
T |
|
expected_python_type |
Type[T] |
to_literal()
def to_literal(
ctx: flytekit.core.context_manager.FlyteContext,
python_val: pydantic.main.BaseModel,
python_type: typing.Type[pydantic.main.BaseModel],
expected: flytekit.models.types.LiteralType,
) -> flytekit.models.literals.LiteralFor pydantic basemodel, we have to go through json first. This is for handling enum in basemodel. More details: https://github.com/flyteorg/flytekit/pull/2792
| Parameter | Type | Description |
|---|---|---|
ctx |
flytekit.core.context_manager.FlyteContext |
|
python_val |
pydantic.main.BaseModel |
|
python_type |
typing.Type[pydantic.main.BaseModel] |
|
expected |
flytekit.models.types.LiteralType |
to_python_value()
def to_python_value(
ctx: flytekit.core.context_manager.FlyteContext,
lv: flytekit.models.literals.Literal,
expected_python_type: typing.Type[pydantic.main.BaseModel],
) -> pydantic.main.BaseModelThere will have 2 kinds of literal values:
- protobuf Struct (From Flyte Console)
- binary scalar (Others) Hence we have to handle 2 kinds of cases.
| Parameter | Type | Description |
|---|---|---|
ctx |
flytekit.core.context_manager.FlyteContext |
|
lv |
flytekit.models.literals.Literal |
|
expected_python_type |
typing.Type[pydantic.main.BaseModel] |
Properties
| Property | Type | Description |
|---|---|---|
is_async |
||
name |
||
python_type |
This returns the python type |
|
type_assertions_enabled |
Indicates if the transformer wants type assertions to be enabled at the core type engine layer |