Check for return type of overload implementation is too strict?
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
Consider this simplified example:
from typing import overload, Optional, List
@overload
def f(x: int) -> List[int]: ...
@overload
def f(x: None) -> List[Optional[int]]: ...
def f(x: Optional[int]) -> List[Optional[int]]:
return [x]
Mypy currently complains about it that:
Overloaded function implementation cannot produce return type of signature 1
Although I understand why this happens, it is a bit annoying and can be perceived as a false positive. Maybe we should use is_overlapping_types() instead of is_subtype() for the check?
cc @Michael0x2a
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 reproduire l’exemple simplifié de surcharge et suivre la vérification du type de retour de l’implémentation dans mypy. Comparez la vérification actuelle avec is_subtype() au comportement proposé de is_overlapping_types(), puis déterminez si l’exemple doit être accepté et validez cette décision avec une couverture de régression.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- compilers, devtools
- Type d'issue
- Bug
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100