`callable()` fails to narrow type to `Callable`
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
I'm sorry if this is a duplicate; it's possible it's covered by one of the existing issues about type narrowing, but I couldn't find anything that explicitly covers this case.
https://mypy.readthedocs.io/en/stable/type_narrowing.html#type-narrowing-expressions explicitly says that callable(obj) will narrow obj to a callable type. However, in my code this doesn't seem to work; the argument to callable is still left as Any.
To Reproduce
With mypy 1.19.1 and --strict:
from collections.abc import Callable
class A:
def get_callback(self, name: str) -> Callable[[], bool]:
callback = getattr(self, name)
assert callable(callback)
return callback
Also demonstrated in this playground.
Actual Behavior
t.py:7: error: Returning Any from function declared to return "Callable[[], bool]" [no-any-return]
Your Environment
- Mypy version used: 1.19.1
- Mypy command-line flags:
--strict - Python version used: 3.13
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 t.py avec mypy 1.19.1 et --strict, puis lisez la documentation sur les expressions de réduction de type liée dans le rapport, en vous concentrant sur callable(obj). Suivez le traitement de l’assertion callable et vérifiez que l’exemple ne signale plus no-any-return lors du retour de Callable[[], bool].
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