@dataclass(kw_only=True,frozen=True,eq=True)
class A:
a: int
b: Optional[int] = None
@dataclass(kw_only=True,frozen=True,eq=True)
class Derived(A):
d: int
c: Optional[int] = None
def ustrat(a: Any, conv) -> Any:
return cattrs.strategies.configure_tagged_union(a, conv, tag_name="type")
converter = cattrs.Converter(omit_if_default=True)
cattrs.strategies.include_subclasses(A, converter, union_strategy=ustrat)
#data = [ Derived(a=1, d=2) ]
data = [ A(a=1) ]
dic = converter.unstructure(data, unstructure_as=List[A] )
# >> dic = {'a': 1, 'b': None, 'type': 'a'}
Description
The tagged union disambiguation seems to ignore
omit_if_default=TrueWhat I Did
Maybe this is related #402