mypy tries to infer the type parameters of a generic class even if they are explicitly given
Nessuno ha ancora preso questa issue.
- Lingua principale
- Python
- Stelle
- 20.6k
- Fork
- 3.3k
- Merge medio
- 1g 18h
- PR unite (30g)
- 54
Descrizione
Bug Report
mypy tries to infer the type parameters of a generic class even if they are explicitly given.
To Reproduce
from typing import overload
class Frobnicator[T]: # Using a TypeVar gives identical results
@overload
def __init__(self, param: T) -> None: ...
@overload # Removing `param` in this case gives identical results
def __init__(self: 'Frobnicator[None]', param: None = None) -> None: ...
def __init__(self, param: T | None = None) -> None:
...
Expected Behavior
I expect the following to produce a "missing argument" error (like Pyright 1.1.384 does).
f = Frobnicator[int]()
Actual Behavior
reveal_type(f) shows Frobnicator[None]
Your Environment
The behavior is identical for mypy v1.11.1, v1.11.2 and the master branch, with both Python 3.12 and 3.13. I tried it on my local Arch + pyenv based setup and, using TypeVar, in https://mypy-play.net
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 Frobnicator fornito sul branch master corrente di mypy e confronta il risultato con l'errore previsto per l'argomento mancante. Traccia l'inferenza dei tipi e il controllo degli overload coinvolti nella chiamata esplicita Frobnicatorint; il lavoro è completato quando la chiamata segnala l'argomento mancante invece di inferire Frobnicator[None].
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