python / python/mypy

race in record_missing_stub_packages (No such file or directory: '.mypy_cache/missing_stubs')

Abierto
#18,283 0 comentarios 1 reacción 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

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

Descripción

Bug Report

When running many mypy instances in parallel on the same project, our pipeline sometimes fails with the following traceback:

Traceback (most recent call last):
  File "/usr/local/bin/mypy", line 8, in <module>
    sys.exit(console_entry())
             ^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/mypy/__main__.py", line 15, in console_entry
    main()
  File "mypy/main.py", line 102, in main
  File "mypy/main.py", line 186, in run_build
  File "mypy/build.py", line 193, in build
  File "mypy/build.py", line 296, in _build
  File "mypy/build.py", line 3539, in record_missing_stub_packages
FileNotFoundError: [Errno 2] No such file or directory: '.mypy_cache/missing_stubs'

To Reproduce

Run ten parallel mypy on 10 different files in your project from a cold start. Repeat until it fails.

Expected Behavior

That .mypy_cache/missing_stubs contains garbage or results from a random run. Or that there was a flag to disable missing_stubs writing.

Actual Behavior

See traceback above.

Your Environment

Ubuntu Linux running inside a docker container.

  • Mypy version used: mypy 1.12.0, mypy-extensions 1.0.0
  • Mypy command-line flags: mypy sourcefile.py
  • Mypy configuration options from mypy.ini (and other config files):
[tool.mypy]
mypy_path = "src"
disable_error_code = "import-untyped"

[[tool.mypy.overrides]]
module = [
  "secretpackage.secretmodule1",
  "secretpackage.secretmodule2",
]
follow_imports = "skip"
  • Python version used: 3.11 (didn't record minor version when it happened)

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

Comienza en mypy/build.py, en record_missing_stub_packages, utilizando el traceback y la reproducción paralela de arranque en frío como puntos de entrada. Investiga por qué diez procesos de mypy concurrentes pueden fallar al escribir .mypy_cache/missing_stubs. Se considera completado cuando las ejecuciones paralelas ya no generan FileNotFoundError o cuando el comportamiento se puede controlar como se describe en el issue.

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
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.