Method: pylint.lint.pylinter.PyLinter._astroid_module_checker
Calls: 1080, Exceptions: 0, Paths: 1Back
Path 1: 1080 calls (1.0)
partial (1080)
1@contextlib.contextmanager
2 def _astroid_module_checker(
3 self,
4 ) -> Iterator[Callable[[nodes.Module], bool | None]]:
5 """Context manager for checking ASTs.
6
7 The value in the context is callable accepting AST as its only argument.
8 """
9 walker = ASTWalker(self)
10 _checkers = self.prepare_checkers()
11 tokencheckers = [
12 c for c in _checkers if isinstance(c, checkers.BaseTokenChecker)
13 ]
14 # TODO: 3.0: Remove deprecated for-loop
15 for c in _checkers:
16 with warnings.catch_warnings():
17 warnings.filterwarnings("ignore", category=DeprecationWarning)
18 if (
19 interfaces.implements(c, interfaces.ITokenChecker)
20 and c not in tokencheckers
21 and c is not self
22 ):
23 tokencheckers.append(c) # type: ignore[arg-type] # pragma: no cover
24 warnings.warn( # pragma: no cover
25 "Checkers should subclass BaseTokenChecker "
26 "instead of using the __implements__ mechanism. Use of __implements__ "
27 "will no longer be supported in pylint 3.0",
28 DeprecationWarning,
29 )
30 rawcheckers = [
31 c for c in _checkers if isinstance(c, checkers.BaseRawFileChecker)
32 ]
33 # TODO: 3.0: Remove deprecated if-statement
34 for c in _checkers:
35 with warnings.catch_warnings():
36 warnings.filterwarnings("ignore", category=DeprecationWarning)
37 if (
38 interfaces.implements(c, interfaces.IRawChecker)
39 and c not in rawcheckers
40 ):
41 rawcheckers.append(c) # type: ignore[arg-type] # pragma: no cover
42 warnings.warn( # pragma: no cover
43 "Checkers should subclass BaseRawFileChecker "
44 "instead of using the __implements__ mechanism. Use of __implements__ "
45 "will no longer be supported in pylint 3.0",
46 DeprecationWarning,
47 )
48 # notify global begin
49 for checker in _checkers:
50 checker.open()
51 walker.add_checker(checker)
52
53 yield functools.partial(
54 self.check_astroid_module,
55 walker=walker,
56 tokencheckers=tokencheckers,
57 rawcheckers=rawcheckers,
58 )
59
60 # notify global end
61 self.stats.statement = walker.nbstatements
62 for checker in reversed(_checkers):
63 checker.close()