`mypy` doesn't infer `__eq__` and `__hash__` implementations for dataclasses
Offen
Dieses Issue hat noch niemand übernommen.
bug
topic-dataclasses
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Bug Report
mypy doesn't infer __eq__ and __hash__ implementations for dataclasses.
To Reproduce
from abc import ABC, abstractmethod
from dataclasses import dataclass
class FType(ABC):
@abstractmethod
def __eq__(self, other): ...
@abstractmethod
def __hash__(self): ...
@dataclass(eq=True, frozen=True)
class ConcreteType(FType):
a: int
b: str
if __name__ == "__main__":
ct = ConcreteType(1, "b")
print(ct.__eq__)
Expected Behavior
It should pass.
Actual Behavior
mypy_playground.py:21: error: Cannot instantiate abstract class "ConcreteType" with abstract attributes "__eq__" and "__hash__" [abstract]
Found 1 error in 1 file (checked 1 source file)
Your Environment
- Mypy version used: 1.17.1
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
Führe zunächst die Reproduktion in mypy_playground.py mit mypy 1.17.1 aus und bestätige den Fehler bezüglich einer abstrakten Klasse für ConcreteType. Verfolge, wie dataclasses und abstrakte Methoden analysiert werden, und überprüfe anschließend, dass die Reproduktion keine abstrakten eq- und hash-Attribute mehr meldet.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- tooling
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100