python / python/mypy

Duplicate module silently replaces existing module in dmypy recheck --update

Abierto
#6,653 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

bug priority-0-high topic-daemon topic-fine-grained-incremental
Lenguaje dominante
Python
Estrellas
20.6k
Forks
3.3k
Métricas de merge de PR
Métricas de PR pendientes

Descripción

If one has these two files:

# [file a/mod.py]
# empty

# [file b/mod.py]
42 + 'no'

and there are no __init__.py[i] files in the directories, then running dmypy produces the following result:

$ dmypy start -- --follow-import=skip
Daemon started
$ dmypy check a/mod.py 
$ dmypy recheck --update b/mod.py
b/mod.py:1: error: Unsupported operand types for + ("int" and "str")
$ dmypy recheck --remove b/mod.py
b/mod.py:1: error: Unsupported operand types for + ("int" and "str")
$ dmypy recheck --update a/mod.py
b/mod.py:1: error: Unsupported operand types for + ("int" and "str")

The problem here is twofold:

  • When we first trying to add the duplicate module, this should cause a blocking error, as in normal/incremental run instead of silently replacing the other module.
  • Even after one tries to remove the problematic module, it stays in build causing errors in all subsequent runs independently of what is done (except just stopping the daemon).

This is high priority because it causes troubles when adding files in existing large codebases.

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.

Línea de trabajo

Reproduce la secuencia con dmypy start, check, recheck --update, recheck --remove y recheck --update usando los dos archivos mod.py duplicados. Rastrea cómo el daemon gestiona los módulos duplicados durante la actualización y la eliminación. Se considera terminado cuando añadir el duplicado informa de un error bloqueante, eliminarlo borra el módulo obsoleto y las comprobaciones posteriores dejan de informar de su error.

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

Evaluación

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

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.