from __future__ import annotations from typing import TYPE_CHECKING from astroid import nodes from pylint.checkers import BaseRawFileChecker if TYPE_CHECKING: from pylint.lint import PyLinter class MyRawChecker(BaseRawFileChecker): """Check for line continuations with '\' instead of using triple quoted string or parenthesis """ name = "custom_raw" msgs = { "W9901": ( "use \\ for line continuation", "backslash-line-continuation", ( "Used when a \\ is used for a line continuation instead" " of using triple quoted string or parenthesis." ), ) } options = () def process_module(self, node: nodes.Module) -> None: """Process a module. the module's content is accessible via node.stream() function """ with node.stream() as stream: for lineno, line in enumerate(stream): if line.rstrip().endswith("\\"): self.add_message("backslash-line-continuation", line=lineno) def register(linter: PyLinter) -> None: """This required method auto registers the checker during initialization. :param linter: The linter to register the checker to. """ linter.register_checker(MyRawChecker(linter))