Add a way for mypy coverage reports to omit certain lines or functions from precision checking
Nessuno ha ancora preso questa issue.
- Lingua principale
- Python
- Stelle
- 20.6k
- Fork
- 3.3k
- Metriche di merge delle PR
- Metriche PR in attesa
Descrizione
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, likeLogger.debug - library or stdlib functions which produce
Any, likesqlalchemy.orm.query.Query.scalar - functions in my own code where the type is
Anyto 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.
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
L’issue non indica file né test. Inizia individuando la generazione dei report sulla precisione della coverage e il parsing della configurazione di mypy, quindi traccia come vengono identificati gli utilizzi segnalati. Il lavoro è completo quando gli utenti possono configurare esclusioni per funzioni o utilizzi specificati e il report della coverage omette tali voci senza influire sul normale controllo dei tipi.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- devtools
- Tipo di issue
- Funzionalità
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100