generic fails to narrow, something to do with using `NoReturn` on contravariant generic
Aperta
Nessuno ha ancora preso questa issue.
bug
- Lingua principale
- Python
- Stelle
- 20.6k
- Fork
- 3.3k
- Metriche di merge delle PR
- Metriche PR in attesa
Descrizione
from typing import Generic, Mapping, NoReturn, Sequence, TypeVar
T = TypeVar("T", contravariant=True)
class Foo(Generic[T]):
...
foo = Foo[int]()
bar = Foo[str]()
a1: Sequence[Foo[NoReturn]] = [foo] # no error
a2: Sequence[Foo[NoReturn]] = [bar] # no error
# error (this one seemed to be fixed around commit 32448b88370f8327c390f4e21666065c87ca95e2, then broken again)
a3: Sequence[Foo[NoReturn]] = [foo, bar]
a4: Sequence[Foo[NoReturn]] = [foo] or [bar] # error
a5: Mapping[str, Sequence[Foo[NoReturn]]] = { # error
"foo": [foo],
"bar": [], # error goes away if you change this to [foo]
}
a6: Sequence[Sequence[Foo[NoReturn]]] = [[foo], []] # error
https://mypy-play.net/?mypy=latest&python=3.10&gist=175deca029e02ea95af74f7c4a02856c
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
Inizia eseguendo i sei esempi nella riproduzione mypy-play collegata e registra le diagnostiche attuali, soprattutto per a3–a6. Confronta il comportamento con il commit 32448b88370f8327c390f4e21666065c87ca95e2 come contesto storico. Il lavoro è completato quando gli errori incoerenti per costruzioni equivalenti di Foo[NoReturn] sono risolti senza introdurre nuovi errori.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- devtools
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 38/100