serialize default value for disk state manager (#4008)

This commit is contained in:
Khaleel Al-Adhami 2024-09-26 13:59:17 -07:00 committed by GitHub
parent 60276cf1ff
commit 70bd88c682
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -2592,16 +2592,24 @@ def _serialize_type(type_: Any) -> str:
return f"{type_.__module__}.{type_.__qualname__}"
def is_serializable(value: Any) -> bool:
"""Check if a value is serializable.
Args:
value: The value to check.
Returns:
Whether the value is serializable.
"""
try:
return bool(dill.dumps(value))
except Exception:
return False
def state_to_schema(
state: BaseState,
) -> List[
Tuple[
str,
str,
Any,
Union[bool, None],
]
]:
) -> List[Tuple[str, str, Any, Union[bool, None], Any]]:
"""Convert a state to a schema.
Args:
@ -2621,6 +2629,7 @@ def state_to_schema(
if isinstance(model_field.required, bool)
else None
),
(model_field.default if is_serializable(model_field.default) else None),
)
for field_name, model_field in state.__fields__.items()
)