-
-
Notifications
You must be signed in to change notification settings - Fork 128
Closed
Description
- cattrs version: 23.1.2
- Python version: 3.10.7
- Operating System: Windows
Description
The tagged union disambiguation seems to ignore omit_if_default=True
What I Did
@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'}
Maybe this is related #402