diff --git a/mashumaro/core/meta/code/builder.py b/mashumaro/core/meta/code/builder.py index e4fbb27f..0292ebbc 100644 --- a/mashumaro/core/meta/code/builder.py +++ b/mashumaro/core/meta/code/builder.py @@ -1,3 +1,4 @@ +import enum import importlib import inspect import math @@ -1209,7 +1210,9 @@ def get_dialect_or_config_option( return default def get_field_default_literal(self, value: typing.Any) -> str: - if isinstance(value, (str, int, bool, NoneType)): # type: ignore + if isinstance(value, enum.IntFlag): + return str(value.value) + elif isinstance(value, (str, int, bool, NoneType)): # type: ignore return repr(value) elif ( isinstance(value, float) diff --git a/tests/test_data_types.py b/tests/test_data_types.py index ac164a04..40da798a 100644 --- a/tests/test_data_types.py +++ b/tests/test_data_types.py @@ -1503,6 +1503,19 @@ class Config(BaseConfig): } +def test_dataclass_with_default_int_flag_omit_default(): + @dataclass + class DataClass(DataClassDictMixin): + a: MyIntFlag = MyIntFlag.a + b: MyIntFlag = MyIntFlag.b + + class Config(BaseConfig): + omit_default = True + + assert DataClass().to_dict() == {} + assert DataClass(MyIntFlag.a, MyIntFlag.b).to_dict() == {} + + @pytest.mark.parametrize("value_info", inner_values) def test_decoder(value_info): x_type, x_value, x_value_dumped = value_info