Incorrect __post_init__ order when KW_ONLY used
Ouverte
Personne n'a encore pris cette issue.
bug
- Langage dominant
- Python
- Étoiles
- 20.6k
- Forks
- 3.3k
- Métriques de merge des PR
- Métriques de PR en attente
Description
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:
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par reproduire l’exemple Python signalé et confirmez les deux erreurs d’override concernant post_init. Suivez ensuite la gestion des dataclass par mypy pour KW_ONLY et InitVar afin de déterminer où l’ordre des arguments est dérivé. Le travail est terminé lorsque l’exemple passe la vérification de types sans ces erreurs, tout en conservant l’ordre de post_init montré.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- devtools
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Clairement spécifiée
- Accessibilité débutants
- 45/100