diff options
Diffstat (limited to 'pylint/interfaces.py')
-rw-r--r-- | pylint/interfaces.py | 106 |
1 files changed, 3 insertions, 103 deletions
diff --git a/pylint/interfaces.py b/pylint/interfaces.py index 221084fab..a93a40ceb 100644 --- a/pylint/interfaces.py +++ b/pylint/interfaces.py @@ -1,28 +1,12 @@ # Licensed under the GPL: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html -# For details: https://github.com/PyCQA/pylint/blob/main/LICENSE -# Copyright (c) https://github.com/PyCQA/pylint/blob/main/CONTRIBUTORS.txt - -"""Interfaces for Pylint objects.""" +# For details: https://github.com/pylint-dev/pylint/blob/main/LICENSE +# Copyright (c) https://github.com/pylint-dev/pylint/blob/main/CONTRIBUTORS.txt from __future__ import annotations -import warnings -from tokenize import TokenInfo -from typing import TYPE_CHECKING, NamedTuple - -from astroid import nodes - -if TYPE_CHECKING: - from pylint.checkers import BaseChecker - from pylint.message import Message - from pylint.reporters.ureports.nodes import Section +from typing import NamedTuple __all__ = ( - "IRawChecker", - "IAstroidChecker", - "ITokenChecker", - "IReporter", - "IChecker", "HIGH", "CONTROL_FLOW", "INFERENCE", @@ -51,87 +35,3 @@ UNDEFINED = Confidence("UNDEFINED", "Warning without any associated confidence l CONFIDENCE_LEVELS = [HIGH, CONTROL_FLOW, INFERENCE, INFERENCE_FAILURE, UNDEFINED] CONFIDENCE_LEVEL_NAMES = [i.name for i in CONFIDENCE_LEVELS] - - -class Interface: - """Base class for interfaces.""" - - def __init__(self) -> None: - warnings.warn( - "Interface and all of its subclasses have been deprecated " - "and will be removed in pylint 3.0.", - DeprecationWarning, - stacklevel=2, - ) - - @classmethod - def is_implemented_by( - cls: type[Interface] | tuple[type[Interface], ...], instance: BaseChecker - ) -> bool: - with warnings.catch_warnings(): - warnings.filterwarnings("ignore", category=DeprecationWarning) - return implements(instance, cls) - - -def implements( - obj: BaseChecker, - interface: type[Interface] | tuple[type[Interface], ...], -) -> bool: - """Does the given object (maybe an instance or class) implement the interface.""" - # TODO: 3.0: Remove deprecated function - warnings.warn( - "implements has been deprecated in favour of using basic " - "inheritance patterns without using __implements__.", - DeprecationWarning, - stacklevel=2, - ) - implements_ = getattr(obj, "__implements__", ()) - if not isinstance(implements_, (list, tuple)): - implements_ = (implements_,) - return any(issubclass(i, interface) for i in implements_) - - -class IChecker(Interface): - """Base interface, to be used only for sub interfaces definition.""" - - def open(self) -> None: - """Called before visiting project (i.e. set of modules).""" - - def close(self) -> None: - """Called after visiting project (i.e. set of modules).""" - - -class IRawChecker(IChecker): - """Interface for checker which need to parse the raw file.""" - - def process_module(self, node: nodes.Module) -> None: - """Process a module. - - The module's content is accessible via ``astroid.stream`` - """ - - -class ITokenChecker(IChecker): - """Interface for checkers that need access to the token list.""" - - def process_tokens(self, tokens: list[TokenInfo]) -> None: - """Process a module. - - Tokens is a list of all source code tokens in the file. - """ - - -class IAstroidChecker(IChecker): - """Interface for checker which prefers receive events according to - statement type. - """ - - -class IReporter(Interface): - """Reporter collect messages and display results encapsulated in a layout.""" - - def handle_message(self, msg: Message) -> None: - """Handle the given message object.""" - - def display_reports(self, layout: Section) -> None: - """Display results encapsulated in the layout tree.""" |