list comprehensions: mypy fails to derive the union type for lists but not for tuples
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Python
- Estrellas
- 20.6k
- Forks
- 3.3k
- Métricas de merge de PR
- Métricas de PR pendientes
Descripción
Bug Report
Inside a list comprehension mypy fails to derive the union type for lists but not for tuples.
To Reproduce
a = 5
b = "a_string"
list1: list[int | str] = [x for x in (a, b)] # works
list2: list[int | str] = [x for x in [a, b]] # fails
Expected Behavior
The same type should be derived for both lists.
Actual Behavior
The first list is recognised as list[int | str],
The second list is recognised as list[object],
Hence the error on line 4
❯ mypy mypy-repro.py ─╯
mypy-repro.py:4: error: List comprehension has incompatible type List[object]; expected List[int | str] [misc]
Found 1 error in 1 file (checked 1 source file)
Your Environment
❯ python --version ─╯
Python 3.11.8
❯ pip list | grep mypy ─╯
mypy 1.13.0
mypy-extensions 1.0.0
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
Comience ejecutando la reproducción proporcionada con Python 3.11.8 y mypy 1.13.0, y compare la inferencia para las expresiones de tupla y de lista. Rastree la inferencia de tipos de la comprensión de listas y añada o actualice una prueba de regresión para que ambas expresiones deriven el mismo tipo list[int | str].
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
- 45/100