python / python/mypy

Treat Assigning Coroutine to `_` the Same as Unused Coroutine

Offen
#20,570 4 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

feature
Vorherrschende Sprache
Python
Sterne
20.6k
Forks
3.3k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

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.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne damit, mypy's bestehende Diagnose für ungenutzte Coroutines und die Behandlung von Zuweisungen an _ zu lokalisieren. Verfolge, wie das Beispiel _=foo() analysiert wird, und überprüfe anschließend anhand gezielter Beispiele zur Typprüfung, dass die Zuweisung einer Coroutine an _ dieselbe Diagnose erzeugt wie das Nichtverwenden.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
compilers
Issue-Typ
Feature
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
45/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.