Incorrect __post_init__ order when KW_ONLY used
Offen
Dieses Issue hat noch niemand übernommen.
bug
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
from dataclasses import dataclass, InitVar, KW_ONLY
@dataclass
class A:
_: KW_ONLY
x: InitVar[int]
def __post_init__(self, x: int) -> None:
pass
@dataclass
class C(A):
y: InitVar[str]
def __post_init__(self, x: int, y: str) -> None: # Correct order.
super().__post_init__(x)
gives
a.py:19: error: Argument 2 of "__post_init__" is incompatible with supertype "dataclass"; supertype defines the argument type as "str" [override]
def __post_init__(self, x: int, y: str) -> None:
^~~~~~
a.py:19: error: Argument 3 of "__post_init__" is incompatible with supertype "dataclass"; supertype defines the argument type as "int" [override]
def __post_init__(self, x: int, y: str) -> None:
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, das gemeldete Python-Beispiel zu reproduzieren, und bestätige die beiden Override-Fehler im Zusammenhang mit post_init. Verfolge anschließend die Dataclass-Behandlung von mypy für KW_ONLY und InitVar, um zu bestimmen, wo die Reihenfolge der Argumente abgeleitet wird. Als abgeschlossen gilt die Arbeit, wenn das Beispiel ohne diese Fehler einer Typprüfung unterzogen werden kann und dabei die gezeigte Reihenfolge von post_init erhalten bleibt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- devtools
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 45/100