Skip to content

Commit dc6da54

Browse files
authored
Reprocess a module if a previously missing import was added (#7199)
Otherwise this causes false negatives with `--ignore-missing-imports`. The fix is just one line, but I also update a bunch of test cases.
1 parent fe6b682 commit dc6da54

File tree

7 files changed

+97
-3
lines changed

7 files changed

+97
-3
lines changed

mypy/server/deps.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,7 @@ def visit_import_from(self, o: ImportFrom) -> None:
333333
o.relative,
334334
o.id,
335335
self.is_package_init_file)
336+
self.add_dependency(make_trigger(module_id)) # needed if module is added/removed
336337
for name, as_name in o.names:
337338
self.add_dependency(make_trigger(module_id + '.' + name))
338339

mypy/test/testdeps.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ def run_case(self, testcase: DataDrivenTestCase) -> None:
6565
TypeState.add_all_protocol_deps(deps)
6666

6767
for source, targets in sorted(deps.items()):
68-
if source.startswith('<enum.'):
68+
if source.startswith(('<enum', '<typing', '<mypy')):
6969
# Remove noise.
7070
continue
7171
line = '%s -> %s' % (source, ', '.join(sorted(targets)))

test-data/unit/deps-classes.test

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ class A: pass
2222
<m.N.a> -> m.f
2323
<m.N> -> m.f
2424
<a.A> -> <m.N.a>, <m.N>, m
25+
<a> -> m
2526

2627
[case testNamedTuple2]
2728
from typing import NamedTuple, Any, Tuple
@@ -41,6 +42,7 @@ class B: pass
4142
<m.N> -> m.f
4243
<a.A> -> <m.N.a>, <m.N>, m
4344
<a.B> -> <m.N.a>, <m.N>, m
45+
<a> -> m
4446

4547
[case testNamedTuple3]
4648
from typing import NamedTuple
@@ -75,6 +77,7 @@ class A: pass
7577
<m.N.a> -> m.f
7678
<m.N> -> m.N, m.f
7779
<a.A> -> <m.N.a>, <m.N>, m, m.N
80+
<a> -> m
7881

7982
[case testIfFalseInClassBody]
8083
class A:
@@ -178,6 +181,7 @@ class B: pass
178181
<m.B.__new__> -> m
179182
-- The <m.A.X> dependecy target is superfluous but benign
180183
<m.B> -> <m.A.X>, m
184+
<m> -> m
181185

182186
[case testClassAttribute]
183187
class C:

test-data/unit/deps-statements.test

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -681,3 +681,4 @@ class C:
681681
<m.C.__new__> -> <m.N.__new__>
682682
<m.C.x> -> <m.N.x>
683683
<m.C> -> m, m.N
684+
<m> -> m

test-data/unit/deps-types.test

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,7 @@ class C(metaclass=M):
175175
<mod.C.x> -> m.f
176176
<mod.C> -> <m.f>, m, m.f
177177
<mod.M.x> -> m.f
178+
<mod> -> m
178179

179180
[case testMetaclassAttributesDirect]
180181
from mod import C
@@ -189,6 +190,7 @@ class C(metaclass=M):
189190
<mod.C.x> -> m.f
190191
<mod.C> -> m, m.f
191192
<mod.M.x> -> m.f
193+
<mod> -> m
192194

193195
[case testMetaclassOperators]
194196
from mod import C
@@ -207,6 +209,7 @@ class C(metaclass=M):
207209
<mod.C> -> <m.f>, m, m.f
208210
<mod.M.__add__> -> m.f
209211
<mod.M.__radd__> -> m.f
212+
<mod> -> m
210213

211214
[case testMetaclassOperatorsDirect]
212215
from mod import C
@@ -224,6 +227,7 @@ class C(metaclass=M):
224227
<mod.C> -> m, m.f
225228
<mod.M.__add__> -> m.f
226229
<mod.M.__radd__> -> m.f
230+
<mod> -> m
227231

228232
[case testMetaclassDepsDeclared]
229233
import mod
@@ -284,6 +288,7 @@ class C:
284288
<mod.C.x> -> m.f
285289
<mod.C> -> <m.f>, m, m.f
286290
<mod.M.x> -> m.f
291+
<mod> -> m
287292

288293
[case testMetaclassOperatorsDirect_python2]
289294
# flags: --py2
@@ -304,6 +309,7 @@ class C:
304309
<mod.C> -> m, m.f
305310
<mod.M.__add__> -> m.f
306311
<mod.M.__radd__> -> m.f
312+
<mod> -> m
307313

308314
-- Type aliases
309315

@@ -319,6 +325,7 @@ class I: pass
319325
<mod.I.__init__> -> m
320326
<mod.I.__new__> -> m
321327
<mod.I> -> <m.x>, m
328+
<mod> -> m
322329

323330
[case testAliasDepsNormalModExtended]
324331
# __dump_all__
@@ -336,6 +343,7 @@ class I: pass
336343
<mod.I.__init__> -> a
337344
<mod.I.__new__> -> a
338345
<mod.I> -> <m.x>, m, a, mod.I
346+
<mod> -> a
339347

340348
[case testAliasDepsNormalFunc]
341349
from mod import I
@@ -349,6 +357,7 @@ class I: pass
349357
<mod.I.__init__> -> m
350358
<mod.I.__new__> -> m
351359
<mod.I> -> <m.f>, m, m.f
360+
<mod> -> m
352361

353362
[case testAliasDepsNormalFuncExtended]
354363
# __dump_all__
@@ -366,6 +375,7 @@ class I: pass
366375
<mod.I.__init__> -> a
367376
<mod.I.__new__> -> a
368377
<mod.I> -> <m.f>, m.f, a, mod.I
378+
<mod> -> a
369379

370380
[case testAliasDepsNormalClass]
371381
from a import A
@@ -379,6 +389,7 @@ class I: pass
379389
[out]
380390
<m.C> -> m.C
381391
<a.A> -> m
392+
<a> -> m
382393
<mod.I> -> <m.C.x>, m
383394

384395
[case testAliasDepsNormalClassBases]
@@ -393,6 +404,7 @@ class I: pass
393404
[out]
394405
<m.C> -> m.C
395406
<a.A> -> m
407+
<a> -> m
396408
<mod.I.(abstract)> -> <m.C.__init__>, m
397409
<mod.I.__init__> -> <m.C.__init__>
398410
<mod.I.__new__> -> <m.C.__new__>
@@ -417,6 +429,7 @@ class S: pass
417429
<mod.D> -> <m.x>, m
418430
<mod.I> -> <m.x>, m
419431
<mod.S> -> <m.x>, m
432+
<mod> -> m
420433

421434
[case testAliasDepsGenericFunc]
422435
from mod import I, S, D
@@ -437,6 +450,7 @@ class S: pass
437450
<mod.D> -> <m.f>, m, m.f
438451
<mod.I> -> <m.f>, m, m.f
439452
<mod.S> -> <m.f>, m, m.f
453+
<mod> -> m
440454

441455
[case testAliasDepsGenericFuncExtended]
442456
import a
@@ -480,6 +494,7 @@ class S: pass
480494
<mod.I> -> <m.C.x>, m
481495
<mod.S> -> <m.C.x>, m
482496
<mod.T> -> m
497+
<mod> -> m
483498

484499
[case testAliasDepsForwardMod]
485500
from mod import I
@@ -494,6 +509,7 @@ class I: pass
494509
<mod.I.__init__> -> m
495510
<mod.I.__new__> -> m
496511
<mod.I> -> <m.x>, m
512+
<mod> -> m
497513

498514
[case testAliasDepsForwardFunc]
499515
from mod import I
@@ -507,6 +523,7 @@ class I: pass
507523
<mod.I.__init__> -> m
508524
<mod.I.__new__> -> m
509525
<mod.I> -> <m.f>, m, m.f
526+
<mod> -> m
510527

511528
[case testAliasDepsForwardClass]
512529
from mod import I
@@ -521,6 +538,7 @@ class I: pass
521538
<mod.I.__init__> -> m
522539
<mod.I.__new__> -> m
523540
<mod.I> -> <m.C.x>, m
541+
<mod> -> m
524542

525543
[case testAliasDepsChainedMod]
526544
from mod import I
@@ -536,6 +554,7 @@ class I: pass
536554
<mod.I.__init__> -> m
537555
<mod.I.__new__> -> m
538556
<mod.I> -> <m.x>, m
557+
<mod> -> m
539558

540559
[case testAliasDepsChainedFunc]
541560
from mod import I
@@ -551,6 +570,7 @@ class I: pass
551570
<mod.I.__init__> -> m
552571
<mod.I.__new__> -> m
553572
<mod.I> -> <m.f>, m, m.f
573+
<mod> -> m
554574

555575
[case testAliasDepsChainedFuncExtended]
556576
import a
@@ -586,6 +606,7 @@ class I: pass
586606
<mod.I.__init__> -> <m.C.__init__>, m
587607
<mod.I.__new__> -> <m.C.__new__>, m
588608
<mod.I> -> m, m.C
609+
<mod> -> m
589610

590611
[case testAliasDepsNestedMod]
591612
from mod import I, S, D
@@ -608,6 +629,7 @@ class S: pass
608629
<mod.D> -> <m.x>, m
609630
<mod.I> -> <m.x>, m
610631
<mod.S> -> <m.x>, m
632+
<mod> -> m
611633

612634
[case testAliasDepsNestedModExtended]
613635
# __dump_all__
@@ -637,6 +659,7 @@ class S: pass
637659
<mod.S> -> <m.x>, m, a, mod.S
638660
<mod.T> -> mod.D
639661
<mod.U> -> mod.D
662+
<mod> -> m, a
640663

641664
[case testAliasDepsNestedFunc]
642665
from mod import I, S, D
@@ -659,6 +682,7 @@ class S: pass
659682
<mod.D> -> <m.f>, m, m.f
660683
<mod.I> -> <m.f>, m, m.f
661684
<mod.S> -> <m.f>, m, m.f
685+
<mod> -> m
662686

663687
[case testAliasDepsNestedFuncExtended]
664688
# __dump_all__
@@ -688,6 +712,7 @@ class S: pass
688712
<mod.S> -> <m.f>, m, m.f, a, mod.S
689713
<mod.T> -> mod.D
690714
<mod.U> -> mod.D
715+
<mod> -> m, a
691716

692717
[case testAliasDepsNestedFuncDirect]
693718
from mod import I, S, D
@@ -712,6 +737,7 @@ class S: pass
712737
<mod.S> -> <m.f>, m, m.f
713738
<mod.T> -> m
714739
<mod.U> -> m
740+
<mod> -> m
715741

716742
[case testAliasDepsNestedClass]
717743
from mod import I, S, D
@@ -735,6 +761,7 @@ class S: pass
735761
<mod.D> -> <m.C.x>, m
736762
<mod.I> -> <m.C.x>, m
737763
<mod.S> -> <m.C.x>, m
764+
<mod> -> m
738765

739766
[case testAliasDepsCast]
740767
from typing import cast
@@ -754,6 +781,7 @@ class S: pass
754781
<mod.I.__init__> -> m
755782
<mod.I.__new__> -> m
756783
<mod.I> -> m, m.fun
784+
<mod> -> m
757785

758786
[case testAliasDepsRuntime]
759787
from mod import I, S, D
@@ -776,6 +804,7 @@ class S: pass
776804
<mod.I.__new__> -> m
777805
<mod.I> -> <m.x>, m
778806
<mod.S> -> <m.x>, m
807+
<mod> -> m
779808

780809
[case testAliasDepsRuntimeExtended]
781810
# __dump_all__
@@ -805,6 +834,7 @@ class S: pass
805834
<mod.S> -> <m.x>, m, mod.S
806835
<mod.T> -> mod.D
807836
<mod.U> -> mod.D
837+
<mod> -> m, a
808838

809839
[case testAliasDepsNamedTuple]
810840
from typing import NamedTuple
@@ -820,6 +850,7 @@ class I: pass
820850
<mod.I.__init__> -> m
821851
<mod.I.__new__> -> m
822852
<mod.I> -> <m.P.x>, <m.P>, m, m.P
853+
<mod> -> m
823854

824855
[case testAliasDepsNamedTupleFunctional]
825856
# __dump_all__
@@ -837,6 +868,7 @@ class I: pass
837868
<mod.I.__init__> -> a
838869
<mod.I.__new__> -> a
839870
<mod.I> -> <m.P.x>, <m.P>, m, a, mod.I
871+
<mod> -> a
840872

841873
[case testAliasDepsTypedDict]
842874
from mypy_extensions import TypedDict
@@ -853,6 +885,7 @@ class I: pass
853885
<mod.I.__init__> -> m
854886
<mod.I.__new__> -> m
855887
<mod.I> -> <m.P>, m
888+
<mod> -> m
856889

857890
[case testAliasDepsTypedDictFunctional]
858891
# __dump_all__
@@ -871,6 +904,7 @@ class I: pass
871904
<mod.I.__init__> -> a
872905
<mod.I.__new__> -> a
873906
<mod.I> -> <m.P>, a, mod.I
907+
<mod> -> a
874908
<sys.platform> -> sys
875909
<sys.version_info> -> sys
876910

@@ -888,6 +922,7 @@ class I: pass
888922
<mod.I.__init__> -> m
889923
<mod.I.__new__> -> m
890924
<mod.I> -> <m.f.x>, m, m.f
925+
<mod> -> m
891926

892927
[case testAliasDepsFromImportUnqualified]
893928
from a import C
@@ -908,6 +943,7 @@ class D:
908943
<m.A> -> m.A
909944
<m.x> -> m
910945
<a.C> -> m, m.A.meth, m.f
946+
<a> -> m
911947
<b.D.__init__> -> m.f
912948
<b.D.__new__> -> m.f
913949
<b.D> -> <m.A.meth>, <m.x>, m, m.A.meth
@@ -928,6 +964,7 @@ class B: pass
928964
<m.A.X> -> m.g
929965
<m.A> -> <m.f>, m.f, m.g
930966
<mod.B> -> m
967+
<mod> -> m
931968

932969
[case testProtocolDepsWildcard]
933970
# __dump_all__

0 commit comments

Comments
 (0)