from decorator import my_dataclass, my_dataclass_order_default, my_dataclass_frozen_default, my_dataclass_eq_default @my_dataclass() class ImplicitInit: field: int def __init__(self, field): ... @my_dataclass(init=True) class ExplicitInit: field: int def __init__(self, field): ... @my_dataclass() class ImplicitEq: field: int def __eq__(self, other): pass # Unclear semantic @my_dataclass_eq_default() class ImplicitEq2: field: int def __eq__(self, other): pass @my_dataclass(eq=True) class ExplicitEq: field: int def __eq__(self, other): pass # Unclear semantic @my_dataclass_order_default() class ImplicitOrder: field: int def __gt__(self, other): pass @my_dataclass(order=True) class ExplicitOrder: field: int def __gt__(self, other): pass @my_dataclass(unsafe_hash=True) class ExplicitUnsafeHash: field: int def __hash__(self): pass # Unclear semantic @my_dataclass_frozen_default() class ImplicitFrozen: field: int def __setattr__(self, name, val): pass @my_dataclass(frozen=True) class ExplicitFrozen: field: int def __setattr__(self, name, val): pass