`@dataclass` does not handle `__hash__: None` special case
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
While working on https://github.com/python/mypy/issues/11463 I found that adding __hash__: None annotations does not work correctly.
Mypy says:
from dataclasses import dataclass
@dataclass(unsafe_hash=False, eq=True, frozen=False)
class SecondCase2:
x: int
__hash__: None # E: Incompatible types in assignment (expression has type "None", base class "object" defined the type as "Callable[[object], int]")
print(SecondCase2(1).__hash__) # N: Revealed type is "None" \
# E: Missing positional argument "__hash__" in call to "SecondCase2"
It looks like __hash__ is added to fields and __init__. While runtime version works just fine:
» python out/ex.py
SecondCase2(x=1, __hash__=<slot wrapper '__hash__' of 'object' objects>)
I will fix it in the same PR as https://github.com/python/mypy/issues/11463
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 mit dem bereitgestellten Dataclass-Reproducer und vergleiche die Diagnosen von mypy mit dem gezeigten Laufzeitverhalten. Verfolge, wie Dataclass-Felder und init hash: None behandeln, und füge Tests hinzu, die bestätigen, dass es weder als Feld noch als Konstruktorargument behandelt wird; prüfe zuerst das zugehörige Issue #11463, da der Bericht besagt, dass dieser Fix im selben PR landen wird.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- devtools
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 20/100