Add a way for mypy coverage reports to omit certain lines or functions from precision checking

Offen
#9,106 0 Kommentare 4 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

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

Rechercherichtung

Das Issue nennt keine Dateien oder Tests. Beginne damit, mypys Berichterstattung zur Coverage-Genauigkeit und das Parsen der Konfiguration zu lokalisieren, und verfolge anschließend, wie gemeldete Verwendungen identifiziert werden. Erledigt ist die Aufgabe, wenn Benutzer Ausschlüsse für angegebene Funktionen oder Verwendungen konfigurieren können und der Coverage-Bericht diese Einträge auslässt, ohne die normale Typprüfung zu beeinflussen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

feature

When looking at a coverage report which shows the precision of the types on my code, I very frequently find that the same handful of functions are responsible for lines being marked "imprecise".

In general:

  • library or stdlib functions which really consume Any, like Logger.debug
  • library or stdlib functions which produce Any, like sqlalchemy.orm.query.Query.scalar
  • functions in my own code where the type is Any to avoid other issues (e.g. absence of unsafe unions)

I would like to be able to tell mypy to exempt certain usages from its reporting.
Several tools support this via comments (# pragma: no cover, # fmt: off, # noqa), but coverage has another interface which may be better suited to mypy: you can specify expressions which are skipped. (tool.coverage.report.exclude_lines in pyproject.toml).

Being able to stipulate something like:

mypy-coverage-precision-exclude =
    logging.Logger.debug
    logging.Logger.error
    sqlalchemy.orm.query.Query.scalar
    mymodule.myfunc

would make the coverage reporting much more useful, because it would eliminate "false negatives" on lines that really ought to have imprecise types.

Vorherrschende Sprache
Python
Sterne
20.6k
Forks
3.3k
Ø Merge
1 T. 18 Std.
Gemergte PRs (30 T.)
54

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus python/mypy

Alle Issues in python/mypy

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

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