`typing` classes instantiation is considered valid by mypy
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 fails to detect attempts to instantiate typing.List, which triggers runtime error
To Reproduce
Considering following example:
from typing import List
if __name__ == "__main__":
x = List[str]([])
print(x)
Mypy reports this code as valid, although it is guaranteed to fail at runtime:
(py_39) % python3 -mmypy mypy-instance.py
Success: no issues found in 1 source file
(py_39) % python3 mypy-instance.py
Traceback (most recent call last):
File "/Users/nshulga/test/mypy-instance.py", line 3, in <module>
x = List[str]([])
File "/Users/nshulga/miniconda3/envs/py_39/lib/python3.9/typing.py", line 668, in __call__
raise TypeError(f"Type {self._name} cannot be instantiated; "
TypeError: Type List cannot be instantiated; use list() instead
Expected Behavior
Mypy shoudl report abovementioned construct as abstract class/non-instantiatiable type
Your Environment
- Mypy version used: 0.910
- Python version used: 3.9.4
- Operating system and version: MacOs 12.0.1
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 con il riproduttore in mypy-instance.py ed eseguilo con mypy 0.910, quindi confronta il risultato con l’errore di runtime di Python prodotto da Liststr. Traccia il modo in cui mypy gestisce l’istanziazione di typing.List e fai in modo che il comportamento completato segnali questo costrutto come non istanziabile, con un test di regressione per l’esempio.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- devtools
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100