-
-
Notifications
You must be signed in to change notification settings - Fork 33.1k
Closed as not planned
Closed as not planned
Copy link
Labels
3.13bugs and security fixesbugs and security fixes3.14bugs and security fixesbugs and security fixes3.15new features, bugs and security fixesnew features, bugs and security fixesstdlibStandard Library Python modules in the Lib/ directoryStandard Library Python modules in the Lib/ directorytopic-dataclassestype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Description
Bug report
Bug description:
Description
Equality with self now returns True in 3.13 for dataclasses with deleted attributes. Previously, this would raise an exception.
This may be related to changes discussed in #128294. However, unlike
other reports (#120645, #116647) where something that was True in 3.12 is now False or an Exception,
this issue is the inverse. In 3.13, the equality test silently returns True when previously it would raise.
This class is badly behaved, it should probably still raise an error.
Test Case
import dataclasses
@dataclasses.dataclass
class Test:
a: int
def __init__(self):
self.a = 1
def del_a(self):
del self.a
o1 = Test()
o2 = Test()
o1.del_a()
o2.del_a()
print(o1 == o1) # True (3.13), raises AttributeError (3.12)
print(o1 == o2) # raises AttributeError (3.13, 3.12)
# AttributeError: 'Test' object has no attribute 'a'
CPython versions tested on:
3.13, 3.12
Operating systems tested on:
Linux
Metadata
Metadata
Assignees
Labels
3.13bugs and security fixesbugs and security fixes3.14bugs and security fixesbugs and security fixes3.15new features, bugs and security fixesnew features, bugs and security fixesstdlibStandard Library Python modules in the Lib/ directoryStandard Library Python modules in the Lib/ directorytopic-dataclassestype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error