Treat Assigning Coroutine to `_` the Same as Unused Coroutine
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
Feature
Treat assigning a function's coroutine return value to the _ variable the same as an unused coroutine.
Pitch
Mypy attempts to catch the bug of forgetting to await a coroutine by detecting unused coroutines. For example, with mypy 1.19.1:
async def foo() -> int:
return 42
def bar() -> None:
foo() # error: Value of type "Coroutine[Any, Any, int]" must be used [unused-coroutine]
It's the style convention of some organizations to assign the unused return value of a function to the _ variable. This signals to readers that the return value was intentionally ignored and not a possible bug. However, this then silences the unused-coroutine issue.
async def foo() -> int:
return 42
def bar() -> None:
_ = foo() # no mypy error
I'm not sure if there is precedent of mypy treating _ differently, but I believe that practically this would aim to catch the same category of bugs as unused-coroutine.
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 localiser le diagnostic existant de mypy concernant les coroutines inutilisées et le traitement des affectations à _. Suivez la manière dont l’exemple _=foo() est analysé, puis vérifiez, à l’aide d’exemples ciblés de vérification de types, que l’affectation d’une coroutine à _ produit le même diagnostic que le fait de la laisser inutilisée.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- compilers
- Type d'issue
- Fonctionnalité
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 45/100