Type of list items not inferred when using `isinstance` inside `all`
Nessuno ha ancora preso questa issue.
- Lingua principale
- Python
- Stelle
- 20.6k
- Fork
- 3.3k
- Metriche di merge delle PR
- Metriche PR in attesa
Descrizione
The type of items in a list is not inferred when using an isinstance check in an all call.
from typing import List
class A:
pass
class B(A):
pass
def test(arg: List[A]) -> None:
if all([isinstance(a, B) for a in arg]):
test2(arg)
def test2(arg: List[B]) -> None:
pass
- What is the actual behavior/output?
error: Argument 1 to "test_2" has incompatible type "List[A]"; expected "List[B]"
Found 1 error in 1 file (checked 1 source file)
- What is the behavior/output you expect?
I expect mypy to infer the type of the list items based on the if check.
- What are the versions of mypy and Python you are using?
mypy: v0.740
python: 3.6.7
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Non è indicato alcun file sorgente o test. Prima riproduci l’esempio con mypy v0.740, poi traccia come vengono analizzati il controllo isinstance all’interno di all e la list comprehension. Il lavoro è completato quando l’esempio restringe List[A] a List[B] senza l’errore segnalato e dispone di una copertura di regressione.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- compilers
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 34/100