dmypy in a metadata reload loop with `--use-fine-grained-cache`
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 20.6k
- Forks
- 3.3k
- Métriques de merge des PR
- Métriques de PR en attente
Description
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
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Reproduire avec la commande de génération du cache de mypy indiquée et les commandes dmypy start/check, en enregistrant debug.log et log.txt. Commencer par suivre les entrées répétées « Metadata not found » et « Using cached AST », y compris la répétition de numpy.fft.helper. C’est terminé lorsque dmypy check s’achève sans la boucle de rechargement des métadonnées et est sensiblement plus rapide que l’exécution sans cache.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python, sqlite
- Domaine
- cli, devtools, performance
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100