dmypy in a metadata reload loop with `--use-fine-grained-cache`
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Bug Report
I'm investigating remote caching, I find that dmypy is spinning for a very long time when using --use-fine-grained-cache. I've tried dmypy check <file> and it takes 10 minutes before I give up. If I used no caching at all, it would take 1.5 minutes, and give me expected answers.
To Reproduce
- produce a cache with
mypy --cache-fine-grained --sqlite-cache --no-incremental --cache-dir=... % dmypy start --log-file debug.log --timeout=3600 -- --use-fine-grained-cache --cache-dir=<cache> --sqlite-cache --verbosetime dmypy check tools/my_tool.py 2>&1 | ts > log.txt
Expected Behavior
fast checks
Actual Behavior
Seems to spin at 100% cpu for a long time. in the log, I see just a bunch of
...
2254727 Sep 25 17:35:45 LOG: Metadata not found for <module>
2254728 Sep 25 17:35:45 LOG: Using cached AST for <module path> (<module>)
...
for every file in my venv & project. indeed, I see the same modules on repeat:
% grep 'Metadata not found for numpy.fft.helper' log.txt | wc -l
284
which makes me think this is stuck in a loop.
Your Environment
- Mypy version used: mypy 1.10.1 (compiled: yes)
- Mypy command-line flags: (see above)
- Mypy configuration options from
mypy.ini(and other config files):
[mypy]
platform = linux
plugins = private_internal_plugin.py,trio_typing.plugin
skip_cache_mtime_checks = true
allow_any_generics = false
allow_incomplete_defs = false
allow_subclassing_any = false
allow_untyped_decorators = false
allow_untyped_defs = false
warn_redundant_casts = true
warn_unused_ignores = true
warn_return_any = true
implicit_reexport = true
show_error_codes = true
implicit_optional = true
explicit_package_bases = true
local_partial_types = true
exclude = (?x)(<some regex>)
disable_error_code = import-untyped
enable_error_code = ignore-without-code, unused-awaitable, truthy-bool, possibly-undefined
- Python version used: Python 3.11.10
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Mit dem aufgeführten mypy-Befehl zur Cache-Generierung sowie den Befehlen dmypy start/check reproduzieren und dabei debug.log und log.txt erfassen. Beginne damit, die wiederholten Einträge „Metadata not found“ und „Using cached AST“ nachzuverfolgen, einschließlich der Wiederholung von numpy.fft.helper. Als erledigt gilt die Aufgabe, wenn dmypy check ohne die Schleife zum Neuladen der Metadaten abgeschlossen wird und wesentlich schneller als der Lauf ohne Cache ist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python, sqlite
- Bereich
- cli, devtools, performance
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100