123
123
124
124
from mypy .build import (
125
125
BuildManager , State , BuildSource , Graph , load_graph , SavedCache , CacheMeta ,
126
- cache_meta_from_dict , find_module_clear_caches
126
+ cache_meta_from_dict , find_module_clear_caches , DEBUG_FINE_GRAINED
127
127
)
128
128
from mypy .checker import DeferredNode
129
129
from mypy .errors import Errors , CompileError
@@ -201,23 +201,23 @@ def update(self, changed_modules: List[Tuple[str, str]]) -> List[str]:
201
201
self .triggered = []
202
202
changed_modules = dedupe_modules (changed_modules + self .stale )
203
203
initial_set = {id for id , _ in changed_modules }
204
- self .manager .log ( 'fine-grained: ==== update %s ====' % ', ' .join (
204
+ self .manager .log_fine_grained ( ' ==== update %s ====' % ', ' .join (
205
205
repr (id ) for id , _ in changed_modules ))
206
- if self .previous_targets_with_errors and self .options . verbosity >= 1 :
207
- self .manager .log ( 'fine-grained: previous targets with errors: %s' %
206
+ if self .previous_targets_with_errors and is_verbose ( self .manager ) :
207
+ self .manager .log_fine_grained ( ' previous targets with errors: %s' %
208
208
sorted (self .previous_targets_with_errors ))
209
209
210
210
if self .blocking_error :
211
211
# Handle blocking errors first. We'll exit as soon as we find a
212
212
# module that still has blocking errors.
213
- self .manager .log ( 'fine-grained: existing blocker: %s' % self .blocking_error [0 ])
213
+ self .manager .log_fine_grained ( ' existing blocker: %s' % self .blocking_error [0 ])
214
214
changed_modules = dedupe_modules ([self .blocking_error ] + changed_modules )
215
215
self .blocking_error = None
216
216
217
217
while changed_modules :
218
218
next_id , next_path = changed_modules .pop (0 )
219
219
if next_id not in self .previous_modules and next_id not in initial_set :
220
- self .manager .log ( 'fine-grained: skip %r (module not in import graph)' % next_id )
220
+ self .manager .log_fine_grained ( ' skip %r (module not in import graph)' % next_id )
221
221
continue
222
222
result = self .update_single (next_id , next_path )
223
223
messages , remaining , (next_id , next_path ), blocker = result
@@ -248,7 +248,7 @@ def update_single(self, module: str, path: str) -> Tuple[List[str],
248
248
- Module which was actually processed as (id, path) tuple
249
249
- Whether there was a blocking error in the module
250
250
"""
251
- self .manager .log ( 'fine-grained: --- update single %r ---' % module )
251
+ self .manager .log_fine_grained ( ' --- update single %r ---' % module )
252
252
253
253
# TODO: If new module brings in other modules, we parse some files multiple times.
254
254
manager = self .manager
@@ -272,10 +272,10 @@ def update_single(self, module: str, path: str) -> Tuple[List[str],
272
272
273
273
# TODO: What to do with stale dependencies?
274
274
triggered = calculate_active_triggers (manager , old_snapshots , {module : tree })
275
- if self .options . verbosity >= 1 :
275
+ if is_verbose ( self .manager ) :
276
276
filtered = [trigger for trigger in triggered
277
277
if not trigger .endswith ('__>' )]
278
- self .manager .log ( 'fine-grained: triggered: %r' % sorted (filtered ))
278
+ self .manager .log_fine_grained ( ' triggered: %r' % sorted (filtered ))
279
279
self .triggered .extend (triggered | self .previous_targets_with_errors )
280
280
collect_dependencies ({module : tree }, self .deps , graph )
281
281
remaining += propagate_changes_using_dependencies (
@@ -367,7 +367,7 @@ def update_single_isolated(module: str,
367
367
if module in manager .modules :
368
368
assert_equivalent_paths (path , manager .modules [module ].path )
369
369
else :
370
- manager .log ( 'fine-grained: new module %r' % module )
370
+ manager .log_fine_grained ( ' new module %r' % module )
371
371
372
372
old_modules = dict (manager .modules )
373
373
sources = get_sources (previous_modules , [(module , path )])
@@ -411,7 +411,7 @@ def update_single_isolated(module: str,
411
411
else :
412
412
del manager .modules [id ]
413
413
del graph [id ]
414
- manager .log ( 'fine-grained: --> %r (newly imported)' % module )
414
+ manager .log_fine_grained ( ' --> %r (newly imported)' % module )
415
415
else :
416
416
remaining_modules = []
417
417
@@ -485,7 +485,7 @@ def assert_equivalent_paths(path1: str, path2: str) -> None:
485
485
def delete_module (module_id : str ,
486
486
graph : Dict [str , State ],
487
487
manager : BuildManager ) -> Dict [str , State ]:
488
- manager .log ( 'fine-grained: delete module %r' % module_id )
488
+ manager .log_fine_grained ( ' delete module %r' % module_id )
489
489
# TODO: Deletion of a package
490
490
# TODO: Remove deps for the module (this only affects memory use, not correctness)
491
491
assert module_id not in graph
@@ -735,7 +735,7 @@ def propagate_changes_using_dependencies(
735
735
if id is not None and id not in up_to_date_modules :
736
736
if id not in todo :
737
737
todo [id ] = set ()
738
- manager .log ( 'fine-grained: process: %s' % target )
738
+ manager .log_fine_grained ( ' process: %s' % target )
739
739
todo [id ].update (lookup_target (manager .modules , target ))
740
740
triggered = set ()
741
741
# TODO: Preserve order (set is not optimal)
@@ -753,8 +753,8 @@ def propagate_changes_using_dependencies(
753
753
# dependency loop that loops back to an originally processed module.
754
754
up_to_date_modules = set ()
755
755
targets_with_errors = set ()
756
- if manager . options . verbosity >= 1 :
757
- manager .log ( 'fine-grained: triggered: %r' % list (triggered ))
756
+ if is_verbose ( manager ) :
757
+ manager .log_fine_grained ( ' triggered: %r' % list (triggered ))
758
758
759
759
return remaining_modules
760
760
@@ -793,7 +793,7 @@ def find_targets_recursive(
793
793
continue
794
794
if module_id not in result :
795
795
result [module_id ] = set ()
796
- manager .log ( 'fine-grained: process %s' % target )
796
+ manager .log_fine_grained ( ' process %s' % target )
797
797
deferred = lookup_target (modules , target )
798
798
result [module_id ].update (deferred )
799
799
@@ -810,7 +810,7 @@ def reprocess_nodes(manager: BuildManager,
810
810
Return fired triggers.
811
811
"""
812
812
if module_id not in manager .saved_cache or module_id not in graph :
813
- manager .log ( 'fine-grained: %s not in saved cache or graph (blocking errors or deleted?)' %
813
+ manager .log_fine_grained ( ' %s not in saved cache or graph (blocking errors or deleted?)' %
814
814
module_id )
815
815
return set ()
816
816
@@ -1008,3 +1008,7 @@ def extract_type_maps(graph: Graph) -> Dict[str, Dict[Expression, Type]]:
1008
1008
# This is used to export information used only by the testmerge harness.
1009
1009
return {id : state .type_map () for id , state in graph .items ()
1010
1010
if state .tree }
1011
+
1012
+
1013
+ def is_verbose (manager : BuildManager ) -> bool :
1014
+ return manager .options .verbosity >= 1 or DEBUG_FINE_GRAINED
0 commit comments