Inconsistent dataclass order behavior on Python 3.13+
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 77.2k
- Forks
- 35.9k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Bug report
Bug description:
Semantics of dataclasses __eq__ have changed in Python 3.13+, the semantic is now inconsistent with the order=True generated set of dunder methods on the same Python 3.13+ versions.
Related issues:
#128294
#120645
@dataclasses.dataclass(order=True)
class Data:
a: float
nan = float("nan")
assert not (Data(nan) < Data(nan))
# assert not (Data(nan) <= Data(nan)), "fails on 3.13 even though {<, ==} are both False"
assert not (Data(nan) > Data(nan))
# assert not (Data(nan) >= Data(nan)), "fails on 3.13 even though {>, ==} are both False"
assert (Data(nan) != Data(nan))
assert not (Data(nan) == Data(nan))
Proposed fix PR: #137497
CPython versions tested on:
3.13
Operating systems tested on:
Windows
Linked PRs
- gh-137497
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne damit, die Vergleiche auf Ordnung der dataclasses aus dem Issue unter Python 3.13+ zu reproduzieren, und lies dann die verwandten Issues #128294 und #120645 sowie den vorgeschlagenen Fix in PR #137497. Als erledigt gilt die Aufgabe, wenn die generierten Vergleiche auf Ordnung bei NaN-Werten ein konsistentes Verhalten mit der Gleichheit aufweisen und eine Regressionstestabdeckung für die gemeldeten Assertions vorhanden ist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- backend
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 25/100