Spurious error when adding two list
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
Mypy reports Unsupported operand types for + when concatenating two lists, when the second operand is a subtype of the first.
This was previously mentioned in this comment in #5492
Below is a simple concise example
To Reproduce
class A:
pass
class B(A):
pass
def foo(a: list[A]) -> None:
pass
l1: list[A] = [A(), B()]
l2: list[B] = [B()]
l3 = l1 + l2
foo(l2 + l1) # OK, no error
foo(l3) # also OK
foo(
l1 + l2
) # ERROR: Unsupported operand types for + ("List[A]" and "List[B]") [operator]mypy(error)
Expected Behavior
No error on the last line
Actual Behavior
Reports spurious error
Your Environment
- Mypy version used: mypy 1.2.0
- Mypy command-line flags: None
- Mypy configuration options from
mypy.ini(and other config files): from pyproject.toml
ignore_missing_imports = true
show_column_numbers = true
warn_redundant_casts = true
warn_unused_ignores = true
warn_unused_configs = true
follow_imports = "normal"
plugins = ["pydantic.mypy"]
- Python version used: 3.10
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 el ejemplo conciso de Python con mypy 1.2.0 y compara los diagnósticos de l1 + l2 y l2 + l1. El issue no indica ningún archivo fuente ni ruta de prueba, así que sigue el recorrido de comprobación de tipos de la suma de listas a partir de esta reproducción. Se considera terminado cuando la expresión final l1 + l2 ya no produce un error unsupported-operand y los casos válidos existentes siguen siendo válidos.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- compilers
- 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