Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions dc_with_mashu.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
from dataclasses import dataclass
from dataclasses_json import DataClassJsonMixin # dataclasses-json
from mashumaro import DataClassDictMixin # mashumaro
from mashumaro.codecs.json import JSONEncoder, JSONDecoder


@dataclass
class User(DataClassJsonMixin, DataClassDictMixin):
id: int


def main():
user = User(id=42)

print("=== Mashumaro serialize (codec) ===")
enc = JSONEncoder(User)
s = enc.encode(user)
print("Serialized:", s)

print("\n=== Mashumaro deserialize (codec) ===")
dec = JSONDecoder(User)
u2 = dec.decode(s)
print("Deserialized:", u2, "type:", type(u2))

print("\n=== dataclasses-json still exists (separate API) ===")
print("dataclasses-json to_json():", user.to_json())


if __name__ == "__main__":
main()
3 changes: 3 additions & 0 deletions dev-requirements.in
Original file line number Diff line number Diff line change
Expand Up @@ -62,3 +62,6 @@ ipykernel
orjson
kubernetes>=12.0.1
httpx

# dataclasses-json for backward compatibility testing
dataclasses-json>=0.6.7
12 changes: 6 additions & 6 deletions flytekit/configuration/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@
from typing import Dict, List, Optional

import yaml
from dataclasses_json import DataClassJsonMixin
from mashumaro.mixins.json import DataClassJSONMixin

from flytekit.configuration import internal as _internal
from flytekit.configuration.default_images import DefaultImages
Expand All @@ -146,7 +146,7 @@


@dataclass(init=True, repr=True, eq=True, frozen=True)
class Image(DataClassJsonMixin):
class Image(DataClassJSONMixin):
"""
Image is a structured wrapper for task container images used in object serialization.

Expand Down Expand Up @@ -236,7 +236,7 @@ def _parse_image_identifier(image_identifier: str) -> typing.Tuple[str, Optional


@dataclass(init=True, repr=True, eq=True, frozen=True)
class ImageConfig(DataClassJsonMixin):
class ImageConfig(DataClassJSONMixin):
"""
We recommend you to use ImageConfig.auto(img_name=None) to create an ImageConfig.
For example, ImageConfig.auto(img_name=""ghcr.io/flyteorg/flytecookbook:v1.0.0"") will create an ImageConfig.
Expand Down Expand Up @@ -792,7 +792,7 @@ def for_endpoint(


@dataclass
class EntrypointSettings(DataClassJsonMixin):
class EntrypointSettings(DataClassJSONMixin):
"""
This object carries information about the path of the entrypoint command that will be invoked at runtime.
This is where `pyflyte-execute` code can be found. This is useful for cases like pyspark execution.
Expand All @@ -802,7 +802,7 @@ class EntrypointSettings(DataClassJsonMixin):


@dataclass
class FastSerializationSettings(DataClassJsonMixin):
class FastSerializationSettings(DataClassJSONMixin):
"""
This object hold information about settings necessary to serialize an object so that it can be fast-registered.
"""
Expand All @@ -817,7 +817,7 @@ class FastSerializationSettings(DataClassJsonMixin):

# TODO: ImageConfig, python_interpreter, venv_root, fast_serialization_settings.destination_dir should be combined.
@dataclass
class SerializationSettings(DataClassJsonMixin):
class SerializationSettings(DataClassJSONMixin):
"""
These settings are provided while serializing a workflow and task, before registration. This is required to get
runtime information at serialization time, as well as some defaults.
Expand Down
Loading
Loading