Skip to content

Customising dataclasses¤

from dataclasses import dataclass, field

import wadler_lindig as wl

Hiding fields¤

By default, all fields of a dataclass are shown.
wadler_lindig respects the dataclass mechanism of setting repr=False to hide fields if required.

@dataclass
class MyData:
    not_hidden: int
    hidden: int = field(repr=False)


# hidden is not shown
wl.pprint(MyData(1, 2))
MyData(not_hidden=1)

Hiding default fields¤

By default wadler_lindig hides dataclass fields with a default argument

@dataclass
class DefaultArgs:
    x1: int
    x2: int = field(default=2)


# x2 is not printed
wl.pprint(DefaultArgs(1))
DefaultArgs(x1=1)

You can disable this by setting hide_defaults=False

wl.pprint(DefaultArgs(1), hide_defaults=False)
DefaultArgs(x1=1, x2=2)

Show module of dataclass¤

By default, the origin of the dataclass is hidden.
If required, you can set show_dataclass_module=True to see in which module the dataclass was defined.

wl.pprint(DefaultArgs(1), show_dataclass_module=True)
__main__.DefaultArgs(x1=1)