37
37
if TYPE_CHECKING :
38
38
from pylint .lint import PyLinter
39
39
40
+ if sys .version_info >= (3 , 8 ):
41
+ from functools import cached_property
42
+ else :
43
+ from astroid .decorators import cachedproperty as cached_property
44
+
45
+
40
46
# The dictionary with Any should actually be a _ImportTree again
41
47
# but mypy doesn't support recursive types yet
42
48
_ImportTree = Dict [str , Union [List [Dict [str , Any ]], List [str ]]]
@@ -997,7 +1003,7 @@ def _report_external_dependencies(
997
1003
self , sect : Section , _ : LinterStats , _dummy : LinterStats | None
998
1004
) -> None :
999
1005
"""Return a verbatim layout for displaying dependencies."""
1000
- dep_info = _make_tree_defs (self ._external_dependencies_info () .items ())
1006
+ dep_info = _make_tree_defs (self ._external_dependencies_info .items ())
1001
1007
if not dep_info :
1002
1008
raise EmptyReportError ()
1003
1009
tree_str = _repr_tree_defs (dep_info )
@@ -1019,10 +1025,10 @@ def _report_dependencies_graph(
1019
1025
_make_graph (filename , dep_info , sect , "" )
1020
1026
filename = self .linter .config .ext_import_graph
1021
1027
if filename :
1022
- _make_graph (filename , self ._external_dependencies_info () , sect , "external " )
1028
+ _make_graph (filename , self ._external_dependencies_info , sect , "external " )
1023
1029
filename = self .linter .config .int_import_graph
1024
1030
if filename :
1025
- _make_graph (filename , self ._internal_dependencies_info () , sect , "internal " )
1031
+ _make_graph (filename , self ._internal_dependencies_info , sect , "internal " )
1026
1032
1027
1033
def _filter_dependencies_graph (self , internal : bool ) -> defaultdict [str , set [str ]]:
1028
1034
"""Build the internal or the external dependency graph."""
@@ -1035,14 +1041,14 @@ def _filter_dependencies_graph(self, internal: bool) -> defaultdict[str, set[str
1035
1041
graph [importee ].add (importer )
1036
1042
return graph
1037
1043
1038
- @astroid . decorators . cached
1044
+ @cached_property
1039
1045
def _external_dependencies_info (self ) -> defaultdict [str , set [str ]]:
1040
1046
"""Return cached external dependencies information or build and
1041
1047
cache them.
1042
1048
"""
1043
1049
return self ._filter_dependencies_graph (internal = False )
1044
1050
1045
- @astroid . decorators . cached
1051
+ @cached_property
1046
1052
def _internal_dependencies_info (self ) -> defaultdict [str , set [str ]]:
1047
1053
"""Return cached internal dependencies information or build and
1048
1054
cache them.
0 commit comments