@@ -813,7 +813,9 @@ def _get_imported_module(self, importnode, modname):
813
813
self .add_message ("import-error" , args = repr (dotted_modname ), node = importnode )
814
814
return None
815
815
816
- def _add_imported_module (self , node , importedmodname ):
816
+ def _add_imported_module (
817
+ self , node : Union [astroid .Import , astroid .ImportFrom ], importedmodname : str
818
+ ) -> None :
817
819
"""notify an imported module, used to analyze dependencies"""
818
820
module_file = node .root ().file
819
821
context_name = node .root ().name
@@ -826,6 +828,10 @@ def _add_imported_module(self, node, importedmodname):
826
828
except ImportError :
827
829
pass
828
830
831
+ in_type_checking_block = (
832
+ isinstance (node .parent , astroid .If ) and node .parent .is_typing_guard ()
833
+ )
834
+
829
835
if context_name == importedmodname :
830
836
self .add_message ("import-self" , node = node )
831
837
@@ -845,7 +851,10 @@ def _add_imported_module(self, node, importedmodname):
845
851
846
852
# update import graph
847
853
self .import_graph [context_name ].add (importedmodname )
848
- if not self .linter .is_message_enabled ("cyclic-import" , line = node .lineno ):
854
+ if (
855
+ not self .linter .is_message_enabled ("cyclic-import" , line = node .lineno )
856
+ or in_type_checking_block
857
+ ):
849
858
self ._excluded_edges [context_name ].add (importedmodname )
850
859
851
860
def _check_preferred_module (self , node , mod_path ):
0 commit comments