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

Abierto
#9,106 0 comentarios 4 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
35/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
python
Área
devtools

Línea de trabajo

El issue no menciona archivos ni pruebas. Empieza localizando la generación de informes de precisión de cobertura y el análisis de la configuración de mypy; después, sigue el rastro de cómo se identifican los usos informados. Se considera terminado cuando los usuarios puedan configurar exclusiones para funciones o usos especificados y el informe de cobertura omita esas entradas sin afectar a la comprobación de tipos normal.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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.

Lenguaje dominante
Python
Estrellas
20.6k
Forks
3.3k
Merge medio
1 d 18 h
PR fusionados (30 d)
54

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de python/mypy

Todos los issues de python/mypy

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.