Back to Ruff

Invalid Frozen Dataclass Subclass

crates/ty_python_semantic/resources/lint_docs/invalid-frozen-dataclass-subclass.md

0.15.18598 B
Original Source

What it does

Checks for dataclasses with invalid frozen inheritance:

  • A frozen dataclass cannot inherit from a non-frozen dataclass.
  • A non-frozen dataclass cannot inherit from a frozen dataclass.

Why is this bad?

Python raises a TypeError at runtime when either of these inheritance patterns occurs.

Example

python
from dataclasses import dataclass


@dataclass
class Base:
    x: int


@dataclass(frozen=True)
class Child(Base):  # error
    y: int


@dataclass(frozen=True)
class FrozenBase:
    x: int


@dataclass
class NonFrozenChild(FrozenBase):  # error
    y: int