Skip to content

list[enum] ignores "by_value": True flag #255

@rayrapetyan

Description

@rayrapetyan

Sample code:

from dataclasses import field
from enum import StrEnum
from typing import (
    ClassVar,
    List,
    Type,
)

from marshmallow import Schema
from marshmallow_dataclass import dataclass


class Color(StrEnum):
    RED = "red"
    GREEN = "green"
    BLUE = "blue"


@dataclass
class Thing:
    color: Color = field(metadata={"by_value": True})
    color_list: List[Color] = field(default_factory=list, metadata={"by_value": True})
    Schema: ClassVar[Type[Schema]] = Schema  # pylint: disable=invalid-name


thing = Thing(color=Color.RED, color_list=[Color.RED, Color.GREEN, Color.BLUE])  # Example data
serialized_thing = Thing.Schema().dump(thing)
print(serialized_thing)

Actual result:

{'color': 'red', 'color_list': ['RED', 'GREEN', 'BLUE']}

Expected result:

{'color': 'red', 'color_list': ['red', 'green', 'blue]}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions