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