variance inferred incorrectly when class has both a covariant and contravariant generic and instance attribute is assigned without a type annotation
Ouverte
Personne n'a encore pris cette issue.
bug
topic-pep-695
topic-type-variables
- Langage dominant
- Python
- Étoiles
- 20.6k
- Forks
- 3.3k
- Métriques de merge des PR
- Métriques de PR en attente
Description
from typing import Never
class Foo[in_T, out_T]:
def __init__(self, *, value: out_T):
a: Foo[Never, object] = self # error (incorrect)
self.__a = value
reveal_type(self.__a) # out_T`2
def asdf(self, value: in_T) -> out_T: ...
class Bar[in_T, out_T]:
def __init__(self, *, value: out_T):
a: Bar[Never, object] = self # no error (correct)
self.__a: out_T = value
reveal_type(self.__a) # out_T`2
def asdf(self, value: in_T) -> out_T: ...
(originally raised in #18118 but i messed up the minimal repro)
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 la reproduction liée dans mypy-play et comparez les cas Foo et Bar, en vous concentrant sur l’inférence de variance lorsque l’attribut d’instance privé n’a pas d’annotation. Consultez le contexte d’origine dans l’issue #18118 si nécessaire ; le travail est terminé lorsque l’affectation à Foo ne signale plus l’erreur incorrecte, tandis que le type révélé reste correct.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- compilers, devtools
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100