From d1cb10773bf3eca44cf292abf41283048956ecca Mon Sep 17 00:00:00 2001 From: "evgeny.bovykin" Date: Tue, 19 Aug 2025 15:01:42 +0200 Subject: [PATCH] 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 (cherry picked from commit ee569653a8f5cf91d6cb87321d63bf8e208d172d) IJ-MR-174248 GitOrigin-RevId: 275e527ac36ac727dfc23f17bd0b539cff9df8c2 --- .../typing/conformance/tests/protocols_definition.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/python/testData/typing/conformance/tests/protocols_definition.py b/python/testData/typing/conformance/tests/protocols_definition.py index 30b5cbcd969e..21c2f9486007 100644 --- a/python/testData/typing/conformance/tests/protocols_definition.py +++ b/python/testData/typing/conformance/tests/protocols_definition.py @@ -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