Strange behavior with dataclass InitVar
Offen
Dieses Issue hat noch niemand übernommen.
bug
priority-1-normal
topic-dataclasses
topic-usability
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Wondering what is going on here for the cases 3-6. Running it with --strict, mypy version is 0.761.
import dataclasses
from dataclasses import dataclass, InitVar
from functools import partial
dataclass_alias = dataclass
dataclass_partial = partial(dataclass, frozen=True)
dataclass_decorator = dataclass(frozen=True)
# 1. ok
@dataclass(frozen=True)
class X1:
value: InitVar[bool] = None
# 2. ok
@dataclasses.dataclass(frozen=True)
class X2:
default: InitVar[bool] = None
# 3. error: Incompatible types in assignment (expression has type "None", variable has type "InitVar[bool]")
@dataclass_alias(frozen=True)
class X3:
default: InitVar[bool] = None
# 4. error: Incompatible types in assignment (expression has type "None", variable has type "InitVar[bool]")
@dataclass_partial
class X4:
default: InitVar[bool] = None
# 5a. error: Too many arguments for "object"
# 5b. error: Incompatible types in assignment (expression has type "None", variable has type "InitVar[bool]")
@dataclass_partial()
class X5:
default: InitVar[bool] = None
# 6. error: Incompatible types in assignment (expression has type "None", variable has type "InitVar[bool]")
@dataclass_decorator
class X6:
default: InitVar[bool] = 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, die bereitgestellten Fälle mit mypy 0.761 zu reproduzieren und zu vergleichen, wie jede Form des dataclass-Dekorators analysiert wird. Verfolge die Behandlung von InitVar und von Decorator-Aliasen oder Partials; abgeschlossen ist die Arbeit, wenn die Fälle dokumentierte, konsistente Ergebnisse sowie geeignete Diagnosen oder Tests haben.
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
- Muss geklärt werden
- Anfängerfreundlichkeit
- 35/100