generic fails to narrow, something to do with using `NoReturn` on contravariant generic
Abierto
Nadie ha tomado este issue todavía.
bug
- Lenguaje dominante
- Python
- Estrellas
- 20.6k
- Forks
- 3.3k
- Métricas de merge de PR
- Métricas de PR pendientes
Descripción
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
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Empieza ejecutando los seis ejemplos de la reproducción enlazada de mypy-play y registra los diagnósticos actuales, especialmente para a3–a6. Compara el comportamiento con el commit 32448b88370f8327c390f4e21666065c87ca95e2 como contexto histórico. Se considera terminado cuando se resuelvan los errores inconsistentes para construcciones equivalentes de Foo[NoReturn] sin introducir errores nuevos.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- devtools
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 38/100