summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre Sassoulas <pierre.sassoulas@gmail.com>2021-06-14 20:27:23 +0200
committerPierre Sassoulas <pierre.sassoulas@gmail.com>2021-06-15 09:29:56 +0200
commit88077431950f0854e16759e8619fcbb4173b708b (patch)
treedd6136164cc97e8e2c0826430f513ae5dd8ee0ff
parent9841051f7cfa931dbe7643208910a162c3940d09 (diff)
downloadpylint-git-88077431950f0854e16759e8619fcbb4173b708b.tar.gz
Add handle_message in BaseReporter and add typing
-rw-r--r--pylint/interfaces.py2
-rw-r--r--pylint/reporters/base_reporter.py7
-rw-r--r--pylint/reporters/collecting_reporter.py4
-rw-r--r--pylint/reporters/json_reporter.py5
-rw-r--r--pylint/reporters/multi_reporter.py3
-rw-r--r--pylint/reporters/text.py5
-rw-r--r--pylint/testutils/reporter_for_tests.py23
-rw-r--r--tests/extensions/test_broad_try_clause.py3
-rw-r--r--tests/extensions/test_comparetozero.py3
-rw-r--r--tests/test_self.py3
10 files changed, 23 insertions, 35 deletions
diff --git a/pylint/interfaces.py b/pylint/interfaces.py
index e61a04928..1281843a8 100644
--- a/pylint/interfaces.py
+++ b/pylint/interfaces.py
@@ -91,7 +91,7 @@ class IAstroidChecker(IChecker):
class IReporter(Interface):
"""reporter collect messages and display results encapsulated in a layout"""
- def handle_message(self, msg):
+ def handle_message(self, msg) -> None:
"""Handle the given message object."""
def display_reports(self, layout):
diff --git a/pylint/reporters/base_reporter.py b/pylint/reporters/base_reporter.py
index 8fd66a434..858073a66 100644
--- a/pylint/reporters/base_reporter.py
+++ b/pylint/reporters/base_reporter.py
@@ -3,6 +3,9 @@
import os
import sys
+from typing import List
+
+from pylint.message import Message
class BaseReporter:
@@ -19,11 +22,13 @@ class BaseReporter:
self.out = None
self.out_encoding = None
self.set_output(output)
+ self.messages: List[Message] = []
# Build the path prefix to strip to get relative paths
self.path_strip_prefix = os.getcwd() + os.sep
- def handle_message(self, msg):
+ def handle_message(self, msg: Message) -> None:
"""Handle a new message triggered on the current file."""
+ self.messages.append(msg)
def set_output(self, output=None):
"""set output stream"""
diff --git a/pylint/reporters/collecting_reporter.py b/pylint/reporters/collecting_reporter.py
index 68c0cbf9e..814c4c7f6 100644
--- a/pylint/reporters/collecting_reporter.py
+++ b/pylint/reporters/collecting_reporter.py
@@ -1,6 +1,5 @@
# Licensed under the GPL: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html
# For details: https://github.com/PyCQA/pylint/blob/master/LICENSE
-
from pylint.reporters.base_reporter import BaseReporter
@@ -13,9 +12,6 @@ class CollectingReporter(BaseReporter):
BaseReporter.__init__(self)
self.messages = []
- def handle_message(self, msg):
- self.messages.append(msg)
-
def reset(self):
self.messages = []
diff --git a/pylint/reporters/json_reporter.py b/pylint/reporters/json_reporter.py
index 1a53f5f3d..352430220 100644
--- a/pylint/reporters/json_reporter.py
+++ b/pylint/reporters/json_reporter.py
@@ -12,7 +12,6 @@
"""JSON reporter"""
import json
-import sys
from pylint.interfaces import IReporter
from pylint.reporters.base_reporter import BaseReporter
@@ -25,10 +24,6 @@ class JSONReporter(BaseReporter):
name = "json"
extension = "json"
- def __init__(self, output=None):
- BaseReporter.__init__(self, output or sys.stdout)
- self.messages = []
-
def handle_message(self, msg):
"""Manage message of different type and in the context of path."""
self.messages.append(
diff --git a/pylint/reporters/multi_reporter.py b/pylint/reporters/multi_reporter.py
index 5723dc160..506b9c3bf 100644
--- a/pylint/reporters/multi_reporter.py
+++ b/pylint/reporters/multi_reporter.py
@@ -6,6 +6,7 @@ import os
from typing import IO, Any, AnyStr, Callable, List, Mapping, Optional, Union
from pylint.interfaces import IReporter
+from pylint.message import Message
from pylint.reporters.base_reporter import BaseReporter
from pylint.reporters.ureports.nodes import BaseLayout
@@ -58,7 +59,7 @@ class MultiReporter:
for rep in self._sub_reporters:
rep.linter = value
- def handle_message(self, msg: str) -> None:
+ def handle_message(self, msg: Message) -> None:
"""Handle a new message triggered on the current file."""
for rep in self._sub_reporters:
rep.handle_message(msg)
diff --git a/pylint/reporters/text.py b/pylint/reporters/text.py
index 9142c594e..8e796c294 100644
--- a/pylint/reporters/text.py
+++ b/pylint/reporters/text.py
@@ -27,6 +27,7 @@ import warnings
from pylint import utils
from pylint.interfaces import IReporter
+from pylint.message import Message
from pylint.reporters import BaseReporter
from pylint.reporters.ureports.text_writer import TextWriter
@@ -141,7 +142,7 @@ class TextReporter(BaseReporter):
"""Convenience method to write a formatted message with class default template"""
self.writeln(msg.format(self._template))
- def handle_message(self, msg):
+ def handle_message(self, msg: Message) -> None:
"""manage message of different type and in the context of path"""
if msg.module not in self._modules:
if msg.module:
@@ -217,7 +218,7 @@ class ColorizedTextReporter(TextReporter):
except KeyError:
return None, None
- def handle_message(self, msg):
+ def handle_message(self, msg: Message) -> None:
"""manage message of different types, and colorize output
using ansi escape codes
"""
diff --git a/pylint/testutils/reporter_for_tests.py b/pylint/testutils/reporter_for_tests.py
index 1cb4b4a59..e56a0e284 100644
--- a/pylint/testutils/reporter_for_tests.py
+++ b/pylint/testutils/reporter_for_tests.py
@@ -3,8 +3,10 @@
from io import StringIO
from os import getcwd, linesep, sep
+from typing import Dict, List
from pylint import interfaces
+from pylint.message import Message
from pylint.reporters import BaseReporter
@@ -14,21 +16,20 @@ class GenericTestReporter(BaseReporter):
__implements__ = interfaces.IReporter
def __init__(self): # pylint: disable=super-init-not-called
-
- self.message_ids = {}
self.reset()
- self.path_strip_prefix = getcwd() + sep
def reset(self):
+ self.message_ids: Dict = {}
self.out = StringIO()
- self.messages = []
+ self.path_strip_prefix: str = getcwd() + sep
+ self.messages: List[str] = []
- def handle_message(self, msg):
+ def handle_message(self, msg: Message) -> None:
"""manage message of different type and in the context of path"""
obj = msg.obj
line = msg.line
msg_id = msg.msg_id
- msg = msg.msg
+ str_message: str = msg.msg
self.message_ids[msg_id] = 1
if obj:
obj = ":%s" % obj
@@ -36,8 +37,8 @@ class GenericTestReporter(BaseReporter):
if linesep != "\n":
# 2to3 writes os.linesep instead of using
# the previously used line separators
- msg = msg.replace("\r\n", "\n")
- self.messages.append(f"{sigle}:{line:>3}{obj}: {msg}")
+ str_message = str_message.replace("\r\n", "\n")
+ self.messages.append(f"{sigle}:{line:>3}{obj}: {str_message}")
def finalize(self):
self.messages.sort()
@@ -60,9 +61,6 @@ class GenericTestReporter(BaseReporter):
class MinimalTestReporter(BaseReporter):
- def handle_message(self, msg):
- self.messages.append(msg)
-
def on_set_current_module(self, module, filepath):
self.messages = []
@@ -70,9 +68,6 @@ class MinimalTestReporter(BaseReporter):
class FunctionalTestReporter(BaseReporter): # pylint: disable=abstract-method
- def handle_message(self, msg):
- self.messages.append(msg)
-
def on_set_current_module(self, module, filepath):
self.messages = []
diff --git a/tests/extensions/test_broad_try_clause.py b/tests/extensions/test_broad_try_clause.py
index 3ba2b8118..fb9cffbc6 100644
--- a/tests/extensions/test_broad_try_clause.py
+++ b/tests/extensions/test_broad_try_clause.py
@@ -20,9 +20,6 @@ from pylint.reporters import BaseReporter
class BroadTryClauseTestReporter(BaseReporter):
- def handle_message(self, msg):
- self.messages.append(msg)
-
def on_set_current_module(self, module, filepath):
self.messages = []
diff --git a/tests/extensions/test_comparetozero.py b/tests/extensions/test_comparetozero.py
index 51af08498..e9bea88b4 100644
--- a/tests/extensions/test_comparetozero.py
+++ b/tests/extensions/test_comparetozero.py
@@ -21,9 +21,6 @@ from pylint.reporters import BaseReporter
class CompareToZeroTestReporter(BaseReporter):
- def handle_message(self, msg):
- self.messages.append(msg)
-
def on_set_current_module(self, module, filepath):
self.messages = []
diff --git a/tests/test_self.py b/tests/test_self.py
index d8da706a7..6dc1d0a2a 100644
--- a/tests/test_self.py
+++ b/tests/test_self.py
@@ -57,6 +57,7 @@ import pytest
from pylint import modify_sys_path
from pylint.constants import MAIN_CHECKER_NAME, MSG_TYPES_STATUS
from pylint.lint import Run
+from pylint.message import Message
from pylint.reporters import JSONReporter
from pylint.reporters.text import BaseReporter, ColorizedTextReporter, TextReporter
from pylint.utils import utils
@@ -104,7 +105,7 @@ class MultiReporter(BaseReporter):
for rep in self._reporters:
rep.on_set_current_module(*args, **kwargs)
- def handle_message(self, msg):
+ def handle_message(self, msg: Message) -> None:
for rep in self._reporters:
rep.handle_message(msg)