python / python/mypy

Spurious error when adding two list

Abierto
#15,087 3 comentarios 0 reacciones 0 asignados Ver en GitHub

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

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)

gist link

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

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. 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

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.