Typo in kwarg to overloaded function results in message about type mismatch
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 20.6k
- Forks
- 3.3k
- Métriques de merge des PR
- Métriques de PR en attente
Description
Bug Report
Passing an incorrectly named kwarg to an overloaded function results in a misleading error message about types:
from typing import overload
@overload
def foo(bar: int) -> int:
...
@overload
def foo(bar: None) -> None:
...
def foo(bar: int | None) -> int | None:
...
foo(baz=42) # typo: 'baz' should be 'bar'
error: No overload variant of "foo" matches argument type "int" [call-overload]
note: Possible overload variants:
note: def foo(bar: int) -> int
note: def foo(bar: None) -> None
To Reproduce
https://mypy-play.net/?mypy=latest&python=3.10&gist=0c0b7a4699e67b65d38eb182fb75c444
Expected Behavior
A message such as error: Unexpected keyword argument "baz" for "foo" [call-arg] (which is what you get when the function is not overloaded).
Actual Behavior
error: No overload variant of "foo" matches argument type "int" [call-overload]
Your Environment
- Mypy version used: 1.0.0
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par le reproducer mypy-play lié et suivez la vérification des appels à overload pour les arguments nommés. Ajoutez un test de régression pour l’argument mal orthographié baz, puis vérifiez que le diagnostic signale un argument nommé inattendu plutôt qu’une incompatibilité de types de overload.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- tooling
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- Calme
- Clarté
- Plutôt claire
- Accessibilité débutants
- 58/100