-
-
Notifications
You must be signed in to change notification settings - Fork 49
Open
Labels
enhancementNew feature or requestNew feature or request
Description
I'm trying to override Mashurmaro's behavior for serializing any/all enum fields, however it only seems to take effect if I configure the strategy for specific enum types. Is there a way to register/override the behavior for anything inheriting from enum.Enum?
class EnumSerializer(SerializationStrategy):
def serialize(self, value: enum.Enum):
return f"{fully_qualified_typename(type(value))}.{value.name}"
def deserialize(self, value: str) -> enum.Enum:
module, class_name, variant_name = value.rsplit(".", 2)
import importlib
mod = importlib.import_module(module)
return getattr(mod, class_name)[variant_name]
class MyEnum(enum.Enum):
A=1
B=2
@dataclass
class MyClass:
field_one: MyEnum = MyEnum.A
class BaseConfig(MashBaseConfig):
serialization_strategy = {
enum.Enum: EnumSerializer(),
}
To yaml would yield:
field_one: my.module.MyEnum.A
instead of the default:
field_one: 1
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request