"Overloaded function implementation does not accept all possible arguments"
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
False positive; mypy doesn't believe that Foo[T] is a subtype of T.
from typing import Union, Generic, TypeVar, overload
T = TypeVar("T")
class Foo(Generic[T]):
pass
@overload
def expect(pattern: Foo[T]) -> None: ...
@overload
def expect(pattern: T) -> None: ...
def expect(pattern: Union[Foo[T], T]) -> None: return None
$ mypy xxx.py
xxx.py:14: error: Overloaded function implementation does not accept all possible arguments of signature 1
Note that the second overload referencing the type variable used in the first overload is necessary; if pattern: int is used instead of pattern: T in the second overload, mypy type-checks the file correctly.
Environment
- Mypy version used: 0.910
- Python version used: 3.10 and 3.7
- Operating system and version: Fedora 34
Related issues
- #11004: mypy thinks
**kwargs: Union[None, int, str]overload isn't accepted by**kwargs: Any - #9420: mypy thinks
Type[T1]isn't accepted byUnion[Type[T1], Type[T2]] - #9023: same bug with two different type variables
I think that #10390 fixes this issue, but I'm not sure.
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
Riproduci la diagnostica in xxx.py con mypy usando gli overload mostrati, quindi leggi le issue correlate #10390, #11004, #9420 e #9023 per comprendere la gestione esistente. Il lavoro è completato quando l’implementazione valida degli overload viene accettata senza l’errore segnalato e la regressione è coperta dai test del progetto.
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
- 42/100