list of types with multiple bases only uses first shared base?
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 20.6k
- Forks
- 3.3k
- Métriques de merge des PR
- Métriques de PR en attente
Description
i may be misunderstanding something, but it seems that when making a list of types, each with multiple shared base classes, mypy mistakenly infers this to be a list of the first base only, missing others
$ cat mypytest.py
# two different base classes with different attributes
class B1:
b1 = None
class B2:
b2 = None
# two classes that subclass both B1 and B2
class S1(B1, B2):
pass
class S2(B1, B2):
pass
# a list of the subclasses
types = [S1, S2]
# it seems mypy thinks `types` is List[Type[B1]]
ok = [x.b1 for x in types]
why_not_ok = [x.b2 for x in types]
$ mypy mypytest.py
mypytest.py:24: error: "Type[B1]" has no attribute "b2"
$ mypy --version
mypy 0.770+dev.b2edab25b7e4a6131484bb6edf314e2fa078aee7
$ python -V
Python 3.7.3
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 dans mypytest.py et exécutez-la avec mypy pour confirmer le type inféré et l’erreur. Suivez la manière dont est inféré le type d’une liste de classes ayant plusieurs classes de base communes, puis vérifiez que b1 et b2 sont tous deux acceptés sans perdre la relation entre les multiples classes de base.
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é
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100