Skip to content

tagged union disambiguation seems to ignore omit_if_default setting #429

@aha79

Description

@aha79
  • 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions