Added sysinfo tab to settings

This commit is contained in:
AUTOMATIC
2023-06-03 13:55:35 +03:00
parent 9d953c0e03
commit 7393c1f99c
5 changed files with 212 additions and 2 deletions

View File

@@ -3,10 +3,30 @@ import textwrap
import traceback
exception_records = []
def record_exception():
_, e, tb = sys.exc_info()
if e is None:
return
if exception_records and exception_records[-1] == e:
return
exception_records.append((e, tb))
if len(exception_records) > 5:
exception_records.pop(0)
def report(message: str, *, exc_info: bool = False) -> None:
"""
Print an error message to stderr, with optional traceback.
"""
record_exception()
for line in message.splitlines():
print("***", line, file=sys.stderr)
if exc_info:
@@ -15,6 +35,8 @@ def report(message: str, *, exc_info: bool = False) -> None:
def print_error_explanation(message):
record_exception()
lines = message.strip().split("\n")
max_len = max([len(x) for x in lines])
@@ -25,6 +47,8 @@ def print_error_explanation(message):
def display(e: Exception, task, *, full_traceback=False):
record_exception()
print(f"{task or 'error'}: {type(e).__name__}", file=sys.stderr)
te = traceback.TracebackException.from_exception(e)
if full_traceback:
@@ -44,6 +68,8 @@ already_displayed = {}
def display_once(e: Exception, task):
record_exception()
if task in already_displayed:
return