crates/ty_python_semantic/resources/lint_docs/invalid-dataclass.md
Checks for invalid applications of the @dataclass decorator.
Applying @dataclass with incompatible arguments raises an exception while creating the
class:
order=True with eq=Falseweakref_slot=True with slots=Falseslots=True when the class already defines __slots__Applying @dataclass to a class that inherits from NamedTuple, TypedDict,
Enum, or Protocol is also invalid:
NamedTuple and TypedDict classes will raise an exception at runtime when
instantiating the class.Enum classes with @dataclass are explicitly not supported.Protocol classes define interfaces and cannot be instantiated.from dataclasses import dataclass
from typing import NamedTuple
@dataclass(order=True, eq=False) # error: [invalid-dataclass]
class Ordered: ...
@dataclass
class Foo(NamedTuple): # error: [invalid-dataclass]
x: int
See: https://docs.python.org/3/library/dataclasses.html#dataclasses.dataclass