`--warn-return-any` not applied to generics
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
When a function annotated to return tuple[T] returns tuple[Any] no error is raised. Same with list.
To Reproduce
from __future__ import annotations
from typing import Any
def passes() -> tuple[str]:
a: Any
return (a,)
def fails_1() -> tuple[str]:
a: int
return (a,)
# error: Incompatible return value type (got "Tuple[int]", expected "Tuple[str]")
def fails_2() -> str:
a: Any
return a
# error: Returning Any from function declared to return "str"
Expected Behavior
I'd expect passes() to fail with error: Returning Tuple[Any] from function declared to return "Tuple[str]" when using mypy with --strict
Actual Behavior
Tuple[Any] is inferred to Tuple[str]
Your Environment
- Mypy version used: 0.812
- Mypy command-line flags: none
- Mypy configuration options from
mypy.ini(and other config files):
# setup.cfg
[mypy]
python_version = 3.8
strict = true
warn_unreachable = true
implicit_reexport = true
ignore_missing_imports = true
- Python version used: 3.9.1
- Operating system and version: macOS 10.13.6
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 reproducteur Python fourni, qui contient des retours de type tuple[str], tuple[Any], list et Any, et exécutez-le avec la configuration stricte indiquée. Suivez la manière dont les types de retour génériques sont inférés et vérifiés, puis ajoutez une couverture pour le cas du tuple et confirmez que le diagnostic attendu Returning Tuple[Any] est produit.
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é
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 48/100