Inconsistent behavior with Literals depending on the amount of elements it contains
Abierto
Nadie ha tomado este issue todavía.
topic-join-v-union
topic-literal-types
- Lenguaje dominante
- Python
- Estrellas
- 20.6k
- Forks
- 3.3k
- Métricas de merge de PR
- Métricas de PR pendientes
Descripción
This is an issue I ran into working on #9097.
Code adapted from this test.
Literals with one value:
from typing import List
from typing_extensions import Literal
lit1: Literal[1]
lit2: Literal[2]
arr2 = [lit1, lit2]
reveal_type(arr2)
➜ mypy git:(master) python3 -m mypy leba_misc/test2.py
leba_misc/test2.py:9: note: Revealed type is 'builtins.list[builtins.int*]'
Literals with multiple values:
from typing import List
from typing_extensions import Literal
lit1: Literal[1]
lit2: Literal[2, 3]
arr2 = [lit1, lit2]
reveal_type(arr2)
➜ mypy git:(master) python3 -m mypy leba_misc/test2.py
leba_misc/test2.py:9: note: Revealed type is 'builtins.list[Union[Literal[1], Literal[2], Literal[3]]]'
On Python 3.7 and mypy 0.790.
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 con mypy los dos snippets de reproducción del issue y compáralos con test-data/unit/check-literal.test alrededor del caso enlazado. Rastrea el comportamiento de revealed-type en la inferencia de listas que involucra valores Literal y, después, añade o actualiza una prueba de regresión para que los casos de un valor y de varios valores se comporten de forma coherente.
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
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 48/100