diff options
author | Andreas Finkler <3929834+DudeNr33@users.noreply.github.com> | 2022-05-27 18:22:09 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-27 18:22:09 +0200 |
commit | b454b12f5909e15b677033dc8a0934f4f0abdd8b (patch) | |
tree | b15ad219a09f68952b7a450ad78b626cca467945 /pylint/pyreverse/utils.py | |
parent | a7ff1fd597f32686403b9f3a160b03dd55617d00 (diff) | |
download | pylint-git-b454b12f5909e15b677033dc8a0934f4f0abdd8b.tar.gz |
Remove unnecessary base class and dead code in `pylint.pyreverse.utils` (#6712)
* Remove unnecessary base class and dead code
* Add ChangeLog and whatsnew entry
Diffstat (limited to 'pylint/pyreverse/utils.py')
-rw-r--r-- | pylint/pyreverse/utils.py | 49 |
1 files changed, 6 insertions, 43 deletions
diff --git a/pylint/pyreverse/utils.py b/pylint/pyreverse/utils.py index c4c1c619a..7052791ec 100644 --- a/pylint/pyreverse/utils.py +++ b/pylint/pyreverse/utils.py @@ -17,9 +17,7 @@ import astroid from astroid import nodes if TYPE_CHECKING: - from pylint.pyreverse.diadefslib import DiaDefGenerator from pylint.pyreverse.diagrams import ClassDiagram, PackageDiagram - from pylint.pyreverse.inspector import Linker _CallbackT = Callable[ [nodes.NodeNG], @@ -121,8 +119,8 @@ class FilterMixIn: return not self.__mode & VIS_MOD[visibility] -class ASTWalker: - """A walker visiting a tree in preorder, calling on the handler:. +class LocalsVisitor: + """Visit a project by traversing the locals dictionary. * visit_<class name> on entering a node, where class name is the class of the node in lower case @@ -131,36 +129,21 @@ class ASTWalker: the node in lower case """ - def __init__(self, handler: DiaDefGenerator | Linker | LocalsVisitor) -> None: - self.handler = handler + def __init__(self) -> None: self._cache: dict[type[nodes.NodeNG], _CallbackTupleT] = {} - - def walk(self, node: nodes.NodeNG, _done: set[nodes.NodeNG] | None = None) -> None: - """Walk on the tree from <node>, getting callbacks from handler.""" - if _done is None: - _done = set() - if node in _done: - raise AssertionError((id(node), node, node.parent)) - _done.add(node) - self.visit(node) - for child_node in node.get_children(): - assert child_node is not node - self.walk(child_node, _done) - self.leave(node) - assert node.parent is not node + self._visited: set[nodes.NodeNG] = set() def get_callbacks(self, node: nodes.NodeNG) -> _CallbackTupleT: """Get callbacks from handler for the visited node.""" klass = node.__class__ methods = self._cache.get(klass) if methods is None: - handler = self.handler kid = klass.__name__.lower() e_method = getattr( - handler, f"visit_{kid}", getattr(handler, "visit_default", None) + self, f"visit_{kid}", getattr(self, "visit_default", None) ) l_method = getattr( - handler, f"leave_{kid}", getattr(handler, "leave_default", None) + self, f"leave_{kid}", getattr(self, "leave_default", None) ) self._cache[klass] = (e_method, l_method) else: @@ -168,26 +151,6 @@ class ASTWalker: return e_method, l_method def visit(self, node: nodes.NodeNG) -> Any: - """Walk on the tree from <node>, getting callbacks from handler.""" - method = self.get_callbacks(node)[0] - if method is not None: - method(node) - - def leave(self, node: nodes.NodeNG) -> None: - """Walk on the tree from <node>, getting callbacks from handler.""" - method = self.get_callbacks(node)[1] - if method is not None: - method(node) - - -class LocalsVisitor(ASTWalker): - """Visit a project by traversing the locals dictionary.""" - - def __init__(self) -> None: - super().__init__(self) - self._visited: set[nodes.NodeNG] = set() - - def visit(self, node: nodes.NodeNG) -> Any: """Launch the visit starting from the given node.""" if node in self._visited: return None |