python / python/mypy

dmyy crashes when switching to git branches which removes subdirectory

Abierto
#10,539 0 comentarios 2 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

crash topic-daemon
Lenguaje dominante
Python
Estrellas
20.6k
Forks
3.3k
Métricas de merge de PR
Métricas de PR pendientes

Descripción

Crash Report

I am using dmypy to check code in a pre-commit hook. When switching branches, obviously a lot of files/packages come and go. It seems as if dmypy has problems with the internal cache when a formerly checked file/package is not available anymore.
I have encountered two different backtraces.

Traceback

Daemon crashed!
Traceback (most recent call last):
  File "mypy/dmypy_server.py", line 221, in serve
  File "mypy/dmypy_server.py", line 264, in run_command
  File "mypy/dmypy_server.py", line 323, in cmd_run
  File "mypy/dmypy_server.py", line 385, in check
  File "mypy/dmypy_server.py", line 559, in fine_grained_increment_follow_imports
  File "mypy/dmypy_server.py", line 688, in direct_imports
KeyError: 'removed.package'
Daemon crashed!
Traceback (most recent call last):
  File "mypy/dmypy_server.py", line 221, in serve
  File "mypy/dmypy_server.py", line 264, in run_command
  File "mypy/dmypy_server.py", line 323, in cmd_run
  File "mypy/dmypy_server.py", line 385, in check
  File "mypy/dmypy_server.py", line 577, in fine_grained_increment_follow_imports
  File "mypy/server/update.py", line 1164, in refresh_suppressed_submodules
  File "mypy/fscache.py", line 172, in listdir
  File "mypy/fscache.py", line 168, in listdir
FileNotFoundError: [Errno 2] No such file or directory: '..../deleted/directory'

To Reproduce

Switch between git branches which add/remove a complete subdirectory.

Your Environment

  • Mypy version used: 0.812
  • dmypy command-line: dmypy run -- --config-file mypy.ini -p package1 -p package2 -p package3
  • Python version used: 3.9
  • Operating system and version: MacOS

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 el fallo ejecutando el comando dmypy indicado, cambiando entre ramas que añaden o eliminan un subdirectorio completo y comprobando los tracebacks del daemon. Empieza en mypy/dmypy_server.py, en fine_grained_increment_follow_imports, direct_imports y las llamadas a mypy/server/update.py y mypy/fscache.py. Se considera terminado cuando los cambios entre ramas ya no provocan que dmypy falle y el comportamiento de regresión relevante esté cubierto.

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
3/5
Tiempo estimado
1-2 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
45/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.