Skip to content

Commit

Permalink
Merge pull request #192 from Fatal1ty/fix-int-flag-omit-default
Browse files Browse the repository at this point in the history
Fix serialization of IntFlag when omit_default is enabled
  • Loading branch information
Fatal1ty authored Jan 27, 2024
2 parents c3c6739 + 1664b21 commit d46fd7e
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 1 deletion.
5 changes: 4 additions & 1 deletion mashumaro/core/meta/code/builder.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import enum
import importlib
import inspect
import math
Expand Down Expand Up @@ -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)
Expand Down
13 changes: 13 additions & 0 deletions tests/test_data_types.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit d46fd7e

Please sign in to comment.