serialize default value for disk state manager (#4008)
This commit is contained in:
parent
60276cf1ff
commit
70bd88c682
@ -2592,16 +2592,24 @@ def _serialize_type(type_: Any) -> str:
|
|||||||
return f"{type_.__module__}.{type_.__qualname__}"
|
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(
|
def state_to_schema(
|
||||||
state: BaseState,
|
state: BaseState,
|
||||||
) -> List[
|
) -> List[Tuple[str, str, Any, Union[bool, None], Any]]:
|
||||||
Tuple[
|
|
||||||
str,
|
|
||||||
str,
|
|
||||||
Any,
|
|
||||||
Union[bool, None],
|
|
||||||
]
|
|
||||||
]:
|
|
||||||
"""Convert a state to a schema.
|
"""Convert a state to a schema.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
@ -2621,6 +2629,7 @@ def state_to_schema(
|
|||||||
if isinstance(model_field.required, bool)
|
if isinstance(model_field.required, bool)
|
||||||
else None
|
else None
|
||||||
),
|
),
|
||||||
|
(model_field.default if is_serializable(model_field.default) else None),
|
||||||
)
|
)
|
||||||
for field_name, model_field in state.__fields__.items()
|
for field_name, model_field in state.__fields__.items()
|
||||||
)
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user