143
143
from mypy .server .trigger import make_trigger
144
144
145
145
146
- # If True, print out debug logging output.
147
- DEBUG = False
148
-
149
-
150
146
MAX_ITER = 1000
151
147
152
148
@@ -205,25 +201,23 @@ def update(self, changed_modules: List[Tuple[str, str]]) -> List[str]:
205
201
self .triggered = []
206
202
changed_modules = dedupe_modules (changed_modules + self .stale )
207
203
initial_set = {id for id , _ in changed_modules }
208
- if DEBUG :
209
- print ('==== update %s ====' % ', ' .join (repr (id )
210
- for id , _ in changed_modules ))
211
- if self .previous_targets_with_errors :
212
- print ('previous targets with errors: %s' %
213
- sorted (self .previous_targets_with_errors ))
204
+ self .manager .log ('fine-grained: ==== update %s ====' % ', ' .join (
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' %
208
+ sorted (self .previous_targets_with_errors ))
214
209
215
210
if self .blocking_error :
216
211
# Handle blocking errors first. We'll exit as soon as we find a
217
212
# module that still has blocking errors.
218
- if DEBUG :
219
- print ('existing blocker: %s' % self .blocking_error [0 ])
213
+ self .manager .log ('fine-grained: existing blocker: %s' % self .blocking_error [0 ])
220
214
changed_modules = dedupe_modules ([self .blocking_error ] + changed_modules )
221
215
self .blocking_error = None
222
216
223
217
while changed_modules :
224
218
next_id , next_path = changed_modules .pop (0 )
225
219
if next_id not in self .previous_modules and next_id not in initial_set :
226
- print ( ' skip %r (module not in import graph)' % next_id )
220
+ self . manager . log ( 'fine-grained: skip %r (module not in import graph)' % next_id )
227
221
continue
228
222
result = self .update_single (next_id , next_path )
229
223
messages , remaining , (next_id , next_path ), blocker = result
@@ -254,8 +248,7 @@ def update_single(self, module: str, path: str) -> Tuple[List[str],
254
248
- Module which was actually processed as (id, path) tuple
255
249
- Whether there was a blocking error in the module
256
250
"""
257
- if DEBUG :
258
- print ('--- update single %r ---' % module )
251
+ self .manager .log ('fine-grained: --- update single %r ---' % module )
259
252
260
253
# TODO: If new module brings in other modules, we parse some files multiple times.
261
254
manager = self .manager
@@ -279,10 +272,10 @@ def update_single(self, module: str, path: str) -> Tuple[List[str],
279
272
280
273
# TODO: What to do with stale dependencies?
281
274
triggered = calculate_active_triggers (manager , old_snapshots , {module : tree })
282
- if DEBUG :
275
+ if self . options . verbosity >= 1 :
283
276
filtered = [trigger for trigger in triggered
284
277
if not trigger .endswith ('__>' )]
285
- print ( ' triggered:' , sorted (filtered ))
278
+ self . manager . log ( 'fine-grained: triggered: %r' % sorted (filtered ))
286
279
self .triggered .extend (triggered | self .previous_targets_with_errors )
287
280
collect_dependencies ({module : tree }, self .deps , graph )
288
281
remaining += propagate_changes_using_dependencies (
@@ -373,8 +366,8 @@ def update_single_isolated(module: str,
373
366
"""
374
367
if module in manager .modules :
375
368
assert_equivalent_paths (path , manager .modules [module ].path )
376
- elif DEBUG :
377
- print ( ' new module %r' % module )
369
+ else :
370
+ manager . log ( 'fine-grained: new module %r' % module )
378
371
379
372
old_modules = dict (manager .modules )
380
373
sources = get_sources (previous_modules , [(module , path )])
@@ -418,8 +411,7 @@ def update_single_isolated(module: str,
418
411
else :
419
412
del manager .modules [id ]
420
413
del graph [id ]
421
- if DEBUG :
422
- print ('--> %r (newly imported)' % module )
414
+ manager .log ('fine-grained: --> %r (newly imported)' % module )
423
415
else :
424
416
remaining_modules = []
425
417
@@ -493,8 +485,7 @@ def assert_equivalent_paths(path1: str, path2: str) -> None:
493
485
def delete_module (module_id : str ,
494
486
graph : Dict [str , State ],
495
487
manager : BuildManager ) -> Dict [str , State ]:
496
- if DEBUG :
497
- print ('delete module %r' % module_id )
488
+ manager .log ('fine-grained: delete module %r' % module_id )
498
489
# TODO: Deletion of a package
499
490
# TODO: Remove deps for the module (this only affects memory use, not correctness)
500
491
assert module_id not in graph
@@ -735,16 +726,16 @@ def propagate_changes_using_dependencies(
735
726
if num_iter > MAX_ITER :
736
727
raise RuntimeError ('Max number of iterations (%d) reached (endless loop?)' % MAX_ITER )
737
728
738
- todo = find_targets_recursive (triggered , deps , manager .modules , up_to_date_modules )
729
+ todo = find_targets_recursive (manager , triggered , deps ,
730
+ manager .modules , up_to_date_modules )
739
731
# Also process targets that used to have errors, as otherwise some
740
732
# errors might be lost.
741
733
for target in targets_with_errors :
742
734
id = module_prefix (manager .modules , target )
743
735
if id is not None and id not in up_to_date_modules :
744
736
if id not in todo :
745
737
todo [id ] = set ()
746
- if DEBUG :
747
- print ('process' , target )
738
+ manager .log ('fine-grained: process: %s' % target )
748
739
todo [id ].update (lookup_target (manager .modules , target ))
749
740
triggered = set ()
750
741
# TODO: Preserve order (set is not optimal)
@@ -762,13 +753,14 @@ def propagate_changes_using_dependencies(
762
753
# dependency loop that loops back to an originally processed module.
763
754
up_to_date_modules = set ()
764
755
targets_with_errors = set ()
765
- if DEBUG :
766
- print ( ' triggered:' , list (triggered ))
756
+ if manager . options . verbosity >= 1 :
757
+ manager . log ( 'fine-grained: triggered: %r' % list (triggered ))
767
758
768
759
return remaining_modules
769
760
770
761
771
762
def find_targets_recursive (
763
+ manager : BuildManager ,
772
764
triggers : Set [str ],
773
765
deps : Dict [str , Set [str ]],
774
766
modules : Dict [str , MypyFile ],
@@ -801,8 +793,7 @@ def find_targets_recursive(
801
793
continue
802
794
if module_id not in result :
803
795
result [module_id ] = set ()
804
- if DEBUG :
805
- print ('process' , target )
796
+ manager .log ('fine-grained: process %s' % target )
806
797
deferred = lookup_target (modules , target )
807
798
result [module_id ].update (deferred )
808
799
@@ -819,8 +810,8 @@ def reprocess_nodes(manager: BuildManager,
819
810
Return fired triggers.
820
811
"""
821
812
if module_id not in manager .saved_cache or module_id not in graph :
822
- if DEBUG :
823
- print ( '%s not in saved cache or graph (blocking errors or deleted?)' % module_id )
813
+ manager . log ( 'fine-grained: %s not in saved cache or graph (blocking errors or deleted?)' %
814
+ module_id )
824
815
return set ()
825
816
826
817
file_node = manager .modules [module_id ]
0 commit comments