python / python/mypy

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

オープン
#18,283 コメント 0 件 リアクション 1 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

bug topic-incremental
主要言語
Python
スター
20.6k
フォーク
3.3k
平均マージ
1日 18時間
マージ済み PR(30日)
54

説明

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)

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

mypy/build.py の record_missing_stub_packages から始め、traceback と並列コールドスタート再現を入口として調査してください。10 個の並行 mypy プロセスが .mypy_cache/missing_stubs の書き込み時に失敗する可能性がある理由を調べてください。並列実行で FileNotFoundError が発生しなくなるか、issue に記載されているとおりに動作を制御できれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
python
領域
tooling
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。