Daemon can lose updates if there is a blocking error in intermediate run
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
Inline options parsing causes files to force-included in the build if they were previously excluded. For example this test fails with "Unrecognized option..." on the last run:
[case testBlockerBadBuild]
$ dmypy start -- --follow-imports=skip
Daemon started
$ dmypy check a.py
a.py:1: error: Unsupported operand types for + ("int" and "str")
== Return code: 1
$ {python} -c "import shutil; shutil.copy('a.py.2', 'a.py')"
$ dmypy recheck --update b.py --remove a.py
b.py:1: error: invalid syntax
== Return code: 1
$ dmypy recheck --update c.py --remove b.py
[file a.py]
42 + 'no'
[file a.py.2]
# mypy: why-is-this-file-checked-again
42 + 'no'
[file b.py]
syntax error
[file c.py]
# OK
In fact, a.py shouldn't be even parsed on the last run. Note that it is actually correctly not parsed if the error on the second run is non-blocking (like 42 + 'no').
Note that exactly the same problem appears if update is called directly, this test equally fails with same symptoms:
[case testBlockerBadBuild]
# flags: --follow-imports=skip
# cmd: mypy a.py
# cmd2: mypy b.py
# cmd3: mypy c.py
[file a.py]
# OK
[file b.py.2]
syntax error here
[file c.py.3]
# OK
[file a.py.3]
# mypy: this-file-is-not-in-build-in-cmd3-why-is-it-checked
[out]
==
b.py:1: error: invalid syntax
==
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
Reproduisez le problème avec le scénario dmypy testBlockerBadBuild, puis comparez-le au scénario équivalent de mise à jour directe de mypy présenté dans le rapport. Suivez l’impact de l’erreur de syntaxe bloquante sur les exécutions ultérieures de recheck ou de mise à jour ; le travail est terminé lorsque l’exécution finale n’analyse pas le fichier a.py précédemment exclu et que les deux reproductions réussissent.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- cli, tooling
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 45/100