Spurious error when adding two list
Nessuno ha ancora preso questa issue.
- Lingua principale
- Python
- Stelle
- 20.6k
- Fork
- 3.3k
- Metriche di merge delle PR
- Metriche PR in attesa
Descrizione
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
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia eseguendo l’esempio conciso in Python con mypy 1.2.0 e confronta le diagnosi per l1 + l2 e l2 + l1. L’issue non indica alcun file sorgente né alcun percorso di test, quindi segui il percorso di controllo dei tipi per l’addizione di liste partendo da questa riproduzione. Il lavoro è completato quando l’espressione finale l1 + l2 non produce più un errore unsupported-operand e i casi validi esistenti rimangono validi.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- compilers
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 45/100