Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit d5dc1fb

Browse files
authored
Add --debug-serialize option (#14155)
Currently, `mypy_primer` sets `--cache-dir=/dev/null` which disables cache generation. This can result in errors being missed which would normally come up during `tree.serialize()`. Removing `--cache-dir=/dev/null` isn't practical. This PR adds a new debug / test option `--debug-serialize` which runs `tree.serialize()` even if cache generation is disabled to help detect serialize errors earlier. **Refs** * #14137 * hauntsaninja/mypy_primer#54 (review) cc: @hauntsaninja
1 parent 97d9ed5 commit d5dc1fb

3 files changed

Lines changed: 12 additions & 0 deletions

File tree

mypy/build.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2479,6 +2479,12 @@ def write_cache(self) -> None:
24792479
or self.options.cache_dir == os.devnull
24802480
or self.options.fine_grained_incremental
24812481
):
2482+
if self.options.debug_serialize:
2483+
try:
2484+
self.tree.serialize()
2485+
except Exception:
2486+
print(f"Error serializing {self.id}", file=self.manager.stdout)
2487+
raise # Propagate to display traceback
24822488
return
24832489
is_errors = self.transitive_error
24842490
if is_errors:

mypy/main.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1126,6 +1126,9 @@ def add_invertible_flag(
11261126
parser.add_argument(
11271127
"--cache-map", nargs="+", dest="special-opts:cache_map", help=argparse.SUPPRESS
11281128
)
1129+
# --debug-serialize will run tree.serialize() even if cache generation is disabled.
1130+
# Useful for mypy_primer to detect serialize errors earlier.
1131+
parser.add_argument("--debug-serialize", action="store_true", help=argparse.SUPPRESS)
11291132
# This one is deprecated, but we will keep it for few releases.
11301133
parser.add_argument(
11311134
"--enable-incomplete-features", action="store_true", help=argparse.SUPPRESS

mypy/options.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,9 @@ def __init__(self) -> None:
249249
# Read cache files in fine-grained incremental mode (cache must include dependencies)
250250
self.use_fine_grained_cache = False
251251

252+
# Run tree.serialize() even if cache generation is disabled
253+
self.debug_serialize = False
254+
252255
# Tune certain behaviors when being used as a front-end to mypyc. Set per-module
253256
# in modules being compiled. Not in the config file or command line.
254257
self.mypyc = False

0 commit comments

Comments
 (0)