PY-76822 Fix dataclass default values in conformance test suite protocols_definition.py

Both mypy and pyright don't show an error for the following case

@dataclass(frozen=False)
class Concrete4_Good7:
    val1: Sequence[float] = [0]

However, according to spec, such mutable defaults are not allowed. It will also fail at runtime

GitOrigin-RevId: ee569653a8f5cf91d6cb87321d63bf8e208d172d
This commit is contained in:
evgeny.bovykin
2025-10-21 09:52:41 +00:00
committed by intellij-monorepo-bot
parent f71b4cbc5a
commit 446ac53064
@@ -6,7 +6,7 @@ Tests the basic definition rules for protocols.
from abc import abstractmethod
from typing import Any, ClassVar, Iterable, NamedTuple, Protocol, Sequence
from dataclasses import dataclass
from dataclasses import dataclass, field
class SupportsClose(Protocol):
@@ -196,7 +196,7 @@ class Concrete4_Good6(NamedTuple):
@dataclass(frozen=False)
class Concrete4_Good7:
val1: Sequence[float] = [0]
val1: Sequence[float] = field(default_factory=lambda:[0])
class Concrete4_Bad1:
@@ -315,7 +315,7 @@ class Concrete6_Good2:
@dataclass(frozen=False)
class Concrete6_Good3:
val1: Sequence[float] = [0]
val1: Sequence[float] = field(default_factory=lambda:[0])
class Concrete6_Bad1:
@@ -330,7 +330,7 @@ class Concrete6_Bad2(NamedTuple):
@dataclass(frozen=True)
class Concrete6_Bad3:
val1: Sequence[float] = [0]
val1: Sequence[float] = field(default_factory=lambda:[0])
v6_good1: Template6 = Concrete6_Good1() # OK