4
4
5
5
"""Imports checkers for Python code."""
6
6
7
+ from __future__ import annotations
8
+
7
9
import collections
8
10
import copy
9
11
import os
10
- from typing import TYPE_CHECKING , Any , Dict , List , Set , Tuple , Union
12
+ from typing import TYPE_CHECKING , Any
11
13
12
14
import astroid
13
15
from astroid import nodes
@@ -127,7 +129,7 @@ def _repr_tree_defs(data, indent_str=None):
127
129
return "\n " .join (lines )
128
130
129
131
130
- def _dependencies_graph (filename : str , dep_info : Dict [str , Set [str ]]) -> str :
132
+ def _dependencies_graph (filename : str , dep_info : dict [str , set [str ]]) -> str :
131
133
"""Write dependencies as a dot (graphviz) file."""
132
134
done = {}
133
135
printer = DotBackend (os .path .splitext (os .path .basename (filename ))[0 ], rankdir = "LR" )
@@ -147,7 +149,7 @@ def _dependencies_graph(filename: str, dep_info: Dict[str, Set[str]]) -> str:
147
149
148
150
149
151
def _make_graph (
150
- filename : str , dep_info : Dict [str , Set [str ]], sect : Section , gtype : str
152
+ filename : str , dep_info : dict [str , set [str ]], sect : Section , gtype : str
151
153
):
152
154
"""Generate a dependencies graph and add some information about it in the
153
155
report's section
@@ -370,15 +372,15 @@ class ImportsChecker(DeprecatedMixin, BaseChecker):
370
372
),
371
373
)
372
374
373
- def __init__ (self , linter : " PyLinter" ) -> None :
375
+ def __init__ (self , linter : PyLinter ) -> None :
374
376
BaseChecker .__init__ (self , linter )
375
377
self .import_graph : collections .defaultdict = collections .defaultdict (set )
376
- self ._imports_stack : List [ Tuple [Any , Any ]] = []
378
+ self ._imports_stack : list [ tuple [Any , Any ]] = []
377
379
self ._first_non_import_node = None
378
- self ._module_pkg : Dict [
380
+ self ._module_pkg : dict [
379
381
Any , Any
380
382
] = {} # mapping of modules to the pkg they belong in
381
- self ._allow_any_import_level : Set [Any ] = set ()
383
+ self ._allow_any_import_level : set [Any ] = set ()
382
384
self .reports = (
383
385
("RP0401" , "External dependencies" , self ._report_external_dependencies ),
384
386
("RP0402" , "Modules dependencies graph" , self ._report_dependencies_graph ),
@@ -478,8 +480,8 @@ def leave_module(self, node: nodes.Module) -> None:
478
480
std_imports , ext_imports , loc_imports = self ._check_imports_order (node )
479
481
480
482
# Check that imports are grouped by package within a given category
481
- met_import : Set [str ] = set () # set for 'import x' style
482
- met_from : Set [str ] = set () # set for 'from x import y' style
483
+ met_import : set [str ] = set () # set for 'import x' style
484
+ met_from : set [str ] = set () # set for 'from x import y' style
483
485
current_package = None
484
486
for import_node , import_name in std_imports + ext_imports + loc_imports :
485
487
met = met_from if isinstance (import_node , nodes .ImportFrom ) else met_import
@@ -746,7 +748,7 @@ def _get_imported_module(self, importnode, modname):
746
748
return None
747
749
748
750
def _add_imported_module (
749
- self , node : Union [ nodes .Import , nodes .ImportFrom ] , importedmodname : str
751
+ self , node : nodes .Import | nodes .ImportFrom , importedmodname : str
750
752
) -> None :
751
753
"""Notify an imported module, used to analyze dependencies."""
752
754
module_file = node .root ().file
@@ -775,7 +777,7 @@ def _add_imported_module(
775
777
self ._module_pkg [context_name ] = context_name .rsplit ("." , 1 )[0 ]
776
778
777
779
# handle dependencies
778
- dependencies_stat : Dict [str , Set [str ]] = self .linter .stats .dependencies
780
+ dependencies_stat : dict [str , set [str ]] = self .linter .stats .dependencies
779
781
importedmodnames = dependencies_stat .setdefault (importedmodname , set ())
780
782
if context_name not in importedmodnames :
781
783
importedmodnames .add (context_name )
@@ -797,9 +799,7 @@ def _check_preferred_module(self, node, mod_path):
797
799
args = (self .preferred_modules [mod_path ], mod_path ),
798
800
)
799
801
800
- def _check_import_as_rename (
801
- self , node : Union [nodes .Import , nodes .ImportFrom ]
802
- ) -> None :
802
+ def _check_import_as_rename (self , node : nodes .Import | nodes .ImportFrom ) -> None :
803
803
names = node .names
804
804
for name in names :
805
805
if not all (name ):
@@ -935,5 +935,5 @@ def _check_toplevel(self, node):
935
935
)
936
936
937
937
938
- def register (linter : " PyLinter" ) -> None :
938
+ def register (linter : PyLinter ) -> None :
939
939
linter .register_checker (ImportsChecker (linter ))
0 commit comments