Default value of keyword parameter in custom Protocol is not used
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
Consider the code below:
from typing import Protocol
class P(Protocol):
def foo(self, n: int = 666) -> None: ...
class F:
def foo(self, n: int = 666) -> None: ...
class S:
def foo(self, n: int = 999) -> None: ...
def bar(x: P) -> None: ...
bar(F())
bar(S())
Expected Behavior
Warning in the last code line about incompatibility of class S and protocol P, because the default value of parameter n in P.foo is not ellipsis and the numerical value of n in S.foo is different.
Actual Behavior
Mypy does not generate any warnings.
Your Environment
- Mypy version used:
8.12
0.820+dev.8642b351cff94c471333256f9cd6867807384f01
- Mypy command-line flags:
none
- Mypy configuration options from
mypy.ini(and other config files):
[mypy]
pretty = True
show_error_codes = True
strict = True
disallow_any_unimported = True
disallow_any_expr = True
disallow_any_decorated = True
disallow_any_explicit = True
no_warn_no_return = True
warn_unreachable = True
- Python version used:
3.8.10 (64-bit), 3.9.5 (64-bit), 3.10 beta (64-bit)
- Operating system and version:
Windows 10 64-bit
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 exécuter mypy sur le reproducer de l'issue et suivez la vérification de compatibilité du protocole pour la valeur par défaut du paramètre n de foo. C'est terminé lorsque mypy signale l'incompatibilité entre S et P tout en continuant à accepter F comme compatible.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- devtools
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100